diff --git a/.hgignore b/.hgignore index c7c2e9177e8f260578722e1fd8197a4b0f646e04..60f6115f74c4abeda346a7b236d477ad2dd7ff63 100644 --- a/.hgignore +++ b/.hgignore @@ -49,6 +49,9 @@ openolat-lms.iml src/main/resources/maven.build.properties src/main/java/maven.build.properties +#ignore my work class for selenium +src/test/java/org/olat/selenium/SeleniumTest.java + syntax: regexp ^olat3/\.settings$ syntax: regexp diff --git a/.hgtags b/.hgtags index 80ba04a4ebfe121bfeca963e509c1e6be225a971..1314bc964806d9bbd4da044d58fa0465c07db89a 100644 --- a/.hgtags +++ b/.hgtags @@ -185,3 +185,4 @@ aa02a5383a846d9b76620693f1713cc1f7a5c3b7 OpenOLAT 11.3.0 97971d985617dda850fa7316a6256882ba8fa9c9 OpenOLAT 11.4.1 ddfe863807617f21f6d75216bed144c791f5cab1 OpenOLAT 11.4.2 25a2dc4dba8a7961ff4f19e33f709ddea5949141 OpenOLAT 11.4.3 +f0de363ab794a6e0d6f4d6da57f460503d5dfa91 OpenOLAT 11.5.0 diff --git a/NOTICE.TXT b/NOTICE.TXT index 6249259aeae6da7126d4aec9b1229a9ebf7e9ae2..5973ef88b6c69b67dcd2fcf422c6af68457101b7 100644 --- a/NOTICE.TXT +++ b/NOTICE.TXT @@ -21,7 +21,8 @@ Contributors and copy right holders of openolat.org codebase since 2011: ----------------------------------------------------------------------- - frentix GmbH, Switzerland [http://www.frentix.com] Michael Enz, Christian Franck, Florian Gnägi, Roman Haag, Joël Krähemann, Matthai Kurian, Stéphane Rossé, - Kirsten Scherer, Sergio Trentini + Kirsten Scherer, Sergio Trentini, Marco Ferrari, Sabrina Scheiwiler, Oliver Kant, Fabian Kiefer, + Urs Hensler - BPS Bildungsportal Sachsen GmbH, Germany [http://www.bildungsportal.sachsen.de]: Armin Blawitzki, Stefan Köber, Sven Morgner - VCRP Virtueller Campus Rheinland-Pfalz [http://www.vcrp.de] @@ -122,6 +123,8 @@ This product uses software based on the Apache Software License like * undertow (Apache Software License, Version 2.0) [http://undertow.io] * jshashtable (Apache Software License, Version 2.0) [http://www.timdown.co.uk/jshashtable] * Hikari CP (Apache Software License, Version 2.0) [https://github.com/brettwooldridge/HikariCP] +* flv.js (Apache Software License, Version 2.0) [https://github.com/Bilibili/flv.js] +* hls.js (Apache Software License, Version 2.0) [https://github.com/video-dev/hls.js] ----------------------------------------------------------------------- This produce uses software based on the MIT License @@ -130,6 +133,7 @@ This produce uses software based on the MIT License * SCORM player project: reload (MIT License) [http://www.reload.ac.uk] * jQuery JavaScript DOM library (MIT License) [http://jquery.com] * jQuery-UI JavaScript UI library (MIT License) [http://jqueryui.com] +* jQuery ui touch punch JavaScript UI library (MIT License) [http://touchpunch.furf.com] * jQuery transit library (MIT License) [http://ricostacruz.com/jquery.transit] * slf4j (MIT License) [http://www.slf4j.org] * fullcalendar (MIT License) [http://arshaw.com/fullcalendar/] @@ -142,6 +146,7 @@ This produce uses software based on the MIT License * mediaelementjs (MIT License) [http://mediaelementjs.com] * jQuery UI Slider Pips (MIT License) [https://github.com/simeydotme/jQuery-ui-Slider-Pips] * maphilight (MIT License) [https://github.com/kemayo/maphilight] +* iFrame Resizer (MIT License) [https://github.com/davidjbradshaw/iframe-resizer] ----------------------------------------------------------------------- This product uses software based on the BSD License diff --git a/pom.xml b/pom.xml index d7dec37f44bd1cfdd42ebd54d6e888530db19523..036690fdb79da3e84a27ffb9744514297860f00d 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>org.openolat</groupId> <artifactId>openolat-lms</artifactId> - <version>11.4-SNAPSHOT</version> + <version>11.5-SNAPSHOT</version> <packaging>war</packaging> <name>OpenOLAT LMS</name> <url>http://www.openolat.org</url> @@ -31,12 +31,12 @@ <repository> <id>nexus.openolat</id> <name>OpenOLAT Internal Nexus Release Repository</name> - <url>http://nexus.openolat.org/nexus/content/repositories/openolat</url> + <url>https://nexus.openolat.org/nexus/content/repositories/openolat</url> </repository> <snapshotRepository> <id>nexus.openolat</id> <name>OpenOLAT Internal Nexus Snapshot Repository</name> - <url>http://nexus.openolat.org/nexus/content/repositories/openolat-snapshots</url> + <url>https://nexus.openolat.org/nexus/content/repositories/openolat-snapshots</url> </snapshotRepository> </distributionManagement> <issueManagement> @@ -62,13 +62,13 @@ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <targetJdk>1.8</targetJdk> - <org.springframework.version>3.2.17.RELEASE</org.springframework.version> - <org.hibernate.version>5.2.7.Final</org.hibernate.version> - <com.sun.jersey.version>1.19.1</com.sun.jersey.version> + <org.springframework.version>3.2.18.RELEASE</org.springframework.version> + <org.hibernate.version>5.2.10.Final</org.hibernate.version> + <com.sun.jersey.version>1.19.3</com.sun.jersey.version> <jackson.version>1.9.2</jackson.version> - <org.mysql.version>5.1.40</org.mysql.version> - <org.postgresql.version>9.4.1212</org.postgresql.version> - <org.infinispan.version>8.1.0.Final</org.infinispan.version> + <org.mysql.version>5.1.41</org.mysql.version> + <org.postgresql.version>42.0.0</org.postgresql.version> + <org.infinispan.version>8.2.5.Final</org.infinispan.version> <lucene.version>4.8.0</lucene.version> <version.selenium>2.53.1</version.selenium> <version.drone>2.0.1.Final</version.drone> @@ -98,8 +98,8 @@ <build> <plugins> <plugin> - <groupId>com.sun.tools.jxc.maven2</groupId> - <artifactId>maven-jaxb-schemagen-plugin</artifactId> + <groupId>org.codehaus.mojo</groupId> + <artifactId>jaxb2-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> @@ -145,15 +145,12 @@ <output>${basedir}/target/bootstrap/bootstrap-openolat.min.js</output> <removeIncluded>false</removeIncluded> <includes> - <!-- <include>${basedir}/target/bootstrap/javascripts/bootstrap/affix.min.js</include> --> <include>${basedir}/target/bootstrap/javascripts/bootstrap/alert.min.js</include> <include>${basedir}/target/bootstrap/javascripts/bootstrap/button.min.js</include> - <!-- <include>${basedir}/target/bootstrap/javascripts/bootstrap/carousel.min.js</include> --> <include>${basedir}/target/bootstrap/javascripts/bootstrap/collapse.min.js</include> <include>${basedir}/target/bootstrap/javascripts/bootstrap/dropdown.min.js</include> <include>${basedir}/target/bootstrap/javascripts/bootstrap/tab.min.js</include> <include>${basedir}/target/bootstrap/javascripts/bootstrap/transition.min.js</include> - <!-- <include>${basedir}/target/bootstrap/javascripts/bootstrap/scrollspy.min.js</include> --> <include>${basedir}/target/bootstrap/javascripts/bootstrap/modal.min.js</include> <include>${basedir}/target/bootstrap/javascripts/bootstrap/tooltip.min.js</include> <include>${basedir}/target/bootstrap/javascripts/bootstrap/popover.min.js</include> @@ -161,10 +158,13 @@ </aggregation> </aggregations> <excludes> + <exclude>**/jw/*</exclude> + <exclude>**/mediaelementjs/*</exclude> + <exclude>**/mediaelementjs/**/*</exclude> <exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude> </excludes> </configuration> - </execution> + </execution> <execution> <!-- compress movie player in place, don't append to any other file --> <id>compressmovieplayer</id> @@ -177,17 +177,27 @@ <force>true</force> <encoding>UTF-8</encoding> <nocompress>false</nocompress> - <outputDirectory>${basedir}/src/main/webapp/static/movie</outputDirectory> + <outputDirectory>${basedir}/target/jsmovie</outputDirectory> <sourceDirectory>${basedir}/src/main/webapp/static/movie</sourceDirectory> <excludeResources>true</excludeResources> + <aggregations> + <aggregation> + <output>${basedir}/src/main/webapp/static/movie/player.min.js</output> + <removeIncluded>false</removeIncluded> + <includes> + <include>${basedir}/target/jsmovie/player.min.js</include> + </includes> + </aggregation> + </aggregations> <excludes> <exclude>**/*.min.js</exclude> + <exclude>**/jw/*</exclude> <exclude>**/mediaelementjs/*</exclude> + <exclude>**/mediaelementjs/**/*</exclude> <exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude> - <exclude>**/jw/*</exclude> </excludes> </configuration> - </execution> + </execution> <execution> <id>compressjs</id> <phase>process-resources</phase> @@ -219,6 +229,25 @@ <include>${basedir}/target/bootstrap/bootstrap-openolat.min.js</include> </includes> </aggregation> + <aggregation> + <output>${basedir}/src/main/webapp/static/js/jquery/qti/jquery.qti.min.js</output> + <removeIncluded>false</removeIncluded> + <includes> + <include>${basedir}/target/jquery/jquery/qti/jquery.associate.min.js</include> + <include>${basedir}/target/jquery/jquery/qti/jquery.gapMatch.min.js</include> + <include>${basedir}/target/jquery/jquery/qti/jquery.graphicAssociate.min.js</include> + <include>${basedir}/target/jquery/jquery/qti/jquery.graphicGap.min.js</include> + <include>${basedir}/target/jquery/jquery/qti/jquery.graphicOrder.min.js</include> + <include>${basedir}/target/jquery/jquery/qti/jquery.hotspot.min.js</include> + <include>${basedir}/target/jquery/jquery/qti/jquery.match.min.js</include> + <include>${basedir}/target/jquery/jquery/qti/jquery.order.min.js</include> + <include>${basedir}/target/jquery/jquery/qti/jquery.positionObject.min.js</include> + <include>${basedir}/target/jquery/jquery/qti/jquery.qtiAutosave.min.js</include> + <include>${basedir}/target/jquery/jquery/qti/jquery.qtiTimer.min.js</include> + <include>${basedir}/target/jquery/jquery/qti/jquery.selectPoint.min.js</include> + <include>${basedir}/target/jquery/jquery/qti/jquery.slider.min.js</include> + </includes> + </aggregation> <aggregation> <output>${basedir}/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatmatheditor/plugin.min.js</output> <removeIncluded>false</removeIncluded> @@ -270,6 +299,51 @@ </aggregation> </aggregations> <excludes> + <exclude>**/jw/*</exclude> + <exclude>**/mediaelementjs/*</exclude> + <exclude>**/mediaelementjs/**/*</exclude> + <exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude> + </excludes> + </configuration> + </execution> + <execution> + <id>compressqti</id> + <phase>process-resources</phase> + <goals> + <goal>compress</goal> + </goals> + <configuration> + <suffix>.min</suffix> + <force>true</force> + <encoding>UTF-8</encoding> + <nocompress>false</nocompress> + <outputDirectory>${basedir}/target/bootstrap</outputDirectory> + <sourceDirectory>${basedir}/src/main/webapp/static/bootstrap</sourceDirectory> + <excludeResources>true</excludeResources> + <aggregations> + <aggregation> + <output>${basedir}/target/bootstrap/bootstrap-openolat.min.js</output> + <removeIncluded>false</removeIncluded> + <includes> + <!-- <include>${basedir}/target/bootstrap/javascripts/bootstrap/affix.min.js</include> --> + <include>${basedir}/target/bootstrap/javascripts/bootstrap/alert.min.js</include> + <include>${basedir}/target/bootstrap/javascripts/bootstrap/button.min.js</include> + <!-- <include>${basedir}/target/bootstrap/javascripts/bootstrap/carousel.min.js</include> --> + <include>${basedir}/target/bootstrap/javascripts/bootstrap/collapse.min.js</include> + <include>${basedir}/target/bootstrap/javascripts/bootstrap/dropdown.min.js</include> + <include>${basedir}/target/bootstrap/javascripts/bootstrap/tab.min.js</include> + <include>${basedir}/target/bootstrap/javascripts/bootstrap/transition.min.js</include> + <!-- <include>${basedir}/target/bootstrap/javascripts/bootstrap/scrollspy.min.js</include> --> + <include>${basedir}/target/bootstrap/javascripts/bootstrap/modal.min.js</include> + <include>${basedir}/target/bootstrap/javascripts/bootstrap/tooltip.min.js</include> + <include>${basedir}/target/bootstrap/javascripts/bootstrap/popover.min.js</include> + </includes> + </aggregation> + </aggregations> + <excludes> + <exclude>**/jw/*</exclude> + <exclude>**/mediaelementjs/*</exclude> + <exclude>**/mediaelementjs/**/*</exclude> <exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude> </excludes> </configuration> @@ -302,6 +376,9 @@ </aggregation> </aggregations> <excludes> + <exclude>**/jw/*</exclude> + <exclude>**/mediaelementjs/*</exclude> + <exclude>**/mediaelementjs/**/*</exclude> <exclude>**/sliderpips/jquery-ui-slider-pips.js</exclude> </excludes> </configuration> @@ -1137,36 +1214,6 @@ <enabled>false</enabled> </snapshots> </repository> - <repository> - <id>java.net-Public</id> - <name>Java.net repository for Maven</name> - <url>https://maven.java.net/content/groups/public/</url> - <layout>default</layout> - </repository> - <repository> - <id>jboss-public-repository-group</id> - <name>JBoss Public Maven Repository Group</name> - <url>https://repository.jboss.org/nexus/content/groups/public</url> - <layout>default</layout> - <releases> - <enabled>true</enabled> - <updatePolicy>never</updatePolicy> - </releases> - <snapshots> - <enabled>true</enabled> - <updatePolicy>daily</updatePolicy> - </snapshots> - </repository> - <repository> - <id>www2.ph.ed.ac.uk</id> - <url>http://www2.ph.ed.ac.uk/maven2</url> - <snapshots> - <enabled>true</enabled> - </snapshots> - <releases> - <enabled>true</enabled> - </releases> - </repository> <repository> <id>openolat-repo</id> <name>OpenOLAT Public Maven Repository Group</name> @@ -1183,18 +1230,6 @@ </repository> </repositories> <pluginRepositories> - <pluginRepository> - <id>java-net-plugin-repo</id> - <name>Java net Maven plugin repository</name> - <url>http://download.java.net/maven/2</url> - <releases> - <enabled>true</enabled> - </releases> - <snapshots> - <enabled>true</enabled> - <updatePolicy>daily</updatePolicy> - </snapshots> - </pluginRepository> <pluginRepository> <id>openolat-plugin-repo</id> <name>OpenOLAT Public Maven Repository Group</name> @@ -1234,6 +1269,8 @@ <exclude>**/*.pdf</exclude> <exclude>**/*.graffle</exclude> <exclude>**/doc-files/**</exclude> + <exclude>**/propertyHandlers.jpg</exclude> + <exclude>**/package.html</exclude> </excludes> </resource> <resource> @@ -1330,7 +1367,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> - <version>2.18.1</version> + <version>2.19.1</version> <configuration> <encoding>UTF-8</encoding> <skipTests>${skipTests}</skipTests> @@ -1349,7 +1386,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-failsafe-plugin</artifactId> - <version>2.18.1</version> + <version>2.19.1</version> <configuration> <encoding>UTF-8</encoding> <skipITs>${skipSeleniumTests}</skipITs> @@ -1397,7 +1434,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> - <version>3.3</version> + <version>3.6.1</version> <configuration> <source>1.8</source> <target>1.8</target> @@ -1408,7 +1445,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> - <version>2.6</version> + <version>3.0.0</version> <configuration> <attachClasses>true</attachClasses> <directory>src/main/java</directory> @@ -1423,7 +1460,7 @@ <Implementation-Build>${buildNumber}</Implementation-Build> </manifestEntries> </archive> - <excludes>**/*.pxm, **/*.psd, **/*.scss, **/*.sh, static/bootstrap/**, **/*.README</excludes> + <warSourceExcludes>**/*.pxm, **/*.psd, **/*.scss, **/*.sh, static/bootstrap/**, **/*.README</warSourceExcludes> <webResources> <resource> <directory>src/main/webapp</directory> @@ -1507,43 +1544,46 @@ <!-- start rest api documentation: broken: mvn javadoc:javadoc --> <plugin> - <groupId>com.sun.tools.jxc.maven2</groupId> - <artifactId>maven-jaxb-schemagen-plugin</artifactId> - <version>1.2</version> + <groupId>org.codehaus.mojo</groupId> + <artifactId>jaxb2-maven-plugin</artifactId> + <version>2.3.1</version> <executions> - <execution> - <phase>generate-resources</phase> - <goals> - <goal>generate</goal> + <execution> + <id>schemagen</id> + <goals> + <goal>schemagen</goal> </goals> </execution> </executions> <configuration> - <srcdir>${basedir}/src/</srcdir> - <includes> - <include>org/olat/restapi/**/*VO.java</include> - <include>org/olat/user/restapi/**/*VO.java</include> - <include>org/olat/modules/fo/restapi/*VO.java</include> - <include>org/olat/catalog/restapi/*VO.java</include> - </includes> - <excludes></excludes> - <destdir>${project.build.outputDirectory}</destdir> + <sources> + <source>src/main/java/org/olat/core/commons/services/notifications/restapi/vo/</source> + <source>src/main/java/org/olat/commons/calendar/restapi/</source> + <source>src/main/java/org/olat/modules/fo/restapi/</source> + <source>src/main/java/org/olat/modules/gotomeeting/restapi/</source> + <source>src/main/java/org/olat/modules/vitero/restapi/</source> + <source>src/main/java/org/olat/modules/wiki/restapi/vo/</source> + <source>src/main/java/org/olat/restapi/system/vo/</source> + <source>src/main/java/org/olat/restapi/support/vo/</source> + <source>src/main/java/org/olat/registration/restapi/</source> + <source>src/main/java/org/olat/user/restapi/</source> + </sources> + <schemaSourceExcludeFilters> + <myExcludes implementation="org.codehaus.mojo.jaxb2.shared.filters.pattern.PatternFileFilter"> + <patterns> + <pattern>jaxb\.index</pattern> + <pattern>.*WebService.java</pattern> + <pattern>.*Factory.java</pattern> + <pattern>.*Examples.java</pattern> + <pattern>.*DateParam.java</pattern> + <pattern>.*StatusVO.java</pattern> + <pattern>.*GoToErrorVO.java</pattern> + </patterns> + </myExcludes> + </schemaSourceExcludeFilters> + <outputDirectory>${project.build.outputDirectory}</outputDirectory> <verbose>true</verbose> </configuration> - <dependencies> - <dependency> - <groupId>xerces</groupId> - <artifactId>xercesImpl</artifactId> - <version>2.9.1</version> - </dependency> - <dependency> - <groupId>com.sun</groupId> - <artifactId>tools</artifactId> - <version>1.7</version> - <scope>system</scope> - <systemPath>${java.home}/../lib/tools.jar</systemPath> - </dependency> - </dependencies> </plugin> <!-- Javadoc --> @@ -1565,11 +1605,23 @@ <verbose>false</verbose> <show>public</show> <subpackages> - org.olat.restapi,org.olat.modules.fo.restapi, - org.olat.core.commons.services.notifications.restapi,org.olat.user.restapi,org.olat.course.nodes, - org.olat.restapi.system - </subpackages> - + org.olat.core.commons.services.notifications.restapi, + org.olat.commons.calendar.restapi, + org.olat.course.nodes.bc, + org.olat.course.nodes.bc, + org.olat.course.nodes.co, + org.olat.course.nodes.en, + org.olat.course.certificate.restapi, + org.olat.course.db.restapi, + org.olat.modules.fo.restapi, + org.olat.modules.gotomeeting.restapi, + org.olat.modules.openmeetings.restapi, + org.olat.modules.vitero.restapi, + org.olat.modules.wiki.restapi, + org.olat.registration.restapi, + org.olat.restapi, + org.olat.user.restapi + </subpackages> <doclet>com.sun.jersey.wadl.resourcedoc.ResourceDoclet</doclet> <docletArtifacts> <docletArtifact> @@ -1587,7 +1639,7 @@ <docletArtifact> <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> - <version>2.9.1</version> + <version>2.11.0</version> </docletArtifact> </docletArtifacts> <additionalparam>-output @@ -1614,7 +1666,23 @@ <formatWadlFile>true</formatWadlFile> <baseUri>http://www.example.com</baseUri> <packagesResourceConfig> - <param>org.olat.restapi;org.olat.core.commons.services.notifications.restapi;org.olat.modules.fo.restapi;org.olat.user.restapi;org.olat.course.nodes</param> + <param> + org.olat.core.commons.services.notifications.restapi; + org.olat.commons.calendar.restapi; + org.olat.course.nodes.bc; + org.olat.course.nodes.co; + org.olat.course.nodes.en; + org.olat.course.certificate.restapi; + org.olat.course.db.restapi; + org.olat.modules.fo.restapi; + org.olat.modules.gotomeeting.restapi; + org.olat.modules.openmeetings.restapi; + org.olat.modules.vitero.restapi; + org.olat.modules.wiki.restapi; + org.olat.registration.restapi; + org.olat.restapi; + org.olat.user.restapi; + </param> </packagesResourceConfig> <wadlGenerators> <wadlGeneratorDescription> @@ -1646,11 +1714,19 @@ </wadlGeneratorDescription> </wadlGenerators> </configuration> + <dependencies> + <dependency> + <groupId>xerces</groupId> + <artifactId>xercesImpl</artifactId> + <version>2.11.0</version> + </dependency> + </dependencies> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>xml-maven-plugin</artifactId> + <version>1.0.1</version> <executions> <execution> <id>xslt: ${project.build.outputDirectory}/application.html</id> @@ -1681,8 +1757,8 @@ <dependencies> <dependency> <groupId>net.sf.saxon</groupId> - <artifactId>saxon</artifactId> - <version>8.7</version> + <artifactId>saxon9</artifactId> + <version>9.1.0.8</version> </dependency> </dependencies> </plugin> @@ -2062,9 +2138,9 @@ <version>1.3.0</version> </dependency> <dependency> - <groupId>rome</groupId> + <groupId>com.rometools</groupId> <artifactId>rome</artifactId> - <version>1.0</version> + <version>1.7.2</version> <exclusions> <exclusion> <groupId>jdom</groupId> @@ -2299,6 +2375,10 @@ <groupId>xerces</groupId> <artifactId>xmlParserAPIs</artifactId> </exclusion> + <exclusion> + <groupId>jdom</groupId> + <artifactId>jdom</artifactId> + </exclusion> </exclusions> </dependency> <dependency> @@ -2471,6 +2551,12 @@ <version>3.6.1</version> <scope>test</scope> </dependency> + <dependency> + <groupId>org.mockito</groupId> + <artifactId>mockito-core</artifactId> + <version>2.7.22</version> + <scope>test</scope> + </dependency> <dependency> <groupId>xmlunit</groupId> <artifactId>xmlunit</artifactId> @@ -2505,7 +2591,7 @@ <dependency> <groupId>org.jboss.arquillian.container</groupId> <artifactId>arquillian-tomcat-managed-7</artifactId> - <version>1.0.0.CR9</version> + <version>1.0.0</version> <scope>test</scope> </dependency> <dependency> @@ -2591,7 +2677,7 @@ <dependency> <groupId>org.jboss.arquillian</groupId> <artifactId>arquillian-bom</artifactId> - <version>1.1.12.Final</version> + <version>1.1.13.Final</version> <scope>import</scope> <type>pom</type> </dependency> @@ -2620,13 +2706,13 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-report-plugin</artifactId> - <version>2.18.1</version> + <version>2.19.1</version> </plugin> </plugins> </reporting> <ciManagement> - <system>Hudson</system> - <url>http://jenkins.frentix.com</url> + <system>Jenkins</system> + <url>https://jenkins.frentix.com</url> </ciManagement> </project> diff --git a/src/main/java/de/bps/course/nodes/DENCourseNode.java b/src/main/java/de/bps/course/nodes/DENCourseNode.java index a1c20a2f0e27783627bf35bd48ebdd7ce3e8884f..92f67c14c0cf40c9c5f25270a80c1743236d25fe 100644 --- a/src/main/java/de/bps/course/nodes/DENCourseNode.java +++ b/src/main/java/de/bps/course/nodes/DENCourseNode.java @@ -123,6 +123,7 @@ public class DENCourseNode extends AbstractAccessableCourseNode { /** * @see org.olat.course.nodes.CourseNode#isConfigValid() */ + @Override public StatusDescription isConfigValid() { if (oneClickStatusCache != null) { return oneClickStatusCache[0]; } @@ -138,10 +139,12 @@ public class DENCourseNode extends AbstractAccessableCourseNode { return sd; } + @Override public RepositoryEntry getReferencedRepositoryEntry() { return null; } + @Override public boolean needsReferenceToARepositoryEntry() { return false; } diff --git a/src/main/java/de/bps/course/nodes/VCCourseNode.java b/src/main/java/de/bps/course/nodes/VCCourseNode.java index efc484a460237dc4874d5090ba5c1066d9e962f4..809cefc22542fdc2f39c72da3ed6869caae84f52 100644 --- a/src/main/java/de/bps/course/nodes/VCCourseNode.java +++ b/src/main/java/de/bps/course/nodes/VCCourseNode.java @@ -207,6 +207,8 @@ public class VCCourseNode extends AbstractAccessableCourseNode { @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); + // load configuration final String providerId = getModuleConfiguration().getStringValue(CONF_PROVIDER_ID); VCProvider provider = providerId == null ? VCProviderFactory.createDefaultProvider() : VCProviderFactory.createProvider(providerId); diff --git a/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java b/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java index f0cfb7631a1b9f9be7b86911fcc158ed12f256cc..2a256914f0e806a66d75d4d464b528011bcd96ed 100644 --- a/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java +++ b/src/main/java/de/bps/course/nodes/den/DENManageParticipantsController.java @@ -241,7 +241,7 @@ public class DENManageParticipantsController extends BasicController { MailBundle ccBundles = mailManager.makeMailBundle(context, sender, notificationCtr.getMailTemplate(), sender, metaId, result); result.append(mailManager.sendMessage(ccBundles)); } - MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } notificationCmc.deactivate(); selectedIds.clear(); diff --git a/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/CourseCreationHelper.java b/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/CourseCreationHelper.java index 6febc5fb69eb7c0387f9696b59f7132f05378bd8..205e3be47caeabeba6a3e5cb1139cb1c247ab64c 100644 --- a/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/CourseCreationHelper.java +++ b/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/CourseCreationHelper.java @@ -49,11 +49,11 @@ import org.olat.core.util.Util; import org.olat.course.CourseFactory; import org.olat.course.ICourse; import org.olat.course.condition.Condition; +import org.olat.course.editor.CourseAccessAndProperties; import org.olat.course.editor.CourseEditorHelper; import org.olat.course.editor.PublishProcess; import org.olat.course.editor.PublishSetInformations; import org.olat.course.editor.StatusDescription; -import org.olat.course.nodes.AbstractAccessableCourseNode; import org.olat.course.nodes.BCCourseNode; import org.olat.course.nodes.COCourseNode; import org.olat.course.nodes.CourseNode; @@ -69,6 +69,8 @@ import org.olat.repository.CatalogEntry; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryManager; import org.olat.repository.manager.CatalogManager; +import org.olat.resource.accesscontrol.ACService; +import org.olat.resource.accesscontrol.OfferAccess; import de.tuchemnitz.wizard.helper.course.CourseExtensionHelper; import de.tuchemnitz.wizard.helper.course.HTMLDocumentHelper; @@ -277,32 +279,19 @@ public class CourseCreationHelper { // -------------------------- if (courseConfig.getPublish()) { - int access = RepositoryEntry.ACC_OWNERS; - if (courseConfig.getAclType().equals(CourseCreationConfiguration.ACL_GUEST)) { - // set "BARG" as rule - access = RepositoryEntry.ACC_USERS_GUESTS; - } else if (courseConfig.getAclType().equals(CourseCreationConfiguration.ACL_OLAT)) { - // set "BAR" as rule - access = RepositoryEntry.ACC_USERS; - } else if (courseConfig.getAclType().equals(CourseCreationConfiguration.ACL_UNI)) { - // set "BAR" rule + expert rule on university - // hasAttribute("institution","[Hochschule]") - access = RepositoryEntry.ACC_USERS; - final CourseNode cnRoot = course.getEditorTreeModel().getCourseEditorNodeById(course.getEditorTreeModel().getRootNode().getIdent()) - .getCourseNode(); - String shibInstitution = ureq.getIdentity().getUser().getProperty(UserConstants.INSTITUTIONALNAME, ureq.getLocale()); - if (shibInstitution == null) { - shibInstitution = ureq.getUserSession().getSessionInfo().getAuthProvider(); - } - cnRoot.setNoAccessExplanation(translator.translate("noaccessroot", new String[] {shibInstitution})); - if (cnRoot instanceof AbstractAccessableCourseNode) { - ((AbstractAccessableCourseNode) cnRoot).setPreConditionAccess(new Condition("hasAttribute(\"institution\",\"" + shibInstitution - + "\")")); - } - } else { - log.error("No valid ACL Rule: " + courseConfig.getAclType()); + CourseAccessAndProperties accessAndProps = courseConfig.getAccessAndProperties(); + RepositoryManager manager = RepositoryManager.getInstance(); + + addedEntry = manager.setAccessAndProperties(accessAndProps.getRepositoryEntry(), accessAndProps.getAccess(), + accessAndProps.isMembersOnly(), accessAndProps.isCanCopy(), accessAndProps.isCanReference(), + accessAndProps.isCanDownload()); + addedEntry = manager.setLeaveSetting(addedEntry, accessAndProps.getSetting()); + + List<OfferAccess> offerAccess = accessAndProps.getOfferAccess(); + ACService acService = CoreSpringFactory.getImpl(ACService.class); + for (OfferAccess newLink : offerAccess) { + acService.saveOfferAccess(newLink); } - addedEntry = RepositoryManager.getInstance().setAccess(addedEntry, access, false); } course = CourseFactory.openCourseEditSession(course.getResourceableId()); diff --git a/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/model/CourseCreationConfiguration.java b/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/model/CourseCreationConfiguration.java index 79573fd7edb32e4058ebd4d526b672f37a8f2f7a..5cfd5176fd4ec84ae621f2eba5ce3a3b556db283 100644 --- a/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/model/CourseCreationConfiguration.java +++ b/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/model/CourseCreationConfiguration.java @@ -44,6 +44,7 @@ import org.olat.core.gui.render.StringOutput; import org.olat.core.gui.render.velocity.VelocityHelper; import org.olat.core.gui.render.velocity.VelocityRenderDecorator; import org.olat.core.gui.translator.Translator; +import org.olat.course.editor.CourseAccessAndProperties; import org.olat.repository.CatalogEntry; import de.tuchemnitz.wizard.workflows.coursecreation.CourseCreationHelper; @@ -103,11 +104,21 @@ public class CourseCreationConfiguration { private Boolean publish = true; // selected catalog entry private CatalogEntry selectedParent = null; + + private CourseAccessAndProperties accessAndProperties; public CourseCreationConfiguration(final String courseTitle, final String extLink) { this.courseTitle = courseTitle; this.extLink = extLink; } + + public CourseAccessAndProperties getAccessAndProperties() { + return accessAndProperties; + } + + public void setAccessAndProperties(CourseAccessAndProperties accessAndProperties) { + this.accessAndProperties = accessAndProperties; + } /** * @return Returns the publish. diff --git a/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/steps/CcStep01.java b/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/steps/CcStep01.java index 51a40d521641d66ec59e6a8e631161afc33b9b56..40dd85ae08cc17047ebd3afb9905437f9900f4ed 100644 --- a/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/steps/CcStep01.java +++ b/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/steps/CcStep01.java @@ -100,6 +100,7 @@ class CcStep01 extends BasicStep { @Override public StepFormController getStepController(UserRequest ureq, WindowControl windowControl, StepsRunContext stepsRunContext, Form form) { + stepsRunContext.put("repoEntry", repoEntry); StepFormController stepP = new CcStep01Form(ureq, windowControl, form, stepsRunContext, null); return stepP; } diff --git a/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/steps/CcStep02.java b/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/steps/CcStep02.java index 981e72cc4dda6aa888334b8ef9e516afe948e024..94c747fb03982b0adf6c6ec54a0b80a1121a1c59 100644 --- a/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/steps/CcStep02.java +++ b/src/main/java/de/tuchemnitz/wizard/workflows/coursecreation/steps/CcStep02.java @@ -32,34 +32,16 @@ package de.tuchemnitz.wizard.workflows.coursecreation.steps; -import java.util.HashSet; -import java.util.Set; - import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.form.flexible.FormItem; -import org.olat.core.gui.components.form.flexible.FormItemContainer; -import org.olat.core.gui.components.form.flexible.FormUIFactory; -import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; -import org.olat.core.gui.components.form.flexible.elements.SingleSelection; -import org.olat.core.gui.components.form.flexible.elements.StaticTextElement; import org.olat.core.gui.components.form.flexible.impl.Form; -import org.olat.core.gui.components.form.flexible.impl.FormEvent; -import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; -import org.olat.core.gui.components.form.flexible.impl.rules.RulesFactory; -import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.wizard.BasicStep; import org.olat.core.gui.control.generic.wizard.PrevNextFinishConfig; import org.olat.core.gui.control.generic.wizard.Step; -import org.olat.core.gui.control.generic.wizard.StepFormBasicController; import org.olat.core.gui.control.generic.wizard.StepFormController; -import org.olat.core.gui.control.generic.wizard.StepsEvent; import org.olat.core.gui.control.generic.wizard.StepsRunContext; -import org.olat.core.gui.translator.Translator; -import org.olat.core.id.UserConstants; -import org.olat.core.util.Util; +import org.olat.course.editor.PublishStep01AccessForm; -import de.tuchemnitz.wizard.workflows.coursecreation.CourseCreationHelper; import de.tuchemnitz.wizard.workflows.coursecreation.model.CourseCreationConfiguration; /** @@ -100,7 +82,7 @@ public class CcStep02 extends BasicStep { @Override public StepFormController getStepController(UserRequest ureq, WindowControl windowControl, StepsRunContext stepsRunContext, Form form) { - StepFormController stepP = new CcStep02Form(ureq, windowControl, form, stepsRunContext, null); + StepFormController stepP = new PublishStep01AccessForm(ureq, windowControl, form, stepsRunContext); return stepP; } @@ -108,121 +90,4 @@ public class CcStep02 extends BasicStep { return courseConfig; } - class CcStep02Form extends StepFormBasicController { - - private Translator translator; - private FormLayoutContainer fic; - private String[] keys, values; - private SingleSelection accessChooser; - // publish checkbox - private MultipleSelectionElement publishCheckbox; - // double point text label - private StaticTextElement warning; - // BPS only, see OLAT-5534 - private boolean showAclInst = false; - - public CcStep02Form(UserRequest ureq, WindowControl wControl, Form rootForm, StepsRunContext runContext, String customLayoutPageName) { - super(ureq, wControl, rootForm, runContext, LAYOUT_VERTICAL, customLayoutPageName); - // trans for this class - translator = Util.createPackageTranslator(CourseCreationHelper.class, ureq.getLocale()); - super.setTranslator(translator); - initForm(ureq); - } - - @Override - protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { - super.formInnerEvent(ureq, source, event); - finishWorkflowItem(); - } - - @Override - protected void doDispose() { - // nothing to dispose here - } - - @Override - protected void formOK(UserRequest ureq) { - finishWorkflowItem(); - this.addToRunContext("courseConfig", getCourseConfig()); - fireEvent(ureq, StepsEvent.INFORM_FINISHED); - } - - @Override - protected void initForm(FormItemContainer formLayout, Controller listener, final UserRequest ureq) { - fic = FormLayoutContainer.createCustomFormLayout("cc02", this.getTranslator(), this.velocity_root + "/CcStep02_form.html"); - FormLayoutContainer formItems = FormLayoutContainer.createDefaultFormLayout("formItems", this.getTranslator()); - formLayout.add(fic); - formLayout.add(formItems); - - // create access limit checkbox - publishCheckbox = FormUIFactory.getInstance().addCheckboxesHorizontal("car.makepublic", formItems, new String[] {"ison"}, new String[] {""}); - publishCheckbox.select("ison", true); - - publishCheckbox.addActionListener(FormEvent.ONCHANGE); - // register for on click event to hide/disable other elements - publishCheckbox.addActionListener(FormEvent.ONCLICK); - - int numOpts = showAclInst ? 3 : 2; - keys = new String[numOpts]; - values = new String[numOpts]; - - keys[0] = CourseCreationConfiguration.ACL_GUEST; - keys[1] = CourseCreationConfiguration.ACL_OLAT; - values[0] = translator.translate("car.nologin"); - values[1] = translator.translate("car.olat"); - - // BPS only, see OLAT-5534 - if(showAclInst) { - String institution = ureq.getIdentity().getUser().getProperty(UserConstants.INSTITUTIONALNAME, ureq.getLocale()); - if(institution == null) institution = ureq.getUserSession().getSessionInfo().getAuthProvider(); - keys[2] = CourseCreationConfiguration.ACL_UNI; - values[2] = translator.translate("car.university", new String[] { institution }); - } - - accessChooser = FormUIFactory.getInstance().addDropdownSingleselect("car.label", formItems, keys, values, null); - accessChooser.select(CourseCreationConfiguration.ACL_OLAT, true); - accessChooser.addActionListener(FormEvent.ONCHANGE); - - // text warning - warning = FormUIFactory.getInstance().addStaticTextElement("car.warning.text", "car.label", translate("car.warning.text"), formItems); - - // rules to hide / unhide - Set<FormItem> targetsDoPublish = new HashSet<>(); - targetsDoPublish.add(accessChooser); - Set<FormItem> targetsDontPublish = new HashSet<>(); - targetsDontPublish.add(warning); - - RulesFactory.createHideRule(publishCheckbox, null, targetsDoPublish, formItems); - RulesFactory.createShowRule(publishCheckbox, "ison", targetsDoPublish, formItems); - - RulesFactory.createHideRule(publishCheckbox, "ison", targetsDontPublish, formItems); - RulesFactory.createShowRule(publishCheckbox, null, targetsDontPublish, formItems); - - initWorkflowItem(); - } - - public void finishWorkflowItem() { - getCourseConfig().setPublish(isPublishSelected()); - getCourseConfig().setAclType(accessChooser.getSelectedKey()); - } - - public void initWorkflowItem() { - if (!getCourseConfig().getAclType().isEmpty()) { - accessChooser.select(getCourseConfig().getAclType(), true); - } - - if (getCourseConfig().getPublish()) { - publishCheckbox.select("ison", true); - warning.setVisible(false); - } else { - publishCheckbox.select("ison", false); - accessChooser.setVisible(false); - warning.setVisible(true); - } - } - - private final boolean isPublishSelected() { - return publishCheckbox.isSelected(0); - } - } } diff --git a/src/main/java/org/olat/_spring/extensionContext.xml b/src/main/java/org/olat/_spring/extensionContext.xml index b1bec4e8a2125c6ecb3f6e65a12c685dc074cd96..9e2a4461669204463914d1d93c7ed6b93e2c2960 100644 --- a/src/main/java/org/olat/_spring/extensionContext.xml +++ b/src/main/java/org/olat/_spring/extensionContext.xml @@ -701,10 +701,7 @@ <bean class="org.olat.course.statistic.StatisticAutoCreator" scope="prototype"> <property name="className" value="org.olat.course.statistic.weekly.WeeklyStatisticDisplayController"/> <property name="statisticManager"> - <!-- mysql specific statistic manager --> <bean class="org.olat.course.statistic.weekly.WeeklyStatisticManager"/> - <!-- not mysql specific statistic manager --> - <!-- <bean class="org.olat.course.statistic.weekly.GeneralWeeklyStatisticManager"/> --> </property> </bean> </property> diff --git a/src/main/java/org/olat/admin/_content/systemroles.html b/src/main/java/org/olat/admin/_content/systemroles.html index 1407270bcabdb825df7dfb7f925ecbed985559e2..5a0aaf9d8c260a1b970a86cea1b9b7a77e17deef 100644 --- a/src/main/java/org/olat/admin/_content/systemroles.html +++ b/src/main/java/org/olat/admin/_content/systemroles.html @@ -1,2 +1,3 @@ -<h4>$r.translate("menu.menuaccess")</h4> +<legend>$r.contextHelpWithWrapper("User management") +<h4>$r.translate("menu.menuaccess")</h4></legend> $r.translate("sysroles.intro") \ No newline at end of file diff --git a/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java b/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java index f5ab938677e888d06add1b05c2f801b8321e8036..9dd08931f1f9318d9bd1ac1223a20185f1c02fb0 100644 --- a/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java +++ b/src/main/java/org/olat/admin/securitygroup/gui/GroupController.java @@ -541,7 +541,7 @@ public class GroupController extends BasicController { MailBundle ccBundle = mailManager.makeMailBundle(context, ureq.getIdentity(), mailTemplate, sender, metaId, result); result.append(mailManager.sendMessage(ccBundle)); } - MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } } @@ -588,7 +588,7 @@ public class GroupController extends BasicController { MailBundle ccBundle = mailManager.makeMailBundle(context, ureq.getIdentity(), mailTemplate, sender, metaId, result); result.append(mailManager.sendMessage(ccBundle)); } - MailHelper.appendErrorsAndWarnings(result, errorMessage, infoMessage, ureq.getLocale()); + MailHelper.appendErrorsAndWarnings(result, errorMessage, infoMessage, ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } // report any errors on screen if (infoMessage.length() > 0) getWindowControl().setWarning(infoMessage.toString()); diff --git a/src/main/java/org/olat/admin/user/UserCreateController.java b/src/main/java/org/olat/admin/user/UserCreateController.java index 91768f8cb956602ce5e60f9fa76933ba39262801..bcbd61b8abcbcbed208ffd5a682209ab41fcf428 100644 --- a/src/main/java/org/olat/admin/user/UserCreateController.java +++ b/src/main/java/org/olat/admin/user/UserCreateController.java @@ -175,6 +175,7 @@ class NewUserForm extends FormBasicController { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { setFormTitle("title.newuser"); setFormDescription("new.form.please.enter"); + setFormContextHelp("User management"); formLayout.setElementCssClass("o_sel_id_create"); usernameTextElement = uifactory.addTextElement(LOGINNAME, "username", 128, "", formLayout); diff --git a/src/main/java/org/olat/admin/user/UserSearchController.java b/src/main/java/org/olat/admin/user/UserSearchController.java index bce57c17386322969c69726808b4c44d79ece047..afe827639732a019cac1cf337b0b1f10d2948924 100644 --- a/src/main/java/org/olat/admin/user/UserSearchController.java +++ b/src/main/java/org/olat/admin/user/UserSearchController.java @@ -273,63 +273,71 @@ public class UserSearchController extends BasicController { } else if (source == searchform) { if (event == Event.DONE_EVENT) { // form validation was ok - - String login = searchform.login.getValue(); - // build user fields search map - Map<String, String> userPropertiesSearch = new HashMap<String, String>(); - for (UserPropertyHandler userPropertyHandler : searchform.userPropertyHandlers) { - if (userPropertyHandler == null) continue; - FormItem ui = searchform.propFormItems.get(userPropertyHandler.getName()); - String uiValue = userPropertyHandler.getStringValue(ui); - if (StringHelper.containsNonWhitespace(uiValue)) { - userPropertiesSearch.put(userPropertyHandler.getName(), uiValue); - getLogger().info("Search property:" + userPropertyHandler.getName() + "=" + uiValue); - } - } - if (userPropertiesSearch.isEmpty()) userPropertiesSearch = null; - - tableCtr = new TableController(tableConfig, ureq, getWindowControl(), myContent.getTranslator()); - listenTo(tableCtr); - - List<Identity> users = searchUsers(login, userPropertiesSearch, true); - int maxResults = securityModule.getUserSearchMaxResultsValue(); - if(maxResults > 0 && users.size() > maxResults) { - users = users.subList(0, maxResults); - showWarning("error.search.maxResults", Integer.toString(maxResults)); - } - if (!users.isEmpty()) { - tdm = new UserTableDataModel(users, ureq.getLocale(), isAdministrativeUser); - // add the data column descriptors - tdm.addColumnDescriptors(tableCtr, null); - // add the action columns - if (useMultiSelect) { - // add multiselect action - tableCtr.addMultiSelectAction(this.actionKeyChoose, ACTION_MULTISELECT_CHOOSE); - } else { - // add single column selec action - tableCtr.addColumnDescriptor(new StaticColumnDescriptor(ACTION_SINGLESELECT_CHOOSE, "table.header.action", myContent - .getTranslator().translate("action.choose"))); - } - tableCtr.setTableDataModel(tdm); - tableCtr.setMultiSelect(useMultiSelect); - searchPanel.pushContent(tableCtr.getInitialComponent()); - myContent.contextPut("showButton","true"); - } else { - getWindowControl().setInfo(translate("error.no.user.found")); - } + doSearch(ureq); } else if (event == Event.CANCELLED_EVENT) { fireEvent(ureq, Event.CANCELLED_EVENT); } } - } /** * @see org.olat.core.gui.control.DefaultController#doDispose(boolean) */ + @Override protected void doDispose() { // Child controllers auto-disposed by basic controller } + + private void doSearch(UserRequest ureq) { + String login = searchform.login.getValue(); + // build user fields search map + Map<String, String> userPropertiesSearch = new HashMap<>(); + for (UserPropertyHandler userPropertyHandler : searchform.userPropertyHandlers) { + if (userPropertyHandler == null) continue; + FormItem ui = searchform.propFormItems.get(userPropertyHandler.getName()); + String uiValue = userPropertyHandler.getStringValue(ui); + if(userPropertyHandler.getName().startsWith("genericCheckboxProperty")) { + if(!"false".equals(uiValue)) { + userPropertiesSearch.put(userPropertyHandler.getName(), uiValue); + } + } else if (StringHelper.containsNonWhitespace(uiValue)) { + userPropertiesSearch.put(userPropertyHandler.getName(), uiValue); + } + } + if (userPropertiesSearch.isEmpty()) { + userPropertiesSearch = null; + } + + tableCtr = new TableController(tableConfig, ureq, getWindowControl(), myContent.getTranslator()); + listenTo(tableCtr); + + List<Identity> users = searchUsers(login, userPropertiesSearch, true); + int maxResults = securityModule.getUserSearchMaxResultsValue(); + if(maxResults > 0 && users.size() > maxResults) { + users = users.subList(0, maxResults); + showWarning("error.search.maxResults", Integer.toString(maxResults)); + } + if (!users.isEmpty()) { + tdm = new UserTableDataModel(users, getLocale(), isAdministrativeUser); + // add the data column descriptors + tdm.addColumnDescriptors(tableCtr, null); + // add the action columns + if (useMultiSelect) { + // add multiselect action + tableCtr.addMultiSelectAction(this.actionKeyChoose, ACTION_MULTISELECT_CHOOSE); + } else { + // add single column selec action + tableCtr.addColumnDescriptor(new StaticColumnDescriptor(ACTION_SINGLESELECT_CHOOSE, "table.header.action", myContent + .getTranslator().translate("action.choose"))); + } + tableCtr.setTableDataModel(tdm); + tableCtr.setMultiSelect(useMultiSelect); + searchPanel.pushContent(tableCtr.getInitialComponent()); + myContent.contextPut("showButton","true"); + } else { + getWindowControl().setInfo(translate("error.no.user.found")); + } + } /** * Can be overwritten by subclassen to search other users or filter users. diff --git a/src/main/java/org/olat/admin/user/UserSearchFlexiController.java b/src/main/java/org/olat/admin/user/UserSearchFlexiController.java index 072fbabeacc4b510c22b75f3374e9b06065615c8..87060249840878c5dab6289bfdb715c56f46f224 100644 --- a/src/main/java/org/olat/admin/user/UserSearchFlexiController.java +++ b/src/main/java/org/olat/admin/user/UserSearchFlexiController.java @@ -166,6 +166,8 @@ public class UserSearchFlexiController extends FlexiAutoCompleterController { searchFormContainer = FormLayoutContainer.createDefaultFormLayout("usersearchPanel", getTranslator()); searchFormContainer.setRootForm(mainForm); + searchFormContainer.setElementCssClass("o_sel_usersearch_searchform"); + searchFormContainer.setFormTitle(translate("header.normal")); layoutCont.add(searchFormContainer); layoutCont.add("usersearchPanel", searchFormContainer); @@ -412,9 +414,12 @@ public class UserSearchFlexiController extends FlexiAutoCompleterController { if (userPropertyHandler == null) continue; FormItem ui = propFormItems.get(userPropertyHandler.getName()); String uiValue = userPropertyHandler.getStringValue(ui); - if (StringHelper.containsNonWhitespace(uiValue)) { + if(userPropertyHandler.getName().startsWith("genericCheckboxProperty")) { + if(!"false".equals(uiValue)) { + userPropertiesSearch.put(userPropertyHandler.getName(), uiValue); + } + } else if (StringHelper.containsNonWhitespace(uiValue)) { userPropertiesSearch.put(userPropertyHandler.getName(), uiValue); - getLogger().info("Search property:" + userPropertyHandler.getName() + "=" + uiValue); } } if (userPropertiesSearch.isEmpty()) { diff --git a/src/main/java/org/olat/admin/user/UserSearchForm.java b/src/main/java/org/olat/admin/user/UserSearchForm.java index deb568acb0368c3875957d6f0dd0978d34700d51..5e5f21adcbe3d836b02220fc9e13983ad123b12f 100644 --- a/src/main/java/org/olat/admin/user/UserSearchForm.java +++ b/src/main/java/org/olat/admin/user/UserSearchForm.java @@ -41,6 +41,7 @@ import org.olat.core.util.Util; import org.olat.user.UserManager; import org.olat.user.propertyhandlers.EmailProperty; import org.olat.user.propertyhandlers.UserPropertyHandler; +import org.springframework.beans.factory.annotation.Autowired; /** @@ -60,8 +61,11 @@ public class UserSearchForm extends FormBasicController { private FormLink searchButton; protected TextElement login; - protected List<UserPropertyHandler> userPropertyHandlers; - protected Map<String,FormItem> propFormItems; + protected final List<UserPropertyHandler> userPropertyHandlers; + protected final Map<String,FormItem> propFormItems = new HashMap<>(); + + @Autowired + private UserManager userManager; /** @@ -73,9 +77,8 @@ public class UserSearchForm extends FormBasicController { public UserSearchForm(UserRequest ureq, WindowControl wControl, boolean isAdminProps, boolean cancelButton, boolean allowReturnKey) { super(ureq, wControl); - UserManager um = UserManager.getInstance(); - Translator decoratedTranslator = um.getPropertyHandlerTranslator(this.getTranslator()); - setTranslator(decoratedTranslator); + setTranslator(userManager.getPropertyHandlerTranslator(getTranslator())); + userPropertyHandlers = userManager.getUserPropertyHandlersFor(getClass().getCanonicalName(), isAdminProps); this.isAdminProps = isAdminProps; this.cancelButton = cancelButton; @@ -97,7 +100,7 @@ public class UserSearchForm extends FormBasicController { } boolean filled = !login.isEmpty(); - StringBuffer full = new StringBuffer(login.getValue().trim()); + StringBuilder full = new StringBuilder(login.getValue().trim()); FormItem lastFormElement = login; // DO NOT validate each user field => see OLAT-3324 @@ -151,22 +154,12 @@ public class UserSearchForm extends FormBasicController { login.setVisible(isAdminProps); login.setElementCssClass("o_sel_user_search_username"); - UserManager um = UserManager.getInstance(); - Translator tr = Util.createPackageTranslator( - UserPropertyHandler.class, - getLocale(), - getTranslator()); - - userPropertyHandlers = um.getUserPropertyHandlersFor( - getClass().getCanonicalName(), isAdminProps); - - propFormItems = new HashMap<String,FormItem>(); + Translator tr = Util.createPackageTranslator(UserPropertyHandler.class, getLocale(), getTranslator()); + for (UserPropertyHandler userPropertyHandler : userPropertyHandlers) { if (userPropertyHandler == null) continue; - FormItem fi = userPropertyHandler.addFormItem( - getLocale(), null, getClass().getCanonicalName(), false, formLayout - ); + FormItem fi = userPropertyHandler.addFormItem(getLocale(), null, getClass().getCanonicalName(), false, formLayout); fi.setTranslator(tr); // DO NOT validate email field => see OLAT-3324, OO-155, OO-222 diff --git a/src/main/java/org/olat/admin/user/UserShortDescription.java b/src/main/java/org/olat/admin/user/UserShortDescription.java index 9acb1d251eaab20f437c1dc3c110366ea7d17b12..fe54332bb410cfe608343194bd297097cb07eba5 100644 --- a/src/main/java/org/olat/admin/user/UserShortDescription.java +++ b/src/main/java/org/olat/admin/user/UserShortDescription.java @@ -36,6 +36,7 @@ import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; import org.olat.core.id.Identity; import org.olat.core.id.Roles; +import org.olat.core.id.UserConstants; import org.olat.user.UserManager; import org.olat.user.propertyhandlers.UserPropertyHandler; import org.springframework.beans.factory.annotation.Autowired; @@ -53,6 +54,9 @@ public class UserShortDescription extends BasicController { private static final String usageIdentifyer = UserShortDescription.class.getCanonicalName(); + private final VelocityContainer mainVC; + private final boolean isAdministrativeUser; + @Autowired private UserManager userManager; @Autowired @@ -64,22 +68,45 @@ public class UserShortDescription extends BasicController { String usernameLabel = translate("table.user.login"); //use the PropertyHandlerTranslator for the velocityContainer setTranslator(userManager.getPropertyHandlerTranslator(getTranslator())); - VelocityContainer velocityContainer = createVelocityContainer("userShortDescription"); - + mainVC = createVelocityContainer("userShortDescription"); + mainVC.setDomReplacementWrapperRequired(false); // we provide our own DOM replacement ID + Roles roles = ureq.getUserSession().getRoles(); - boolean isAdministrativeUser = securityModule.isUserAllowedAdminProps(roles); - //(roles.isAuthor() || roles.isGroupManager() || roles.isUserManager() || roles.isOLATAdmin()); + isAdministrativeUser = securityModule.isUserAllowedAdminProps(roles); + boolean alreadyDefinedUsername = false; List<UserPropertyHandler> userPropertyHandlers = userManager.getUserPropertyHandlersFor(usageIdentifyer, isAdministrativeUser); - velocityContainer.contextPut("userPropertyHandlers", userPropertyHandlers); - velocityContainer.contextPut("user", identity.getUser()); - velocityContainer.contextPut("identityKey", identity.getKey()); + for(UserPropertyHandler userPropertyHandler:userPropertyHandlers) { + if(UserConstants.USERNAME.equals(userPropertyHandler.getName())) { + alreadyDefinedUsername = true; + } + } - if(getIdentity().equals(identity) || isAdministrativeUser) { - velocityContainer.contextPut("username", identity.getName()); + mainVC.contextPut("userPropertyHandlers", userPropertyHandlers); + mainVC.contextPut("user", identity.getUser()); + mainVC.contextPut("identityKey", identity.getKey()); + mainVC.contextPut("usernamePosition", "top"); + if(!alreadyDefinedUsername && (getIdentity().equals(identity) || isAdministrativeUser)) { + mainVC.contextPut("username", identity.getName()); } - velocityContainer.contextPut("usernameLabel", usernameLabel); + mainVC.contextPut("usernameLabel", usernameLabel); - putInitialPanel(velocityContainer); + putInitialPanel(mainVC); + } + + /** + * Set the position of the username / identity key if you + * have the permission to see them. + */ + public void setUsernameAtTop() { + mainVC.contextPut("usernamePosition", "top"); + } + + /** + * Set the position of the username / identity key if you + * have the permission to see them. + */ + public void setUsernameAtBottom() { + mainVC.contextPut("usernamePosition", "bottom"); } @Override diff --git a/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java b/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java index b60a15a8b8f3711b359d0e33d10b57ab3b6a3802..b9c176c3d7d7a2594b6f0b7b128a145a7ee12cd8 100644 --- a/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java +++ b/src/main/java/org/olat/admin/user/UsermanagerUserSearchController.java @@ -56,6 +56,7 @@ import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.DateChooser; import org.olat.core.gui.components.form.flexible.elements.FormLink; +import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; import org.olat.core.gui.components.form.flexible.elements.SelectionElement; import org.olat.core.gui.components.form.flexible.elements.SingleSelection; import org.olat.core.gui.components.form.flexible.elements.TextElement; @@ -442,9 +443,14 @@ public class UsermanagerUserSearchController extends BasicController implements Map<String, String> userPropertiesSearch = new HashMap<String, String>(); for (UserPropertyHandler userPropertyHandler : searchform.getPropertyHandlers()) { if (userPropertyHandler == null) continue; + FormItem ui = searchform.getItem(userPropertyHandler.getName()); String uiValue = userPropertyHandler.getStringValue(ui); - if (StringHelper.containsNonWhitespace(uiValue)) { + if(userPropertyHandler.getName().startsWith("genericCheckboxProperty") && ui instanceof MultipleSelectionElement) { + if(!"false".equals(uiValue)) {//ignore false for the search + userPropertiesSearch.put(userPropertyHandler.getName(), uiValue); + } + } else if (StringHelper.containsNonWhitespace(uiValue)) { // when searching for deleted users, add wildcard to match with backup prefix if (userPropertyHandler instanceof EmailProperty && searchform.getStatus().equals(Identity.STATUS_DELETED)) { uiValue = "*" + uiValue; @@ -942,6 +948,7 @@ class UsermanagerUserSearchForm extends FormBasicController { TextElement textElement = (TextElement) fi; textElement.setItemValidatorProvider(null); } + System.out.println(fi); fi.setElementCssClass("o_sel_user_search_".concat(userPropertyHandler.getName().toLowerCase())); fi.setTranslator(getTranslator()); diff --git a/src/main/java/org/olat/admin/user/_content/userShortDescription.html b/src/main/java/org/olat/admin/user/_content/userShortDescription.html index 6f0a4014ef043c939b7c3b210d1a9d60ae486649..1fb8955ce1a79712826a3e78289591fd50c06aa6 100644 --- a/src/main/java/org/olat/admin/user/_content/userShortDescription.html +++ b/src/main/java/org/olat/admin/user/_content/userShortDescription.html @@ -1,20 +1,36 @@ +<div class="o_userShortDescription" id="$r.getCId()"> <table class="table table-bordered table-condensed table-striped"> - #if($username) - <tr> - <th>$usernameLabel</th> - <td>$username</td> - </tr> - <tr> + #if($r.isNotNull($usernamePosition) && $usernamePosition == "top") + #if($r.isNotNull($username)) + <tr class="o_prop o_username"> + <th>$usernameLabel</th> + <td>$username</td> + </tr> + #end + <tr class="o_prop o_id"> <th>Identity</th> <td>$identityKey</td> </tr> #end #foreach( $propertyHandler in $userPropertyHandlers ) #if ($propertyHandler.getUserPropertyAsHTML($user, $locale) && $propertyHandler.getUserPropertyAsHTML($user, $locale) != "") - <tr> + <tr class="o_prop o_${propertyHandler.name}"> <th>$r.translate($propertyHandler.i18nFormElementLabelKey())</th> <td>$propertyHandler.getUserPropertyAsHTML($user, $locale)</td> </tr> #end #end + #if($r.isNotNull($usernamePosition) && $usernamePosition == "bottom") + #if($r.isNotNull($username)) + <tr class="o_prop o_username"> + <th>$usernameLabel</th> + <td>$username</td> + </tr> + #end + <tr class="o_prop o_id"> + <th>Identity</th> + <td>$identityKey</td> + </tr> + #end </table> +</div> diff --git a/src/main/java/org/olat/admin/user/_content/usermanagerUsersearch.html b/src/main/java/org/olat/admin/user/_content/usermanagerUsersearch.html index f935df32b9e7bf8fe43fa1e8e7dab54cef04a1fd..678d063726e183e81a9f915dc58401ffc3befb9d 100644 --- a/src/main/java/org/olat/admin/user/_content/usermanagerUsersearch.html +++ b/src/main/java/org/olat/admin/user/_content/usermanagerUsersearch.html @@ -1,4 +1,4 @@ <fieldset> - <legend>$r.translate("title.usersearch")</legend> + <legend>$r.translate("title.usersearch") $r.contextHelpWithWrapper("User management")</legend> $r.render("usersearch") </fieldset> \ No newline at end of file diff --git a/src/main/java/org/olat/admin/user/_content/usersearchext.html b/src/main/java/org/olat/admin/user/_content/usersearchext.html index e8597a697638ff0a6e000465883a1de5b5e10a0d..6fc2406404d26f49730b9cc5e37c060d05987e37 100644 --- a/src/main/java/org/olat/admin/user/_content/usersearchext.html +++ b/src/main/java/org/olat/admin/user/_content/usersearchext.html @@ -10,11 +10,7 @@ <p><i>$r.translate("autocompletion.info")</i></p> <p>$r.render("autocompletionsearch")</p> </fieldset> - <br /> #end - <fieldset class="o_sel_usersearch_searchform"> - <legend>$r.translate("header.normal")</legend> - $r.render("usersearchPanel") - </fieldset> + $r.render("usersearchPanel") #end diff --git a/src/main/java/org/olat/admin/user/course/CourseOverviewController.java b/src/main/java/org/olat/admin/user/course/CourseOverviewController.java index 6e1db8aca41ea0bd5a8c37225d8cc4b32bcf721c..a3b696987c510a56867a1067fb6df5961ecd2802 100644 --- a/src/main/java/org/olat/admin/user/course/CourseOverviewController.java +++ b/src/main/java/org/olat/admin/user/course/CourseOverviewController.java @@ -493,7 +493,7 @@ public class CourseOverviewController extends BasicController { //make sure all is committed before loading the model again (I see issues without) DBFactory.getInstance().commitAndCloseSession(); - MailHelper.printErrorsAndWarnings(result, getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); } /** @@ -564,7 +564,7 @@ public class CourseOverviewController extends BasicController { MailPackage mailing = new MailPackage(doSendMail); // 2) remove as participant businessGroupService.removeParticipants(getIdentity(), membersToRemove, group, mailing); - MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); } } diff --git a/src/main/java/org/olat/admin/user/delete/_content/deleteTabbedPane.html b/src/main/java/org/olat/admin/user/delete/_content/deleteTabbedPane.html index 0b41365a656fce5a581df55d4a3dfc8bfedefa2f..44de709629b6f212742f88fcaaa5de57d5643c21 100644 --- a/src/main/java/org/olat/admin/user/delete/_content/deleteTabbedPane.html +++ b/src/main/java/org/olat/admin/user/delete/_content/deleteTabbedPane.html @@ -1 +1,2 @@ +$r.contextHelpWithWrapper("User management") $r.render("userDeleteTabP") \ No newline at end of file diff --git a/src/main/java/org/olat/admin/user/delete/_content/directdelete.html b/src/main/java/org/olat/admin/user/delete/_content/directdelete.html index 93ab3f793d46eb0c663286253cdc6b96113ba6f2..5c1036df3e04457f07e6188ed7d11cbd88d78a66 100644 --- a/src/main/java/org/olat/admin/user/delete/_content/directdelete.html +++ b/src/main/java/org/olat/admin/user/delete/_content/directdelete.html @@ -1,5 +1,5 @@ <p class="o_note"> - $r.translate("delete.users.direct.header") + $r.translate("delete.users.direct.header") $r.contextHelpWithWrapper("User management") </p> $r.render("usersearch") <div> diff --git a/src/main/java/org/olat/admin/user/delete/service/DeleteUserDataTask.java b/src/main/java/org/olat/admin/user/delete/service/DeleteUserDataTask.java index 8b4f755c542afc9b51d72159d3ef868eae82a417..a03028e94f813ad04ebaac3a4e7d4caf075f2d1d 100644 --- a/src/main/java/org/olat/admin/user/delete/service/DeleteUserDataTask.java +++ b/src/main/java/org/olat/admin/user/delete/service/DeleteUserDataTask.java @@ -39,6 +39,7 @@ import org.olat.core.util.StringHelper; import org.olat.course.CourseFactory; import org.olat.course.ICourse; import org.olat.course.PersistingCourseImpl; +import org.olat.course.assessment.manager.CourseAssessmentManagerImpl; import org.olat.course.nodes.ProjectBrokerCourseNode; import org.olat.course.nodes.TACourseNode; import org.olat.course.nodes.ta.DropboxController; @@ -72,7 +73,7 @@ public class DeleteUserDataTask implements LongRunnable { Identity identity = CoreSpringFactory.getImpl(BaseSecurity.class).loadIdentityByKey(identityKey); deleteHomesMetaAndVersionDataOf(identity); deleteAllTempQtiEditorFilesOf(identity); - deleteAllDropboxReturnboxFilesOf(identity); + deleteAllCoursesUserFilesOf(identity); log.info("Finished UserFileDeletionManager thread for identity=" + identity + " in " + (System.currentTimeMillis() - startTime) + " (ms)"); } @@ -116,26 +117,40 @@ public class DeleteUserDataTask implements LongRunnable { * * @param identity */ - private void deleteAllDropboxReturnboxFilesOf(Identity identity) { - File courseBaseDir = getCourseBaseContainer(); + private void deleteAllCoursesUserFilesOf(Identity identity) { + File coursesBaseDir = getCoursesBaseContainer(); // loop over all courses path e.g. olatdata\bcroot\course\78931391428316\dropboxes\78933379704296\deltest // ^^^^^^^^^ dirTypeName - String[] courseDirNames = courseBaseDir.list(); + String[] courseDirNames = coursesBaseDir.list(); // 1. loop over all course-id e.g. 78931391428316 for (String courseDirName:courseDirNames) { if(!StringHelper.isLong(courseDirName)) continue; - File courseDir = new File(courseBaseDir, courseDirName); + File courseDir = new File(coursesBaseDir, courseDirName); if (courseDir.isDirectory()) { - deleteAllDropboxReturnboxFiles(identity, courseDir); + deleteAssessmentDocuments(identity, courseDir); + deleteDropboxReturnbox(identity, courseDir); + } + } + } + + private void deleteAssessmentDocuments(Identity identity, File courseDir) { + File assessmentDocsDir = new File(courseDir, CourseAssessmentManagerImpl.ASSESSMENT_DOCS_DIR); + if(assessmentDocsDir.exists()) { + File[] nodeDirs = assessmentDocsDir.listFiles(); + for(File nodeDir:nodeDirs) { + File userDir = new File(nodeDir, "person_" + identity.getKey()); + if(userDir.exists()) { + FileUtils.deleteDirsAndFiles(userDir, true, true); + log.audit("User-Deletion: identity=" + identity.getName() +" : User file data deleted under dir=" + userDir.getAbsolutePath()); + } } } } - private void deleteAllDropboxReturnboxFiles(Identity identity, File courseDir) { + private void deleteDropboxReturnbox(Identity identity, File courseDir) { File returnboxDir = new File(courseDir, ReturnboxController.RETURNBOX_DIR_NAME); File dropboxDir = new File(courseDir, DropboxController.DROPBOX_DIR_NAME); - if(returnboxDir.exists() || dropboxDir.exists()) { ICourse currentCourse = null; File[] dropboxReturnboxDirs = new File[]{ returnboxDir, dropboxDir}; @@ -206,7 +221,7 @@ public class DeleteUserDataTask implements LongRunnable { * * @return e.g. olatdata\bcroot\course\ */ - private File getCourseBaseContainer() { + private File getCoursesBaseContainer() { OlatRootFolderImpl courseRootContainer = new OlatRootFolderImpl(File.separator + PersistingCourseImpl.COURSE_ROOT_DIR_NAME + File.separator, null); return courseRootContainer.getBasefile(); } diff --git a/src/main/java/org/olat/admin/user/groups/GroupOverviewController.java b/src/main/java/org/olat/admin/user/groups/GroupOverviewController.java index f2ed51d1ec4da115b75730acf74a14a4c08f7821..cc80983c1b1c7e5c7c353073f62709b50a144dbe 100644 --- a/src/main/java/org/olat/admin/user/groups/GroupOverviewController.java +++ b/src/main/java/org/olat/admin/user/groups/GroupOverviewController.java @@ -325,7 +325,7 @@ public class GroupOverviewController extends BasicController { MailPackage mailing = new MailPackage(doSendMail); // 2) remove as participant businessGroupService.removeParticipants(getIdentity(), Collections.singletonList(identity), group, mailing); - MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); } } diff --git a/src/main/java/org/olat/admin/user/imp/_content/importindex.html b/src/main/java/org/olat/admin/user/imp/_content/importindex.html index 45aca62095092fbebc97d771dc3164a141db6d1e..516877b20096e5a7b6f3b9ceb4b1215563b11ad6 100644 --- a/src/main/java/org/olat/admin/user/imp/_content/importindex.html +++ b/src/main/java/org/olat/admin/user/imp/_content/importindex.html @@ -1,4 +1,5 @@ -<h3>$r.translate("title")</h3> +<legend>$r.contextHelpWithWrapper("User management") +<h3>$r.translate("title")</h3></legend> <p>$r.translate("import.description0")</p> <p>$r.translate("import.description1")</p> <ul> diff --git a/src/main/java/org/olat/basesecurity/ui/GroupController.java b/src/main/java/org/olat/basesecurity/ui/GroupController.java index c73e58c5f96e91f3b665f99d8eaa9cd939f5597f..466f356ecba7ff8800b5d55cfc051a4e7bf48307 100644 --- a/src/main/java/org/olat/basesecurity/ui/GroupController.java +++ b/src/main/java/org/olat/basesecurity/ui/GroupController.java @@ -551,7 +551,7 @@ public class GroupController extends BasicController { MailBundle ccBundle = mailManager.makeMailBundle(context, ureq.getIdentity(), mailTemplate, sender, metaId, result); result.append(mailManager.sendMessage(ccBundle)); } - MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } } @@ -598,7 +598,7 @@ public class GroupController extends BasicController { MailBundle ccBundle = mailManager.makeMailBundle(context, ureq.getIdentity(), mailTemplate, sender, metaId, result); result.append(mailManager.sendMessage(ccBundle)); } - MailHelper.appendErrorsAndWarnings(result, errorMessage, infoMessage, ureq.getLocale()); + MailHelper.appendErrorsAndWarnings(result, errorMessage, infoMessage, ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } // report any errors on screen if (infoMessage.length() > 0) getWindowControl().setWarning(infoMessage.toString()); diff --git a/src/main/java/org/olat/commons/calendar/ui/CalendarEntryDetailsController.java b/src/main/java/org/olat/commons/calendar/ui/CalendarEntryDetailsController.java index 8cf4e04a7263aee895ec1db89e2ec1f65d2c70e5..fc175aa48f92746f95fc5ffdc9e507aba267379d 100644 --- a/src/main/java/org/olat/commons/calendar/ui/CalendarEntryDetailsController.java +++ b/src/main/java/org/olat/commons/calendar/ui/CalendarEntryDetailsController.java @@ -65,7 +65,7 @@ public class CalendarEntryDetailsController extends BasicController { private Collection<KalendarRenderWrapper> availableCalendars; private boolean isNew, isReadOnly; private KalendarEvent kalendarEvent; - private VelocityContainer mainVC, linkVC; + private VelocityContainer linkVC; private TabbedPane pane; private CalendarEntryForm eventForm; private CloseableModalController cmc; @@ -87,11 +87,8 @@ public class CalendarEntryDetailsController extends BasicController { this.kalendarEvent = kalendarEvent; this.isNew = isNew; - mainVC = createVelocityContainer ("calEditMain"); - mainVC.contextPut("caller", caller); pane = new TabbedPane("pane", getLocale()); pane.addListener(this); - mainVC.put("pane", pane); eventForm = new CalendarEntryForm(ureq, wControl, kalendarEvent, calendarWrapper, availableCalendars, isNew); listenTo(eventForm); @@ -124,7 +121,7 @@ public class CalendarEntryDetailsController extends BasicController { } // wrap everything in a panel - putInitialPanel(mainVC); + putInitialPanel(pane); } @Override diff --git a/src/main/java/org/olat/commons/calendar/ui/_content/calEditDetails.html b/src/main/java/org/olat/commons/calendar/ui/_content/calEditDetails.html deleted file mode 100644 index 2fa94c18bb4bef47e430f056113f4268063ce9d9..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/commons/calendar/ui/_content/calEditDetails.html +++ /dev/null @@ -1 +0,0 @@ -$r.render("eventForm") \ No newline at end of file diff --git a/src/main/java/org/olat/commons/calendar/ui/_content/calEditMain.html b/src/main/java/org/olat/commons/calendar/ui/_content/calEditMain.html deleted file mode 100644 index 70a7e0cd8df30f99f9cffd11895c21be85423a64..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/commons/calendar/ui/_content/calEditMain.html +++ /dev/null @@ -1 +0,0 @@ -$r.render("pane") \ No newline at end of file diff --git a/src/main/java/org/olat/commons/file/filechooser/FileChooseCreateEditController.java b/src/main/java/org/olat/commons/file/filechooser/FileChooseCreateEditController.java index 99689afb3b61f17f34bdbeee98806240c1b5caa5..e24c298807018d9b11689c5ab51dd0d617c0fe5c 100644 --- a/src/main/java/org/olat/commons/file/filechooser/FileChooseCreateEditController.java +++ b/src/main/java/org/olat/commons/file/filechooser/FileChooseCreateEditController.java @@ -265,7 +265,7 @@ public class FileChooseCreateEditController extends BasicController{ VFSContainer vfsRoot = new NamedContainerImpl(getTranslator().translate(NLS_FOLDER_DISPLAYNAME), rootContainer); VFSItemFilter typeFilter = null; if (!allFileSuffixesAllowed && allowedFileSuffixes != null) { - typeFilter = new VFSItemFileTypeFilter(allowedFileSuffixes); + typeFilter = new VFSItemFileTypeFilter(allowedFileSuffixes, false); } // Clanup old file chooser and open up new one removeAsListenerAndDispose(fileChooserCtr); diff --git a/src/main/java/org/olat/commons/servlets/RSSServlet.java b/src/main/java/org/olat/commons/servlets/RSSServlet.java index ba93d88d7b737962def168e082c48a88c9c6e543..956257a3587a4badf2dd57d484386890a11160c7 100644 --- a/src/main/java/org/olat/commons/servlets/RSSServlet.java +++ b/src/main/java/org/olat/commons/servlets/RSSServlet.java @@ -44,9 +44,9 @@ import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.core.util.i18n.I18nManager; -import com.sun.syndication.feed.synd.SyndFeed; -import com.sun.syndication.io.FeedException; -import com.sun.syndication.io.SyndFeedOutput; +import com.rometools.rome.feed.synd.SyndFeed; +import com.rometools.rome.io.FeedException; +import com.rometools.rome.io.SyndFeedOutput; /** * Description:<BR> diff --git a/src/main/java/org/olat/core/commons/controllers/linkchooser/FileLinkChooserController.java b/src/main/java/org/olat/core/commons/controllers/linkchooser/FileLinkChooserController.java index 4a2980e052ffdc59ad7eb9a080768d98afd2c89f..0b0650c3e4d6d7473c305243936d5feebcc921a7 100644 --- a/src/main/java/org/olat/core/commons/controllers/linkchooser/FileLinkChooserController.java +++ b/src/main/java/org/olat/core/commons/controllers/linkchooser/FileLinkChooserController.java @@ -130,7 +130,7 @@ public class FileLinkChooserController extends BasicController { VFSItemFilter customFilter = null; VFSItemFilter dirFilter = new VFSItemExcludePrefixFilter(dirFilters); if (suffixes != null) { - VFSItemFileTypeFilter typeFilter = new VFSItemFileTypeFilter(suffixes); + VFSItemFileTypeFilter typeFilter = new VFSItemFileTypeFilter(suffixes, uriValidation); typeFilter.setCompositeFilter(dirFilter); customFilter = typeFilter; } else { diff --git a/src/main/java/org/olat/core/commons/persistence/DBImpl.java b/src/main/java/org/olat/core/commons/persistence/DBImpl.java index bbe80329bf1100a6383d12490a439aa89f6f1900..ed6c2fe4b1ca5d2b07103a5262c247850b068147 100644 --- a/src/main/java/org/olat/core/commons/persistence/DBImpl.java +++ b/src/main/java/org/olat/core/commons/persistence/DBImpl.java @@ -548,6 +548,7 @@ public class DBImpl implements DB, Destroyable { try { em.persist(object); } catch (Exception e) { // we have some error + e.printStackTrace(); trx.setRollbackOnly(); getData().setError(e); throw new DBRuntimeException("Save failed in transaction. object: " + object, e); diff --git a/src/main/java/org/olat/core/commons/services/notifications/NotificationHelper.java b/src/main/java/org/olat/core/commons/services/notifications/NotificationHelper.java index 33db9824de996ab066c719fabd82e6dcdbadd7e1..d6de05a76cd05fa48c8228abab2196ff0f6d2f0d 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/NotificationHelper.java +++ b/src/main/java/org/olat/core/commons/services/notifications/NotificationHelper.java @@ -22,7 +22,6 @@ package org.olat.core.commons.services.notifications; import java.util.Collections; import java.util.Date; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; @@ -73,26 +72,24 @@ public class NotificationHelper { public static Map<Subscriber, SubscriptionInfo> getSubscriptionMap(Locale locale, boolean showWithNewsOnly, Date compareDate, List<Subscriber> subs) { NotificationsManager man = NotificationsManager.getInstance(); - Map<Subscriber, SubscriptionInfo> subToSubInfo = new HashMap<Subscriber, SubscriptionInfo>(); - // calc subscriptioninfo for all subscriptions and, if only those with news + Map<Subscriber, SubscriptionInfo> subToSubInfo = new HashMap<>(); + // calculate subscription info for all subscriptions and, if only those with news // are to be shown, remove the other ones - for (Iterator<Subscriber> it_subs = subs.iterator(); it_subs.hasNext();) { - Subscriber subscriber = it_subs.next(); + for (Subscriber subscriber:subs) { Publisher pub = subscriber.getPublisher(); SubscriptionInfo subsInfo; if (man.isPublisherValid(pub)) { NotificationsHandler notifHandler = man.getNotificationsHandler(pub); - if (notifHandler!=null) { + if (notifHandler != null) { subsInfo = notifHandler.createSubscriptionInfo(subscriber, locale, compareDate); } else { - // OLAT-5647 log.error("getSubscriptionMap: No notificationhandler for valid publisher: "+pub+", resname: "+pub.getResName()+", businesspath: "+pub.getBusinessPath()+", subscriber: "+subscriber); subsInfo = man.getNoSubscriptionInfo(); } } else { subsInfo = man.getNoSubscriptionInfo(); } - if (subsInfo.hasNews() || !showWithNewsOnly) { + if (subsInfo != null && subsInfo.hasNews() || !showWithNewsOnly) { subToSubInfo.put(subscriber, subsInfo); } } diff --git a/src/main/java/org/olat/core/commons/services/notifications/NotificationsManager.java b/src/main/java/org/olat/core/commons/services/notifications/NotificationsManager.java index 0bbb0f85e874b2e33973742724df22bebb18261d..1d022611f5d65aa44cc2e696d5916c06ceb7b8c2 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/NotificationsManager.java +++ b/src/main/java/org/olat/core/commons/services/notifications/NotificationsManager.java @@ -171,6 +171,8 @@ public abstract class NotificationsManager extends BasicManager { * @param ignoreNewsFor */ public abstract void markPublisherNews(SubscriptionContext subscriptionContext, Identity ignoreNewsFor, boolean sendEvent); + + public abstract void markPublisherNews(String publisherType, String data, Identity ignoreNewsFor, boolean sendEvent); public abstract void registerAsListener(GenericEventListener gel, Identity ident); diff --git a/src/main/java/org/olat/core/commons/services/notifications/PersonalRSSFeed.java b/src/main/java/org/olat/core/commons/services/notifications/PersonalRSSFeed.java index 18a583f8eb67c1b52571bff2fe8efc789027075a..5a95edd02b0bc42ff0bbde22f5437c0154e64f63 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/PersonalRSSFeed.java +++ b/src/main/java/org/olat/core/commons/services/notifications/PersonalRSSFeed.java @@ -36,13 +36,13 @@ import org.olat.core.util.Util; import org.olat.core.util.i18n.I18nManager; import org.olat.user.UserManager; -import com.sun.syndication.feed.synd.SyndContent; -import com.sun.syndication.feed.synd.SyndContentImpl; -import com.sun.syndication.feed.synd.SyndEntry; -import com.sun.syndication.feed.synd.SyndEntryImpl; -import com.sun.syndication.feed.synd.SyndFeedImpl; -import com.sun.syndication.feed.synd.SyndImage; -import com.sun.syndication.feed.synd.SyndImageImpl; +import com.rometools.rome.feed.synd.SyndContent; +import com.rometools.rome.feed.synd.SyndContentImpl; +import com.rometools.rome.feed.synd.SyndEntry; +import com.rometools.rome.feed.synd.SyndEntryImpl; +import com.rometools.rome.feed.synd.SyndFeedImpl; +import com.rometools.rome.feed.synd.SyndImage; +import com.rometools.rome.feed.synd.SyndImageImpl; /** * Description:<BR> diff --git a/src/main/java/org/olat/core/commons/services/notifications/manager/NotificationsManagerImpl.java b/src/main/java/org/olat/core/commons/services/notifications/manager/NotificationsManagerImpl.java index ff4c67ca9d086bfd8da2b617c66d54a57ba35e26..233bc36871f061d61d3ddc59057da169b84394d1 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/manager/NotificationsManagerImpl.java +++ b/src/main/java/org/olat/core/commons/services/notifications/manager/NotificationsManagerImpl.java @@ -65,6 +65,7 @@ import org.olat.core.commons.services.notifications.model.PublisherImpl; import org.olat.core.commons.services.notifications.model.SubscriberImpl; import org.olat.core.commons.services.notifications.ui.NotificationSubscriptionController; import org.olat.core.gui.translator.Translator; +import org.olat.core.helpers.Settings; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; import org.olat.core.id.Roles; @@ -288,6 +289,20 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us .getResultList(); } + private List<Subscriber> getValidSubscribersOf(String publisherType, String data) { + StringBuilder q = new StringBuilder(); + q.append("select sub from notisub sub ") + .append(" inner join fetch sub.identity as ident") + .append(" inner join fetch sub.publisher as pub") + .append(" where pub.publisherType=:publisherType and pub.data=:data and sub.publisher.state=").append(PUB_STATE_OK); + + return dbInstance.getCurrentEntityManager() + .createQuery(q.toString(), Subscriber.class) + .setParameter("publisherType", publisherType) + .setParameter("data", data) + .getResultList(); + } + @Override public List<SubscriptionInfo> getSubscriptionInfos(Identity identity, String publisherType) { StringBuilder sb = new StringBuilder(); @@ -539,6 +554,7 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us htmlText.append(".o_m_sub ul li {padding: 0; margin: 1px 0;}"); htmlText.append(".o_m_go {padding: 5px 0 0 0}"); htmlText.append(".o_date {font-size: 90%; color: #888}"); + htmlText.append(".o_m_footer {background: #FAFAFA; border: 1px solid #eee; border-radius: 5px; padding: 0 0.5em 0.5em 0.5em; margin: 1em 0 1em 0;' class='o_m_h'}"); htmlText.append("</style>"); for (Iterator<SubscriptionItem> it_subs = subItems.iterator(); it_subs.hasNext();) { @@ -572,6 +588,10 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us htmlText.append("\n"); htmlText.append("</div></div>"); } + String basePath = Settings.getServerContextPathURI() + "/auth/HomeSite/" + to.getKey() + "/"; + htmlText.append("<div class='o_m_footer'>"); + htmlText.append(translator.translate("footer.notifications", new String[] {basePath + "mysettings/0", basePath += "notifications/0", basePath + "/tab/1"})); + htmlText.append("</div>"); MailerResult result = null; try { @@ -691,13 +711,17 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us private Publisher getPublisherForUpdate(SubscriptionContext subsContext) { Publisher pub = getPublisher(subsContext); - if(pub != null && pub.getKey() != null) { + return getPublisherForUpdate(pub); + } + + private Publisher getPublisherForUpdate(Publisher publisher) { + if(publisher != null && publisher.getKey() != null) { //prevent optimistic lock issue - dbInstance.getCurrentEntityManager().detach(pub); - pub = dbInstance.getCurrentEntityManager() - .find(PublisherImpl.class, pub.getKey(), LockModeType.PESSIMISTIC_WRITE); + dbInstance.getCurrentEntityManager().detach(publisher); + publisher = dbInstance.getCurrentEntityManager() + .find(PublisherImpl.class, publisher.getKey(), LockModeType.PESSIMISTIC_WRITE); } - return pub; + return publisher; } @Override @@ -720,6 +744,15 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us .setParameter("resId", resId.longValue()) .getResultList(); } + + private List<Publisher> getPublishers(String publisherType, String data) { + String q = "select pub from notipublisher pub where pub.type=:publisherType and pub.data=:data"; + return dbInstance.getCurrentEntityManager() + .createQuery(q, Publisher.class) + .setParameter("publisherType", publisherType) + .setParameter("data", data) + .getResultList(); + } /** * deletes all publishers of the given olatresourceable. e.g. ores = @@ -939,9 +972,8 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us Set<Long> subsKeys = new HashSet<Long>(); // 2. collect all keys of the affected subscribers - for (Iterator<Subscriber> it_subs = subscribers.iterator(); it_subs.hasNext();) { - Subscriber su = it_subs.next(); - subsKeys.add(su.getKey()); + for (Subscriber subscriber:subscribers) { + subsKeys.add(subscriber.getKey()); } // fire the event MultiUserEvent mue = EventFactory.createAffectedEvent(subsKeys); @@ -949,6 +981,55 @@ public class NotificationsManagerImpl extends NotificationsManager implements Us } } + + + @Override + public void markPublisherNews(String publisherType, String data, Identity ignoreNewsFor, boolean sendEvents) { + // to make sure: ignore if no subscriptionContext + if (!StringHelper.containsNonWhitespace(publisherType) || !StringHelper.containsNonWhitespace(data)) return; + + List<Publisher> publisherToUpdates = getPublishers(publisherType, data); + if(publisherToUpdates == null || publisherToUpdates.isEmpty()) { + return; + } + + List<Publisher> updatedPublishers = new ArrayList<>(publisherToUpdates.size()); + for(Publisher toUpdate:publisherToUpdates) { + toUpdate = getPublisherForUpdate(toUpdate); + toUpdate.setLatestNewsDate(new Date()); + Publisher publisher = dbInstance.getCurrentEntityManager().merge(toUpdate); + dbInstance.commit();//commit the select for update + updatedPublishers.add(publisher); + } + + // no need to sync, since there is only one gui thread at a time from one + // user + if (ignoreNewsFor != null) { + for(Publisher publisher: updatedPublishers) { + markSubscriberRead(ignoreNewsFor, publisher); + } + } + + if(sendEvents) { + //commit all things on the database + dbInstance.commit(); + + // channel-notify all interested listeners (e.g. the pnotificationsportletruncontroller) + // 1. find all subscribers which can be affected + List<Subscriber> subscribers = getValidSubscribersOf(publisherType, data); + + Set<Long> subsKeys = new HashSet<Long>(); + // 2. collect all keys of the affected subscribers + for (Subscriber subscriber:subscribers) { + subsKeys.add(subscriber.getKey()); + } + // fire the event + MultiUserEvent mue = EventFactory.createAffectedEvent(subsKeys); + CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(mue, oresMyself); + } + + } + /** * @see org.olat.core.commons.services.notifications.NotificationsManager#registerAsListener(org.olat.core.util.event.GenericEventListener, org.olat.core.id.Identity) */ diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties index 63b9665a987388cb49875712890c9f6ba72fe65a..63cf769d2d31bae827cfd3708047a56b5e035143 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_de.properties @@ -55,3 +55,4 @@ email.ok = Die Neuigkeiten wurden per E-Mail verschickt. email.nok = Die Neuigkeiten konnten nicht per E-Mail verschickt werden. Bitte versuchen Sie es sp\u00e4ter noch einmal oder melden Sie sich beim Support. news.type = Typ news.type.all = Alle +footer.notifications=<p>Sie erhalten diese Nachricht, weil Sie in OpenOLAT Benachrichtigungen abonniert haben\.</p> \n <a href='{0}'>Versandeinstellung \u00e4ndern</a> | <a href='{1}'>Alle Benachrichtigungen sehen</a> | <a href='{2}'>Abonnements verwalten</a> diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties index 890f5e14f9da2548449d16a52a47ca9b2327e032..7899b8ab83fdcb89495e2a5b84a67614e19f5dcf 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_en.properties @@ -1,34 +1,7 @@ #Fri Jan 21 10:25:59 CET 2011 actions.title=Modifications - - - - - - - - - - - - - - - - - - - - - - - - - - command.subscribe=Subscribe command.unsubscribe=Unsubscribe - subscription.listitem.dateprefix=on {0} user.unknown=unknown user.formatted={0} {1} @@ -37,6 +10,8 @@ confirm.delete=Do you really want to delete this notification you subscribed to email.nok=News could not be sent via e-mail. Please try again later or contact your support team. email.ok=News sent via e-mail. emailLink=Send news via e-mail +footer.notifications=<p>Sie erhalten diese Nachricht, weil Sie in OpenOLAT Benachrichtigungen abonniert haben\.</p> \n <a href='{0}'>Versandeinstellung \u00e4ndern</a> | <a href='{1}'>Alle Benachrichtigungen sehen</a> | <a href='{2}'>Abonnements verwalten</a> +footer.notifications=<p>You receive this message, because you subscribed to OpenOLAT notifications\.</p> \n <a href='{0}'>Modify e-mail settings</a> | <a href='{1}'>View all notifications</a> | <a href='{2}'>Administer subscriptions</a> error.date=Wrong date format (dd.mm.yyyy) error.publisherdeleted=This resource is deleted and cannot be displayed any more. info.notification.deleted=This subscribed notification has been deleted diff --git a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_fr.properties index 004f00d119d13383597ffe53eb9816fc3ab4826e..22e16237df7c0527f36b63f2f1180de10cc25c5f 100644 --- a/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/core/commons/services/notifications/ui/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Wed Jun 15 21:54:24 CEST 2016 +#Thu Jun 08 21:23:36 CEST 2017 action.choose=S\u00E9lectionner actions.title=Modifications command.subscribe=S'abonner @@ -9,6 +9,7 @@ email.ok=Les nouvelles ont \u00E9t\u00E9 envoy\u00E9es par e-mail. emailLink=Envoyer les nouvelles par e-mail error.date=Format de date invalide (dd.mm.yyyy) error.publisherdeleted=La ressource a \u00E9t\u00E9 supprim\u00E9e et ne peut plus \u00EAtre affich\u00E9e. +footer.notifications=<p>Vous recevez ce message car vous avez souscrit aux notifications d'OpenOLAT.</p> <a href\='{0}'>Modifier les param\u00E8tres de courriel</a> | <a href\='{1}'>Voir toutes les notifications</a> | <a href\='{2}'>Administrer les notifications</a> info.notification.deleted=La notification abonn\u00E9e a \u00E9t\u00E9 effac\u00E9e news.desc=La liste suivante montre la derni\u00E8re modification dans les ressources auxquelles vous \u00EAtes abonn\u00E9. Vous pouvez choisir la p\u00E9riode que vous souhaitez afficher. news.in=trouv\u00E9 dans diff --git a/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVProviderNamedContainer.java b/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVProviderNamedContainer.java index f1dfd83c336de220774e1704edcaff3e4b47a0bb..8269fa1dafa0f31ce4887e9fd10e55aab7881481 100644 --- a/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVProviderNamedContainer.java +++ b/src/main/java/org/olat/core/commons/services/webdav/manager/WebDAVProviderNamedContainer.java @@ -41,6 +41,11 @@ public class WebDAVProviderNamedContainer extends NamedContainerImpl { this.identityEnv = identityEnv; } + @Override + public boolean exists() { + return true; + } + @Override public VFSContainer getDelegate() { if(super.getDelegate() == null) { diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecorator.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecorator.java index 028b991ff0e88d4561927438da9a4359f1cf7d6b..059d142c2345f0e6595185a37d202fd4314eef90 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecorator.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormDecorator.java @@ -147,6 +147,14 @@ public class FormDecorator { return FormJSHelper.getXHRFnCallFor(theForm, elementId, 1, true, true, new NameValuePair(key, value)); } + public String backgroundCommand(String command, String key, String value) { + Form theForm = container.getRootForm(); + String elementId = "o_fi" + container.getComponent().getDispatchID(); + return FormJSHelper.getXHRNFFnCallFor(theForm, elementId, 1, + new NameValuePair("fcid", command), + new NameValuePair(key, value)); + } + public String appendFlexiFormDirty(String id) { StringOutput sb = new StringOutput(256); FormJSHelper.appendFlexiFormDirty(sb, container.getRootForm(), id); diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/_i18n/LocalStrings_en.properties index 53cebc2bffaa51f2506082f2478e6c0ce68535c2..b237ef02f3f051052a48d734bfcc4eca9e64d63a 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/richText/_i18n/LocalStrings_en.properties @@ -2,4 +2,4 @@ richText.element.target.window.alwayssame=Open link always in the same new window left.clear=Left and clear right.clear=Right and clear -left.clear=Left with caption \ No newline at end of file +left.clear.nomargin=Left with caption \ No newline at end of file diff --git a/src/main/java/org/olat/core/gui/render/Renderer.java b/src/main/java/org/olat/core/gui/render/Renderer.java index 86ffc447c22f8eae2c0a23fcad278f00cf8c8546..96db777b72416d97143bcafe019f89da22e23295 100644 --- a/src/main/java/org/olat/core/gui/render/Renderer.java +++ b/src/main/java/org/olat/core/gui/render/Renderer.java @@ -287,7 +287,7 @@ public class Renderer { */ public static String getComponentPrefix(Component comp) { String did = comp.getDispatchID(); - return "o_c"+did; + return "o_c".concat(did); } /** diff --git a/src/main/java/org/olat/core/gui/render/velocity/VelocityHelper.java b/src/main/java/org/olat/core/gui/render/velocity/VelocityHelper.java index 96da0de6f7373ca66807780bbbdd480cb33afb2d..b1022cb0e9905bd33fabb36b0ea6de476bb18215 100644 --- a/src/main/java/org/olat/core/gui/render/velocity/VelocityHelper.java +++ b/src/main/java/org/olat/core/gui/render/velocity/VelocityHelper.java @@ -28,8 +28,9 @@ package org.olat.core.gui.render.velocity; import java.io.StringWriter; import java.io.Writer; -import java.util.HashSet; import java.util.Properties; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import org.apache.velocity.Template; import org.apache.velocity.app.VelocityEngine; @@ -51,7 +52,7 @@ public class VelocityHelper extends LogDelegator { private VelocityEngine ve; - private HashSet<String> resourcesNotFound = new HashSet<String>(128); + private Set<String> resourcesNotFound = ConcurrentHashMap.newKeySet(); /** * @@ -131,10 +132,7 @@ public class VelocityHelper extends LogDelegator { String themedTemplatePath = sb.toString(); // check cache - boolean notFound; - synchronized (resourcesNotFound) { //o_clusterOK by:fj - notFound = resourcesNotFound.contains(themedTemplatePath); - } + boolean notFound = resourcesNotFound.contains(themedTemplatePath); if (!notFound) { // never tried before -> try to load it @@ -142,9 +140,7 @@ public class VelocityHelper extends LogDelegator { // remember not found (since velocity doesn't) then try fallback. // this will happen once for each theme when a resource does not exist in its themed variant but only in the default theme. if (!Settings.isDebuging()) { - synchronized (resourcesNotFound) { //o_clusterOK by:fj - resourcesNotFound.add(themedTemplatePath); - } + resourcesNotFound.add(themedTemplatePath); } // for debugging, allow introduction of themed files without restarting the application } else { // template exists -> load it diff --git a/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java b/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java index b4310e42c3afb3f74eaa83985a1133e189dd6432..983ba95e76e87f1522c7dbdefbfd15456de048da 100644 --- a/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java +++ b/src/main/java/org/olat/core/gui/render/velocity/VelocityRenderDecorator.java @@ -56,7 +56,6 @@ import org.olat.core.util.CodeHelper; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; import org.olat.core.util.WebappHelper; -import org.olat.core.util.filter.Filter; import org.olat.core.util.filter.FilterFactory; import org.olat.core.util.filter.impl.OWASPAntiSamyXSSFilter; import org.olat.core.util.i18n.I18nManager; @@ -451,6 +450,30 @@ public class VelocityRenderDecorator implements Closeable { return sb; } + /** + * Add some mouse-over help text to an element, ideally an icon + * + * @param domElem The DOM id of the element that triggers the mouse-over + * @param i18nKey The text to be displayed (including HTML formatting) + * @param position Optional param, values: top, bottom, left right. Default is "top" + * @return + */ + public StringOutput mouseoverHelp(String... args) { + String domElem = args[0]; + String i18nKey = args[1]; + String position = "top"; // default + if (args.length > 2 && args[2] != null) { + position = args[2]; + } + StringOutput sb = new StringOutput(100); + sb.append("<script>jQuery(function () {jQuery('#").append(domElem).append("').tooltip({placement:\"").append(position).append("\",container: \"body\",html:true,title:\""); + if (i18nKey != null) { + sb.append(StringHelper.escapeJavaScript(translate(i18nKey))); + } + sb.append("\"});})</script>"); + return sb; + } + /** * @param componentName * @param arg1 @@ -678,6 +701,16 @@ public class VelocityRenderDecorator implements Closeable { return sb; } + public boolean isTrue(Object obj) { + if("true".equals(obj)) { + return true; + } + if(obj instanceof Boolean) { + return ((Boolean)obj).booleanValue(); + } + return false; + } + public boolean isNull(Object obj) { return obj == null; } @@ -902,8 +935,7 @@ public class VelocityRenderDecorator implements Closeable { * @return Source without HTML tags. */ public static String filterHTMLTags(String source) { - Filter htmlTagsFilter = FilterFactory.getHtmlTagsFilter(); - return htmlTagsFilter.filter(source); + return FilterFactory.getHtmlTagsFilter().filter(source); } /** @@ -912,6 +944,7 @@ public class VelocityRenderDecorator implements Closeable { * @return The css class for the file or a default css class */ public static String getFiletypeIconCss(String filename) { + if(filename == null) return ""; return CSSHelper.createFiletypeIconCssClassFor(filename); } diff --git a/src/main/java/org/olat/core/id/UserConstants.java b/src/main/java/org/olat/core/id/UserConstants.java index e9399883c8e8b39d0c3a9ada6ab88ff036e08ed9..b61c41977489702f1b00a9e29caa47f26713b1c4 100644 --- a/src/main/java/org/olat/core/id/UserConstants.java +++ b/src/main/java/org/olat/core/id/UserConstants.java @@ -80,6 +80,8 @@ public class UserConstants { public static final String ORGUNIT = "orgUnit"; /** STUDYSUBJECT user field identifier. */ public static final String STUDYSUBJECT = "studySubject"; + /** USERNAME */ + public static final String USERNAME = "userName"; /** diff --git a/src/main/java/org/olat/core/logging/activity/UserActivityLoggerImpl.java b/src/main/java/org/olat/core/logging/activity/UserActivityLoggerImpl.java index 3b5695aedf44c629b8ad6fabc42f2b333b797928..a5311600d2bed99f3dc525b079f6450413baa508 100644 --- a/src/main/java/org/olat/core/logging/activity/UserActivityLoggerImpl.java +++ b/src/main/java/org/olat/core/logging/activity/UserActivityLoggerImpl.java @@ -704,70 +704,6 @@ public class UserActivityLoggerImpl implements IUserActivityLogger { // start creating the LoggingObject final LoggingObject logObj = new LoggingObject(sessionId, identityKey, identityName, crudAction.name().substring(0,1), actionVerb.name(), actionObject); - - // do simpleDuration calculation & storing -// fxdiff: FXOLAT-94 don't do duration calculation, as its quite senseless (duration = timestamp of click 2 - click 1) -// if still needed once, dont update the lastLogObj, but save duration with current one, 50x faster! - -// LoggingObject lastLogObj = (LoggingObject) session_.getEntry(USESS_KEY_USER_ACTIVITY_LOGGING_LAST_LOG); -// if (lastLogObj!=null) { - //lastLogObj = (LoggingObject) DBFactory.getInstance().loadObject(lastLogObj); - // DBFactory.getInstance().updateObject(lastLogObj); - // Implementation Note: - // we used to do loadObject(), updateObject() here - which is the preferred best practice hibernate way - // for changing an existing object in the database. - // in the setup @UZH we'll use BLACKHOLE as the storage engine for the o_loggingtable (this is to have - // minimal work load on the Main OLAT DB and not have duplicate data on the Main OLAT DB and the Logging DB). - // Using BLACKHOLE results in the 'lastLogObj' here, not to exist in the database anymore. - // Hence we can't do a loadObject() nor an updateObject(). The latter does not work due to the fact - // that Hibernate checks the number of updated rows and expect that to equal 1 - which is not the case - // when using BLACKHOLE. - - // Workaround: - also compare with LoggingObject.hbm.xml docu - // - // We use the sql-update's feature check="none", which disables the above mentioned check. - // Using this in combination with manual SQL code below seems to be the only feasible way - // to have Hibernate not do any row-number-checks. - - // Implications of the workaround: - // - // * Manual SQL: It shouldn't be a big deal to have this manual SQL code as it is very standard. - // * CANT USE updateObject(LoggingObject) EVER: - //@TODO We might have to add a check which verifies that no one calls updateObject(LoggingObject) - // if that would be called it would simply fail in the BLACKHOLE@UZH setup - - // calculate the duration - take the simple diff of the two creationDate fields -// Date currentTime = logObj.getCreationDate(); -// Date lastTime = lastLogObj.getCreationDate(); -// long duration; -// if (lastTime==null) { -// duration = -1; -// } else if (currentTime==null) { -// duration = System.currentTimeMillis() - lastTime.getTime(); -// } else { -// duration = currentTime.getTime() - lastTime.getTime(); -// } -// -// DB db = DBFactory.getInstanceForClosing(); -// if (db!=null && db.isError()) { -// // then we would run into an ERROR when we'd do more with this DB -// // hence we just issue a log.info here with the details -// //@TODO: lower to log_.info once we checked that it doesn't occur very often (best for 6.4) -// log_.warn("log: DB is in Error state therefore the UserActivityLoggerImpl cannot update the simpleDuration of log_id "+lastLogObj.getKey()+" with value "+duration+", loggingObject: "+lastLogObj); -// } else { -// DBQuery update = DBFactory.getInstance().createQuery( -// "update org.olat.core.logging.activity.LoggingObject set simpleDuration = :duration where log_id = :logid"); -// update.setLong("duration", duration); -// update.setLong("logid", lastLogObj.getKey()); -// // we have to do FlushMode.AUTO (which is the default anyway) -// update.executeUpdate(FlushMode.AUTO); -// } -// } - - // store the current logging object in the session - for duration calculation at next log -// session_.putEntry(USESS_KEY_USER_ACTIVITY_LOGGING_LAST_LOG, logObj); - - if (resourceInfos!=null && resourceInfos.size()!=0) { // this should be the normal case - we do have LoggingResourceables which we can log @@ -807,7 +743,6 @@ public class UserActivityLoggerImpl implements IUserActivityLogger { // fill the remaining fields logObj.setBusinessPath(businessPath_); logObj.setSourceClass(callingClass.getCanonicalName()); -// logObj.setSimpleDuration(duration); logObj.setResourceAdminAction(actionType.equals(ActionType.admin)?true:false); Locale locale = I18nManager.getInstance().getLocaleOrDefault(identity.getUser().getPreferences().getLanguage()); diff --git a/src/main/java/org/olat/core/util/FileUtils.java b/src/main/java/org/olat/core/util/FileUtils.java index b212417d4f82b755c82d30ba514f0197306596ae..2b7237ec66cbf165d61e2ca84e3008a094a6739c 100644 --- a/src/main/java/org/olat/core/util/FileUtils.java +++ b/src/main/java/org/olat/core/util/FileUtils.java @@ -71,7 +71,7 @@ public class FileUtils { // matches files and folders of type: // bla, bla1, bla12, bla.html, bla1.html, bla12.html - private static final Pattern fileNamePattern = Pattern.compile("(.+?)\\p{Digit}*(\\.\\w{2,4})?"); + private static final Pattern fileNamePattern = Pattern.compile("(.+?)\\p{Digit}*(\\.\\w{2,7})?"); //windows: invalid characters for filenames: \ / : * ? " < > | //linux: invalid characters for file/folder names: /, but you have to escape certain chars, like ";$%&*" diff --git a/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolI18nItemEdit.html b/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolI18nItemEdit.html index 01bf0e325ce2b217d8dafe74b150d61cb9cd7a8e..bf2b66d661f8c5af45979c126eec6204ffe6c362 100644 --- a/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolI18nItemEdit.html +++ b/src/main/java/org/olat/core/util/i18n/ui/_content/translationToolI18nItemEdit.html @@ -146,7 +146,7 @@ function checkClick(wrapperName, langCode) { ## Method to copy the text from the reference language to the target language function copyFromReference() { - var refVal = jQuery('.o_translation_edit_reference textarea').val(); + var refVal = jQuery('.o_translation_edit_reference .o_form_element_disabled').text(); jQuery('.o_translation_edit_target textarea').val(refVal); } diff --git a/src/main/java/org/olat/core/util/mail/ContactList.java b/src/main/java/org/olat/core/util/mail/ContactList.java index 0ed63088c43be55125d9a6da5b32a1e7843c8f7a..30e5d09f78dcdf4fff3d58cf8882e561b7111661 100644 --- a/src/main/java/org/olat/core/util/mail/ContactList.java +++ b/src/main/java/org/olat/core/util/mail/ContactList.java @@ -27,6 +27,7 @@ package org.olat.core.util.mail; import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -272,7 +273,7 @@ public class ContactList extends LogDelegator { * * @param listOfIdentity List containing Identites */ - public void addAllIdentites(List<Identity> listOfIdentity) { + public void addAllIdentites(Collection<Identity> listOfIdentity) { for (Identity identity:listOfIdentity) { add(identity); } diff --git a/src/main/java/org/olat/core/util/mail/MailHelper.java b/src/main/java/org/olat/core/util/mail/MailHelper.java index 440cda4f91fb08bb6795dce3ba68a12da6100b4e..5d081370450891fa0362145f9823bc871ef4a15f 100644 --- a/src/main/java/org/olat/core/util/mail/MailHelper.java +++ b/src/main/java/org/olat/core/util/mail/MailHelper.java @@ -40,6 +40,7 @@ import org.olat.core.id.Identity; import org.olat.core.id.Preferences; import org.olat.core.id.User; import org.olat.core.id.UserConstants; +import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.core.util.i18n.I18nManager; import org.olat.core.util.i18n.I18nModule; @@ -170,15 +171,19 @@ public class MailHelper { * @param wControl The current window controller * @param locale The users local */ - public static void printErrorsAndWarnings(MailerResult mailerResult, WindowControl wControl, Locale locale) { + public static void printErrorsAndWarnings(MailerResult mailerResult, WindowControl wControl, boolean admin, Locale locale) { + if(mailerResult == null || wControl == null) return; + StringBuilder errors = new StringBuilder(); StringBuilder warnings = new StringBuilder(); - appendErrorsAndWarnings(mailerResult, errors, warnings, locale); + appendErrorsAndWarnings(mailerResult, errors, warnings, admin, locale); // now print a warning to the users screen if (errors.length() > 0) { + if (warnings.length() > 0) { + errors.append(warnings); + } wControl.setError(errors.toString()); - } - if (warnings.length() > 0) { + } else if (warnings.length() > 0) { wControl.setWarning(warnings.toString()); } } @@ -194,44 +199,72 @@ public class MailHelper { * @param warnings StringBuilder for the warnings * @param locale The users local */ - public static void appendErrorsAndWarnings(MailerResult mailerResult, StringBuilder errors, StringBuilder warnings, Locale locale) { - Translator trans = Util.createPackageTranslator(MailerResult.class, locale); + public static void appendErrorsAndWarnings(MailerResult mailerResult, StringBuilder errors, StringBuilder warnings, boolean admin, Locale locale) { + if(mailerResult == null) return; + int returnCode = mailerResult.getReturnCode(); - List<Identity> failedIdentites = mailerResult.getFailedIdentites(); + Translator trans = Util.createPackageTranslator(MailerResult.class, locale); // first the severe errors - if (returnCode == MailerResult.SEND_GENERAL_ERROR) { - errors.append("<p>").append(trans.translate("mailhelper.error.send.general")).append("</p>"); - } else if (returnCode == MailerResult.SENDER_ADDRESS_ERROR) { - errors.append("<p>").append(trans.translate("mailhelper.error.sender.address")).append("</p>"); - } else if (returnCode == MailerResult.RECIPIENT_ADDRESS_ERROR) { - errors.append("<p>").append(trans.translate("mailhelper.error.recipient.address")).append("</p>"); - } else if (returnCode == MailerResult.TEMPLATE_GENERAL_ERROR) { - errors.append("<p>").append(trans.translate("mailhelper.error.template.general")).append("</p>"); - } else if (returnCode == MailerResult.TEMPLATE_PARSE_ERROR) { - errors.append("<p>").append(trans.translate("mailhelper.error.template.parse")).append("</p>"); - } else if (returnCode == MailerResult.ATTACHMENT_INVALID) { - errors.append("<p>").append(trans.translate("mailhelper.error.attachment")).append("</p>"); - } else { - // mail could be send, but maybe not to all the users (e.g. invalid mail - // adresses or a temporary problem) - if (failedIdentites != null && failedIdentites.size() > 0) { - warnings.append("<p>").append(trans.translate("mailhelper.error.failedusers")); - warnings.append("<ul>"); - for (Identity identity : failedIdentites) { - User user = identity.getUser(); - warnings.append("<li>"); - String fullname = UserManager.getInstance().getUserDisplayName(identity); - warnings.append(trans.translate("mailhelper.error.failedusers.user", new String[] { - user.getProperty(UserConstants.FIRSTNAME, null), - user.getProperty(UserConstants.LASTNAME, null), - user.getProperty(UserConstants.EMAIL, null), - fullname - })); - warnings.append("</li>"); + switch(returnCode) { + case MailerResult.MAILHOST_UNDEFINED: { + errors.append("<p><strong>").append(trans.translate("mailhelper.error.undefined.smtp")).append("</strong></p>"); + break; + } + case MailerResult.SEND_GENERAL_ERROR: { + errors.append("<p>").append(trans.translate("mailhelper.error.send.general")).append("</p>"); + if(admin && StringHelper.containsNonWhitespace(mailerResult.getErrorMessage())) { + errors.append("<p><em>").append(mailerResult.getErrorMessage()).append("</em></p>"); + } + break; + } + case MailerResult.SENDER_ADDRESS_ERROR: { + errors.append("<p>").append(trans.translate("mailhelper.error.sender.address")).append("</p>"); + if(admin && StringHelper.containsNonWhitespace(mailerResult.getErrorMessage())) { + errors.append("<p><em>").append(mailerResult.getErrorMessage()).append("</em></p>"); } - warnings.append("</ul></p>"); + break; + } + case MailerResult.TEMPLATE_GENERAL_ERROR: { + errors.append("<p>").append(trans.translate("mailhelper.error.template.general")).append("</p>"); + break; + } + case MailerResult.TEMPLATE_PARSE_ERROR: { + errors.append("<p>").append(trans.translate("mailhelper.error.template.parse")).append("</p>"); + break; } + case MailerResult.ATTACHMENT_INVALID: { + errors.append("<p>").append(trans.translate("mailhelper.error.attachment")).append("</p>"); + break; + } + } + + List<Identity> failedIdentites = mailerResult.getFailedIdentites(); + if (failedIdentites != null && failedIdentites.size() > 0) { + warnings.append("<p>").append(trans.translate("mailhelper.error.failedusers")); + warnings.append("<ul>"); + for (Identity identity : failedIdentites) { + User user = identity.getUser(); + warnings.append("<li>"); + String fullname = UserManager.getInstance().getUserDisplayName(identity); + warnings.append(trans.translate("mailhelper.error.failedusers.user", new String[] { + user.getProperty(UserConstants.FIRSTNAME, null), + user.getProperty(UserConstants.LASTNAME, null), + user.getProperty(UserConstants.EMAIL, null), + fullname + })); + warnings.append("</li>"); + } + warnings.append("</ul></p>"); + } + + List<String> invalidAddresses = mailerResult.getInvalidAddresses(); + if (invalidAddresses != null && invalidAddresses.size() > 0) { + warnings.append("<p>").append(trans.translate("mailhelper.error.failedadresses")).append("<ul>"); + for (String invalidAddress:invalidAddresses) { + warnings.append("<li>").append(invalidAddress).append("</li>"); + } + warnings.append("<ul>"); } } @@ -274,7 +307,4 @@ public class MailHelper { } return attachmentList; } -} - - - +} \ No newline at end of file diff --git a/src/main/java/org/olat/core/util/mail/MailerResult.java b/src/main/java/org/olat/core/util/mail/MailerResult.java index 2e4aed7a48ae527954ebb9dacfc70db1560d7705..032c5e63454dd184bc1b85c300915477f7339bf8 100644 --- a/src/main/java/org/olat/core/util/mail/MailerResult.java +++ b/src/main/java/org/olat/core/util/mail/MailerResult.java @@ -51,10 +51,12 @@ public class MailerResult { public static final int TEMPLATE_GENERAL_ERROR = 6; public static final int ATTACHMENT_INVALID = 7; + private final List<String> invalidAddresses = new ArrayList<>(); private final List<Identity> failedIdentites = new ArrayList<>(); private int returnCode = OK; + private String errorMessage; /** * @return list of identities to which the mail could not be send, e.g. @@ -75,6 +77,26 @@ public class MailerResult { return returnCode; } + /** + * Package helper to set the return code. + * + * @param returnCode + */ + public void setReturnCode(int returnCode) { + this.returnCode = returnCode; + } + + /** + * @return The error message returned by the JavaMail library and / or the mail server. + */ + public String getErrorMessage() { + return errorMessage; + } + + public void setErrorMessage(String errorMessage) { + this.errorMessage = errorMessage; + } + /** * Package helper to add an identity to which for whatever reason the mail * could not be sent @@ -96,15 +118,6 @@ public class MailerResult { } } } - - /** - * Package helper to set the return code. - * - * @param returnCode - */ - public void setReturnCode(int returnCode) { - this.returnCode = returnCode; - } public void append(MailerResult newResult) { if(newResult.getReturnCode() != MailerResult.OK) { diff --git a/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_de.properties index 2c3cbe5d5684143eb2b94a4123671cfbab50a485..003333d24eff8251788bdcec61f8046a75592b5d 100644 --- a/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_de.properties @@ -18,9 +18,11 @@ footer.no.userdata=<p>Diese Nachricht wurde automatisch von der Lernplattform Op footer.with.userdata=<p>Absender: {2} {3} ({0}), {4} {5}</p><p>Diese Nachricht wurde \u00FCber die Lernplattform OpenOLAT versandt: {1}</p> mailhelper.error.attachment=Die E-Mail konnte nicht verschickt werden\: ung\u00FCltiges Attachment. Bitte benachrichtigen Sie die Empf\u00E4nger manuell. +mailhelper.error.failedadresses=Diese Email Adresses konnte inval sein: mailhelper.error.failedusers=Den folgenden Benutzern kann Ihre Nachricht nicht zugestellt werden. Bitte benachrichtigen Sie diese Benutzer manuell und bitten Sie diese, ihre E-Mail-Adresse zu \u00FCberpr\u00FCfen\: mailhelper.error.failedusers.title = Gesperrte Empf\u00e4nger-Adressen mailhelper.error.failedusers.user = {0} {1} mit Mailadresse {2} und Login {3} +mailhelper.error.undefined.smtp=Der SMTP-Server ist nicht konfiguriert. mailhelper.error.recipient.address=Die E-Mail konnte nicht verschickt werden\: ung\u00FCltige Empf\u00E4ngeradresse. Bitte benachrichtigen Sie die Empf\u00E4nger manuell. mailhelper.error.send.general=Die E-Mail konnte aus unbekannten Problemen nicht verschickt werden. Bitte benachrichtigen Sie die Empf\u00E4nger manuell. mailhelper.error.sender.address=Die E-Mail konnte nicht verschickt werden\: ung\u00FCltige Absenderadresse. Bitte benachrichtigen Sie die Empf\u00E4nger manuell. diff --git a/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_en.properties index 55e3802a2d884927c35caecef13a482b26a7a364..5a0326411297d56da9d0a853df16f1f10af6cd14 100644 --- a/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_en.properties @@ -52,9 +52,11 @@ mail.unmarked=Unmarked mail.unread=Unread mailhelper.error.addressinvalid=One or more addresses are invalid\: {0} mailhelper.error.attachment=Mail could not be sent\: invalid attachments. Please notify your recipients manually. +mailhelper.error.failedadresses=These e-mail addresses are perhaps invalid: mailhelper.error.failedusers=Your e-mail cannot be sent to the following users. Please notify them manually and ask them to check their e-mail address\: mailhelper.error.failedusers.title=Disabled recipients' addresses mailhelper.error.failedusers.user={0} {1} using mail address {2} and login {3} +mailhelper.error.undefined.smtp=The SMTP server is not configured. mailhelper.error.recipient.address=Mail could not be sent\: invalid recipient address. Please notify your recipients manually. mailhelper.error.send.general=Mail could not be sent due to unknown problems. Please notify your recipients manually. mailhelper.error.sender.address=Mail could not be sent\: invalid sender address. Please notify your recipients manually. diff --git a/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_fr.properties index 4aa05fd197466dc57a2cd4291e6b732938794242..651f7bd5a72efebf938d86d743c038997cb16c56 100644 --- a/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/core/util/mail/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Tue Nov 15 08:33:20 CET 2016 +#Thu Jun 08 21:24:09 CEST 2017 add.email=Ajouter contact.cp.from=Copie \u00E0 l'exp\u00E9diteur footer.no.userdata=<p>Ce message a \u00E9t\u00E9 envoy\u00E9 automatiquement via la plateforme d'apprentissage OpenOLAT\: {0}</p> @@ -52,15 +52,17 @@ mail.unmarked=Pas signal\u00E9 mail.unread=Pas lu mailhelper.error.addressinvalid=Une ou plusieurs adresses ne sont pas valides\: {0} mailhelper.error.attachment=L'e-mail n'a pas pu \u00EAtre envoy\u00E9\: fichiers attach\u00E9s non valables. Veuillez contacter le destinataire manuellement. +mailhelper.error.failedadresses=Les adresses courriels suivantes sont peut-\u00EAtre invalides\: mailhelper.error.failedusers=Les personnes suivantes n'ont pas re\u00E7u votre e-mail. Veuillez contacter ces personnes manuellement et v\u00E9rifiez leurs adresses e-mail\: mailhelper.error.failedusers.title=Adresses des destinataires bloqu\u00E9s mailhelper.error.failedusers.user={0} {1} avec adresse email {2} et login {3} mailhelper.error.recipient.address=L'e-mail n'a pas pu \u00EAtre envoy\u00E9\: adresse de destinataire non valable. Veuillez contacter le destinataire manuellement. mailhelper.error.send.general=L'e-mail n'a pas pu \u00EAtre envoy\u00E9 pour des raisons inconnues. Veuillez contacter le destinataire manuellement. mailhelper.error.sender.address=L'e-mail n'a pas pu \u00EAtre envoy\u00E9\: adresse non valable. Veuillez contacter le destinataire manuellement. +mailhelper.error.single.addressinvalid=L'adresse courrielle n'est pas valide. mailhelper.error.template.general=L'e-mail n'a pas pu \u00EAtre envoy\u00E9\: erreur g\u00E9n\u00E9rale dans le texte de l'e-mail. Veuillez contacter le destinataire manuellement. mailhelper.error.template.parse=L'e-mail n'a pas pu \u00EAtre envoy\u00E9\: erreur de parsing dans le texte de l'e-mail. Veuillez contacter le destinataire manuellement. -mailhelper.error.single.addressinvalid=L'adresse courrielle n'est pas valide. +mailhelper.error.undefined.smtp=Le server SMTP n'est pas configur\u00E9. mailnotification.title=Notification par e-mail mailtemplateform.body=Message mailtemplateform.continue=Suivant diff --git a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java index fcdcf4db53855c0e1b0383fdcf951aee67052580..5f15ce49b91734a6eee4e8ea7880f3027b3b7035 100644 --- a/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java +++ b/src/main/java/org/olat/core/util/mail/manager/MailManagerImpl.java @@ -1694,9 +1694,11 @@ public class MailManagerImpl implements MailManager, InitializingBean { result.setReturnCode(MailerResult.RECIPIENT_ADDRESS_ERROR); result.addInvalidAddresses(e.getInvalidAddresses()); result.addInvalidAddresses(e.getValidUnsentAddresses()); + result.setErrorMessage(e.getMessage()); log.warn("Could not send mail", e); } catch (MessagingException e) { result.setReturnCode(MailerResult.SEND_GENERAL_ERROR); + result.setErrorMessage(e.getMessage()); log.warn("Could not send mail", e); } } diff --git a/src/main/java/org/olat/core/util/mail/ui/MailListController.java b/src/main/java/org/olat/core/util/mail/ui/MailListController.java index cf80e5946826b3acc99292b81e7e397a2db5c99e..779e95923760dae0e5b536b6f7d065a36fdc1fc8 100644 --- a/src/main/java/org/olat/core/util/mail/ui/MailListController.java +++ b/src/main/java/org/olat/core/util/mail/ui/MailListController.java @@ -356,7 +356,7 @@ public class MailListController extends BasicController implements Activateable2 DBMailLight mail = (DBMailLight) tableCtr.getTableDataModel().getObject(i); MailerResult result = forwardToMyRealMail(mail); if(result.getReturnCode() != MailerResult.OK) { - MailHelper.printErrorsAndWarnings(result, getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); } else { showInfo("mail.action.send.real.success", mail.getSubject()); } diff --git a/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java b/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java index ac5fa28c1956eedd776842d33c7e65f1cca585f8..1472db08f7fd17abc72acd2f45e5bda96ad42eb6 100644 --- a/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java +++ b/src/main/java/org/olat/core/util/mail/ui/SendDocumentsByEMailController.java @@ -549,7 +549,7 @@ public class SendDocumentsByEMailController extends FormBasicController implemen result.append(mailManager.sendMessage(bundle)); } - MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } public class FileInfo { diff --git a/src/main/java/org/olat/core/util/openxml/HTMLToOpenXMLHandler.java b/src/main/java/org/olat/core/util/openxml/HTMLToOpenXMLHandler.java index 6584931494e771353df51965c5e9f1deab8772a9..09efd2ee2f5f2b1ad9b40b0225f8798519ccf4dc 100644 --- a/src/main/java/org/olat/core/util/openxml/HTMLToOpenXMLHandler.java +++ b/src/main/java/org/olat/core/util/openxml/HTMLToOpenXMLHandler.java @@ -66,6 +66,8 @@ public class HTMLToOpenXMLHandler extends DefaultHandler { protected ListParagraph currentListParagraph; protected boolean pNeedNewParagraph = true; + protected double maxWidthCm = OpenXMLConstants.PAGE_FULL_WIDTH_CM; + public HTMLToOpenXMLHandler(OpenXMLDocument document) { this.factory = document; } @@ -87,6 +89,10 @@ public class HTMLToOpenXMLHandler extends DefaultHandler { this.startSpacing = spacing; } + public void setMaxWidthCm(double width) { + this.maxWidthCm = width; + } + public void setInitialParagraph(Element paragraph) { this.currentParagraph = paragraph; } @@ -327,7 +333,7 @@ public class HTMLToOpenXMLHandler extends DefaultHandler { } protected void setImage(String path) { - Element imgEl = factory.createImageEl(path); + Element imgEl = factory.createImageEl(path, maxWidthCm); if(imgEl != null) { PredefinedStyle style = getCurrentPredefinedStyle(); Element runEl = factory.createRunEl(Collections.singletonList(imgEl), style); @@ -337,7 +343,7 @@ public class HTMLToOpenXMLHandler extends DefaultHandler { } protected void setImage(File file) { - Element imgEl = factory.createImageEl(file); + Element imgEl = factory.createImageEl(file, maxWidthCm); if(imgEl != null) { PredefinedStyle style = getCurrentPredefinedStyle(); Element runEl = factory.createRunEl(Collections.singletonList(imgEl), style); @@ -355,21 +361,29 @@ public class HTMLToOpenXMLHandler extends DefaultHandler { closeParagraph(); } - protected void startTable() { + public void startTable() { closeParagraph(); currentTable = new Table(); } - protected void startTable(Integer... width) { + public void startTable(Integer... width) { closeParagraph(); currentTable = new Table(width); } - protected void startCurrentTableRow() { + public void startCurrentTableRow() { currentTable.addRowEl(); } - protected void closeCurrentTableRow() { + public Node addCell(int colSpan, int rowSpan) { + return currentTable.addCellEl(colSpan, rowSpan); + } + + public Node addCell(Element cellEl) { + return currentTable.addCellEl(cellEl, 1); + } + + public void closeCurrentTableRow() { if(currentTable != null) { currentTable.closeRow(); } @@ -378,7 +392,7 @@ public class HTMLToOpenXMLHandler extends DefaultHandler { currentParagraph = null; } - protected void endTable() { + public void endTable() { if(currentTable != null) { content.add(currentTable.getTableEl()); } diff --git a/src/main/java/org/olat/core/util/openxml/OpenXMLConstants.java b/src/main/java/org/olat/core/util/openxml/OpenXMLConstants.java new file mode 100644 index 0000000000000000000000000000000000000000..28beaa0d653f979d4caf713cee26f8045b9c4d61 --- /dev/null +++ b/src/main/java/org/olat/core/util/openxml/OpenXMLConstants.java @@ -0,0 +1,36 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.core.util.openxml; + +/** + * + * Initial date: 23 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class OpenXMLConstants { + + public static final double PAGE_FULL_WIDTH_CM = 15.9; + + public static final int TABLE_FULL_WIDTH_DXA = 11294; + + public static final int TABLE_FULL_WIDTH_PCT = 4858; + +} diff --git a/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java b/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java index 37a59fd576651cca99f2bd6f3b280cc852a92214..1bcc4bb516f247fdff710ce366d23455ec8dacd0 100644 --- a/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java +++ b/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java @@ -784,19 +784,28 @@ public class OpenXMLDocument { <w:shd w:val="solid" w:color="E9EAF2" w:fill="auto" /> </w:tcPr> */ + + /** + * The border are the same color as the background. + * + * @param background + * @param width + * @param unit + * @return + */ public Element createTableCell(String background, Integer width, Unit unit) { Element cellEl = document.createElement("w:tc"); Node prefEl = null; if(unit != null) { prefEl = cellEl.appendChild(document.createElement("w:tcPr")); - createWidthEl("w:tcW", width, unit, cellEl); + createWidthEl("w:tcW", width, unit, prefEl); } if(StringHelper.containsNonWhitespace(background)) { if(prefEl == null) { prefEl = cellEl.appendChild(document.createElement("w:tcPr")); } - + Node borderEl = prefEl.appendChild(document.createElement("w:tcBorders")); createBorder("w:top", background, borderEl); createBorder("w:left", background, borderEl); @@ -808,6 +817,38 @@ public class OpenXMLDocument { return cellEl; } + + public Element createTableCell(String background, Border border, Integer width, Unit unit) { + Element cellEl = document.createElement("w:tc"); + + Node prefEl = null; + if(unit != null) { + prefEl = cellEl.appendChild(document.createElement("w:tcPr")); + createWidthEl("w:tcW", width, unit, prefEl); + } + + if(StringHelper.containsNonWhitespace(background)) { + if(prefEl == null) { + prefEl = cellEl.appendChild(document.createElement("w:tcPr")); + } + createShadow(background, prefEl); + } + + if(border != null) { + if(prefEl == null) { + prefEl = cellEl.appendChild(document.createElement("w:tcPr")); + } + + Node borderEl = prefEl.appendChild(document.createElement("w:tcBorders")); + createBorder("w:top", border, borderEl); + createBorder("w:left", border, borderEl); + createBorder("w:bottom", border, borderEl); + createBorder("w:right", border, borderEl); + } + + return cellEl; + } + public ListParagraph createListParagraph() { int abstractNumberingId = currentNumberingId++; int numberingId = currentNumberingId++; @@ -929,6 +970,15 @@ public class OpenXMLDocument { return borderEl; } + private Element createBorder(String name, Border border, Node parent) { + Element borderEl = (Element)parent.appendChild(document.createElement(name)); + borderEl.setAttribute("w:val", border.getVal()); + borderEl.setAttribute("w:sz", Integer.toString(border.getSize())); + borderEl.setAttribute("w:space", Integer.toString(border.getSpace())); + borderEl.setAttribute("w:color", border.getColor()); + return borderEl; + } + private Element createGridCol(Integer width, Node parent) { Element colEl = (Element)parent.appendChild(document.createElement("w:gridCol")); colEl.setAttribute("w:w", width.toString()); @@ -1008,13 +1058,13 @@ public class OpenXMLDocument { } } - public Element createImageEl(String path) { + public Element createImageEl(String path, double maxWidthCm) { if(mediaContainer == null) return null; VFSItem media = mediaContainer.resolve(path); if(media instanceof LocalFileImpl) { LocalFileImpl file = (LocalFileImpl)media; - return createImageEl(file.getBasefile()); + return createImageEl(file.getBasefile(), maxWidthCm); } return null; } @@ -1077,7 +1127,11 @@ public class OpenXMLDocument { * @return */ public Element createImageEl(File image) { - DocReference ref = registerImage(image); + return createImageEl(image, OpenXMLConstants.PAGE_FULL_WIDTH_CM/* cm */); + } + + public Element createImageEl(File image, double widthCm) { + DocReference ref = registerImage(image, widthCm); String id = ref.getId(); OpenXMLSize emuSize = ref.getEmuSize(); String filename = ref.getFilename(); @@ -1169,14 +1223,14 @@ public class OpenXMLDocument { return drawingEl; } - private DocReference registerImage(File image) { + private DocReference registerImage(File image, double widthCm) { DocReference ref; if(fileToImagesMap.containsKey(image)) { ref = fileToImagesMap.get(image); } else { String id = generateId(); Size size = ImageUtils.getImageSize(image); - OpenXMLSize emuSize = OpenXMLUtils.convertPixelToEMUs(size, DPI, 15.9/* cm */); + OpenXMLSize emuSize = OpenXMLUtils.convertPixelToEMUs(size, DPI, widthCm/* cm */); String filename = getUniqueFilename(image); ref = new DocReference(id, filename, emuSize, image); fileToImagesMap.put(image, ref); @@ -1290,7 +1344,7 @@ public class OpenXMLDocument { </w:drawing> */ public Element createGraphicEl(File backgroundImage, List<OpenXMLGraphic> elements) { - DocReference backgroundImageRef = registerImage(backgroundImage); + DocReference backgroundImageRef = registerImage(backgroundImage, OpenXMLConstants.PAGE_FULL_WIDTH_CM/**/); OpenXMLSize emuSize = backgroundImageRef.getEmuSize(); Element alternateContentEl = document.createElement("mc:AlternateContent"); diff --git a/src/main/java/org/olat/core/util/vfs/VirtualContainer.java b/src/main/java/org/olat/core/util/vfs/VirtualContainer.java index bffa9376a2ad6d4d4b0de4522b3df0b4a861eaf1..bd801707472e528c367e932b6b1ea6746c4fe234 100644 --- a/src/main/java/org/olat/core/util/vfs/VirtualContainer.java +++ b/src/main/java/org/olat/core/util/vfs/VirtualContainer.java @@ -34,13 +34,12 @@ import org.olat.core.util.vfs.filters.VFSItemFilter; public class VirtualContainer extends AbstractVirtualContainer { - private List<VFSItem> children; + private final List<VFSItem> children = new ArrayList<>(); private VFSSecurityCallback secCallback = null; private VFSContainer parentContainer; public VirtualContainer(String name) { super(name); - children = new ArrayList<VFSItem>(); } @Override @@ -55,16 +54,18 @@ public class VirtualContainer extends AbstractVirtualContainer { public void addItem(VFSItem vfsItem) { children.add(vfsItem); } - + + @Override public List<VFSItem> getItems() { return children; } + @Override public List<VFSItem> getItems(VFSItemFilter filter) { if (filter == null) { return children; } else { - List<VFSItem> filtered = new ArrayList<VFSItem>(children.size()); + List<VFSItem> filtered = new ArrayList<>(children.size()); for (VFSItem vfsItem : children) { if (filter.accept(vfsItem)) { filtered.add(vfsItem); @@ -74,32 +75,54 @@ public class VirtualContainer extends AbstractVirtualContainer { } } + @Override public VFSStatus canWrite() { return VFSConstants.NO; } + @Override public VFSSecurityCallback getLocalSecurityCallback() { return secCallback; } + @Override public VFSContainer getParentContainer() { return parentContainer; } + @Override public boolean isSame(VFSItem vfsItem) { return (this == vfsItem); } + @Override public VFSItem resolve(String path) { + if(path != null && path.length() > 1 && path.startsWith("/")) { + String childName = VFSManager.extractChild(path); + String nextPath = path.substring(childName.length() + 1); + // simple optimized case + for (VFSItem container:children) { + if (container.getName().equals(childName)) { + VFSItem vfsItem = container.resolve(nextPath); + // set default filter on resolved file if it is a container + if (vfsItem != null && vfsItem instanceof VFSContainer) { + VFSContainer resolvedContainer = (VFSContainer) vfsItem; + resolvedContainer.setDefaultItemFilter(defaultFilter); + } + return vfsItem; + } + } + } return VFSManager.resolveFile(this, path); } + @Override public void setLocalSecurityCallback(VFSSecurityCallback secCallback) { this.secCallback = secCallback; } + @Override public void setParentContainer(VFSContainer parentContainer) { this.parentContainer = parentContainer; } - -} +} \ No newline at end of file diff --git a/src/main/java/org/olat/core/util/vfs/filters/VFSItemFileTypeFilter.java b/src/main/java/org/olat/core/util/vfs/filters/VFSItemFileTypeFilter.java index 796ce7156cf52933af8e43870506811de220b1bd..74c6c47867a6a203d7c2fbd8e918a93bf80d5ec3 100644 --- a/src/main/java/org/olat/core/util/vfs/filters/VFSItemFileTypeFilter.java +++ b/src/main/java/org/olat/core/util/vfs/filters/VFSItemFileTypeFilter.java @@ -20,7 +20,9 @@ package org.olat.core.util.vfs.filters; +import java.net.URI; import java.util.Hashtable; +import java.util.Map; import org.olat.core.util.vfs.VFSContainer; import org.olat.core.util.vfs.VFSItem; @@ -33,14 +35,17 @@ import org.olat.core.util.vfs.VFSItem; * */ public class VFSItemFileTypeFilter extends VFSItemCompositeFilter { - private Hashtable<String, String> fileTypes = new Hashtable<String, String>(); + + private final boolean uriValidation; + private Map<String, String> fileTypes = new Hashtable<String, String>(); /** * Constrtuctor * * @param filetypes */ - public VFSItemFileTypeFilter(String[] fileTypes) { + public VFSItemFileTypeFilter(String[] fileTypes, boolean uriValidation) { + this.uriValidation = uriValidation; for (int i = 0; i < fileTypes.length; i++) { addFileType(fileTypes[i]); } @@ -51,24 +56,35 @@ public class VFSItemFileTypeFilter extends VFSItemCompositeFilter { */ public void addFileType(String fileType) { fileType = fileType.toLowerCase(); - this.fileTypes.put(fileType, fileType); + fileTypes.put(fileType, fileType); } /** * @param fileType */ public void removeFileType(String fileType) { - this.fileTypes.remove(fileType.toLowerCase()); + fileTypes.remove(fileType.toLowerCase()); } /** * @see org.olat.core.util.vfs.filters.VFSItemCompositeFilter#acceptFilter(VFSItem) */ + @Override public boolean acceptFilter(VFSItem vfsItem) { if (vfsItem instanceof VFSContainer) { return true; - } - String name = vfsItem.getName().toLowerCase(); + } + + String name = vfsItem.getName(); + if(uriValidation) { + try { + new URI(name).getPath(); + } catch(Exception e) { + return false; + } + } + + name = name.toLowerCase(); int dotPos = name.lastIndexOf("."); if (dotPos == -1) return false; return fileTypes.containsKey(name.substring(dotPos + 1)); diff --git a/src/main/java/org/olat/course/CourseXStreamAliases.java b/src/main/java/org/olat/course/CourseXStreamAliases.java index e3e1695a80096e098e6a593a97e840041a9ddfd6..f39c0af40bf3dfcfb57fa4c83cafb61c6f2224b5 100644 --- a/src/main/java/org/olat/course/CourseXStreamAliases.java +++ b/src/main/java/org/olat/course/CourseXStreamAliases.java @@ -43,6 +43,7 @@ import org.olat.course.nodes.BlogCourseNode; import org.olat.course.nodes.COCourseNode; import org.olat.course.nodes.CPCourseNode; import org.olat.course.nodes.CalCourseNode; +import org.olat.course.nodes.Card2BrainCourseNode; import org.olat.course.nodes.CourseNode; import org.olat.course.nodes.DialogCourseNode; import org.olat.course.nodes.ENCourseNode; @@ -107,6 +108,7 @@ public class CourseXStreamAliases { readXstream.alias("BCCourseNode", BCCourseNode.class); readXstream.alias("BlogCourseNode", BlogCourseNode.class); readXstream.alias("CalCourseNode", CalCourseNode.class); + readXstream.alias("Card2BrainCourseNode", Card2BrainCourseNode.class); readXstream.alias("COCourseNode", COCourseNode.class); readXstream.alias("CourseNode", CourseNode.class); readXstream.alias("CPCourseNode", CPCourseNode.class); diff --git a/src/main/java/org/olat/course/CoursefolderWebDAVNamedContainer.java b/src/main/java/org/olat/course/CoursefolderWebDAVNamedContainer.java index 27a2d05cc3fbb073bdefb06f26c6ea79aec2c555..5f23262ae876b5b8617d2b6c62fb0a4f66da8e22 100644 --- a/src/main/java/org/olat/course/CoursefolderWebDAVNamedContainer.java +++ b/src/main/java/org/olat/course/CoursefolderWebDAVNamedContainer.java @@ -44,11 +44,22 @@ class CoursefolderWebDAVNamedContainer extends NamedContainerImpl { this.entry = entry; this.identityEnv = identityEnv; } + + + @Override + public VFSItemFilter getDefaultItemFilter() { + return null; + } @Override public void setDefaultItemFilter(VFSItemFilter defaultFilter) { // } + + @Override + public boolean exists() { + return true; + } @Override public VFSContainer getDelegate() { @@ -68,11 +79,6 @@ class CoursefolderWebDAVNamedContainer extends NamedContainerImpl { return super.getDelegate(); } - @Override - public VFSItemFilter getDefaultItemFilter() { - return null; - } - @Override public void setParentContainer(VFSContainer parentContainer) { if(super.getDelegate() == null) { diff --git a/src/main/java/org/olat/course/MergedCourseContainer.java b/src/main/java/org/olat/course/MergedCourseContainer.java index e690048e20b69dc02de34ca0346afc3897b351fb..a8e3243c9837249628ce4a7b6ac244057580ea02 100644 --- a/src/main/java/org/olat/course/MergedCourseContainer.java +++ b/src/main/java/org/olat/course/MergedCourseContainer.java @@ -19,8 +19,10 @@ */ package org.olat.course; +import org.olat.admin.quota.QuotaConstants; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.modules.bc.vfs.OlatRootFolderImpl; +import org.olat.core.commons.services.notifications.SubscriptionContext; import org.olat.core.commons.services.webdav.servlets.RequestUtil; import org.olat.core.gui.components.tree.GenericTreeModel; import org.olat.core.gui.components.tree.TreeNode; @@ -30,15 +32,20 @@ import org.olat.core.logging.Tracing; import org.olat.core.util.StringHelper; import org.olat.core.util.vfs.MergeSource; import org.olat.core.util.vfs.NamedContainerImpl; +import org.olat.core.util.vfs.Quota; +import org.olat.core.util.vfs.QuotaManager; import org.olat.core.util.vfs.VFSContainer; import org.olat.core.util.vfs.VFSItem; +import org.olat.core.util.vfs.VFSManager; import org.olat.core.util.vfs.callbacks.ReadOnlyCallback; +import org.olat.core.util.vfs.callbacks.VFSSecurityCallback; import org.olat.core.util.vfs.filters.VFSItemFilter; import org.olat.course.config.CourseConfig; import org.olat.course.nodes.BCCourseNode; import org.olat.course.nodes.CourseNode; import org.olat.course.nodes.PFCourseNode; import org.olat.course.nodes.bc.BCCourseNodeEditController; +import org.olat.course.nodes.bc.FolderNodeCallback; import org.olat.course.nodes.pf.manager.PFManager; import org.olat.course.run.userview.NodeEvaluation; import org.olat.course.run.userview.TreeEvaluation; @@ -122,7 +129,7 @@ public class MergedCourseContainer extends MergeSource { MergeSource nodesContainer = new MergeSource(null, "_courseelementdata"); if(identityEnv == null) { CourseNode rootNode = persistingCourse.getRunStructure().getRootNode(); - addFolderBuildingBlocks(persistingCourse, nodesContainer, rootNode); + addFoldersForAdmin(persistingCourse, nodesContainer, rootNode); } else { TreeEvaluation treeEval = new TreeEvaluation(); GenericTreeModel treeModel = new GenericTreeModel(); @@ -131,7 +138,7 @@ public class MergedCourseContainer extends MergeSource { NodeEvaluation rootNodeEval = rootCn.eval(userCourseEnv.getConditionInterpreter(), treeEval, new VisibleTreeFilter()); TreeNode treeRoot = rootNodeEval.getTreeNode(); treeModel.setRootNode(treeRoot); - addFolderBuildingBlocks(persistingCourse, nodesContainer, treeRoot); + addFolders(persistingCourse, nodesContainer, treeRoot); } if (nodesContainer.getItems().size() > 0) { @@ -167,7 +174,7 @@ public class MergedCourseContainer extends MergeSource { } } - private void addFolderBuildingBlocks(PersistingCourseImpl course, MergeSource nodesContainer, TreeNode courseNode) { + private void addFolders(PersistingCourseImpl course, MergeSource nodesContainer, TreeNode courseNode) { if(courseNode == null) return; for (int i = 0; i < courseNode.getChildCount(); i++) { @@ -187,7 +194,7 @@ public class MergedCourseContainer extends MergeSource { if (courseNodeChild instanceof BCCourseNode) { final BCCourseNode bcNode = (BCCourseNode) courseNodeChild; // add folder not to merge source. Use name and node id to have unique name - VFSContainer rootFolder = getBCContainer(course, bcNode); + VFSContainer rootFolder = getBCContainer(course, bcNode, nodeEval, false); boolean canDownload = nodeEval.isCapabilityAccessible("download"); if(canDownload && rootFolder != null) { @@ -207,13 +214,13 @@ public class MergedCourseContainer extends MergeSource { courseNodeContainer.addContainersChildren(nodeContentContainer, true); nodesContainer.addContainer(courseNodeContainer); // Do recursion for all children - addFolderBuildingBlocks(course, courseNodeContainer, child); + addFolders(course, courseNodeContainer, child); } else { // For non-folder course nodes, add merge source (no files to show) ... MergeSource courseNodeContainer = new MergeSource(null, folderName); // , then do recursion for all children ... - addFolderBuildingBlocks(course, courseNodeContainer, child); + addFolders(course, courseNodeContainer, child); // ... but only add this container if it contains any children with at least one BC course node if (courseNodeContainer.getItems().size() > 0) { nodesContainer.addContainer(courseNodeContainer); @@ -231,7 +238,7 @@ public class MergedCourseContainer extends MergeSource { VFSContainer nodeContentContainer = new NamedContainerImpl(folderName, rootFolder); courseNodeContainer.addContainersChildren(nodeContentContainer, true); - addFolderBuildingBlocks(course, courseNodeContainer, child); + addFolders(course, courseNodeContainer, child); nodesContainer.addContainer(courseNodeContainer); @@ -239,7 +246,7 @@ public class MergedCourseContainer extends MergeSource { // For non-folder course nodes, add merge source (no files to show) ... MergeSource courseNodeContainer = new MergeSource(null, folderName); // , then do recursion for all children ... - addFolderBuildingBlocks(course, courseNodeContainer, child); + addFolders(course, courseNodeContainer, child); // ... but only add this container if it contains any children with at least one BC course node if (courseNodeContainer.getItems().size() > 0) { nodesContainer.addContainer(courseNodeContainer); @@ -260,7 +267,7 @@ public class MergedCourseContainer extends MergeSource { * @param courseNode * @return container for the current course node */ - private void addFolderBuildingBlocks(PersistingCourseImpl course, MergeSource nodesContainer, CourseNode courseNode) { + private void addFoldersForAdmin(PersistingCourseImpl course, MergeSource nodesContainer, CourseNode courseNode) { for (int i = 0; i < courseNode.getChildCount(); i++) { CourseNode child = (CourseNode) courseNode.getChildAt(i); String folderName = RequestUtil.normalizeFilename(child.getShortTitle()); @@ -268,11 +275,10 @@ public class MergedCourseContainer extends MergeSource { if (child instanceof BCCourseNode) { final BCCourseNode bcNode = (BCCourseNode) child; // add folder not to merge source. Use name and node id to have unique name - VFSContainer rootFolder = getBCContainer(course, bcNode); + VFSContainer rootFolder = getBCContainer(course, bcNode, null, true); if(courseReadOnly) { rootFolder.setLocalSecurityCallback(new ReadOnlyCallback()); } - folderName = getFolderName(nodesContainer, bcNode, folderName); if(rootFolder != null) { @@ -282,7 +288,7 @@ public class MergedCourseContainer extends MergeSource { courseNodeContainer.addContainersChildren(nodeContentContainer, true); nodesContainer.addContainer(courseNodeContainer); // Do recursion for all children - addFolderBuildingBlocks(course, courseNodeContainer, child); + addFoldersForAdmin(course, courseNodeContainer, child); } } else if (child instanceof PFCourseNode) { final PFCourseNode pfNode = (PFCourseNode) child; @@ -295,12 +301,12 @@ public class MergedCourseContainer extends MergeSource { courseNodeContainer.addContainersChildren(nodeContentContainer, true); nodesContainer.addContainer(courseNodeContainer); // Do recursion for all children - addFolderBuildingBlocks(course, courseNodeContainer, child); + addFoldersForAdmin(course, courseNodeContainer, child); } else { // For non-folder course nodes, add merge source (no files to show) ... MergeSource courseNodeContainer = new MergeSource(null, folderName); // , then do recursion for all children ... - addFolderBuildingBlocks(course, courseNodeContainer, child); + addFoldersForAdmin(course, courseNodeContainer, child); // ... but only add this container if it contains any children with at least one BC course node if (courseNodeContainer.getItems().size() > 0) { nodesContainer.addContainer(courseNodeContainer); @@ -330,7 +336,7 @@ public class MergedCourseContainer extends MergeSource { return folderName; } - private VFSContainer getBCContainer(ICourse course, BCCourseNode bcNode) { + private VFSContainer getBCContainer(ICourse course, BCCourseNode bcNode, NodeEvaluation nodeEval, boolean isOlatAdmin) { bcNode.updateModuleConfigDefaults(false); // add folder not to merge source. Use name and node id to have unique name VFSContainer rootFolder = null; @@ -353,14 +359,23 @@ public class MergedCourseContainer extends MergeSource { } } } - }else{ + } else { VFSContainer courseBase = course.getCourseBaseContainer(); rootFolder = (VFSContainer) courseBase.resolve("/coursefolder" + subpath); } } + if(bcNode.getModuleConfiguration().getBooleanSafe(BCCourseNodeEditController.CONFIG_AUTO_FOLDER)){ String path = BCCourseNode.getFoldernodePathRelToFolderBase(course.getCourseEnvironment(), bcNode); rootFolder = new OlatRootFolderImpl(path, null); + if(nodeEval != null) { + rootFolder.setLocalSecurityCallback(new FolderNodeCallback(path, nodeEval, isOlatAdmin, false, null)); + } else { + VFSSecurityCallback secCallback = VFSManager.findInheritedSecurityCallback(this); + if(secCallback != null) { + rootFolder.setLocalSecurityCallback(new OverrideQuotaSecurityCallback(path, secCallback)); + } + } } return rootFolder; } @@ -374,4 +389,74 @@ public class MergedCourseContainer extends MergeSource { return null; } } + + private static class OverrideQuotaSecurityCallback implements VFSSecurityCallback { + + private final String relPath; + private Quota overridenQuota; + private final VFSSecurityCallback secCallback; + + public OverrideQuotaSecurityCallback(String relPath, VFSSecurityCallback secCallback) { + this.relPath = relPath; + this.secCallback = secCallback; + } + + @Override + public boolean canRead() { + return secCallback.canRead(); + } + + @Override + public boolean canWrite() { + return secCallback.canWrite(); + } + + @Override + public boolean canCreateFolder() { + return secCallback.canCreateFolder(); + } + + @Override + public boolean canDelete() { + return secCallback.canDelete(); + } + + @Override + public boolean canList() { + return secCallback.canList(); + } + + @Override + public boolean canCopy() { + return secCallback.canCopy(); + } + + @Override + public boolean canDeleteRevisionsPermanently() { + return secCallback.canDeleteRevisionsPermanently(); + } + + @Override + public Quota getQuota() { + if(overridenQuota == null) { + QuotaManager qm = QuotaManager.getInstance(); + overridenQuota = qm.getCustomQuota(relPath); + if (overridenQuota == null) { + Quota defQuota = qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_NODES); + overridenQuota = qm.createQuota(relPath, defQuota.getQuotaKB(), defQuota.getUlLimitKB()); + } + } + return overridenQuota; + } + + @Override + public void setQuota(Quota quota) { + // + } + + @Override + public SubscriptionContext getSubscriptionContext() { + return secCallback.getSubscriptionContext(); + } + } } diff --git a/src/main/java/org/olat/course/_spring/courseContext.xml b/src/main/java/org/olat/course/_spring/courseContext.xml index 7407a7b127e3869b045616a2d528ae16ea6aa3b9..8ad410cf51ca75144d561f932a21a4b9fc802b43 100644 --- a/src/main/java/org/olat/course/_spring/courseContext.xml +++ b/src/main/java/org/olat/course/_spring/courseContext.xml @@ -16,6 +16,7 @@ <import resource="classpath:/org/olat/course/db/_spring/coursedbContext.xml"/> <import resource="classpath:/org/olat/course/nodes/_spring/buildingblockContext.xml"/> <import resource="classpath:/org/olat/course/nodes/basiclti/_spring/basicLtiContext.xml"/> + <import resource="classpath:/org/olat/course/nodes/card2brain/_spring/card2brainContext.xml"/> <import resource="classpath:/org/olat/course/nodes/info/_spring/infoMessageContext.xml"/> <import resource="classpath:/org/olat/course/nodes/gotomeeting/_spring/buildingblockContext.xml"/> <import resource="classpath:/org/olat/course/nodes/openmeetings/_spring/buildingblockContext.xml"/> diff --git a/src/main/java/org/olat/course/archiver/QTIExportFormatConfig.java b/src/main/java/org/olat/course/archiver/ExportFormat.java similarity index 77% rename from src/main/java/org/olat/course/archiver/QTIExportFormatConfig.java rename to src/main/java/org/olat/course/archiver/ExportFormat.java index 833f67ef136db3b697add13d6728518dbc90781e..e7fecaf091db27ba5a5b4db218753eaeb7fc0ceb 100644 --- a/src/main/java/org/olat/course/archiver/QTIExportFormatConfig.java +++ b/src/main/java/org/olat/course/archiver/ExportFormat.java @@ -19,58 +19,65 @@ */ package org.olat.course.archiver; -import org.olat.ims.qti.export.QTIExportItemFormatConfig; - /** * data container to persist result export config * * Initial Date: 18.04.2017 * @author fkiefer, fabian.kiefer@frentix.com, www.frentix.com */ -public class QTIExportFormatConfig implements QTIExportItemFormatConfig { +public class ExportFormat { private boolean responseCols; private boolean positionsOfResponsesCol; private boolean pointCol; private boolean timeCols; + private boolean commentCol; - public QTIExportFormatConfig(boolean resCols, boolean posOfResCol, boolean pointCol, boolean timeCols){ - this.responseCols = resCols; + public ExportFormat(boolean responseCols, boolean posOfResCol, boolean pointCol, boolean timeCols, boolean commentCol){ + this.responseCols = responseCols; this.positionsOfResponsesCol = posOfResCol; this.pointCol = pointCol; this.timeCols = timeCols; + this.commentCol = commentCol; } - public boolean hasResponseCols() { + public boolean isResponseCols() { return responseCols; } + + public void setResponseCols(boolean responseColsConfigured) { + this.responseCols = responseColsConfigured; + } - public boolean hasPositionsOfResponsesCol() { + public boolean isPositionsOfResponsesCol() { return positionsOfResponsesCol; } - - public boolean hasPointCol() { - return pointCol; + + public void setPositionsOfResponsesCol(boolean positionsOfResponsesColConfigured) { + this.positionsOfResponsesCol = positionsOfResponsesColConfigured; } - public boolean hasTimeCols() { - return timeCols; + public boolean isPointCol() { + return pointCol; } public void setPointCol(boolean pointColConfigured) { this.pointCol = pointColConfigured; } - public void setPositionsOfResponsesCol(boolean positionsOfResponsesColConfigured) { - this.positionsOfResponsesCol = positionsOfResponsesColConfigured; - } - - public void setResponseCols(boolean responseColsConfigured) { - this.responseCols = responseColsConfigured; + public boolean isTimeCols() { + return timeCols; } - + public void setTimeCols(boolean timeColsConfigured) { this.timeCols = timeColsConfigured; } + public boolean isCommentCol() { + return commentCol; + } + + public void setCommentCol(boolean commentCol) { + this.commentCol = commentCol; + } } diff --git a/src/main/java/org/olat/course/archiver/ExportOptionsController.java b/src/main/java/org/olat/course/archiver/ExportOptionsController.java index 4d1bec0521a663e18e1a8afacee5143b64e99329..c25b05a08ee116e7060f51d2d07f5d191e8fe421 100644 --- a/src/main/java/org/olat/course/archiver/ExportOptionsController.java +++ b/src/main/java/org/olat/course/archiver/ExportOptionsController.java @@ -30,10 +30,7 @@ import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.translator.Translator; import org.olat.core.util.Util; import org.olat.core.util.prefs.Preferences; -import org.olat.course.nodes.CourseNode; import org.olat.ims.qti.export.OptionsChooseForm; -import org.olat.ims.qti.export.QTIExportItemFormatConfig; -import org.springframework.beans.factory.annotation.Autowired; /** * user interface to determine export config @@ -47,26 +44,24 @@ public class ExportOptionsController extends FormBasicController { private static final String POSCOL = "poscol"; private static final String POINTCOL = "pointcol"; private static final String TIMECOLS = "timecols"; + private static final String COMMENTCOL = "commentcol"; private MultipleSelectionElement downloadOptionsEl; private String[] optionKeys, optionVals; - @Autowired - private FormatConfigHelper configHelper; - - - public ExportOptionsController(UserRequest ureq, WindowControl wControl, CourseNode courseNode) { + public ExportOptionsController(UserRequest ureq, WindowControl wControl) { super(ureq, wControl); Translator fallback = Util.createPackageTranslator(OptionsChooseForm.class, getLocale()); setTranslator(Util.createPackageTranslator(getTranslator(), fallback, getLocale())); - optionKeys = new String[]{ITEMCOLS, POSCOL, POINTCOL, TIMECOLS}; + optionKeys = new String[]{ITEMCOLS, POSCOL, POINTCOL, TIMECOLS, COMMENTCOL }; optionVals = new String[] { translate("form.itemcols"), translate("form.poscol.extra"), translate("form.pointcol"), - translate("form.timecols") + translate("form.timecols"), + translate("form.commentcol") }; initForm(ureq); @@ -81,19 +76,29 @@ public class ExportOptionsController extends FormBasicController { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { downloadOptionsEl = uifactory.addCheckboxesVertical("setting", "form.title", formLayout, optionKeys, optionVals, 1); - QTIExportItemFormatConfig c = configHelper.doLoadQTIExportFormatConfig(ureq); - downloadOptionsEl.select(ITEMCOLS, c.hasResponseCols()); - downloadOptionsEl.select(POSCOL, c.hasPositionsOfResponsesCol()); - downloadOptionsEl.select(POINTCOL, c.hasPointCol()); - downloadOptionsEl.select(TIMECOLS, c.hasTimeCols()); + ExportFormat c = FormatConfigHelper.loadExportFormat(ureq); + if(c.isResponseCols()) { + downloadOptionsEl.select(ITEMCOLS, c.isResponseCols()); + } + if(c.isPositionsOfResponsesCol()) { + downloadOptionsEl.select(POSCOL, c.isPositionsOfResponsesCol()); + } + if(c.isPointCol()) { + downloadOptionsEl.select(POINTCOL, c.isPointCol()); + } + if(c.isTimeCols()) { + downloadOptionsEl.select(TIMECOLS, c.isTimeCols()); + } + if(c.isCommentCol()) { + downloadOptionsEl.select(COMMENTCOL, c.isCommentCol()); + } FormItemContainer buttonContainer = FormLayoutContainer.createButtonLayout("buttonLayout", getTranslator()); - formLayout.add(buttonContainer); - uifactory.addFormSubmitButton("save", buttonContainer); + formLayout.add(buttonContainer); uifactory.addFormCancelButton("cancel", buttonContainer, ureq, getWindowControl()); + uifactory.addFormSubmitButton("save", buttonContainer); } - @Override protected void formCancelled(UserRequest ureq) { fireEvent(ureq, Event.CANCELLED_EVENT); @@ -124,7 +129,8 @@ public class ExportOptionsController extends FormBasicController { boolean poscol = downloadOptionsEl.isSelected(1); boolean pointcol = downloadOptionsEl.isSelected(2); boolean timecols = downloadOptionsEl.isSelected(3); - configHelper.updateQTIExportFormatConfig(ureq, itemcols, poscol, pointcol, timecols); + boolean commentcol = downloadOptionsEl.isSelected(4); + FormatConfigHelper.updateExportFormat(ureq, itemcols, poscol, pointcol, timecols, commentcol); } } diff --git a/src/main/java/org/olat/course/archiver/FormatConfigHelper.java b/src/main/java/org/olat/course/archiver/FormatConfigHelper.java index 864b676600169d8359b178a0858961217901fc25..02f411d782650bd4caeca1817d21901156a72d83 100644 --- a/src/main/java/org/olat/course/archiver/FormatConfigHelper.java +++ b/src/main/java/org/olat/course/archiver/FormatConfigHelper.java @@ -25,8 +25,6 @@ import org.olat.core.logging.Tracing; import org.olat.core.util.prefs.Preferences; import org.olat.core.util.xml.XStreamHelper; import org.olat.course.nodes.ArchiveOptions; -import org.olat.ims.qti.export.QTIExportItemFormatConfig; -import org.springframework.stereotype.Service; import com.thoughtworks.xstream.XStream; @@ -36,7 +34,6 @@ import com.thoughtworks.xstream.XStream; * Initial Date: 21.04.2017 * @author fkiefer, fabian.kiefer@frentix.com, www.frentix.com */ -@Service public class FormatConfigHelper { private static final String QTI_EXPORT_ITEM_FORMAT_CONFIG = "QTIExportItemFormatConfig"; @@ -44,31 +41,30 @@ public class FormatConfigHelper { private static XStream configXstream = XStreamHelper.createXStreamInstance(); static { - configXstream.alias(QTI_EXPORT_ITEM_FORMAT_CONFIG, QTIExportFormatConfig.class); + configXstream.alias(QTI_EXPORT_ITEM_FORMAT_CONFIG, ExportFormat.class); } - - public QTIExportItemFormatConfig doLoadQTIExportFormatConfig(UserRequest ureq) { - QTIExportItemFormatConfig formatConfig = null; + public static ExportFormat loadExportFormat(UserRequest ureq) { + ExportFormat formatConfig = null; if (ureq != null) { try { Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); String formatConfigString = (String) guiPrefs.get(ExportOptionsController.class, QTI_EXPORT_ITEM_FORMAT_CONFIG); Object formatObject = configXstream.fromXML(formatConfigString); - formatConfig = (QTIExportFormatConfig) formatObject; + formatConfig = (ExportFormat) formatObject; } catch (Exception e) { log.error("could not establish object from xml", e); - formatConfig = new QTIExportFormatConfig(true, true, true, true); + formatConfig = new ExportFormat(true, true, true, true, true); } } return formatConfig; } - public void updateQTIExportFormatConfig(UserRequest ureq, boolean itemcols, boolean poscol, boolean pointcol, boolean timecols) { + public static void updateExportFormat(UserRequest ureq, boolean responsecols, boolean poscol, boolean pointcol, boolean timecols, boolean commentcol) { // save new config in GUI prefs Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); if (guiPrefs != null) { - QTIExportItemFormatConfig formatConfig = new QTIExportFormatConfig(itemcols, poscol, pointcol, timecols); + ExportFormat formatConfig = new ExportFormat(responsecols, poscol, pointcol, timecols, commentcol); try { String formatConfigString = configXstream.toXML(formatConfig); guiPrefs.putAndSave(ExportOptionsController.class, QTI_EXPORT_ITEM_FORMAT_CONFIG, formatConfigString); @@ -78,22 +74,10 @@ public class FormatConfigHelper { } } - public ArchiveOptions getArchiveOptions(UserRequest ureq) { + public static ArchiveOptions getArchiveOptions(UserRequest ureq) { ArchiveOptions options = new ArchiveOptions(); - QTIExportItemFormatConfig formatConfig = null; - if (ureq != null) { - try { - Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); - String formatConfigString = (String) guiPrefs.get(ExportOptionsController.class, QTI_EXPORT_ITEM_FORMAT_CONFIG); - Object formatObject = configXstream.fromXML(formatConfigString); - formatConfig = (QTIExportFormatConfig) formatObject; - } catch (Exception e) { - log.error("could not establish object from xml", e); - formatConfig = new QTIExportFormatConfig(true, true, true, true); - } - } - options.setQtiExportItemFormatConfig(formatConfig); + ExportFormat formatConfig = loadExportFormat(ureq); + options.setExportFormat(formatConfig); return options; } - } diff --git a/src/main/java/org/olat/course/archiver/TestArchiveController.java b/src/main/java/org/olat/course/archiver/TestArchiveController.java index ae771ffb0128a087ea5607dab4e072d4124f2c7c..e79ba5be73e11ad9d3971c8793cc7bdc1b63915f 100644 --- a/src/main/java/org/olat/course/archiver/TestArchiveController.java +++ b/src/main/java/org/olat/course/archiver/TestArchiveController.java @@ -31,7 +31,6 @@ import org.olat.core.gui.control.controller.BasicController; import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; import org.olat.core.id.OLATResourceable; import org.olat.course.nodes.CourseNode; -import org.springframework.beans.factory.annotation.Autowired; /** * wrapper for GenericArchiveController to handle individual export configuration @@ -46,19 +45,11 @@ public class TestArchiveController extends BasicController { private GenericArchiveController genericArchiveController; private CloseableModalController cmc; private ExportOptionsController exportOptionsCtrl; - - private final CourseNode[] nodeTypes; - - @Autowired - private FormatConfigHelper configHelper; protected TestArchiveController(UserRequest ureq, WindowControl wControl, OLATResourceable ores, CourseNode... nodeTypes) { super(ureq, wControl); - - this.nodeTypes = nodeTypes; VelocityContainer nodeChoose = createVelocityContainer("testarchive"); - nodeChoose.contextPut("nodeType", nodeTypes[0].getType()); downloadOptionsEl = LinkFactory.createButton("download.options", nodeChoose, this); @@ -66,13 +57,12 @@ public class TestArchiveController extends BasicController { genericArchiveController = new GenericArchiveController(ureq, wControl, ores, nodeTypes); genericArchiveController.setHideTitle(true); - genericArchiveController.setOptions(configHelper.getArchiveOptions(ureq)); + genericArchiveController.setOptions(FormatConfigHelper.getArchiveOptions(ureq)); listenTo(genericArchiveController); nodeChoose.put("genericArchiveController", genericArchiveController.getInitialComponent()); putInitialPanel(nodeChoose); - } @Override @@ -86,7 +76,7 @@ public class TestArchiveController extends BasicController { protected void event(UserRequest ureq, Controller source, Event event) { if (source == exportOptionsCtrl) { if (event == Event.DONE_EVENT) { - genericArchiveController.setOptions(configHelper.getArchiveOptions(ureq)); + genericArchiveController.setOptions(FormatConfigHelper.getArchiveOptions(ureq)); } cmc.deactivate(); cleanUpPopups(); @@ -109,12 +99,11 @@ public class TestArchiveController extends BasicController { } private void doOpenExportOptios(UserRequest ureq) { - exportOptionsCtrl = new ExportOptionsController(ureq, getWindowControl(), nodeTypes[0]); + exportOptionsCtrl = new ExportOptionsController(ureq, getWindowControl()); listenTo(exportOptionsCtrl); cmc = new CloseableModalController(getWindowControl(), translate("close"), exportOptionsCtrl.getInitialComponent(), true, translate("download.options")); cmc.activate(); listenTo(cmc); } - } diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_de.properties index 8aa83f1ae92bd60a2c289a455b9b065198462c3f..ca82bf41db306fef556df86f192f630f7c893ee7 100644 --- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_de.properties @@ -38,6 +38,7 @@ iqtest=Testergebnisse iqsurv=Ergebnisse des Fragebogens pf=Teilnehmer Ordner fo=Forums +form.commentcol=Antwort Kommentar anzeigen (nur QTI 2.1) gta=Aufgaben und Gruppenaufgaben index.intro=Mit diesem Werkzeug k\u00F6nnen verschiedene Daten dieses OLAT-Kurses archiviert werden.<p> W\u00E4hlen Sie links im Menu einen Eintrag aus um zu beginnen. index.title=Datenarchivierungswerkzeug diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_en.properties index bb0583a443e485b1cd1180eb7016fcfc98282d0b..4f2f1db14f1a15e602feb5e1658aa64bea439895 100644 --- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_en.properties @@ -38,6 +38,7 @@ download.options=Configure download options iqtest=Test and self-test results iqsurv=Questionnaire results fo=Forums +form.commentcol=Display answer comment (QTI 2.1 only) gta=Tasks and group tasks index.intro=By means of this tool you can archive various data from your OLAT course.<p> Choose a topic from the menu on the left to start. index.title=Data archiving tool diff --git a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fr.properties index 72446f3dc5299efe43265cf1ea5ba68ea1ed93b7..ba0d9054ac59ac49b44eb2616d11c4be9f74778e 100644 --- a/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/archiver/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Fri Apr 28 11:35:35 CEST 2017 +#Thu Jun 08 21:24:36 CEST 2017 checklist=Listes de contr\u00F4le cl=Listes de contr\u00F4le cmd.download=T\u00E9l\u00E9charger @@ -35,6 +35,7 @@ course.res.title=R\u00E9sultats du cours dialog=Fichiers discut\u00E9s download.options=Configurer les options de t\u00E9l\u00E9chargement fo=Forums +form.commentcol=Montrer les commentaires des r\u00E9ponses (QTI 2.1 seulement) form.poscol.extra=Montrer les questions s\u00E9lectionn\u00E9es (seulement QTI 1.2) form.title=Configurer les options gta=Devoirs de groupe diff --git a/src/main/java/org/olat/course/assessment/AssessmentHelper.java b/src/main/java/org/olat/course/assessment/AssessmentHelper.java index 4852ae7eb5821a636eb89e0bc47bb1204c927d7b..6ec0b0f8d96cfc9b1600eb2b8c95c99a614fa8ed 100644 --- a/src/main/java/org/olat/course/assessment/AssessmentHelper.java +++ b/src/main/java/org/olat/course/assessment/AssessmentHelper.java @@ -487,6 +487,7 @@ public class AssessmentHelper { AssessmentEvaluation scoreEvaluation = scoreAccounting.evalCourseNode(assessableCourseNode); if(scoreEvaluation != null) { assessmentNodeData.setAssessmentStatus(scoreEvaluation.getAssessmentStatus()); + assessmentNodeData.setNumOfAssessmentDocs(scoreEvaluation.getNumOfAssessmentDocs()); } assessmentNodeData.setUserVisibility(scoreEvaluation.getUserVisible()); diff --git a/src/main/java/org/olat/course/assessment/AssessmentManager.java b/src/main/java/org/olat/course/assessment/AssessmentManager.java index 37be8fc98a2c5abe51606fd418b3e87ac586686e..629abda4af4590d1415e93bec7ffd271760b17fc 100644 --- a/src/main/java/org/olat/course/assessment/AssessmentManager.java +++ b/src/main/java/org/olat/course/assessment/AssessmentManager.java @@ -25,6 +25,7 @@ package org.olat.course.assessment; +import java.io.File; import java.util.Date; import java.util.List; @@ -74,6 +75,26 @@ public interface AssessmentManager { * @param comment */ public void saveNodeComment(CourseNode courseNode, Identity identity, Identity assessedIdentity, String comment); + + /** + * Add an individual document for assessment purpose + * + * @param courseNode The course element + * @param identity The user who add the document + * @param assessedIdentity The assessed user + * @param document The document + */ + public void addIndividualAssessmentDocument(CourseNode courseNode, Identity identity, Identity assessedIdentity, File document, String filename); + + /** + * Remove a document + * + * @param courseNode The course element + * @param identity The user who delete the document + * @param assessedIdentity The assessed user + * @param document The document to delete + */ + public void removeIndividualAssessmentDocument(CourseNode courseNode, Identity identity, Identity assessedIdentity, File document); /** * Save an coach comment for this node for a user. If there is already a coach comment property available, @@ -113,6 +134,19 @@ public interface AssessmentManager { * @return The achieved passed or null if no passed available */ public String getNodeComment(CourseNode courseNode, Identity identity); + + /** + * @param courseNode The course node + * @param identity The assessed identity. + * @return A list of documents + */ + public List<File> getIndividualAssessmentDocuments(CourseNode courseNode, Identity identity); + + /** + * + * @param courseNode + */ + public void deleteIndividualAssessmentDocuments(CourseNode courseNode); /** * @param courseNode The course node diff --git a/src/main/java/org/olat/course/assessment/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/assessment/_i18n/LocalStrings_de.properties index 19fd9bda09a78b7df0f6fe5d1b2f356e9813d78e..5cfa4d1ff16db33a157a807487939812702ed393 100644 --- a/src/main/java/org/olat/course/assessment/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/assessment/_i18n/LocalStrings_de.properties @@ -57,6 +57,7 @@ form.error.nointeger=Ung\u00FCltige Zahl. Es muss eine Zahl eingegeben werden. form.error.passedUndefined=Bestanden muss auf Ja oder Nein gestellt werden form.error.scoreOutOfRange=Punkte nicht zwischen Punkteminimum/-maximum oder nicht zwischen 10000/-10000 form.error.wrongFloat=Falsches Zahlenformat. Beispiele\: 15.0, 5.5, 10, 15,0 +form.individual.assessment.docs=Bewertungsdokumente form.max=Punktemaximum form.min=Punkteminimum form.passed=Bestanden diff --git a/src/main/java/org/olat/course/assessment/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/assessment/_i18n/LocalStrings_en.properties index cdec2f23312385d7e828289952d9cb3a1f47092f..27430751128e346fecb73b8990adba7ca1c7b16e 100644 --- a/src/main/java/org/olat/course/assessment/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/assessment/_i18n/LocalStrings_en.properties @@ -58,6 +58,7 @@ form.error.nointeger=Illegal number. Please enter an integer. form.error.passedUndefined="Passed" must be set to Yes or No form.error.scoreOutOfRange=Score not between minimum and maximum score or not between 10000/-10000 form.error.wrongFloat=Wrong numeral format. Examples\: 15.0, 5.5, 10 +form.individual.assessment.docs=Assessment documents form.max=Maximum score form.min=Minimum score form.passed=Passed diff --git a/src/main/java/org/olat/course/assessment/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/assessment/_i18n/LocalStrings_fr.properties index f6b03f511f34588909963eb6829a77f89f770146..9846c994bdaa6b8030922f7304e833c57c0c355a 100644 --- a/src/main/java/org/olat/course/assessment/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/assessment/_i18n/LocalStrings_fr.properties @@ -1,5 +1,10 @@ -#Wed Jan 11 13:41:14 CET 2017 +#Thu Jun 08 21:27:39 CEST 2017 action.choose=S\u00E9lectionner +admin.assessable.coursenode=Param\u00E8tres pour les \u00E9l\u00E9ments de cours destin\u00E9s \u00E0 l'\u00E9valuation +admin.info.box=Montrer les informations au d\u00E9part +admin.menu.title=Cours +admin.menu.title.alt=$\:admin.menu.title Einstellungen +admin.user.changelog=L'utilisateur peut voir le journal des changements artefact.title=Attestation de performance pour le cours {0} assessment.testresults.finished=<font color\="green">\u00E9valuation achev\\u00E9e</font> assessment.testresults.open=<font color\="orange">\u00E9valuation en suspens</font> @@ -53,6 +58,7 @@ form.error.nointeger=Nombre invalide. Il faut indiquer un nombre. form.error.passedUndefined=Indiquez Oui ou Non pour 'R\u00E9ussi'. form.error.scoreOutOfRange=Le nombre de points n'est pas compris entre le minimum/maximum ou entre 10000/-10000. form.error.wrongFloat=Format erron\u00E9. Exemples\: 15.0, 5.5, 10 +form.individual.assessment.docs=Documents d'\u00E9valuation form.max=Nombre de points maximum form.min=Nombre de points minimum form.passed=R\u00E9ussi diff --git a/src/main/java/org/olat/course/assessment/bulk/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/assessment/bulk/_i18n/LocalStrings_de.properties index 4c1ca7c661de012cc58a40d9ea7e1a8d7c6e3711..f0daed153c60b069c133308eceb191fd7c6f0e28 100644 --- a/src/main/java/org/olat/course/assessment/bulk/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/assessment/bulk/_i18n/LocalStrings_de.properties @@ -78,7 +78,7 @@ data=Daten data.description=Bitte geben Sie mindestens eine Zeile mit durch Tabulator oder Komma getrennten Werten ein. Sie k\u00F6nnen die Daten \u00FCber kopieren/einsetzen aus Excel direkt \u00FCbernehmen. Bitte konsultieren Sie die Kontexthilfe f\u00FCr ein Beispiel. data.title=Bewertungsdaten delete.task=Task l\u00F6schen -delete.task.confirm=Wollen Sie wirklich diesem Task l\u00F6schen? +delete.task.confirm=Wollen Sie diesem Task wirklich l\u00F6schen? form.step2.error=Es wurden keine Bewertungsdaten eingegeben. form.step3.delimiter=$org.olat.course.assessment\:form.step3.delimiter form.step3.delimiter.comma=$org.olat.course.assessment\:form.step3.delimiter.comma diff --git a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java index aa1e1d9445a9e80f3265066c51c4ec04cc22a83c..5f6b5f31b626e45ae650ca0baa064b32b0091d49 100644 --- a/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/CourseAssessmentManagerImpl.java @@ -19,20 +19,31 @@ */ package org.olat.course.assessment.manager; +import java.io.File; +import java.io.IOException; import java.math.BigDecimal; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.olat.core.CoreSpringFactory; +import org.olat.core.commons.modules.bc.FolderConfig; import org.olat.core.commons.persistence.DBFactory; import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; +import org.olat.core.logging.OLog; +import org.olat.core.logging.Tracing; import org.olat.core.logging.activity.StringResourceableType; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; +import org.olat.core.util.FileUtils; import org.olat.core.util.StringHelper; import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.event.GenericEventListener; +import org.olat.core.util.io.SystemFileFilter; import org.olat.core.util.resource.OresHelper; import org.olat.course.CourseFactory; import org.olat.course.ICourse; @@ -67,6 +78,10 @@ import org.olat.util.logging.activity.LoggingResourceable; */ public class CourseAssessmentManagerImpl implements AssessmentManager { + private static final OLog log = Tracing.createLoggerFor(CourseAssessmentManagerImpl.class); + + public static final String ASSESSMENT_DOCS_DIR = "assessmentdocs"; + private static final Float FLOAT_ZERO = new Float(0); private static final Integer INTEGER_ZERO = new Integer(0); @@ -182,6 +197,70 @@ public class CourseAssessmentManagerImpl implements AssessmentManager { LoggingResourceable.wrapNonOlatResource(StringResourceableType.qtiUserComment, "", StringHelper.stripLineBreaks(comment))); } + @Override + public void addIndividualAssessmentDocument(CourseNode courseNode, Identity identity, Identity assessedIdentity, File document, String filename) { + if(document == null) return; + if(!StringHelper.containsNonWhitespace(filename)) { + filename = document.getName(); + } + + try { + File directory = getAssessmentDocumentsDirectory(courseNode, assessedIdentity); + File targetFile = new File(directory, filename); + if(targetFile.exists()) { + String newName = FileUtils.rename(targetFile); + targetFile = new File(directory, newName); + } + Files.copy(document.toPath(), targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING); + + //update counter + AssessmentEntry nodeAssessment = getOrCreate(assessedIdentity, courseNode); + File[] docs = directory.listFiles(new SystemFileFilter(true, false)); + int numOfDocs = docs == null ? 0 : docs.length; + nodeAssessment.setNumberOfAssessmentDocuments(numOfDocs); + assessmentService.updateAssessmentEntry(nodeAssessment); + } catch (IOException e) { + log.error("", e); + } + } + + @Override + public void removeIndividualAssessmentDocument(CourseNode courseNode, Identity identity, Identity assessedIdentity, File document) { + if(document != null && document.exists()) { + document.delete(); + + //update counter + File directory = getAssessmentDocumentsDirectory(courseNode, assessedIdentity); + AssessmentEntry nodeAssessment = getOrCreate(assessedIdentity, courseNode); + File[] docs = directory.listFiles(new SystemFileFilter(true, false)); + int numOfDocs = docs == null ? 0 : docs.length; + nodeAssessment.setNumberOfAssessmentDocuments(numOfDocs); + assessmentService.updateAssessmentEntry(nodeAssessment); + } + } + + @Override + public void deleteIndividualAssessmentDocuments(CourseNode courseNode) { + ICourse course = CourseFactory.loadCourse(cgm.getCourseEntry()); + String courseRelPath = course.getCourseEnvironment().getCourseBaseContainer().getRelPath(); + Path path = Paths.get(FolderConfig.getCanonicalRoot(), courseRelPath, ASSESSMENT_DOCS_DIR, courseNode.getIdent()); + File file = path.toFile(); + if(file.exists()) { + FileUtils.deleteDirsAndFiles(file, true, true); + } + } + + private File getAssessmentDocumentsDirectory(CourseNode cNode, Identity assessedIdentity) { + ICourse course = CourseFactory.loadCourse(cgm.getCourseEntry()); + String courseRelPath = course.getCourseEnvironment().getCourseBaseContainer().getRelPath(); + Path path = Paths.get(FolderConfig.getCanonicalRoot(), courseRelPath, ASSESSMENT_DOCS_DIR, cNode.getIdent(), "person_" + assessedIdentity.getKey()); + File file = path.toFile(); + if(!file.exists()) { + file.mkdirs(); + } + return file; + } + @Override public void saveNodeCoachComment(CourseNode courseNode, Identity assessedIdentity, String comment) { ICourse course = CourseFactory.loadCourse(cgm.getCourseEntry()); @@ -375,6 +454,19 @@ public class CourseAssessmentManagerImpl implements AssessmentManager { return entry == null ? null : entry.getComment(); } + @Override + public List<File> getIndividualAssessmentDocuments(CourseNode courseNode, Identity identity) { + File directory = getAssessmentDocumentsDirectory(courseNode, identity); + File[] documents = directory.listFiles(new SystemFileFilter(true, false)); + List<File> documentList = new ArrayList<>(); + if(documents != null && documents.length > 0) { + for(File document:documents) { + documentList.add(document); + } + } + return documentList; + } + @Override public String getNodeCoachComment(CourseNode courseNode, Identity identity) { AssessmentEntry entry = assessmentService diff --git a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManager.java b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManager.java index 315a00a152cc4307b01dadc5ba7ea3d2cbdf34c1..6a354efee745e21d5272e2aef942c28c847d9bf7 100644 --- a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManager.java +++ b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManager.java @@ -70,6 +70,8 @@ public interface UserCourseInformationsManager { */ public Map<Long,Date> getInitialLaunchDates(Long courseResourceId); + public Map<Long,Date> getInitialLaunchDates(OLATResource resource); + public int deleteUserCourseInformations(RepositoryEntry entry); } diff --git a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java index 63eddbf537da349eb8ddd007f6abfe3761966b2e..f97267f00d34ffb292cf9c453b4ccc37c47dec80 100644 --- a/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java +++ b/src/main/java/org/olat/course/assessment/manager/UserCourseInformationsManagerImpl.java @@ -266,7 +266,6 @@ public class UserCourseInformationsManagerImpl implements UserCourseInformations @Override public Map<Long,Date> getInitialLaunchDates(Long courseResourceId) { try { - StringBuilder sb = new StringBuilder(); sb.append("select infos.identity.key, infos.initialLaunch from ").append(UserCourseInfosImpl.class.getName()).append(" as infos ") .append(" inner join infos.resource as resource") @@ -290,6 +289,33 @@ public class UserCourseInformationsManagerImpl implements UserCourseInformations return Collections.emptyMap(); } } + + @Override + public Map<Long,Date> getInitialLaunchDates(OLATResource resource) { + try { + StringBuilder sb = new StringBuilder(); + sb.append("select infos.identity.key, infos.initialLaunch from usercourseinfos as infos ") + .append(" inner join infos.resource as resource") + .append(" where resource.key=:resourceKey"); + + TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager().createQuery(sb.toString(), Object[].class) + .setParameter("resourceKey", resource.getKey()); + + List<Object[]> infoList = query.getResultList(); + Map<Long,Date> dateMap = new HashMap<Long,Date>(); + for(Object[] infos:infoList) { + Long identityKey = (Long)infos[0]; + Date initialLaunch = (Date)infos[1]; + if(identityKey != null && initialLaunch != null) { + dateMap.put(identityKey, initialLaunch); + } + } + return dateMap; + } catch (Exception e) { + log.error("Cannot retrieve course informations for: " + resource, e); + return Collections.emptyMap(); + } + } @Override public Map<Long, Date> getRecentLaunchDates(OLATResource resource) { diff --git a/src/main/java/org/olat/course/assessment/model/AssessmentNodeData.java b/src/main/java/org/olat/course/assessment/model/AssessmentNodeData.java index 7178de6bc38bfeba29b5960354b786e42e7be704..ef84de8e3dbe23b01f7d283d615e79b385c1d980 100644 --- a/src/main/java/org/olat/course/assessment/model/AssessmentNodeData.java +++ b/src/main/java/org/olat/course/assessment/model/AssessmentNodeData.java @@ -70,6 +70,8 @@ public class AssessmentNodeData { private Boolean userVisibility; private AssessmentEntryStatus assessmentStatus; + private int numOfAssessmentDocs; + private boolean selectable; private boolean onyx = false; @@ -205,6 +207,14 @@ public class AssessmentNodeData { this.assessmentStatus = assessmentStatus; } + public int getNumOfAssessmentDocs() { + return numOfAssessmentDocs; + } + + public void setNumOfAssessmentDocs(int numOfAssessmentDocs) { + this.numOfAssessmentDocs = numOfAssessmentDocs; + } + public boolean isOnyx() { return onyx; } diff --git a/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_de.properties index 1a7f13ac2e4e4b2215ebdeae3ca8798525044cab..ad45a11f00948d0d1b7ead89234880f9905db562 100644 --- a/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/assessment/ui/mode/_i18n/LocalStrings_de.properties @@ -17,7 +17,7 @@ choose.groups=Gruppen ausw\u00E4hlen choose.start.element=Kursbaustein ausw\u00E4hlen cif.error.corrupted=$org.olat.repository\:cif.error.corrupted confirm.delete.title=Pr\u00FCfungsettings l\u00F6schen -confirm.delete.text=Wollen Sie wirklich diese Pr\u00FCfungsettings "{0}" l\u00F6schen? +confirm.delete.text=Wollen Sie diese Pr\u00FCfungsettings "{0}" wirklich l\u00F6schen? confirm.start.title=Pr\u00FCfung starten confirm.start.text=Wollen Sie die Pr\u00FCfung jetzt starten? confirm.status.change.title=Status von Pr\u00FCfung wird ge\u00E4ndert diff --git a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentForm.java b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentForm.java index 87c5db72387f068e6c3c9ecfde86f2312f113fa0..d626b3fbf31eec0ab5f23521791cfb5fd6999427 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/AssessmentForm.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/AssessmentForm.java @@ -25,9 +25,17 @@ package org.olat.course.assessment.ui.tool; +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import org.olat.core.dispatcher.mapper.Mapper; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.FileElement; import org.olat.core.gui.components.form.flexible.elements.FormLink; import org.olat.core.gui.components.form.flexible.elements.IntegerElement; import org.olat.core.gui.components.form.flexible.elements.SingleSelection; @@ -41,6 +49,12 @@ import org.olat.core.gui.components.link.Link; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.modal.DialogBoxController; +import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; +import org.olat.core.gui.media.FileMediaResource; +import org.olat.core.gui.media.MediaResource; +import org.olat.core.gui.media.NotFoundMediaResource; +import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.course.assessment.AssessmentHelper; @@ -71,16 +85,22 @@ public class AssessmentForm extends FormBasicController { private StaticTextElement cutVal; private SingleSelection passed, userVisibility; private TextElement userComment, coachComment; + private FormLayoutContainer docsLayoutCont; + private FileElement uploadDocsEl; private FormSubmit submitButton; private FormLink saveAndDoneLink, reopenLink; - private final boolean hasScore, hasPassed, hasComment, hasAttempts; + private DialogBoxController confirmDeleteDocCtrl; + + private final boolean hasScore, hasPassed, hasComment, hasIndividualAssessmentDocs, hasAttempts; private Float min, max, cut; private final UserCourseEnvironment coachCourseEnv; private final UserCourseEnvironment assessedUserCourseEnv; private final AssessableCourseNode assessableCourseNode; + private int counter = 0; + private Integer attemptsValue; private Float scoreValue; private String userCommentValue, coachCommentValue; @@ -102,6 +122,7 @@ public class AssessmentForm extends FormBasicController { hasScore = assessableCourseNode.hasScoreConfigured(); hasPassed = assessableCourseNode.hasPassedConfigured(); hasComment = assessableCourseNode.hasCommentConfigured(); + hasIndividualAssessmentDocs = assessableCourseNode.hasIndividualAsssessmentDocuments(); this.coachCourseEnv = coachCourseEnv; this.assessedUserCourseEnv = assessedUserCourseEnv; @@ -179,6 +200,18 @@ public class AssessmentForm extends FormBasicController { public TextElement getCoachComment() { return coachComment; } + + @Override + protected void event(UserRequest ureq, Controller source, Event event) { + if(source == confirmDeleteDocCtrl) { + if(DialogBoxUIFactory.isOkEvent(event) || DialogBoxUIFactory.isYesEvent(event)) { + File documentToDelete = (File)confirmDeleteDocCtrl.getUserObject(); + doDeleteAssessmentDocument(documentToDelete); + updateAssessmentDocs(); + } + } + super.event(ureq, source, event); + } @Override protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { @@ -190,6 +223,20 @@ public class AssessmentForm extends FormBasicController { } else if(reopenLink == source) { doReopen(); fireEvent(ureq, new AssessmentFormEvent(AssessmentFormEvent.ASSESSMENT_REOPEN, false)); + } else if(uploadDocsEl == source) { + if(uploadDocsEl.getUploadFile() != null && StringHelper.containsNonWhitespace(uploadDocsEl.getUploadFileName())) { + assessableCourseNode.addIndividualAssessmentDocument(uploadDocsEl.getUploadFile(), uploadDocsEl.getUploadFileName(), + assessedUserCourseEnv, getIdentity()); + updateAssessmentDocs(); + uploadDocsEl.reset(); + } + } else if(source instanceof FormLink) { + FormLink link = (FormLink)source; + Object uobject = link.getUserObject(); + if(link.getCmd() != null && link.getCmd().startsWith("delete_doc_") && uobject instanceof DocumentWrapper) { + DocumentWrapper wrapper = (DocumentWrapper)uobject; + doConfirmDeleteAssessmentDocument(ureq, wrapper.getDocument()); + } } super.formInnerEvent(ureq, source, event); } @@ -273,6 +320,18 @@ public class AssessmentForm extends FormBasicController { } } + private void doConfirmDeleteAssessmentDocument(UserRequest ureq, File document) { + String title = translate("warning.assessment.docs.delete.title"); + String text = translate("warning.assessment.docs.delete.text", + new String[] { StringHelper.escapeHtml(document.getName()) }); + confirmDeleteDocCtrl = activateOkCancelDialog(ureq, title, text, confirmDeleteDocCtrl); + confirmDeleteDocCtrl.setUserObject(document); + } + + private void doDeleteAssessmentDocument(File document) { + assessableCourseNode.removeIndividualAssessmentDocument(document, assessedUserCourseEnv, getIdentity()); + } + protected void doUpdateAssessmentData(boolean setAsDone) { Float updatedScore = null; Boolean updatedPassed = null; @@ -359,6 +418,24 @@ public class AssessmentForm extends FormBasicController { } updateStatus(scoreEval); + updateAssessmentDocs(); + } + + private void updateAssessmentDocs() { + if(docsLayoutCont == null) return; + + List<File> documents = assessableCourseNode.getIndividualAssessmentDocuments(assessedUserCourseEnv); + List<DocumentWrapper> wrappers = new ArrayList<>(documents.size()); + for (File document : documents) { + DocumentWrapper wrapper = new DocumentWrapper(document); + wrappers.add(wrapper); + + FormLink deleteButton = uifactory.addFormLink("delete_doc_" + (++counter), "delete", null, docsLayoutCont, Link.BUTTON_XSMALL); + deleteButton.setEnabled(true); + deleteButton.setVisible(true); + wrapper.setDeleteButton(deleteButton); + } + docsLayoutCont.contextPut("documents", wrappers); } private void updateStatus(ScoreEvaluation scoreEval) { @@ -375,6 +452,10 @@ public class AssessmentForm extends FormBasicController { if(hasComment) { userComment.setEnabled(!closed && !coachCourseEnv.isCourseReadOnly()); } + if(hasIndividualAssessmentDocs) { + uploadDocsEl.setVisible(!closed && !coachCourseEnv.isCourseReadOnly()); + } + coachComment.setEnabled(!closed && !coachCourseEnv.isCourseReadOnly()); if (hasAttempts) { @@ -465,7 +546,19 @@ public class AssessmentForm extends FormBasicController { userComment = uifactory.addTextAreaElement("usercomment", "form.usercomment", 2500, 5, 40, true, userCommentValue, formLayout); userComment.setNotLongerThanCheck(2500, "input.toolong"); } - + + if(hasIndividualAssessmentDocs) { + String mapperUri = registerCacheableMapper(ureq, null, new DocumentMapper()); + String page = velocity_root + "/individual_assessment_docs.html"; + docsLayoutCont = FormLayoutContainer.createCustomFormLayout("form.individual.assessment.docs", getTranslator(), page); + docsLayoutCont.setLabel("form.individual.assessment.docs", null); + docsLayoutCont.contextPut("mapperUri", mapperUri); + formLayout.add(docsLayoutCont); + + uploadDocsEl = uifactory.addFileElement(getWindowControl(), "form.upload", null, formLayout); + uploadDocsEl.addActionListener(FormEvent.ONCHANGE); + } + coachCommentValue = assessableCourseNode.getUserCoachComment(assessedUserCourseEnv); coachComment = uifactory.addTextAreaElement("coachcomment", "form.coachcomment", 2500, 5, 40, true, coachCommentValue, formLayout); coachComment.setNotLongerThanCheck(2500, "input.toolong"); @@ -495,10 +588,66 @@ public class AssessmentForm extends FormBasicController { uifactory.addFormCancelButton("cancel", buttonGroupLayout, ureq, getWindowControl()); updateStatus(scoreEval); + updateAssessmentDocs(); } @Override protected void doDispose() { // } + + public static class DocumentWrapper { + + private final File document; + private FormLink deleteButton; + + public DocumentWrapper(File document) { + this.document = document; + } + + public String getFilename() { + return document.getName(); + } + + public String getLabel() { + return document.getName() + " (" + Formatter.formatBytes(document.length()) + ")"; + } + + public File getDocument() { + return document; + } + + public FormLink getDeleteButton() { + return deleteButton; + } + + public void setDeleteButton(FormLink deleteButton) { + this.deleteButton = deleteButton; + deleteButton.setUserObject(this); + } + } + + public class DocumentMapper implements Mapper { + + @Override + public MediaResource handle(String relPath, HttpServletRequest request) { + if(StringHelper.containsNonWhitespace(relPath)) { + if(relPath.startsWith("/")) { + relPath = relPath.substring(1, relPath.length()); + } + + @SuppressWarnings("unchecked") + List<DocumentWrapper> wrappers = (List<DocumentWrapper>)docsLayoutCont.contextGet("documents"); + if(wrappers != null) { + for(DocumentWrapper wrapper:wrappers) { + if(relPath.equals(wrapper.getFilename())) { + return new FileMediaResource(wrapper.getDocument(), true); + } + } + } + } + return new NotFoundMediaResource(relPath); + } + + } } diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityAssessmentOverviewController.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityAssessmentOverviewController.java index c98b1ef8f563848292d21940bdb6bbda4dced9d1..aa51bff7267effcc204fe81297a317dc48a7c6e1 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityAssessmentOverviewController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityAssessmentOverviewController.java @@ -240,6 +240,7 @@ public class IdentityAssessmentOverviewController extends FormBasicController im columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(NodeCols.min, new ScoreCellRenderer())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(NodeCols.max, new ScoreCellRenderer())); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(NodeCols.passed, new PassedCellRenderer())); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(NodeCols.numOfAssessmentDocs)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(NodeCols.status, new AssessmentStatusCellRenderer(getLocale()))); if(nodesSelectable) { DefaultFlexiColumnModel selectCol = new DefaultFlexiColumnModel("select", NodeCols.select.ordinal(), CMD_SELECT_NODE, diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityAssessmentOverviewTableModel.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityAssessmentOverviewTableModel.java index f439992f8e641b35c96e330350a9c1109cb6707a..64aa05045ed9a3425b61af9f5ba699c35036e366 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityAssessmentOverviewTableModel.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityAssessmentOverviewTableModel.java @@ -102,6 +102,12 @@ public class IdentityAssessmentOverviewTableModel extends DefaultFlexiTableDataM case min: return nodeData.getMinScore(); case max: return nodeData.getMaxScore(); case status: return nodeData.getAssessmentStatus(); + case numOfAssessmentDocs: { + if(nodeData.getNumOfAssessmentDocs() <= 0) { + return null; + } + return nodeData.getNumOfAssessmentDocs(); + } case select: return nodeData.isSelectable(); default: return "ERROR"; } @@ -129,7 +135,8 @@ public class IdentityAssessmentOverviewTableModel extends DefaultFlexiTableDataM max("table.header.max", true), status("table.header.status", true), passed("table.header.passed", true), - select("table.action.select", false); + select("table.action.select", false), + numOfAssessmentDocs("table.header.num.assessmentDocs", true); private final String i18nKey; private final boolean sortable; diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java index cfde8b7356e085f7484a759d3a3e905c65f26dd8..2168f49f35903f184bbed68bba698321a5436690 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeController.java @@ -21,6 +21,7 @@ package org.olat.course.assessment.ui.tool; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -73,6 +74,7 @@ import org.olat.course.ICourse; import org.olat.course.assessment.AssessmentModule; import org.olat.course.assessment.AssessmentToolManager; import org.olat.course.assessment.bulk.PassedCellRenderer; +import org.olat.course.assessment.manager.UserCourseInformationsManager; import org.olat.course.assessment.model.SearchAssessedIdentityParams; import org.olat.course.assessment.ui.tool.IdentityListCourseNodeTableModel.IdentityCourseElementCols; import org.olat.course.certificate.CertificateLight; @@ -143,6 +145,8 @@ public class IdentityListCourseNodeController extends FormBasicController implem @Autowired private CertificatesManager certificatesManager; @Autowired + private UserCourseInformationsManager userInfosMgr; + @Autowired private AssessmentToolManager assessmentToolManager; public IdentityListCourseNodeController(UserRequest ureq, WindowControl wControl, TooledStackedPanel stackPanel, @@ -241,6 +245,9 @@ public class IdentityListCourseNodeController extends FormBasicController implem if(assessableNode.hasPassedConfigured()) { columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(IdentityCourseElementCols.passed, new PassedCellRenderer())); } + if(assessableNode.hasIndividualAsssessmentDocuments()) { + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(IdentityCourseElementCols.numOfAssessmentDocs)); + } } columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(IdentityCourseElementCols.assessmentStatus, new AssessmentStatusCellRenderer(getLocale()))); @@ -340,11 +347,13 @@ public class IdentityListCourseNodeController extends FormBasicController implem assessmentEntries.stream() .filter(entry -> entry.getIdentity() != null) .forEach((entry) -> entryMap.put(entry.getIdentity().getKey(), entry)); + Map<Long,Date> initialLaunchDates = userInfosMgr.getInitialLaunchDates(courseEntry.getOlatResource()); List<AssessedIdentityElementRow> rows = new ArrayList<>(assessedIdentities.size()); for(Identity assessedIdentity:assessedIdentities) { AssessmentEntry entry = entryMap.get(assessedIdentity.getKey()); - rows.add(new AssessedIdentityElementRow(assessedIdentity, entry, userPropertyHandlers, getLocale())); + Date initialLaunchDate = initialLaunchDates.get(assessedIdentity.getKey()); + rows.add(new AssessedIdentityElementRow(assessedIdentity, entry, initialLaunchDate, userPropertyHandlers, getLocale())); } if(toolContainer.getCertificateMap() == null) { diff --git a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeTableModel.java b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeTableModel.java index 730bcf5e4dfe9fd68a2967c9615649819c76d460..bc25f7d5ea063c511027c856468e22c807eeeee4 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeTableModel.java +++ b/src/main/java/org/olat/course/assessment/ui/tool/IdentityListCourseNodeTableModel.java @@ -134,13 +134,19 @@ public class IdentityListCourseNodeTableModel extends DefaultFlexiTableDataModel } case status: return ""; case passed: return row.getPassed(); + case numOfAssessmentDocs: { + if(row.getNumOfAssessmentDocs() <= 0) { + return null; + } + return row.getNumOfAssessmentDocs(); + } case assessmentStatus: return row.getAssessmentStatus(); case certificate: return certificateMap.get(row.getIdentityKey()); case recertification: { CertificateLight certificate = certificateMap.get(row.getIdentityKey()); return certificate == null ? null : certificate.getNextRecertificationDate(); } - case initialLaunchDate: return row.getCreationDate(); + case initialLaunchDate: return row.getInitialCourseLaunchDate(); case lastScoreUpdate: return row.getLastModified(); } } @@ -166,7 +172,8 @@ public class IdentityListCourseNodeTableModel extends DefaultFlexiTableDataModel certificate("table.header.certificate"), recertification("table.header.recertification"), initialLaunchDate("table.header.initialLaunchDate"), - lastScoreUpdate("table.header.lastScoreDate"); + lastScoreUpdate("table.header.lastScoreDate"), + numOfAssessmentDocs("table.header.num.assessmentDocs"); private final String i18nKey; diff --git a/src/main/java/org/olat/course/assessment/ui/tool/_content/individual_assessment_docs.html b/src/main/java/org/olat/course/assessment/ui/tool/_content/individual_assessment_docs.html new file mode 100644 index 0000000000000000000000000000000000000000..a4761e5a679439c515a98552e1c0f0665ee091be --- /dev/null +++ b/src/main/java/org/olat/course/assessment/ui/tool/_content/individual_assessment_docs.html @@ -0,0 +1,7 @@ +#if($r.isNotEmpty($documents)) +<ul class="form-static list-unstyled o_assessment_docs""> + #foreach($document in $documents) + <li><a href="$mapperUri/$document.filename" target="_blank"><i class="o_icon o_icon-fw $r.getFiletypeIconCss($document.filename)"> </i> $r.escapeHtml($document.label)</a> #if($r.visible($document.deleteButton))$r.render($document.deleteButton)#end</li> + #end +</ul> +#end \ No newline at end of file diff --git a/src/main/java/org/olat/course/assessment/ui/tool/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/assessment/ui/tool/_i18n/LocalStrings_de.properties index 6b5ff3d27ddf3a7451edb4f2cb98df6b0881ff32..720de3305df7e5bf878c12abfaf7b68bb4c9b30a 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/assessment/ui/tool/_i18n/LocalStrings_de.properties @@ -52,6 +52,7 @@ table.header.group.name=Namen table.header.id=ID table.header.name=Benutzername table.header.numOfAssessedIdentities=$org.olat.modules.assessment.ui\:table.header.numOfAssessedIdentities +table.header.num.assessmentDocs=Dok. table.header.numOfInitialLaunch=$org.olat.modules.assessment.ui\:table.header.numOfInitialLaunch table.header.numOfOtherUsers=$org.olat.modules.assessment.ui\:table.header.numOfOtherUsers table.header.numOfParticipants=$org.olat.modules.assessment.ui\:table.header.numOfParticipants @@ -70,4 +71,6 @@ user.visibility.hidden.select=Nicht sichtbar (Resultate sind nicht sichtbar f\u0 user.visibility.visible.select=Sichtbar (Resultate sind sichtbar f\u00FCr den Benutzer) <ul><li>Resultate werden dem Benutzer gezeigt</li><li>Resultate erscheinen im Leistungnachweis</li><li>andere Kursbausteine, die abh\u00E4ngig von diesem Kursbaustein sind, sind sichtbar/zug\u00E4nglich</li></ul> users=Benutzer waiting.review=$org.olat.modules.assessment.ui\:waiting.review +warning.assessment.docs.delete.title=Dokument l\u00F6schen +warning.assessment.docs.delete.text=Wollen Sie dieses Dokument "{0}" wirklich l\u00F6schen? warning.bulk.done=Sie m\u00FCssen mindestens einen Eintrag w\u00E4hlen, der noch nicht geschlossen ist. diff --git a/src/main/java/org/olat/course/assessment/ui/tool/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/assessment/ui/tool/_i18n/LocalStrings_en.properties index bebf0c8dc06429e61ac529a5aad935a5b35e8ae2..a3410388d23efbd4febee64e85c64759c9cfc39c 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/assessment/ui/tool/_i18n/LocalStrings_en.properties @@ -52,6 +52,7 @@ table.header.group.name=Name table.header.id=ID table.header.name=User name table.header.numOfAssessedIdentities=$org.olat.modules.assessment.ui\:table.header.numOfAssessedIdentities +table.header.num.assessmentDocs=Docs table.header.numOfInitialLaunch=$org.olat.modules.assessment.ui\:table.header.numOfInitialLaunch table.header.numOfParticipants=$org.olat.modules.assessment.ui\:table.header.numOfParticipants table.header.numOfPassed=$org.olat.modules.assessment.ui\:table.header.numOfPassed @@ -70,4 +71,7 @@ user.visibility.hidden.select=Hide (result not yet visible for user) <ul><li>res user.visibility.visible.select=Show (result directly visible for user) <ul><li>result is visible to user</li><li>result is visible in the evidence of achievement</li><li>other course elements, depending on passing this element, are visible/accessible</li></ul> users=Users waiting.review=$org.olat.modules.assessment.ui\:waiting.review +warning.assessment.docs.delete.title=Delete document +warning.assessment.docs.delete.text=Do you really want to delete this document "{0}"? warning.bulk.done=You must choose at least a none done element. + diff --git a/src/main/java/org/olat/course/assessment/ui/tool/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/assessment/ui/tool/_i18n/LocalStrings_fr.properties index 870c323e6aff7b3e092d85f2a875207cf2c850e9..192d9dcb9eeadb0c8dcacef6a928fc5e6770fb9c 100644 --- a/src/main/java/org/olat/course/assessment/ui/tool/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/assessment/ui/tool/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Thu Mar 09 18:10:15 CET 2017 +#Thu Jun 08 21:28:13 CEST 2017 assessment.status.done=$org.olat.modules.assessment.ui\:assessment.status.done assessment.status.inProgress=$org.olat.modules.assessment.ui\:assessment.status.inProgress assessment.status.inReview=$org.olat.modules.assessment.ui\:assessment.status.inReview @@ -51,6 +51,7 @@ table.header.elements.toReview=El\u00E9ment table.header.group.name=Noms table.header.id=ID table.header.name=Nom d'utilisateur +table.header.num.assessmentDocs=Doc. table.header.numOfAssessedIdentities=$org.olat.modules.assessment.ui\:table.header.numOfAssessedIdentities table.header.numOfInitialLaunch=$org.olat.modules.assessment.ui\:table.header.numOfInitialLaunch table.header.numOfOtherUsers=$org.olat.modules.assessment.ui\:table.header.numOfOtherUsers @@ -70,4 +71,6 @@ user.visibility.visible.select=Visible ( les r\u00E9sultats apparaissent aux uti user.visibility.visible.tooltip=Visible pour les utilisateurs users=Utilisateurs waiting.review=$org.olat.modules.assessment.ui\:waiting.review +warning.assessment.docs.delete.text=Voulez-vous r\u00E9ellement effacer ce document "{0}"? +warning.assessment.docs.delete.title=Effacer le document warning.bulk.done=Vous devez choisir au moins une entr\u00E9e qui n'a pas \u00E9t\u00E9 d\u00E9j\u00E0 compl\u00E9t\u00E9e. diff --git a/src/main/java/org/olat/course/db/restapi/CourseDbWebService.java b/src/main/java/org/olat/course/db/restapi/CourseDbWebService.java index 26a2f2dc39abc4ce7c3cd751eac1089f2e9c3406..635b3b27842ccad2784a300be6a0cb842a20d5fc 100644 --- a/src/main/java/org/olat/course/db/restapi/CourseDbWebService.java +++ b/src/main/java/org/olat/course/db/restapi/CourseDbWebService.java @@ -53,19 +53,19 @@ import org.olat.restapi.support.vo.KeyValuePair; * Access the custom dbs of a course * * <P> - * Initial Date: 7 apr. 2010 <br> + * Initial Date: *7 apr. 2010 <br> * @author srosse, stephane.rosse@frentix.com */ @Path("repo/courses/{courseId}/db/{category}") public class CourseDbWebService { - private static final String VERSION = "1.0"; + private static final String VERSION = "1.0"; /** * Retrieves the version of the Course DB Web Service. - * @response.representation.200.mediaType text/plain - * @response.representation.200.doc The version of this specific Web Service - * @response.representation.200.example 1.0 + * @response.representation.200.mediaType text/plain + * @response.representation.200.doc The version of this specific Web Service + * @response.representation.200.example 1.0 * @return */ @GET @@ -78,9 +78,9 @@ public class CourseDbWebService { /** * Retrieve all values of the authenticated user * @response.representation.200.qname {http://www.example.com}keyValuePair - * @response.representation.200.mediaType application/xml, application/json - * @response.representation.200.doc All the values in the course - * @response.representation.200.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_KEYVALUEVOes} + * @response.representation.200.mediaType application/xml, application/json + * @response.representation.200.doc All the values in the course + * @response.representation.200.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_KEYVALUEVOes} * @param courseId The course resourceable's id * @param category The name of the database * @param request The HTTP request @@ -107,10 +107,10 @@ public class CourseDbWebService { /** * Put a new value for an authenticated user. * @response.representation.qname {http://www.example.com}keyValuePair - * @response.representation.mediaType application/xml, application/json - * @response.representation.doc the key value pair is saved on the db - * @response.representation.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_KEYVALUEVOes} - * @response.representation.200.doc the key value pair is saved on the db + * @response.representation.mediaType application/xml, application/json + * @response.representation.doc the key value pair is saved on the db + * @response.representation.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_KEYVALUEVOes} + * @response.representation.200.doc the key value pair is saved on the db * @param courseId The course resourceable's id * @param category The name of the database * @param pair The key value pair @@ -127,10 +127,10 @@ public class CourseDbWebService { /** * Update a value for an authenticated user. * @response.representation.qname {http://www.example.com}keyValuePair - * @response.representation.mediaType application/xml, application/json - * @response.representation.doc the key value pair is saved on the db - * @response.representation.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_KEYVALUEVOes} - * @response.representation.200.doc the key value pair is saved on the db + * @response.representation.mediaType application/xml, application/json + * @response.representation.doc the key value pair is saved on the db + * @response.representation.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_KEYVALUEVOes} + * @response.representation.200.doc the key value pair is saved on the db * @param courseId The course resourceable's id * @param category The name of the database * @param pair The key value pair @@ -147,9 +147,9 @@ public class CourseDbWebService { /** * Retrieve a value of an authenticated user. * @response.representation.200.qname {http://www.example.com}keyValuePair - * @response.representation.200.mediaType application/xml, application/json - * @response.representation.200.doc The value in the course - * @response.representation.200.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_KEYVALUEVO} + * @response.representation.200.mediaType application/xml, application/json + * @response.representation.200.doc The value in the course + * @response.representation.200.example {@link org.olat.restapi.support.vo.Examples#SAMPLE_KEYVALUEVO} * @response.representation.404.doc The entry cannot be found * @param courseId The course resourceable's id * @param category The name of the database @@ -176,9 +176,9 @@ public class CourseDbWebService { /** * Retrieve a value of an authenticated user. * @response.representation.200.qname {http://www.example.com}keyValuePair - * @response.representation.200.mediaType text/plain, text/html - * @response.representation.200.doc A value of the course - * @response.representation.200.example Green + * @response.representation.200.mediaType text/plain, text/html + * @response.representation.200.doc A value of the course + * @response.representation.200.example Green * @response.representation.404.doc The entry cannot be found * @param courseId The course resourceable's id * @param category The name of the database @@ -205,7 +205,7 @@ public class CourseDbWebService { /** * Put a new value for an authenticated user. - * @response.representation.200.doc The value is saved in the course + * @response.representation.200.doc The value is saved in the course * @param courseId The course resourceable's id * @param category The name of the database * @param name The name of the key value pair @@ -222,7 +222,7 @@ public class CourseDbWebService { /** * Update a value for an authenticated user. - * @response.representation.200.doc The value is saved in the course + * @response.representation.200.doc The value is saved in the course * @param courseId The course resourceable's id * @param category The name of the database * @param name The name of the key value pair @@ -240,7 +240,7 @@ public class CourseDbWebService { /** * Delete a value for an authenticated user. - * @response.representation.200.doc the key value pair is remove from the db + * @response.representation.200.doc the key value pair is remove from the db * @response.representation.401.doc The roles of the authenticated user are not sufficient * @response.representation.404.doc The entry cannot be found * @param courseId The course resourceable's id @@ -269,7 +269,8 @@ public class CourseDbWebService { /** * Fallbakc method for the browsers - * @response.representation.200.doc the key value pair is remove from the db + * + * @response.representation.200.doc the key value pair is remove from the db * @response.representation.401.doc The roles of the authenticated user are not sufficient * @response.representation.404.doc The entry cannot be found * @param courseId The course resourceable's id diff --git a/src/main/java/org/olat/course/editor/CourseAccessAndProperties.java b/src/main/java/org/olat/course/editor/CourseAccessAndProperties.java new file mode 100644 index 0000000000000000000000000000000000000000..438f03d38f8064c98500454ce1ce07fed76ddfce --- /dev/null +++ b/src/main/java/org/olat/course/editor/CourseAccessAndProperties.java @@ -0,0 +1,125 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.editor; + +import java.util.List; + +import org.olat.repository.RepositoryEntry; +import org.olat.repository.RepositoryEntryAllowToLeaveOptions; +import org.olat.resource.accesscontrol.OfferAccess; +/** + * + * @author fkiefer + * + */ +public class CourseAccessAndProperties { + private RepositoryEntry repoEntry; + private RepositoryEntryAllowToLeaveOptions setting; + private int access; + private boolean membersOnly; + private boolean canCopy; + private boolean canReference; + private boolean canDownload; + + private List<OfferAccess> offerAccess; + + public List<OfferAccess> getOfferAccess() { + return offerAccess; + } + + public void setOfferAccess(List<OfferAccess> offerAccess) { + this.offerAccess = offerAccess; + } + + public RepositoryEntry getRepositoryEntry() { + return repoEntry; + } + + public void setRepositoryEntry(RepositoryEntry re) { + this.repoEntry = re; + } + + public RepositoryEntryAllowToLeaveOptions getSetting() { + return setting; + } + + public void setSetting(RepositoryEntryAllowToLeaveOptions setting) { + this.setting = setting; + } + + public int getAccess() { + return access; + } + + public void setAccess(int access) { + this.access = access; + } + + public boolean isMembersOnly() { + return membersOnly; + } + + public void setMembersOnly(boolean membersOnly) { + this.membersOnly = membersOnly; + } + + public boolean isCanCopy() { + return canCopy; + } + + public void setCanCopy(boolean canCopy) { + this.canCopy = canCopy; + } + + public boolean isCanReference() { + return canReference; + } + + public void setCanReference(boolean canReference) { + this.canReference = canReference; + } + + public boolean isCanDownload() { + return canDownload; + } + + public void setCanDownload(boolean canDownload) { + this.canDownload = canDownload; + } + + public CourseAccessAndProperties(RepositoryEntry re) { + super(); + this.repoEntry = re; + } + + public CourseAccessAndProperties(RepositoryEntry re, RepositoryEntryAllowToLeaveOptions setting, int access, + boolean membersOnly, boolean canCopy, boolean canReference, boolean canDownload) { + super(); + this.repoEntry = re; + this.setting = setting; + this.access = access; + this.membersOnly = membersOnly; + this.canCopy = canCopy; + this.canReference = canReference; + this.canDownload = canDownload; + } + + +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/editor/EditorMainController.java b/src/main/java/org/olat/course/editor/EditorMainController.java index 0ca5bc63a715c358080abc4b4a87ec5aa984c4a3..df95faa5e6f696350625888ca5b117dea1e11bc8 100644 --- a/src/main/java/org/olat/course/editor/EditorMainController.java +++ b/src/main/java/org/olat/course/editor/EditorMainController.java @@ -1122,21 +1122,12 @@ public class EditorMainController extends MainLayoutBasicController implements G } } - if (runContext.containsKey("changedaccess")) { - // there were changes made to the general course access - String newAccessStr = (String) runContext.get("changedaccess"); - int newAccess; - boolean membersOnly = RepositoryEntry.MEMBERS_ONLY.equals(newAccessStr); - if(membersOnly) { - newAccess = RepositoryEntry.ACC_OWNERS; - } else { - newAccess = Integer.valueOf(newAccessStr); - } - + if (runContext.containsKey("accessAndProperties")) { + CourseAccessAndProperties accessAndProperties = (CourseAccessAndProperties) runContext.get("accessAndProperties"); // fires an EntryChangedEvent for repository entry notifying // about modification. - publishManager.changeGeneralAccess(getIdentity(), newAccess, membersOnly); - hasChanges = true; + publishManager.changeAccessAndProperties(getIdentity(), accessAndProperties); + hasChanges = true; } if (runContext.containsKey("catalogChoice")) { diff --git a/src/main/java/org/olat/course/editor/PublishProcess.java b/src/main/java/org/olat/course/editor/PublishProcess.java index 27bebd32fb007f88b343906ce7e201b1c61d4fc2..08c895f3d0f9f650ddca5bb03ff5382bc9fa4a14 100644 --- a/src/main/java/org/olat/course/editor/PublishProcess.java +++ b/src/main/java/org/olat/course/editor/PublishProcess.java @@ -75,6 +75,8 @@ import org.olat.repository.RepositoryManager; import org.olat.repository.controllers.EntryChangedEvent; import org.olat.repository.controllers.EntryChangedEvent.Change; import org.olat.repository.manager.CatalogManager; +import org.olat.resource.accesscontrol.ACService; +import org.olat.resource.accesscontrol.OfferAccess; import org.olat.resource.references.Reference; import org.olat.resource.references.ReferenceManager; import org.olat.user.UserManager; @@ -708,6 +710,24 @@ public class PublishProcess { CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(modifiedEvent, repositoryEntry); } + public void changeAccessAndProperties(Identity author, CourseAccessAndProperties accessAndProps) { + RepositoryManager manager = RepositoryManager.getInstance(); + + manager.setAccessAndProperties(accessAndProps.getRepositoryEntry(), accessAndProps.getAccess(), + accessAndProps.isMembersOnly(), accessAndProps.isCanCopy(), accessAndProps.isCanReference(), + accessAndProps.isCanDownload()); + manager.setLeaveSetting(accessAndProps.getRepositoryEntry(), accessAndProps.getSetting()); + + List<OfferAccess> offerAccess = accessAndProps.getOfferAccess(); + ACService acService = CoreSpringFactory.getImpl(ACService.class); + for (OfferAccess newLink : offerAccess) { + acService.saveOfferAccess(newLink); + } + + MultiUserEvent modifiedEvent = new EntryChangedEvent(repositoryEntry, author, Change.modifiedAtPublish, "publish"); + CoordinatorManager.getInstance().getCoordinator().getEventBus().fireEventToListenersOf(modifiedEvent, repositoryEntry); + } + private String translate(String i18n, String arg) { return translator.translate(i18n, new String[]{arg}); diff --git a/src/main/java/org/olat/course/editor/PublishStep00.java b/src/main/java/org/olat/course/editor/PublishStep00.java index 33106a40eb339da5ff48f9ba9a7a8f5cc68973d7..cd3a636b72a492b1793fb1f14fdee42c0825abca 100644 --- a/src/main/java/org/olat/course/editor/PublishStep00.java +++ b/src/main/java/org/olat/course/editor/PublishStep00.java @@ -131,13 +131,9 @@ class PublishStep00 extends BasicStep { * first step is to show selection tree for selecting * prepares all data needed for next step(s) */ + runContext.put("repoEntry", repoEntry); runContext.put("publishProcess", publishProcess); - //fxdiff VCRP-1,2: access control of resources - if(repoEntry.isMembersOnly()) { - runContext.put("selectedCourseAccess", RepositoryEntry.MEMBERS_ONLY); - } else { - runContext.put("selectedCourseAccess",String.valueOf(repoEntry.getAccess())); - } + return new PublishStep00Form(ureq, wControl, form, publishProcess, runContext); } diff --git a/src/main/java/org/olat/course/editor/PublishStep01.java b/src/main/java/org/olat/course/editor/PublishStep01.java index dd37082c33959f7567a646818fce9765a8d8a42b..a658881265d96821bdbb7b84ccb44f398c02c4b0 100644 --- a/src/main/java/org/olat/course/editor/PublishStep01.java +++ b/src/main/java/org/olat/course/editor/PublishStep01.java @@ -24,32 +24,17 @@ */ package org.olat.course.editor; -import java.util.ArrayList; -import java.util.List; - import org.olat.core.CoreSpringFactory; import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.form.flexible.FormItemContainer; -import org.olat.core.gui.components.form.flexible.elements.SingleSelection; import org.olat.core.gui.components.form.flexible.impl.Form; -import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; -import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.wizard.BasicStep; import org.olat.core.gui.control.generic.wizard.PrevNextFinishConfig; import org.olat.core.gui.control.generic.wizard.Step; -import org.olat.core.gui.control.generic.wizard.StepFormBasicController; import org.olat.core.gui.control.generic.wizard.StepFormController; -import org.olat.core.gui.control.generic.wizard.StepsEvent; import org.olat.core.gui.control.generic.wizard.StepsRunContext; -import org.olat.core.gui.translator.Translator; -import org.olat.core.util.Util; import org.olat.course.ICourse; -import org.olat.login.LoginModule; -import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryModule; -import org.olat.repository.RepositoryService; -import org.springframework.beans.factory.annotation.Autowired; /** * Description:<br> @@ -58,6 +43,7 @@ import org.springframework.beans.factory.annotation.Autowired; * <P> * Initial Date: 21.01.2008 <br> * @author patrickb + * @author fkiefer */ class PublishStep01 extends BasicStep { @@ -101,84 +87,4 @@ class PublishStep01 extends BasicStep { return new PublishStep01AccessForm(ureq, wControl, form, stepsRunContext); } - class PublishStep01AccessForm extends StepFormBasicController { - - private SingleSelection accessSelbox; - private String selectedAccess; - - @Autowired - private LoginModule loginModule; - - PublishStep01AccessForm(UserRequest ureq, WindowControl control, Form rootForm, StepsRunContext runContext) { - super(ureq, control, rootForm, runContext, LAYOUT_VERTICAL, null); - selectedAccess = (String) getFromRunContext("selectedCourseAccess"); - initForm(ureq); - } - - @Override - protected void doDispose() { - // - } - - @Override - protected void formOK(UserRequest ureq) { - String newAccess = accessSelbox.getKey(accessSelbox.getSelected()); - if(!selectedAccess.equals(newAccess)){ - //only change if access was changed - addToRunContext("changedaccess", newAccess); - } - - fireEvent(ureq, StepsEvent.ACTIVATE_NEXT); - } - - @Override - protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - Translator pt = Util.createPackageTranslator(RepositoryService.class, getLocale(), getTranslator()); - - FormLayoutContainer fic = FormLayoutContainer.createCustomFormLayout("access", pt, velocity_root + "/publish_courseaccess.html"); - formLayout.add(fic); - RepositoryModule repositoryModule = CoreSpringFactory.getImpl(RepositoryModule.class); - fic.contextPut("catalogEnabled", repositoryModule.isCatalogEnabled()); - - List<String> keyList = new ArrayList<String>(); - keyList.add(Integer.toString(RepositoryEntry.ACC_OWNERS)); - keyList.add(Integer.toString(RepositoryEntry.ACC_OWNERS_AUTHORS)); - keyList.add(Integer.toString(RepositoryEntry.ACC_USERS)); - if(loginModule.isGuestLoginLinksEnabled()) { - keyList.add(Integer.toString(RepositoryEntry.ACC_USERS_GUESTS)); - } - keyList.add(RepositoryEntry.MEMBERS_ONLY); - String[] keys = keyList.toArray(new String[keyList.size()]); - - List<String> valueList = new ArrayList<String>(); - valueList.add(pt.translate("cif.access.owners")); - valueList.add(pt.translate("cif.access.owners_authors")); - valueList.add(pt.translate("cif.access.users")); - if(loginModule.isGuestLoginLinksEnabled()) { - valueList.add(pt.translate("cif.access.users_guests")); - } - valueList.add(pt.translate("cif.access.membersonly")); - String[] values = valueList.toArray(new String[valueList.size()]); - - //use the addDropDownSingleselect method with null as label i18n - key, because there is no label to set. OLAT-3682 - accessSelbox = uifactory.addDropdownSingleselect("accessBox",null, fic, keys, values, null); - accessSelbox.setElementCssClass("o_sel_course_publish_access"); - if(!loginModule.isGuestLoginLinksEnabled() && "4".equals(selectedAccess)) {//no guest but BARG - accessSelbox.select("3", true);//-> set BAR- - } else { - boolean found = false; - for(String key:keys) { - if(key.equals(selectedAccess)) { - accessSelbox.select(key, true); - found = true; - break; - } - } - - if(!found) {//probably 0 - accessSelbox.select(keys[0], true); - } - } - } - } } \ No newline at end of file diff --git a/src/main/java/org/olat/course/editor/PublishStep01AccessForm.java b/src/main/java/org/olat/course/editor/PublishStep01AccessForm.java new file mode 100644 index 0000000000000000000000000000000000000000..10c81febbdbd04d703b391f584af3df3b4d7c6ac --- /dev/null +++ b/src/main/java/org/olat/course/editor/PublishStep01AccessForm.java @@ -0,0 +1,641 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.editor; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItem; +import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.FormLink; +import org.olat.core.gui.components.form.flexible.elements.SelectionElement; +import org.olat.core.gui.components.form.flexible.elements.SingleSelection; +import org.olat.core.gui.components.form.flexible.impl.Form; +import org.olat.core.gui.components.form.flexible.impl.FormEvent; +import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; +import org.olat.core.gui.components.helpTooltip.HelpTooltip; +import org.olat.core.gui.components.link.Link; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.Event; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; +import org.olat.core.gui.control.generic.wizard.StepFormBasicController; +import org.olat.core.gui.control.generic.wizard.StepsEvent; +import org.olat.core.gui.control.generic.wizard.StepsRunContext; +import org.olat.core.gui.translator.Translator; +import org.olat.core.util.Formatter; +import org.olat.core.util.StringHelper; +import org.olat.core.util.Util; +import org.olat.course.CourseModule; +import org.olat.fileresource.types.ScormCPFileResource; +import org.olat.ims.qti.fileresource.SurveyFileResource; +import org.olat.ims.qti.fileresource.TestFileResource; +import org.olat.login.LoginModule; +import org.olat.repository.RepositoryEntry; +import org.olat.repository.RepositoryEntryAllowToLeaveOptions; +import org.olat.repository.RepositoryEntryManagedFlag; +import org.olat.repository.RepositoryModule; +import org.olat.repository.RepositoryService; +import org.olat.repository.handlers.RepositoryHandler; +import org.olat.repository.handlers.RepositoryHandlerFactory; +import org.olat.repository.ui.author.AuthoringEntryPublishController; +import org.olat.resource.OLATResource; +import org.olat.resource.accesscontrol.ACService; +import org.olat.resource.accesscontrol.AccessControlModule; +import org.olat.resource.accesscontrol.Offer; +import org.olat.resource.accesscontrol.OfferAccess; +import org.olat.resource.accesscontrol.method.AccessMethodHandler; +import org.olat.resource.accesscontrol.model.AccessMethod; +import org.olat.resource.accesscontrol.model.OfferImpl; +import org.olat.resource.accesscontrol.ui.AbstractConfigurationMethodController; +import org.olat.resource.accesscontrol.ui.AccessConfigurationController; +import org.olat.resource.accesscontrol.ui.PriceFormat; +import org.springframework.beans.factory.annotation.Autowired; +/** + * @author fkiefer + */ +public class PublishStep01AccessForm extends StepFormBasicController { + + private final String[] leaveKeys = new String[]{ + RepositoryEntryAllowToLeaveOptions.atAnyTime.name(), + RepositoryEntryAllowToLeaveOptions.afterEndDate.name(), + RepositoryEntryAllowToLeaveOptions.never.name() + }; + + private SingleSelection leaveEl; + + private RepositoryEntry entry; + private SelectionElement canCopy; + private SelectionElement canReference; + private SelectionElement canDownload; + + private RepositoryHandler handler; + + private SingleSelection authorsSwitch, usersSwitch; + private SingleSelection publishedForUsers; + private FormLayoutContainer authorConfigLayout, userConfigLayout, accessLayout; + + private static final String YES_KEY = "y"; + private static final String NO_KEY = "n"; + private final String[] yesNoKeys = new String[]{YES_KEY, NO_KEY}; + + private static final String OAU_KEY = "u"; + private static final String OAUG_KEY = "g"; + private static final String MEMBERSONLY_KEY = "m"; + private String[] publishedKeys; + + + private List<FormLink> addMethods = new ArrayList<FormLink>(); + private List<OfferAccess> offerAccess = new ArrayList<OfferAccess>(); + private final String displayName; + + private CloseableModalController cmc; + private FormLayoutContainer confControllerContainer; + private AbstractConfigurationMethodController newMethodCtrl, editMethodCtrl; + + private final List<AccessInfo> confControllers = new ArrayList<AccessInfo>(); + + private int button_id; + private final boolean emptyConfigGrantsFullAccess; + private boolean allowPaymentMethod; + private final boolean editable; + + private final Formatter formatter; + private final OLATResource resource; + + + @Autowired + private LoginModule loginModule; + @Autowired + private RepositoryModule repositoryModule; + @Autowired + private ACService acService; + @Autowired + private AccessControlModule acModule; + + public PublishStep01AccessForm(UserRequest ureq, WindowControl control, Form rootForm, StepsRunContext runContext) { + super(ureq, control, rootForm, runContext, LAYOUT_VERTICAL, null); + Translator translator = Util.createPackageTranslator( + Util.createPackageTranslator(RepositoryService.class, AuthoringEntryPublishController.class, getLocale()), + Util.createPackageTranslator(ChooseNodeController.class, AccessConfigurationController.class, getLocale()), getLocale()); + setTranslator(translator); + entry = (RepositoryEntry) getFromRunContext("repoEntry"); + displayName = entry.getDisplayname(); + resource = entry.getOlatResource(); + emptyConfigGrantsFullAccess = true; + button_id = 0; + editable = !RepositoryEntryManagedFlag.isManaged(entry, RepositoryEntryManagedFlag.bookings); + + formatter = Formatter.getInstance(getLocale()); + + initForm(ureq); + } + + @Override + protected void doDispose() { + // + } + + @Override + protected void formOK(UserRequest ureq) { + RepositoryEntryAllowToLeaveOptions setting; + if(leaveEl.isOneSelected()) { + setting = RepositoryEntryAllowToLeaveOptions.valueOf(leaveEl.getSelectedKey()); + } else { + setting = RepositoryEntryAllowToLeaveOptions.atAnyTime; + } + boolean membersOnly = (usersSwitch.getSelectedKey().equals(YES_KEY) && publishedForUsers.getSelectedKey().equals(MEMBERSONLY_KEY)); + CourseAccessAndProperties accessProperties = new CourseAccessAndProperties(entry, setting, getAccess(), membersOnly, + canCopy.isSelected(0), canReference.isSelected(0), canDownload.isSelected(0)); + + accessProperties.setOfferAccess(offerAccess); + + addToRunContext("accessAndProperties", accessProperties); + + fireEvent(ureq, StepsEvent.ACTIVATE_NEXT); + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + FormLayoutContainer headersLayout = FormLayoutContainer.createCustomFormLayout("access", getTranslator(), velocity_root + "/publish_courseaccess.html"); + formLayout.add(headersLayout); + headersLayout.contextPut("catalogEnabled", repositoryModule.isCatalogEnabled()); + + FormLayoutContainer publishLayout = FormLayoutContainer.createDefaultFormLayout("publish", getTranslator()); + formLayout.add(publishLayout); + publishLayout.setFormTitle(translate("rentry.publish")); + publishLayout.setFormContextHelp("Course Settings#_zugriff"); + publishLayout.setElementCssClass("o_sel_repositoryentry_access"); + + if (loginModule.isGuestLoginLinksEnabled()) { + publishedKeys = new String[]{OAU_KEY, OAUG_KEY, MEMBERSONLY_KEY}; + } else { + publishedKeys = new String[]{OAU_KEY, MEMBERSONLY_KEY}; + } + + String resourceType = entry.getOlatResource().getResourceableTypeName(); + if (TestFileResource.TYPE_NAME.equals(resourceType) + || SurveyFileResource.TYPE_NAME.equals(resourceType) + || ScormCPFileResource.TYPE_NAME.equals(resourceType)) { + String warning = translate("warn.resource.need.course"); + flc.contextPut("off_warn", warning); + } + if (CourseModule.ORES_TYPE_COURSE.equals(resourceType)) { + publishLayout.setFormDescription(translate("rentry.publish.course.desc")); + } else { + publishLayout.setFormDescription(translate("rentry.publish.other.desc")); + } + if (resourceType != null) { + handler = RepositoryHandlerFactory.getInstance().getRepositoryHandler(resourceType); + } + + // make configuration read only when managed by external system + final boolean managedSettings = RepositoryEntryManagedFlag.isManaged(entry, RepositoryEntryManagedFlag.settings); + final boolean managedAccess = RepositoryEntryManagedFlag.isManaged(entry, RepositoryEntryManagedFlag.access); + + String[] yesNoValues = new String[]{translate("yes"), translate("no")}; + authorsSwitch = uifactory.addRadiosHorizontal("authorsSwitch", "rentry.publish.authors", publishLayout, yesNoKeys, yesNoValues); + authorsSwitch.setEnabled(!managedAccess); + authorsSwitch.addActionListener(FormEvent.ONCHANGE); + authorConfigLayout = FormLayoutContainer.createBareBoneFormLayout("authorConfigLayout", getTranslator()); + publishLayout.add(authorConfigLayout); + canReference = uifactory.addCheckboxesVertical("cif_canReference",null, authorConfigLayout, new String[] { YES_KEY }, new String[] { translate("cif.canReference") }, 1); + canReference.setEnabled(!managedSettings); + canCopy = uifactory.addCheckboxesVertical("cif_canCopy", null, authorConfigLayout, new String[] { YES_KEY }, new String[] { translate("cif.canCopy") }, 1); + canCopy.setEnabled(!managedSettings); + canDownload = uifactory.addCheckboxesVertical("cif_canDownload", null, authorConfigLayout, new String[] { YES_KEY }, new String[] { translate("cif.canDownload") }, 1); + canDownload.setEnabled(!managedSettings); + canDownload.setVisible(handler.supportsDownload()); + uifactory.addSpacerElement("authorSpacer", authorConfigLayout, true); + + String[] publishedValues; + if (loginModule.isGuestLoginLinksEnabled()) { + publishedValues = new String[]{translate("cif.access.users"), translate("cif.access.users_guests"), translate("cif.access.membersonly")}; + } else { + publishedValues = new String[]{translate("cif.access.users"), translate("cif.access.membersonly")}; + } + + usersSwitch = uifactory.addRadiosHorizontal("usersSwitch", "rentry.publish.users", publishLayout, yesNoKeys, yesNoValues); + usersSwitch.addActionListener(FormEvent.ONCHANGE); + usersSwitch.setEnabled(!managedAccess); + userConfigLayout = FormLayoutContainer.createBareBoneFormLayout("userConfigLayout", getTranslator()); + publishLayout.add(userConfigLayout); + publishedForUsers = uifactory.addDropdownSingleselect("publishedForUsers", null, userConfigLayout, publishedKeys, publishedValues, null); + publishedForUsers.setEnabled(!managedAccess); + publishedForUsers.addActionListener(FormEvent.ONCHANGE); + uifactory.addSpacerElement("userSpacer", userConfigLayout, true); + + // Part 2 + + FormLayoutContainer membershipLayout = FormLayoutContainer.createDefaultFormLayout("membership", getTranslator()); + formLayout.add(membershipLayout); + + membershipLayout.setFormTitle(translate("rentry.leaving.title")); + + String[] leaveValues = new String[]{ + translate("rentry.leave.atanytime"), + translate("rentry.leave.afterenddate"), + translate("rentry.leave.never") + }; + + final boolean managedLeaving = RepositoryEntryManagedFlag.isManaged(entry, RepositoryEntryManagedFlag.membersmanagement); + leaveEl = uifactory.addDropdownSingleselect("entry.leave", "rentry.leave.option", membershipLayout, leaveKeys, leaveValues, null); + boolean found = false; + for(String leaveKey:leaveKeys) { + if(leaveKey.equals(entry.getAllowToLeaveOption().name())) { + leaveEl.select(leaveKey, true); + found = true; + } + } + if(!found) { + if(managedLeaving) { + leaveEl.select(RepositoryEntryAllowToLeaveOptions.never.name(), true); + } else { + RepositoryEntryAllowToLeaveOptions defaultOption = repositoryModule.getAllowToLeaveDefaultOption(); + leaveEl.select(defaultOption.name(), true); + } + } + leaveEl.setEnabled(!managedLeaving); + + // Part 3 + + accessLayout = FormLayoutContainer.createCustomFormLayout("accessConfig", getTranslator(), velocity_root + "/access_configuration.html"); + formLayout.add(accessLayout); + accessLayout.setVisible(entry.getAccess() == RepositoryEntry.ACC_USERS + || loginModule.isGuestLoginLinksEnabled() && entry.getAccess() == RepositoryEntry.ACC_USERS_GUESTS + || entry.isMembersOnly()); + + accessLayout.setFormTitle(translate("accesscontrol.title")); + + HelpTooltip acMethodsLabelHelp = new HelpTooltip("acMethodsLabelHelp", "Legen Sie fest unter welchen Bedingungen Benutzer diese Ressource buchen können.", "Course Settings#_buchungsmethode", getLocale()); + ((FormLayoutContainer)accessLayout).put("acMethodsLabelHelp", acMethodsLabelHelp); + + if(editable) { + List<AccessMethod> methods = acService.getAvailableMethods(getIdentity(), ureq.getUserSession().getRoles()); + for(AccessMethod method:methods) { + AccessMethodHandler handler = acModule.getAccessMethodHandler(method.getType()); + if(handler.isPaymentMethod() && !allowPaymentMethod) { + continue; + } + + String title = handler.getMethodName(getLocale()); + FormLink add = uifactory.addFormLink("create." + handler.getType(), title, null, accessLayout, Link.LINK | Link.NONTRANSLATED); + add.setUserObject(method); + add.setIconLeftCSS( ("o_icon " + method.getMethodCssClass() + "_icon o_icon-lg").intern()); + addMethods.add(add); + accessLayout.add(add.getName(), add); + } + ((FormLayoutContainer)accessLayout).contextPut("methods", addMethods); + } + + String confPage = velocity_root + "/configuration_list.html"; + confControllerContainer = FormLayoutContainer.createCustomFormLayout("conf-controllers", getTranslator(), confPage); + accessLayout.add(confControllerContainer); + + loadConfigurations(); + + confControllerContainer.contextPut("confControllers", confControllers); + + confControllerContainer.contextPut("emptyConfigGrantsFullAccess", Boolean.valueOf(emptyConfigGrantsFullAccess)); + + initFormData(); + } + + protected void loadConfigurations() { + List<Offer> offers = acService.findOfferByResource(resource, true, null); + for(Offer offer:offers) { + List<OfferAccess> offerAccess = acService.getOfferAccess(offer, true); + for(OfferAccess access:offerAccess) { + button_id++; + addConfiguration(access); + } + } + } + + protected void addConfiguration(OfferAccess link) { + AccessMethodHandler handler = acModule.getAccessMethodHandler(link.getMethod().getType()); + AccessInfo infos = new AccessInfo(handler.getMethodName(getLocale()), handler.isPaymentMethod(), null, link); + infos.setButtonId(button_id); + confControllers.add(infos); + + if(editable) { + FormLink editLink = uifactory.addFormLink("edit_" + infos.getButtonId(), "edit", "edit", null, confControllerContainer, Link.BUTTON_SMALL); + editLink.setUserObject(infos); + editLink.setIconLeftCSS("o_icon o_icon-fw o_icon_edit"); + confControllerContainer.add(editLink.getName(), editLink); + + FormLink delLink = uifactory.addFormLink("del_" + infos.getButtonId(), "delete", "delete", null, confControllerContainer, Link.BUTTON_SMALL); + delLink.setUserObject(infos); + delLink.setIconLeftCSS("o_icon o_icon-fw o_icon_delete_item"); + confControllerContainer.add(delLink.getName(), delLink); + } + } + + public class AccessInfo { + private String name; + private String infos; + private String dates; + private OfferAccess link; + private final boolean paymentMethod; + private int buttonId; + + public AccessInfo(String name, boolean paymentMethod, String infos, OfferAccess link) { + this.name = name; + this.paymentMethod = paymentMethod; + this.infos = infos; + this.link = link; + } + + public int getButtonId() { + return buttonId; + } + + public void setButtonId(int buttonId) { + this.buttonId = buttonId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean isPaymentMethod() { + return paymentMethod; + } + + public String getDates() { + if(dates == null && link.getOffer() != null) { + Date from = link.getValidFrom(); + Date to = link.getValidTo(); + if(from != null && to != null) { + dates = translate("ac.fromto.label", new String[]{ formatter.formatDate(from), formatter.formatDate(to) }); + } else if(from != null) { + dates = translate("ac.from.label", new String[]{ formatter.formatDate(from) }); + } else if(to != null) { + dates = translate("ac.to.label", new String[]{ formatter.formatDate(to) }); + } + } + return dates; + } + + public String getInfos() { + if(infos == null && link.getOffer() != null) { + OfferImpl casted = (OfferImpl)link.getOffer(); + if(StringHelper.containsNonWhitespace(casted.getToken())) { + return casted.getToken(); + } + if(!link.getOffer().getPrice().isEmpty()) { + String price = PriceFormat.fullFormat(link.getOffer().getPrice()); + if(acModule.isVatEnabled()) { + BigDecimal vat = acModule.getVat(); + String vatStr = vat == null ? "" : vat.setScale(3, BigDecimal.ROUND_HALF_EVEN).toPlainString(); + return translate("access.info.price.vat", new String[]{price, vatStr}); + + } else { + return translate("access.info.price.noVat", new String[]{price}); + } + } + } + if(StringHelper.containsNonWhitespace(infos)) { + return infos; + } + return ""; + } + + public void setInfos(String infos) { + this.infos = infos; + } + + public OfferAccess getLink() { + return link; + } + + public void setLink(OfferAccess link) { + this.link = link; + this.dates = null; + } + } + + private void initFormData() { + // init author visibility and flags + canReference.select(YES_KEY, entry.getCanReference()); + canCopy.select(YES_KEY, entry.getCanCopy()); + canDownload.select(YES_KEY, entry.getCanDownload()); + if (entry.getAccess() >= RepositoryEntry.ACC_OWNERS_AUTHORS) { + authorsSwitch.select(YES_KEY, true); + } else { + authorsSwitch.select(NO_KEY, true); + authorConfigLayout.setVisible(false); + } + // init user visibility + if (entry.getAccess() == RepositoryEntry.ACC_USERS) { + publishedForUsers.select(OAU_KEY, true); + usersSwitch.select(YES_KEY, true); + } else if (loginModule.isGuestLoginLinksEnabled() && entry.getAccess() == RepositoryEntry.ACC_USERS_GUESTS){ + publishedForUsers.select(OAUG_KEY, true); + usersSwitch.select(YES_KEY, true); + } else if (entry.isMembersOnly()) { + publishedForUsers.select(MEMBERSONLY_KEY, true); + usersSwitch.select(YES_KEY, true); + authorsSwitch.setEnabled(false); + } else { + publishedForUsers.select(OAU_KEY, true); + usersSwitch.select(NO_KEY, true); + userConfigLayout.setVisible(false); + } + } + + @Override + protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { + super.formInnerEvent(ureq, source, event); + if (source == authorsSwitch) { + if (authorsSwitch.getSelectedKey().equals(YES_KEY)) { + authorConfigLayout.setVisible(true); + } else { + authorConfigLayout.setVisible(false); + if (!publishedForUsers.getSelectedKey().equals(MEMBERSONLY_KEY)) { + usersSwitch.select(NO_KEY, false); + userConfigLayout.setVisible(false); + } + } + } else if (source == usersSwitch || source == publishedForUsers) { + if (usersSwitch.getSelectedKey().equals(YES_KEY)) { + userConfigLayout.setVisible(true); + accessLayout.setVisible(true); + if (publishedForUsers.getSelectedKey().equals(MEMBERSONLY_KEY)) { + authorConfigLayout.setVisible(false); + authorsSwitch.select(NO_KEY, false); + authorsSwitch.setEnabled(false); + } else { + authorsSwitch.select(YES_KEY, false); + authorsSwitch.setEnabled(true); + authorConfigLayout.setVisible(true); + } + } else { + userConfigLayout.setVisible(false); + accessLayout.setVisible(false); + authorsSwitch.setEnabled(true); + } + } else if(addMethods.contains(source)) { + AccessMethod method = (AccessMethod)source.getUserObject(); + addMethod(ureq, method); + } else if (source instanceof FormLink) { + FormLink button = (FormLink)source; + String cmd = button.getCmd(); + if("delete".equals(cmd)) { + AccessInfo infos = (AccessInfo)source.getUserObject(); + offerAccess.remove(infos.getLink()); + confControllers.remove(infos); + fireEvent(ureq, Event.CHANGED_EVENT); + } else if("edit".equals(cmd)) { + AccessInfo infos = (AccessInfo)source.getUserObject(); + editMethod(ureq, infos); + } + } + } + + @Override + protected void event(UserRequest ureq, Controller source, Event event) { + if(newMethodCtrl == source) { + if(event.equals(Event.DONE_EVENT)) { + OfferAccess newLink = newMethodCtrl.commitChanges(); + button_id++; + if (!offerAccess.contains(newLink)) { + offerAccess.add(newLink); + } + addConfiguration(newLink); + fireEvent(ureq, Event.CHANGED_EVENT); + } + cmc.deactivate(); + cleanUp(); + } else if(editMethodCtrl == source) { + if(event.equals(Event.DONE_EVENT)) { + OfferAccess newLink = editMethodCtrl.commitChanges(); + if (!offerAccess.contains(newLink)) { + offerAccess.add(newLink); + } + replace(newLink); + fireEvent(ureq, Event.CHANGED_EVENT); + } + cmc.deactivate(); + cleanUp(); + } else if (cmc == source) { + cleanUp(); + } else { + super.event(ureq, source, event); + } + } + + private void cleanUp() { + removeAsListenerAndDispose(editMethodCtrl); + removeAsListenerAndDispose(newMethodCtrl); + removeAsListenerAndDispose(cmc); + editMethodCtrl = null; + newMethodCtrl = null; + cmc = null; + } + + protected void replace(OfferAccess link) { + boolean updated = false; + for(AccessInfo confController:confControllers) { + if(confController.getLink().equals(link)) { + confController.setLink(link); + updated = true; + } + } + + if(!updated) { + addConfiguration(link); + } else { + confControllerContainer.setDirty(true); + } + } + + private int getAccess() { + // default only for owners + int access = RepositoryEntry.ACC_OWNERS; + if (authorsSwitch.getSelectedKey().equals(YES_KEY)) { + // raise to author level + access = RepositoryEntry.ACC_OWNERS_AUTHORS; + } + if (usersSwitch.getSelectedKey().equals(YES_KEY)) { + if (publishedForUsers.getSelectedKey().equals(OAU_KEY)) { + // further raise to user level + access = RepositoryEntry.ACC_USERS; + } else if (publishedForUsers.getSelectedKey().equals(OAUG_KEY)) { + // further raise to guest level + access = RepositoryEntry.ACC_USERS_GUESTS; + } else if (publishedForUsers.getSelectedKey().equals(MEMBERSONLY_KEY)) { + // Members-only is either owner or owner-author level, never user level + access = RepositoryEntry.ACC_OWNERS; + } + } + return access; + } + + private void editMethod(UserRequest ureq, AccessInfo infos) { + OfferAccess link = infos.getLink(); + + removeAsListenerAndDispose(editMethodCtrl); + AccessMethodHandler handler = acModule.getAccessMethodHandler(link.getMethod().getType()); + if (handler != null) { + editMethodCtrl = handler.editConfigurationController(ureq, getWindowControl(), link); + } + + if(editMethodCtrl != null) { + listenTo(editMethodCtrl); + + String title = handler.getMethodName(getLocale()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), editMethodCtrl.getInitialComponent(), true, title); + cmc.activate(); + listenTo(cmc); + } + } + + protected void addMethod(UserRequest ureq, AccessMethod method) { + Offer offer = acService.createOffer(resource, displayName); + OfferAccess link = acService.createOfferAccess(offer, method); + + removeAsListenerAndDispose(newMethodCtrl); + AccessMethodHandler handler = acModule.getAccessMethodHandler(link.getMethod().getType()); + if (handler != null) { + newMethodCtrl = handler.createConfigurationController(ureq, getWindowControl(), link); + } + if(newMethodCtrl != null) { + listenTo(newMethodCtrl); + + String title = handler.getMethodName(getLocale()); + cmc = new CloseableModalController(getWindowControl(), translate("close"), newMethodCtrl.getInitialComponent(), true, title); + cmc.activate(); + listenTo(cmc); + } else { + if (!offerAccess.contains(link)) { + offerAccess.add(link); + } + addConfiguration(link); + } + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/editor/_content/access_configuration.html b/src/main/java/org/olat/course/editor/_content/access_configuration.html new file mode 100644 index 0000000000000000000000000000000000000000..0047566062bd6fad59505d6ed0513823ae76a52a --- /dev/null +++ b/src/main/java/org/olat/course/editor/_content/access_configuration.html @@ -0,0 +1,29 @@ +<fieldset class="o_form form-horizontal o_ac_configuration" role="form"> +#if ($off_title) + <legend> + $off_title + </legend> +#end + +#if ($off_desc || $off_warn || $off_info) + <div class="row"><div class="col-sm-offset-3 col-sm-9"> + #if ($off_desc) <div class="o_desc">$off_desc</div> #end + #if ($off_warn) <div class="o_warning">$off_warn</div> #end + #if ($off_info) <div class="o_info">$off_info</div> #end + </div></div> +#end + <div class="form-group"> + <label class="control-label col-sm-3">$r.translate("ac.methods.label") $r.render("acMethodsLabelHelp")</label> + <div class="col-sm-9">$r.render("conf-controllers")</div> + </div> + #if($methods) + <div class="form-group"><div class="col-sm-9 col-sm-offset-3"><div class="btn-group"> + <button type="button" class="btn btn-default dropdown-toggle o_sel_accesscontrol_create" data-toggle="dropdown">$r.translate("add.accesscontrol") <span class="caret"></span></button> + <ul class="dropdown-menu dropdown-menu-right" role="menu"> + #foreach($method in $methods) + <li>$r.render($method.component.componentName)</li> + #end + </ul> + </div></div></div> + #end +</fieldset> \ No newline at end of file diff --git a/src/main/java/org/olat/course/editor/_content/configuration_list.html b/src/main/java/org/olat/course/editor/_content/configuration_list.html new file mode 100644 index 0000000000000000000000000000000000000000..e3e5390cb289609bdcf3ca235f62276f5155720c --- /dev/null +++ b/src/main/java/org/olat/course/editor/_content/configuration_list.html @@ -0,0 +1,32 @@ +#if ($confControllers && $confControllers.size() > 0) + #foreach($confController in $confControllers) + #set($css = $confController.getLink().getMethod().getMethodCssClass()) + #set($desc = $confController.getLink().getOffer().getDescription()) + <div class="o_block_bottom"> + <label id="lab_${confController.link.key}" onclick="o_popoverWithTitle('lab_${confController.link.key}','desc_${confController.link.key}','$r.translate("offer.description")','top').popover('show');"> + <i class="o_icon ${css}_icon o_icon-lg"> </i> ${confController.name}#if($confController.infos) <span class="o_ac_infos">$r.escapeHtml($confController.infos)</span>#end</label> + #if($confController.dates && !$confController.dates.empty) + <br/><span class="o_ac_infos">${confController.dates}</span> + #end + + #set($desc = $confController.getLink().getOffer().getDescription()) + #if ($desc) + <div id="desc_${confController.link.key}" style="display:none;"><div>$r.xssScan($desc)</div></div> + #end + <div class="pull-right"> + #if($r.available("edit_$confController.buttonId")) + $r.render("edit_$confController.buttonId") + #end + #if($r.available("del_$confController.buttonId")) + $r.render("del_$confController.buttonId") + #end + </div> + </div> + #end +#else + #if ($emptyConfigGrantsFullAccess) + <div class="o_warning"><i class="o_icon o_icon_important"> </i> $r.translate("accesscontrol.no.methods.full.access")</div> + #else + <div class="o_important"><i class="o_icon o_icon_important"> </i> $r.translate("accesscontrol.no.methods.no.access")</div> + #end +#end diff --git a/src/main/java/org/olat/course/editor/_content/publish_courseaccess.html b/src/main/java/org/olat/course/editor/_content/publish_courseaccess.html index f6e4cbead84e01ae000d73dcd91eefce55a87fed..3290161717444e40578d93343a857f73cedd88c0 100644 --- a/src/main/java/org/olat/course/editor/_content/publish_courseaccess.html +++ b/src/main/java/org/olat/course/editor/_content/publish_courseaccess.html @@ -7,4 +7,3 @@ $r.translate("pbl.remind.catalog") </div> #end -$r.render("accessBox") \ No newline at end of file diff --git a/src/main/java/org/olat/course/member/MembersOverviewController.java b/src/main/java/org/olat/course/member/MembersOverviewController.java index 718dd80a5932efe4f23a01bf36c301bcd7b7c5b2..25d01ba219c0cf8e7d83821ffe83fe53b5befce6 100644 --- a/src/main/java/org/olat/course/member/MembersOverviewController.java +++ b/src/main/java/org/olat/course/member/MembersOverviewController.java @@ -387,7 +387,7 @@ public class MembersOverviewController extends BasicController implements Activa MailPackage mailing = new MailPackage(template, result, getWindowControl().getBusinessControl().getAsString(), template != null); businessGroupService.updateMemberships(getIdentity(), allModifications, mailing); - MailHelper.printErrorsAndWarnings(result, getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); switchToAllMembers(ureq); } diff --git a/src/main/java/org/olat/course/nodes/AbstractAccessableCourseNode.java b/src/main/java/org/olat/course/nodes/AbstractAccessableCourseNode.java index 9766f7ba0bd70a5aa0f865fc9241331bc224e67c..387fb59867e522514d4d8f941504a3e2b38facea 100644 --- a/src/main/java/org/olat/course/nodes/AbstractAccessableCourseNode.java +++ b/src/main/java/org/olat/course/nodes/AbstractAccessableCourseNode.java @@ -72,6 +72,13 @@ public abstract class AbstractAccessableCourseNode extends GenericCourseNode { protected AbstractAccessableCourseNode(String type) { super(type); } + + @Override + public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); + course.getCourseEnvironment() + .getAssessmentManager().deleteIndividualAssessmentDocuments(this); + } /** * Returns the generic access precondition diff --git a/src/main/java/org/olat/course/nodes/ArchiveOptions.java b/src/main/java/org/olat/course/nodes/ArchiveOptions.java index ee0a3a9bbc6b2dca90c9a6ff4b1b6ed0739eba2c..f816205b5dd7aff0c1e3d664fc0012c2005a9067 100644 --- a/src/main/java/org/olat/course/nodes/ArchiveOptions.java +++ b/src/main/java/org/olat/course/nodes/ArchiveOptions.java @@ -22,8 +22,8 @@ package org.olat.course.nodes; import java.util.List; import org.olat.core.id.Identity; +import org.olat.course.archiver.ExportFormat; import org.olat.group.BusinessGroup; -import org.olat.ims.qti.export.QTIExportItemFormatConfig; /** * @@ -35,8 +35,7 @@ public class ArchiveOptions { private BusinessGroup group; private List<Identity> identities; - - private QTIExportItemFormatConfig qtiExportItemFormatConfig; + private ExportFormat exportFormat; public BusinessGroup getGroup() { return group; @@ -54,13 +53,11 @@ public class ArchiveOptions { this.identities = identities; } - public QTIExportItemFormatConfig getQtiExportItemFormatConfig() { - return qtiExportItemFormatConfig; + public ExportFormat getExportFormat() { + return exportFormat; } - public void setQtiExportItemFormatConfig(QTIExportItemFormatConfig qtiExportItemFormatConfig) { - this.qtiExportItemFormatConfig = qtiExportItemFormatConfig; + public void setExportFormat(ExportFormat exportFormat) { + this.exportFormat = exportFormat; } - - } diff --git a/src/main/java/org/olat/course/nodes/AssessableCourseNode.java b/src/main/java/org/olat/course/nodes/AssessableCourseNode.java index 744924e1ecc65146c911fc6da2fa82c83a83550f..96b40f918ec3871c26001549f1c06870bb65327d 100644 --- a/src/main/java/org/olat/course/nodes/AssessableCourseNode.java +++ b/src/main/java/org/olat/course/nodes/AssessableCourseNode.java @@ -25,6 +25,7 @@ package org.olat.course.nodes; +import java.io.File; import java.util.List; import org.olat.core.gui.UserRequest; @@ -96,6 +97,12 @@ public interface AssessableCourseNode extends CourseNode { */ public boolean hasAttemptsConfigured(); + /** + * + * @return True if this course node can hold some documents about the assessment of the learner + */ + public boolean hasIndividualAsssessmentDocuments(); + /** * @return True if this course node has additional details to be edited / viewed */ @@ -122,6 +129,13 @@ public interface AssessableCourseNode extends CourseNode { * @return the user comment for this user for this node, given by coach */ public String getUserUserComment(UserCourseEnvironment userCourseEnvironment); + + /** + * @param userCourseEnvironment The course environment of the assessed user. + * @return The list of assessment document associated with this user and course element. + */ + public List<File> getIndividualAssessmentDocuments(UserCourseEnvironment userCourseEnvironment); + /** * @param userCourseEnvironment * @return The coach comment for this user for this node (not visible to user) @@ -177,6 +191,25 @@ public interface AssessableCourseNode extends CourseNode { * @param coachingIdentity */ public void updateUserUserComment(String userComment, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity); + + /** + * Add if allowed a document for the assessed user. + * + * @param document The document + * @param userCourseEnvironment The course environment of the assessed user + * @param coachingIdentity The coach who upload the document + */ + public void addIndividualAssessmentDocument(File document, String filename, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity); + + /** + * Remove a document + * + * @param document The document to remove + * @param userCourseEnvironment The course environment of the assessed user + * @param coachingIdentity The coach who delete the document + */ + public void removeIndividualAssessmentDocument(File document, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity); + /** * Increments the users attempts for this node and this user + 1. * @param userCourseEnvironment diff --git a/src/main/java/org/olat/course/nodes/BCCourseNode.java b/src/main/java/org/olat/course/nodes/BCCourseNode.java index 03e59830fcb2f96798f00d9ea52f3f1ed3485fee..771e66834509e76cb917fd118ca8103a4d917610 100644 --- a/src/main/java/org/olat/course/nodes/BCCourseNode.java +++ b/src/main/java/org/olat/course/nodes/BCCourseNode.java @@ -383,6 +383,8 @@ public class BCCourseNode extends AbstractAccessableCourseNode { */ @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); + // mark the subscription to this node as deleted SubscriptionContext folderSubContext = CourseModule.createTechnicalSubscriptionContext(course.getCourseEnvironment(), this); NotificationsManager.getInstance().delete(folderSubContext); diff --git a/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java b/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java index 272cde9ef6e5d1226a76a46467508b88308decd3..94be6c47481b7f3a74b74b4f16dea63b070aa606 100644 --- a/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java +++ b/src/main/java/org/olat/course/nodes/BasicLTICourseNode.java @@ -25,6 +25,7 @@ package org.olat.course.nodes; +import java.io.File; import java.util.List; import org.olat.core.CoreSpringFactory; @@ -55,6 +56,7 @@ import org.olat.course.run.scoring.AssessmentEvaluation; import org.olat.course.run.scoring.ScoreEvaluation; import org.olat.course.run.userview.NodeEvaluation; import org.olat.course.run.userview.UserCourseEnvironment; +import org.olat.ims.lti.LTIDisplayOptions; import org.olat.ims.lti.LTIManager; import org.olat.ims.lti.ui.LTIResultDetailsController; import org.olat.modules.ModuleConfiguration; @@ -71,7 +73,8 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements private static final long serialVersionUID = 2210572148308757127L; private static final String translatorPackage = Util.getPackageName(LTIEditController.class); private static final String TYPE = "lti"; - + + public static final int CURRENT_VERSION = 3; public static final String CONFIG_KEY_AUTHORROLE = "authorRole"; public static final String CONFIG_KEY_COACHROLE = "coachRole"; public static final String CONFIG_KEY_PARTICIPANTROLE = "participantRole"; @@ -79,6 +82,8 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements public static final String CONFIG_KEY_HAS_SCORE_FIELD = MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD; public static final String CONFIG_KEY_HAS_PASSED_FIELD = MSCourseNode.CONFIG_KEY_HAS_PASSED_FIELD; public static final String CONFIG_KEY_PASSED_CUT_VALUE = MSCourseNode.CONFIG_KEY_PASSED_CUT_VALUE; + public static final String CONFIG_SKIP_LAUNCH_PAGE = "skiplaunchpage"; + public static final String CONFIG_SKIP_ACCEPT_LAUNCH_PAGE = "skipacceptlaunchpage"; public static final String CONFIG_HEIGHT = "displayHeight"; public static final String CONFIG_WIDTH = "displayWidth"; public static final String CONFIG_HEIGHT_AUTO = DeliveryOptions.CONFIG_HEIGHT_AUTO; @@ -105,7 +110,7 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements @Override public TabbableController createEditController(UserRequest ureq, WindowControl wControl, BreadcrumbPanel stackPanel, ICourse course, UserCourseEnvironment euce) { updateModuleConfigDefaults(false); - LTIEditController childTabCntrllr = new LTIEditController(getModuleConfiguration(), ureq, wControl, stackPanel, this, course, euce); + LTIEditController childTabCntrllr = new LTIEditController(getModuleConfiguration(), ureq, wControl, this, course, euce); CourseNode chosenNode = course.getEditorTreeModel().getCourseNode(euce.getCourseEditorEnv().getCurrentCourseNodeId()); return new NodeEditController(ureq, wControl, course.getEditorTreeModel(), course, chosenNode, euce, childTabCntrllr); } @@ -221,6 +226,7 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements */ @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); OLATResource resource = course.getCourseEnvironment().getCourseGroupManager().getCourseResource(); CoreSpringFactory.getImpl(LTIManager.class).deleteOutcomes(resource); } @@ -239,7 +245,8 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements if (isNewNode) { // use defaults for new course building blocks config.setBooleanEntry(NodeEditController.CONFIG_STARTPAGE, Boolean.FALSE.booleanValue()); - config.setConfigurationVersion(2); + config.setBooleanEntry(CONFIG_SKIP_LAUNCH_PAGE, Boolean.FALSE.booleanValue()); + config.setBooleanEntry(CONFIG_SKIP_ACCEPT_LAUNCH_PAGE, Boolean.FALSE.booleanValue()); } else { // clear old popup configuration config.remove(NodeEditController.CONFIG_INTEGRATION); @@ -248,10 +255,17 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements if (config.getConfigurationVersion() < 2) { // update new configuration options using default values for existing nodes config.setBooleanEntry(NodeEditController.CONFIG_STARTPAGE, Boolean.TRUE.booleanValue()); - config.setConfigurationVersion(2); } - // else node is up-to-date - nothing to do + if (config.getConfigurationVersion() < 3) { + if (BasicLTICourseNode.CONFIG_DISPLAY.equals(LTIDisplayOptions.window.name())) { + config.setBooleanEntry(CONFIG_SKIP_LAUNCH_PAGE, Boolean.FALSE.booleanValue()); + } else { + config.setBooleanEntry(CONFIG_SKIP_LAUNCH_PAGE, Boolean.TRUE.booleanValue()); + } + config.setBooleanEntry(CONFIG_SKIP_ACCEPT_LAUNCH_PAGE, Boolean.FALSE.booleanValue()); + } } + config.setConfigurationVersion(CURRENT_VERSION); } @Override @@ -267,7 +281,7 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements ModuleConfiguration config = getModuleConfiguration(); Float scaleFactor = (Float) config.get(CONFIG_KEY_SCALEVALUE); if(scaleFactor == null || scaleFactor.floatValue() < 0.0000001f) { - return new Float(1.0f); + return 1.0f; } return 1.0f * scaleFactor.floatValue();//LTI 1.1 return between 0.0 - 1.0 } @@ -277,7 +291,7 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements if (!hasScoreConfigured()) { throw new OLATRuntimeException(MSCourseNode.class, "getMaxScore not defined when hasScore set to false", null); } - return new Float(0.0f); + return 0.0f; } @Override @@ -308,6 +322,11 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements return false; } + @Override + public boolean hasIndividualAsssessmentDocuments() { + return getModuleConfiguration().getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_INDIVIDUAL_ASSESSMENT_DOCS, false); + } + @Override public boolean hasAttemptsConfigured() { // having score defined means the node is assessable @@ -363,6 +382,13 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements return am.getNodeComment(this, mySelf); } + @Override + public List<File> getIndividualAssessmentDocuments(UserCourseEnvironment userCourseEnvironment) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity mySelf = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + return am.getIndividualAssessmentDocuments(this, mySelf); + } + @Override public String getUserCoachComment(UserCourseEnvironment userCourseEnvironment) { AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); @@ -421,6 +447,24 @@ public class BasicLTICourseNode extends AbstractAccessableCourseNode implements } } + @Override + public void addIndividualAssessmentDocument(File document, String filename, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.addIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document, filename); + } + } + + @Override + public void removeIndividualAssessmentDocument(File document, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.removeIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document); + } + } + @Override public void incrementUserAttempts(UserCourseEnvironment userCourseEnvironment) { AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); diff --git a/src/main/java/org/olat/course/nodes/BlogCourseNode.java b/src/main/java/org/olat/course/nodes/BlogCourseNode.java index 78c4e380ffba04065d81c7e5ca4b2e132d12be3a..ca248a241e0e9a6777492ce374c3a1e0ce7e555b 100644 --- a/src/main/java/org/olat/course/nodes/BlogCourseNode.java +++ b/src/main/java/org/olat/course/nodes/BlogCourseNode.java @@ -23,6 +23,7 @@ import java.io.File; import java.util.List; import java.util.Locale; +import org.olat.core.commons.services.notifications.SubscriptionContext; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.stack.BreadcrumbPanel; import org.olat.core.gui.control.Controller; @@ -34,6 +35,7 @@ import org.olat.core.id.context.ContextEntry; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Util; import org.olat.core.util.ValidationStatus; +import org.olat.course.CourseModule; import org.olat.course.ICourse; import org.olat.course.editor.CourseEditorEnv; import org.olat.course.editor.NodeEditController; @@ -113,6 +115,8 @@ public class BlogCourseNode extends AbstractFeedCourseNode { } else { callback = new FeedNodeSecurityCallback(ne, isAdmin, isOwner, isGuest); } + SubscriptionContext subsContext = CourseModule.createSubscriptionContext(userCourseEnv.getCourseEnvironment(), this); + callback.setSubscriptionContext(subsContext); ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrap(this)); FeedMainController blogCtr = BlogUIFactory.getInstance(ureq.getLocale()).createMainController(entry.getOlatResource(), ureq, wControl, callback, courseId, nodeId); diff --git a/src/main/java/org/olat/course/nodes/CalCourseNode.java b/src/main/java/org/olat/course/nodes/CalCourseNode.java index 939da2dc15ef09a811e072845227d0c5252be79e..c61687cb7c7e4e2e0d8b68339def1507758f8a7d 100644 --- a/src/main/java/org/olat/course/nodes/CalCourseNode.java +++ b/src/main/java/org/olat/course/nodes/CalCourseNode.java @@ -222,15 +222,11 @@ public class CalCourseNode extends AbstractAccessableCourseNode { * @see org.olat.course.nodes.GenericCourseNode#calcAccessAndVisibility(org.olat.course.condition.interpreter.ConditionInterpreter, * org.olat.course.run.userview.NodeEvaluation) */ + @Override protected void calcAccessAndVisibility(ConditionInterpreter ci, NodeEvaluation nodeEval) { super.calcAccessAndVisibility(ci, nodeEval); // evaluate the preconditions boolean editor = (getPreConditionEdit().getConditionExpression() == null ? true : ci.evaluateCondition(getPreConditionEdit())); nodeEval.putAccessStatus(EDIT_CONDITION_ID, editor); } - - public void cleanupOnDelete(ICourse course) { - // no clean up: subscription or on the course calendar - } - } \ No newline at end of file diff --git a/src/main/java/org/olat/course/nodes/Card2BrainCourseNode.java b/src/main/java/org/olat/course/nodes/Card2BrainCourseNode.java new file mode 100644 index 0000000000000000000000000000000000000000..8ea83a383811317dab66d2a294f1d0ccca91421f --- /dev/null +++ b/src/main/java/org/olat/course/nodes/Card2BrainCourseNode.java @@ -0,0 +1,176 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes; + +import java.util.List; + +import org.olat.core.CoreSpringFactory; +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.stack.BreadcrumbPanel; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.messages.MessageUIFactory; +import org.olat.core.gui.control.generic.tabbable.TabbableController; +import org.olat.core.gui.translator.Translator; +import org.olat.core.util.Util; +import org.olat.course.ICourse; +import org.olat.course.condition.ConditionEditController; +import org.olat.course.editor.CourseEditorEnv; +import org.olat.course.editor.NodeEditController; +import org.olat.course.editor.StatusDescription; +import org.olat.course.nodes.card2brain.Card2BrainEditController; +import org.olat.course.nodes.card2brain.Card2BrainPeekViewController; +import org.olat.course.nodes.card2brain.Card2BrainRunController; +import org.olat.course.run.navigation.NodeRunConstructionResult; +import org.olat.course.run.userview.NodeEvaluation; +import org.olat.course.run.userview.UserCourseEnvironment; +import org.olat.modules.card2brain.Card2BrainModule; +import org.olat.repository.RepositoryEntry; + +/** + * + * Initial date: 10.04.2017<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class Card2BrainCourseNode extends AbstractAccessableCourseNode { + + private static final long serialVersionUID = -7338962050297071079L; + + private static final String TYPE = "card2brain"; + + public static final String CONFIG_FLASHCARD_ALIAS = "flashcardAlias"; + public static final String CONFIG_ENABLE_PRIVATE_LOGIN = "enablePrivateLogin"; + public static final String CONFIG_PRIVATE_KEY = "privateKey"; + public static final String CONFIG_PRIVATE_SECRET = "privateSecret"; + + public Card2BrainCourseNode() { + super(TYPE); + } + + @Override + public TabbableController createEditController(UserRequest ureq, WindowControl wControl, BreadcrumbPanel stackPanel, + ICourse course, UserCourseEnvironment euce) { + updateModuleConfigDefaults(false); + Card2BrainEditController childTabCntrllr = new Card2BrainEditController(ureq, wControl, this, course, euce); + CourseNode chosenNode = course.getEditorTreeModel().getCourseNode(euce.getCourseEditorEnv().getCurrentCourseNodeId()); + return new NodeEditController(ureq, wControl, course.getEditorTreeModel(), course, chosenNode, euce, childTabCntrllr); + } + + @Override + public NodeRunConstructionResult createNodeRunConstructionResult(UserRequest ureq, WindowControl wControl, + UserCourseEnvironment userCourseEnv, NodeEvaluation ne, String nodecmd) { + + updateModuleConfigDefaults(false); + + Controller runCtrl; + if(userCourseEnv.isCourseReadOnly()) { + Translator trans = Util.createPackageTranslator(Card2BrainCourseNode.class, ureq.getLocale()); + String title = trans.translate("freezenoaccess.title"); + String message = trans.translate("freezenoaccess.message"); + runCtrl = MessageUIFactory.createInfoMessage(ureq, wControl, title, message); + } else if (userCourseEnv.getIdentityEnvironment().getRoles().isGuestOnly()) { + Translator trans = Util.createPackageTranslator(Card2BrainCourseNode.class, ureq.getLocale()); + String title = trans.translate("guestnoaccess.title"); + String message = trans.translate("guestnoaccess.message"); + runCtrl = MessageUIFactory.createInfoMessage(ureq, wControl, title, message); + } else { + runCtrl = new Card2BrainRunController(ureq, wControl, this.getModuleConfiguration()); + } + Controller ctrl = TitledWrapperHelper.getWrapper(ureq, wControl, runCtrl, this, "o_card2brain_icon"); + return new NodeRunConstructionResult(ctrl); + } + + @Override + public Controller createPreviewController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv, NodeEvaluation ne) { + return createNodeRunConstructionResult(ureq, wControl, userCourseEnv, ne, null).getRunController(); + } + + @Override + public Controller createPeekViewRunController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv, NodeEvaluation ne) { + return new Card2BrainPeekViewController(ureq, wControl, + userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry().getKey(), + getIdent(), + this.getModuleConfiguration().getStringValue(Card2BrainCourseNode.CONFIG_FLASHCARD_ALIAS)); + } + + @SuppressWarnings("deprecation") + @Override + public StatusDescription[] isConfigValid(CourseEditorEnv cev) { + String translatorStr = Util.getPackageName(ConditionEditController.class); + List<StatusDescription> statusDescs = isConfigValidWithTranslator(cev, translatorStr, getConditionExpressions()); + return StatusDescriptionHelper.sort(statusDescs); + } + + @SuppressWarnings("deprecation") + @Override + public StatusDescription isConfigValid() { + if(oneClickStatusCache!=null) { + return oneClickStatusCache[0]; + } + + StatusDescription sd = StatusDescription.NOERROR; + Card2BrainModule card2BrainModule = CoreSpringFactory.getImpl(Card2BrainModule.class); + boolean isEnterpriseLogin = !getModuleConfiguration().getBooleanSafe(CONFIG_ENABLE_PRIVATE_LOGIN); + if (!card2BrainModule.isEnterpriseLoginEnabled() && !card2BrainModule.isPrivateLoginEnabled()) { + // both logins are deactivated + String shortKey = "edit.warning.bothLoginDisabled.short"; + String longKey = "edit.warning.bothLoginDisabled"; + String[] params = new String[] { this.getShortTitle() }; + String translPackage = Util.getPackageName(Card2BrainEditController.class); + sd = new StatusDescription(StatusDescription.ERROR, shortKey, longKey, params, translPackage); + sd.setDescriptionForUnit(getIdent()); + // set which pane is affected by error + sd.setActivateableViewIdentifier(Card2BrainEditController.PANE_TAB_VCCONFIG); + } else if (isEnterpriseLogin && !card2BrainModule.isEnterpriseLoginEnabled()) { + // enterprise login is not enabled anymore + String shortKey = "edit.warning.enterpriseLoginDisabled.short"; + String longKey = "edit.warning.enterpriseLoginDisabled"; + String[] params = new String[] { this.getShortTitle() }; + String translPackage = Util.getPackageName(Card2BrainEditController.class); + sd = new StatusDescription(StatusDescription.ERROR, shortKey, longKey, params, translPackage); + sd.setDescriptionForUnit(getIdent()); + // set which pane is affected by error + sd.setActivateableViewIdentifier(Card2BrainEditController.PANE_TAB_VCCONFIG); + } else if (!isEnterpriseLogin && !card2BrainModule.isPrivateLoginEnabled()) { + // private login is not enabled anymore + String shortKey = "edit.warning.privateLoginDisabled.short"; + String longKey = "edit.warning.privateLoginDisabled"; + String[] params = new String[] { this.getShortTitle() }; + String translPackage = Util.getPackageName(Card2BrainEditController.class); + sd = new StatusDescription(StatusDescription.ERROR, shortKey, longKey, params, translPackage); + sd.setDescriptionForUnit(getIdent()); + // set which pane is affected by error + sd.setActivateableViewIdentifier(Card2BrainEditController.PANE_TAB_VCCONFIG); + } + return sd; + } + + @Override + public boolean needsReferenceToARepositoryEntry() { + return false; + } + + @Override + public RepositoryEntry getReferencedRepositoryEntry() { + return null; + } + +} diff --git a/src/main/java/org/olat/course/nodes/CheckListCourseNode.java b/src/main/java/org/olat/course/nodes/CheckListCourseNode.java index 453898ab2b81bd38fbb051c7e042cba454038936..1b9dfde7da6e7c24f597a61f70f6fe51e6cee419 100644 --- a/src/main/java/org/olat/course/nodes/CheckListCourseNode.java +++ b/src/main/java/org/olat/course/nodes/CheckListCourseNode.java @@ -317,13 +317,24 @@ public class CheckListCourseNode extends AbstractAccessableCourseNode implements String userCommentValue = am.getNodeComment(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); return userCommentValue; } + + @Override + public List<File> getIndividualAssessmentDocuments(UserCourseEnvironment userCourseEnvironment) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity mySelf = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + return am.getIndividualAssessmentDocuments(this, mySelf); + } /** * @see org.olat.course.nodes.AssessableCourseNode#hasCommentConfigured() */ @Override public boolean hasCommentConfigured() { - // never has comments + return true; + } + + @Override + public boolean hasIndividualAsssessmentDocuments() { return true; } @@ -398,12 +409,30 @@ public class CheckListCourseNode extends AbstractAccessableCourseNode implements */ @Override public void updateUserUserComment(String userComment, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { - AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); - Identity mySelf = userCourseEnvironment.getIdentityEnvironment().getIdentity(); if (userComment != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity mySelf = userCourseEnvironment.getIdentityEnvironment().getIdentity(); am.saveNodeComment(this, coachingIdentity, mySelf, userComment); } } + + @Override + public void addIndividualAssessmentDocument(File document, String filename, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.addIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document, filename); + } + } + + @Override + public void removeIndividualAssessmentDocument(File document, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.removeIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document); + } + } /** * @see org.olat.course.nodes.AssessableCourseNode#getUserAttempts(org.olat.course.run.userview.UserCourseEnvironment) diff --git a/src/main/java/org/olat/course/nodes/DialogCourseNode.java b/src/main/java/org/olat/course/nodes/DialogCourseNode.java index e354d3ec41ca4565830fe195f33b491f5e455d8e..6808044cc6291f91694701585603a8a250b5bf69 100644 --- a/src/main/java/org/olat/course/nodes/DialogCourseNode.java +++ b/src/main/java/org/olat/course/nodes/DialogCourseNode.java @@ -199,7 +199,10 @@ public class DialogCourseNode extends AbstractAccessableCourseNode { * life cycle of node data e.g properties stuff should be deleted if node gets * deleted life cycle: create - delete - migrate */ + @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); + DialogElementsPropertyManager depm = DialogElementsPropertyManager.getInstance(); //remove all possible forum subscriptions diff --git a/src/main/java/org/olat/course/nodes/ENCourseNode.java b/src/main/java/org/olat/course/nodes/ENCourseNode.java index 147a3d61042f7a98b3d7f1039f252e20496d9124..e6cb761a2a1b1d0162b86578779b62f5ede2d8bb 100644 --- a/src/main/java/org/olat/course/nodes/ENCourseNode.java +++ b/src/main/java/org/olat/course/nodes/ENCourseNode.java @@ -387,6 +387,7 @@ public class ENCourseNode extends AbstractAccessableCourseNode { /** * @see org.olat.course.nodes.CourseNode#getReferencedRepositoryEntry() */ + @Override public RepositoryEntry getReferencedRepositoryEntry() { return null; } @@ -394,6 +395,7 @@ public class ENCourseNode extends AbstractAccessableCourseNode { /** * @see org.olat.course.nodes.CourseNode#needsReferenceToARepositoryEntry() */ + @Override public boolean needsReferenceToARepositoryEntry() { return false; } @@ -401,6 +403,7 @@ public class ENCourseNode extends AbstractAccessableCourseNode { /** * @see org.olat.course.nodes.CourseNode#cleanupOnDelete(org.olat.course.ICourse) */ + @Override public void cleanupOnDelete(ICourse course) { super.cleanupOnDelete(course); CoursePropertyManager cpm = PersistingCoursePropertyManager.getInstance(course); diff --git a/src/main/java/org/olat/course/nodes/FOCourseNode.java b/src/main/java/org/olat/course/nodes/FOCourseNode.java index fee511d8f348902074a66262a0f18ecbe93790df..566c6dcb7ab9c2c694b5c6160778615cfa84554c 100644 --- a/src/main/java/org/olat/course/nodes/FOCourseNode.java +++ b/src/main/java/org/olat/course/nodes/FOCourseNode.java @@ -466,7 +466,10 @@ public class FOCourseNode extends AbstractAccessableCourseNode { /** * @see org.olat.course.nodes.GenericCourseNode#cleanupOnDelete(org.olat.course.ICourse) */ + @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); + // mark the subscription to this node as deleted SubscriptionContext forumSubContext = CourseModule.createTechnicalSubscriptionContext(course.getCourseEnvironment(), this); NotificationsManager.getInstance().delete(forumSubContext); diff --git a/src/main/java/org/olat/course/nodes/GTACourseNode.java b/src/main/java/org/olat/course/nodes/GTACourseNode.java index df29052e8800c46fe2638e92dbfee4e3b79a3c5a..f27f24dad70ca743d3afaf3e36cbd9078f97dd9c 100644 --- a/src/main/java/org/olat/course/nodes/GTACourseNode.java +++ b/src/main/java/org/olat/course/nodes/GTACourseNode.java @@ -677,6 +677,8 @@ public class GTACourseNode extends AbstractAccessableCourseNode implements Persi @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); + GTAManager gtaManager = CoreSpringFactory.getImpl(GTAManager.class); //tasks File taskDirectory = gtaManager.getTasksDirectory(course.getCourseEnvironment(), this); @@ -765,6 +767,16 @@ public class GTACourseNode extends AbstractAccessableCourseNode implements Persi return false; } + @Override + public boolean hasIndividualAsssessmentDocuments() { + boolean hasGrading = getModuleConfiguration().getBooleanSafe(GTASK_GRADING); + if (hasGrading) { + return getModuleConfiguration() + .getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_INDIVIDUAL_ASSESSMENT_DOCS, false); + } + return false; + } + @Override public boolean hasAttemptsConfigured(){ return true; @@ -910,6 +922,12 @@ public class GTACourseNode extends AbstractAccessableCourseNode implements Persi AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); return am.getNodeComment(this, userCourseEnv.getIdentityEnvironment().getIdentity()); } + + @Override + public List<File> getIndividualAssessmentDocuments(UserCourseEnvironment userCourseEnvironment) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + return am.getIndividualAssessmentDocuments(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); + } @Override public String getUserCoachComment(UserCourseEnvironment userCourseEnv) { @@ -940,12 +958,30 @@ public class GTACourseNode extends AbstractAccessableCourseNode implements Persi @Override public void updateUserUserComment(String userComment, UserCourseEnvironment userCourseEnv, Identity coachingIdentity) { - AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); - Identity assessedIdentity = userCourseEnv.getIdentityEnvironment().getIdentity(); if (userComment != null) { + AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnv.getIdentityEnvironment().getIdentity(); am.saveNodeComment(this, coachingIdentity, assessedIdentity, userComment); } } + + @Override + public void addIndividualAssessmentDocument(File document, String filename, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.addIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document, filename); + } + } + + @Override + public void removeIndividualAssessmentDocument(File document, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.removeIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document); + } + } @Override public void incrementUserAttempts(UserCourseEnvironment userCourseEnv) { diff --git a/src/main/java/org/olat/course/nodes/GoToMeetingCourseNode.java b/src/main/java/org/olat/course/nodes/GoToMeetingCourseNode.java index b55622f078dcd9e84a1bd4059eced786381b6d1c..552dfb5f1c341062bd36c7b3347b45b8664f9a95 100644 --- a/src/main/java/org/olat/course/nodes/GoToMeetingCourseNode.java +++ b/src/main/java/org/olat/course/nodes/GoToMeetingCourseNode.java @@ -180,6 +180,7 @@ public class GoToMeetingCourseNode extends AbstractAccessableCourseNode { @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); // remove meeting try { GoToMeetingManager provider = CoreSpringFactory.getImpl(GoToMeetingManager.class); diff --git a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java index 9ec8000b8c1ee6a6d61f74e8763ab9d27760fa98..52f880d66bdd534002f411e0af0f8ccf81ae13dc 100644 --- a/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java +++ b/src/main/java/org/olat/course/nodes/IQSELFCourseNode.java @@ -62,9 +62,9 @@ import org.olat.ims.qti.QTIResultManager; import org.olat.ims.qti.QTIResultSet; import org.olat.ims.qti.export.QTIExportEssayItemFormatConfig; import org.olat.ims.qti.export.QTIExportFIBItemFormatConfig; -import org.olat.ims.qti.export.QTIExportFormatter; import org.olat.ims.qti.export.QTIExportFormatterCSVType1; import org.olat.ims.qti.export.QTIExportItemFormatConfig; +import org.olat.ims.qti.export.QTIExportItemFormatDelegate; import org.olat.ims.qti.export.QTIExportKPRIMItemFormatConfig; import org.olat.ims.qti.export.QTIExportMCQItemFormatConfig; import org.olat.ims.qti.export.QTIExportManager; @@ -243,6 +243,7 @@ public class IQSELFCourseNode extends AbstractAccessableCourseNode implements Se */ @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); // 1) Delete all qtiresults for this node. No properties used on this node String repositorySoftKey = (String) getModuleConfiguration().get(IQEditController.CONFIG_KEY_REPOSITORY_SOFTKEY); RepositoryEntry re = RepositoryManager.getInstance().lookupRepositoryEntryBySoftkey(repositorySoftKey, false); @@ -268,14 +269,14 @@ public class IQSELFCourseNode extends AbstractAccessableCourseNode implements Se return true; } else { QTIExportManager qem = QTIExportManager.getInstance(); - QTIExportFormatter qef = new QTIExportFormatterCSVType1(locale, "\t", "\"", "\r\n", false); - ((QTIExportFormatterCSVType1)qef).setAnonymous(true); - if (options != null && options.getQtiExportItemFormatConfig() != null) { + QTIExportFormatterCSVType1 qef = new QTIExportFormatterCSVType1(locale, "\t", "\"", "\r\n", false); + qef.setAnonymous(true); + if (options != null && options.getExportFormat() != null) { Map<Class<?>, QTIExportItemFormatConfig> itemConfigs = new HashMap<>(); Class<?>[] itemTypes = new Class<?>[] {QTIExportSCQItemFormatConfig.class, QTIExportMCQItemFormatConfig.class, QTIExportKPRIMItemFormatConfig.class, QTIExportFIBItemFormatConfig.class, QTIExportEssayItemFormatConfig.class}; for (Class<?> itemClass : itemTypes) { - itemConfigs.put(itemClass, options.getQtiExportItemFormatConfig()); + itemConfigs.put(itemClass, new QTIExportItemFormatDelegate(options.getExportFormat())); } qef.setMapWithExportItemConfigs(itemConfigs); } diff --git a/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java b/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java index e78d3fd37473f5650e3777dce5503d90b8be97f5..2b1d272d404c08d020e92e14dfcdcaa7908532a7 100644 --- a/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java +++ b/src/main/java/org/olat/course/nodes/IQSURVCourseNode.java @@ -309,6 +309,8 @@ public class IQSURVCourseNode extends AbstractAccessableCourseNode implements QT */ @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); + CoursePropertyManager pm = course.getCourseEnvironment().getCoursePropertyManager(); // 1) Delete all properties: attempts pm.deleteNodeProperties(this, null); diff --git a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java index 0e65b70e3d01e2d7971aa296d57ed75b32e2d73a..2b7a9cd933e61b5e2e57e775f537304a38b86c37 100644 --- a/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java +++ b/src/main/java/org/olat/course/nodes/IQTESTCourseNode.java @@ -86,6 +86,7 @@ import org.olat.ims.qti.export.QTIExportFIBItemFormatConfig; import org.olat.ims.qti.export.QTIExportFormatter; import org.olat.ims.qti.export.QTIExportFormatterCSVType1; import org.olat.ims.qti.export.QTIExportItemFormatConfig; +import org.olat.ims.qti.export.QTIExportItemFormatDelegate; import org.olat.ims.qti.export.QTIExportKPRIMItemFormatConfig; import org.olat.ims.qti.export.QTIExportMCQItemFormatConfig; import org.olat.ims.qti.export.QTIExportManager; @@ -260,7 +261,8 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements Pe if(options.isAdmin()) { tools.add(new QTI21ResetToolController(ureq, wControl, courseEnv, options, this)); } - if(qtiService.needManualCorrection(qtiTestEntry)) { + if(qtiService.needManualCorrection(qtiTestEntry) + || IQEditController.CORRECTION_MANUAL.equals(getModuleConfiguration().getStringValue(IQEditController.CONFIG_CORRECTION_MODE))) { tools.add(new QTI21CorrectionToolController(ureq, wControl, courseEnv, options, this)); } if(getModuleConfiguration().getBooleanSafe(IQEditController.CONFIG_DIGITAL_SIGNATURE, false)) { @@ -474,6 +476,11 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements Pe return true; } + @Override + public boolean hasIndividualAsssessmentDocuments() { + return true;// like user comment + } + /** * @see org.olat.course.nodes.AssessableCourseNode#hasPassedConfigured() */ @@ -549,6 +556,24 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements Pe am.saveNodeComment(this, coachingIdentity, mySelf, userComment); } } + + @Override + public void addIndividualAssessmentDocument(File document, String filename, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.addIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document, filename); + } + } + + @Override + public void removeIndividualAssessmentDocument(File document, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.removeIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document); + } + } /** * @see org.olat.course.nodes.AssessableCourseNode#getUserCoachComment(org.olat.course.run.userview.UserCourseEnvironment) @@ -567,9 +592,13 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements Pe @Override public String getUserUserComment(UserCourseEnvironment userCourseEnvironment) { AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); - Identity mySelf = userCourseEnvironment.getIdentityEnvironment().getIdentity(); - String userCommentValue = am.getNodeComment(this, mySelf); - return userCommentValue; + return am.getNodeComment(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); + } + + @Override + public List<File> getIndividualAssessmentDocuments(UserCourseEnvironment userCourseEnvironment) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + return am.getIndividualAssessmentDocuments(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); } /** @@ -627,6 +656,8 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements Pe */ @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); + CoursePropertyManager pm = course.getCourseEnvironment().getCoursePropertyManager(); // 1) Delete all properties: score, passed, log, comment, coach_comment, // attempts @@ -667,7 +698,6 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements Pe } else if(ImsQTI21Resource.TYPE_NAME.equals(re.getOlatResource().getResourceableTypeName())) { // 2a) create export resource QTI21Service qtiService = CoreSpringFactory.getImpl(QTI21Service.class); - List<Identity> identities = ScoreAccountingHelper.loadUsers(courseEnv, options); new QTI21ResultsExportMediaResource(courseEnv, identities, this, qtiService, ureq, locale).exportTestResults(exportStream); // excel results @@ -684,12 +714,12 @@ public class IQTESTCourseNode extends AbstractAccessableCourseNode implements Pe String shortTitle = getShortTitle(); QTIExportManager qem = QTIExportManager.getInstance(); QTIExportFormatter qef = new QTIExportFormatterCSVType1(locale, "\t", "\"", "\r\n", false); - if (options != null && options.getQtiExportItemFormatConfig() != null) { + if (options != null && options.getExportFormat() != null) { Map<Class<?>, QTIExportItemFormatConfig> itemConfigs = new HashMap<>(); Class<?>[] itemTypes = new Class<?>[] {QTIExportSCQItemFormatConfig.class, QTIExportMCQItemFormatConfig.class, QTIExportKPRIMItemFormatConfig.class, QTIExportFIBItemFormatConfig.class, QTIExportEssayItemFormatConfig.class}; for (Class<?> itemClass : itemTypes) { - itemConfigs.put(itemClass, options.getQtiExportItemFormatConfig()); + itemConfigs.put(itemClass, new QTIExportItemFormatDelegate(options.getExportFormat())); } qef.setMapWithExportItemConfigs(itemConfigs); } diff --git a/src/main/java/org/olat/course/nodes/InfoCourseNode.java b/src/main/java/org/olat/course/nodes/InfoCourseNode.java index da5ed5a9768c50bce3717e053d01b61120f866de..b166086cbe814796802bd32c3a11e905b7b74ea2 100644 --- a/src/main/java/org/olat/course/nodes/InfoCourseNode.java +++ b/src/main/java/org/olat/course/nodes/InfoCourseNode.java @@ -248,6 +248,7 @@ public class InfoCourseNode extends AbstractAccessableCourseNode { * is called when deleting this node, clean up info-messages and subscriptions! */ public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); // delete infoMessages and subscriptions (OLAT-6171) String resSubpath = getIdent(); InfoMessageFrontendManager infoService = CoreSpringFactory.getImpl(InfoMessageFrontendManager.class); diff --git a/src/main/java/org/olat/course/nodes/MSCourseNode.java b/src/main/java/org/olat/course/nodes/MSCourseNode.java index f28ce0d96fa33c32be6728057009785bd1d0935e..1ae833a55b7fe787f3063474b7bea28d94ed8214 100644 --- a/src/main/java/org/olat/course/nodes/MSCourseNode.java +++ b/src/main/java/org/olat/course/nodes/MSCourseNode.java @@ -25,6 +25,7 @@ package org.olat.course.nodes; +import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Locale; @@ -92,6 +93,8 @@ public class MSCourseNode extends AbstractAccessableCourseNode implements Persis public static final String CONFIG_KEY_PASSED_CUT_VALUE = "passedCutValue"; /** configuration: comment can be set */ public static final String CONFIG_KEY_HAS_COMMENT_FIELD = "hasCommentField"; + /** configuration: individual assessment document can be set (use getBooleanSafe default false) */ + public static final String CONFIG_KEY_HAS_INDIVIDUAL_ASSESSMENT_DOCS = "hasIndividualAsssessmentDocs"; /** configuration: infotext for user */ public static final String CONFIG_KEY_INFOTEXT_USER = "infoTextUser"; /** configuration: infotext for coach */ @@ -252,6 +255,8 @@ public class MSCourseNode extends AbstractAccessableCourseNode implements Persis */ @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); + CoursePropertyManager pm = course.getCourseEnvironment().getCoursePropertyManager(); // Delete all properties: score, passed, log, comment, coach_comment pm.deleteNodeProperties(this, null); @@ -263,6 +268,7 @@ public class MSCourseNode extends AbstractAccessableCourseNode implements Persis /** * @see org.olat.course.nodes.AssessableCourseNode#hasCommentConfigured() */ + @Override public boolean hasCommentConfigured() { ModuleConfiguration config = getModuleConfiguration(); Boolean comment = (Boolean) config.get(CONFIG_KEY_HAS_COMMENT_FIELD); @@ -270,9 +276,15 @@ public class MSCourseNode extends AbstractAccessableCourseNode implements Persis return comment.booleanValue(); } + @Override + public boolean hasIndividualAsssessmentDocuments() { + return getModuleConfiguration().getBooleanSafe(CONFIG_KEY_HAS_INDIVIDUAL_ASSESSMENT_DOCS, false); + } + /** * @see org.olat.course.nodes.AssessableCourseNode#hasPassedConfigured() */ + @Override public boolean hasPassedConfigured() { ModuleConfiguration config = getModuleConfiguration(); Boolean passed = (Boolean) config.get(CONFIG_KEY_HAS_PASSED_FIELD); @@ -353,8 +365,13 @@ public class MSCourseNode extends AbstractAccessableCourseNode implements Persis @Override public String getUserUserComment(UserCourseEnvironment userCourseEnvironment) { AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); - String userCommentValue = am.getNodeComment(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); - return userCommentValue; + return am.getNodeComment(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); + } + + @Override + public List<File> getIndividualAssessmentDocuments(UserCourseEnvironment userCourseEnvironment) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + return am.getIndividualAssessmentDocuments(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); } /** @@ -409,12 +426,30 @@ public class MSCourseNode extends AbstractAccessableCourseNode implements Persis */ @Override public void updateUserUserComment(String userComment, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { - AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); - Identity mySelf = userCourseEnvironment.getIdentityEnvironment().getIdentity(); if (userComment != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity mySelf = userCourseEnvironment.getIdentityEnvironment().getIdentity(); am.saveNodeComment(this, coachingIdentity, mySelf, userComment); } } + + @Override + public void addIndividualAssessmentDocument(File document, String filename, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.addIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document, filename); + } + } + + @Override + public void removeIndividualAssessmentDocument(File document, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.removeIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document); + } + } /** * @see org.olat.course.nodes.AssessableCourseNode#getUserAttempts(org.olat.course.run.userview.UserCourseEnvironment) diff --git a/src/main/java/org/olat/course/nodes/OpenMeetingsCourseNode.java b/src/main/java/org/olat/course/nodes/OpenMeetingsCourseNode.java index b281f5d80f16e476264b83cb3853c5c5d807f7ae..5c4076d99d9ff61cf4a27b93a4dd780e46cf3cb0 100644 --- a/src/main/java/org/olat/course/nodes/OpenMeetingsCourseNode.java +++ b/src/main/java/org/olat/course/nodes/OpenMeetingsCourseNode.java @@ -188,6 +188,7 @@ public class OpenMeetingsCourseNode extends AbstractAccessableCourseNode { @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); // load configuration OpenMeetingsManager provider = CoreSpringFactory.getImpl(OpenMeetingsManager.class); // remove meeting diff --git a/src/main/java/org/olat/course/nodes/PFCourseNode.java b/src/main/java/org/olat/course/nodes/PFCourseNode.java index 6be5b9fd952213f0e1b0d750f10be236d0fde88e..efebb7a2655519dd97dfdb199284e5b65ddfbfd3 100644 --- a/src/main/java/org/olat/course/nodes/PFCourseNode.java +++ b/src/main/java/org/olat/course/nodes/PFCourseNode.java @@ -267,6 +267,7 @@ public class PFCourseNode extends AbstractAccessableCourseNode { @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); // mark the subscription to this node as deleted SubscriptionContext folderSubContext = CourseModule.createTechnicalSubscriptionContext(course.getCourseEnvironment(), this); NotificationsManager.getInstance().delete(folderSubContext); diff --git a/src/main/java/org/olat/course/nodes/PodcastCourseNode.java b/src/main/java/org/olat/course/nodes/PodcastCourseNode.java index f806a9f7b7c7aff840ba22f9895bf86aa20afad4..e7295455b638c45cbc5605b035bc9790104087d1 100644 --- a/src/main/java/org/olat/course/nodes/PodcastCourseNode.java +++ b/src/main/java/org/olat/course/nodes/PodcastCourseNode.java @@ -23,6 +23,7 @@ import java.io.File; import java.util.List; import java.util.Locale; +import org.olat.core.commons.services.notifications.SubscriptionContext; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.stack.BreadcrumbPanel; import org.olat.core.gui.control.Controller; @@ -34,6 +35,7 @@ import org.olat.core.id.context.ContextEntry; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Util; import org.olat.core.util.ValidationStatus; +import org.olat.course.CourseModule; import org.olat.course.ICourse; import org.olat.course.editor.CourseEditorEnv; import org.olat.course.editor.NodeEditController; @@ -113,6 +115,8 @@ public class PodcastCourseNode extends AbstractFeedCourseNode { } else { callback = new FeedNodeSecurityCallback(ne, isAdmin, isOwner, isGuest); } + SubscriptionContext subsContext = CourseModule.createSubscriptionContext(userCourseEnv.getCourseEnvironment(), this); + callback.setSubscriptionContext(subsContext); ThreadLocalUserActivityLogger.addLoggingResourceInfo(LoggingResourceable.wrap(this)); FeedMainController podcastCtr = PodcastUIFactory.getInstance(ureq.getLocale()).createMainController(entry.getOlatResource(), ureq, control, callback, courseId, nodeId); diff --git a/src/main/java/org/olat/course/nodes/PortfolioCourseNode.java b/src/main/java/org/olat/course/nodes/PortfolioCourseNode.java index 35fe56045d89ebe4e23ee7cda926d917297ff762..9ed76d2b34050a7d9dda6842e7b45a13b22916d7 100644 --- a/src/main/java/org/olat/course/nodes/PortfolioCourseNode.java +++ b/src/main/java/org/olat/course/nodes/PortfolioCourseNode.java @@ -349,6 +349,12 @@ public class PortfolioCourseNode extends AbstractAccessableCourseNode implements Boolean comment = (Boolean) config.get(MSCourseNode.CONFIG_KEY_HAS_COMMENT_FIELD); return (comment == null) ? false : comment.booleanValue(); } + + @Override + public boolean hasIndividualAsssessmentDocuments() { + return getModuleConfiguration() + .getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_INDIVIDUAL_ASSESSMENT_DOCS, false); + } @Override public boolean hasAttemptsConfigured() { @@ -400,8 +406,13 @@ public class PortfolioCourseNode extends AbstractAccessableCourseNode implements @Override public String getUserUserComment(UserCourseEnvironment userCourseEnvironment) { AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); - String userCommentValue = am.getNodeComment(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); - return userCommentValue; + return am.getNodeComment(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); + } + + @Override + public List<File> getIndividualAssessmentDocuments(UserCourseEnvironment userCourseEnvironment) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + return am.getIndividualAssessmentDocuments(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); } @Override @@ -459,12 +470,30 @@ public class PortfolioCourseNode extends AbstractAccessableCourseNode implements @Override public void updateUserUserComment(String userComment, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { - AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); - Identity mySelf = userCourseEnvironment.getIdentityEnvironment().getIdentity(); if (userComment != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity mySelf = userCourseEnvironment.getIdentityEnvironment().getIdentity(); am.saveNodeComment(this, coachingIdentity, mySelf, userComment); } } + + @Override + public void addIndividualAssessmentDocument(File document, String filename, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.addIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document, filename); + } + } + + @Override + public void removeIndividualAssessmentDocument(File document, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.removeIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document); + } + } @Override public void incrementUserAttempts(UserCourseEnvironment userCourseEnvironment) { diff --git a/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java b/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java index af415a7b10b4b6a00c8e0f1b16483fb048c73db2..af933b4f557e2d4b893ef588b8b655e80bff0786 100644 --- a/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java +++ b/src/main/java/org/olat/course/nodes/ProjectBrokerCourseNode.java @@ -497,6 +497,11 @@ public class ProjectBrokerCourseNode extends GenericCourseNode implements Persis return false; } + @Override + public boolean hasIndividualAsssessmentDocuments() { + return false; + } + /** * @see org.olat.course.nodes.AssessableCourseNode#hasPassedConfigured() */ @@ -570,8 +575,13 @@ public class ProjectBrokerCourseNode extends GenericCourseNode implements Persis @Override public String getUserUserComment(UserCourseEnvironment userCourseEnvironment) { AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); - String userCommentValue = am.getNodeComment(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); - return userCommentValue; + return am.getNodeComment(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); + } + + @Override + public List<File> getIndividualAssessmentDocuments(UserCourseEnvironment userCourseEnvironment) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + return am.getIndividualAssessmentDocuments(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); } /** @@ -626,12 +636,30 @@ public class ProjectBrokerCourseNode extends GenericCourseNode implements Persis */ @Override public void updateUserUserComment(String userComment, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { - AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); - Identity mySelf = userCourseEnvironment.getIdentityEnvironment().getIdentity(); if (userComment != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity mySelf = userCourseEnvironment.getIdentityEnvironment().getIdentity(); am.saveNodeComment(this, coachingIdentity, mySelf, userComment); } } + + @Override + public void addIndividualAssessmentDocument(File document, String filename, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.addIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document, filename); + } + } + + @Override + public void removeIndividualAssessmentDocument(File document, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.removeIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document); + } + } /** * @see org.olat.course.nodes.AssessableCourseNode#getUserAttempts(org.olat.course.run.userview.UserCourseEnvironment) diff --git a/src/main/java/org/olat/course/nodes/STCourseNode.java b/src/main/java/org/olat/course/nodes/STCourseNode.java index 0060d3c206e8a723064aa5f496c8c6c868ffda93..8b04afdd3d75ed4d711af09f33eb42df47329845 100644 --- a/src/main/java/org/olat/course/nodes/STCourseNode.java +++ b/src/main/java/org/olat/course/nodes/STCourseNode.java @@ -27,6 +27,7 @@ package org.olat.course.nodes; import java.io.File; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.olat.core.commons.controllers.linkchooser.CustomLinkTreeModel; @@ -471,6 +472,11 @@ public class STCourseNode extends AbstractAccessableCourseNode implements Calcul throw new OLATRuntimeException(STCourseNode.class, "No comments available in ST nodes", null); } + @Override + public List<File> getIndividualAssessmentDocuments(UserCourseEnvironment userCourseEnvironment) { + return Collections.emptyList(); + } + /** * @see org.olat.course.nodes.AssessableCourseNode#hasCommentConfigured() */ @@ -480,6 +486,11 @@ public class STCourseNode extends AbstractAccessableCourseNode implements Calcul return false; } + @Override + public boolean hasIndividualAsssessmentDocuments() { + return false; + } + /** * @see org.olat.course.nodes.AssessableCourseNode#hasPassedConfigured() */ @@ -549,6 +560,16 @@ public class STCourseNode extends AbstractAccessableCourseNode implements Calcul throw new OLATRuntimeException(STCourseNode.class, "Comment variable can't be updated in ST nodes", null); } + @Override + public void addIndividualAssessmentDocument(File document, String filename, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + throw new OLATRuntimeException(STCourseNode.class, "Document can't be uploaded in ST nodes", null); + } + + @Override + public void removeIndividualAssessmentDocument(File document, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + throw new OLATRuntimeException(STCourseNode.class, "Document can't be removed in ST nodes", null); + } + /** * @see org.olat.course.nodes.AssessableCourseNode#getUserAttempts(org.olat.course.run.userview.UserCourseEnvironment) */ diff --git a/src/main/java/org/olat/course/nodes/ScormCourseNode.java b/src/main/java/org/olat/course/nodes/ScormCourseNode.java index 1a22305e51434c7ae70ccb94d61f13751a780abb..23fda397e0089c4c78a08bf29a8750ca8b1e4004 100644 --- a/src/main/java/org/olat/course/nodes/ScormCourseNode.java +++ b/src/main/java/org/olat/course/nodes/ScormCourseNode.java @@ -427,6 +427,11 @@ public class ScormCourseNode extends AbstractAccessableCourseNode implements Per return false; } + @Override + public boolean hasIndividualAsssessmentDocuments() { + return false; + } + /** * @see org.olat.course.nodes.AssessableCourseNode#hasPassedConfigured() */ @@ -503,6 +508,24 @@ public class ScormCourseNode extends AbstractAccessableCourseNode implements Per am.saveNodeComment(this, coachingIdentity, mySelf, userComment); } } + + @Override + public void addIndividualAssessmentDocument(File document, String filename, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.addIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document, filename); + } + } + + @Override + public void removeIndividualAssessmentDocument(File document, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + if(document != null) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); + am.removeIndividualAssessmentDocument(this, coachingIdentity, assessedIdentity, document); + } + } /** * @see org.olat.course.nodes.AssessableCourseNode#getUserCoachComment(org.olat.course.run.userview.UserCourseEnvironment) @@ -522,8 +545,13 @@ public class ScormCourseNode extends AbstractAccessableCourseNode implements Per public String getUserUserComment(UserCourseEnvironment userCourseEnvironment) { AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); Identity mySelf = userCourseEnvironment.getIdentityEnvironment().getIdentity(); - String userCommentValue = am.getNodeComment(this, mySelf); - return userCommentValue; + return am.getNodeComment(this, mySelf); + } + + @Override + public List<File> getIndividualAssessmentDocuments(UserCourseEnvironment userCourseEnvironment) { + AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); + return am.getIndividualAssessmentDocuments(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); } /** @@ -621,6 +649,8 @@ public class ScormCourseNode extends AbstractAccessableCourseNode implements Per */ @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); + CoursePropertyManager pm = course.getCourseEnvironment().getCoursePropertyManager(); // 1) Delete all properties: score, passed, log, comment, coach_comment, // attempts diff --git a/src/main/java/org/olat/course/nodes/TACourseNode.java b/src/main/java/org/olat/course/nodes/TACourseNode.java index ce96e85ff22195cb4493f248b42af0b37b4acec3..b84f5a0fe4c81b2b79abd277632c6ccb585843d3 100644 --- a/src/main/java/org/olat/course/nodes/TACourseNode.java +++ b/src/main/java/org/olat/course/nodes/TACourseNode.java @@ -522,6 +522,11 @@ public class TACourseNode extends GenericCourseNode implements PersistentAssessa return false; } + @Override + public boolean hasIndividualAsssessmentDocuments() { + return false; + } + /** * @see org.olat.course.nodes.AssessableCourseNode#hasPassedConfigured() */ @@ -617,8 +622,12 @@ public class TACourseNode extends GenericCourseNode implements PersistentAssessa @Override public String getUserUserComment(UserCourseEnvironment userCourseEnvironment) { AssessmentManager am = userCourseEnvironment.getCourseEnvironment().getAssessmentManager(); - String userCommentValue = am.getNodeComment(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); - return userCommentValue; + return am.getNodeComment(this, userCourseEnvironment.getIdentityEnvironment().getIdentity()); + } + + @Override + public List<File> getIndividualAssessmentDocuments(UserCourseEnvironment userCourseEnvironment) { + return Collections.emptyList(); } /** @@ -681,6 +690,16 @@ public class TACourseNode extends GenericCourseNode implements PersistentAssessa } } + @Override + public void addIndividualAssessmentDocument(File document, String filename, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + throw new OLATRuntimeException(STCourseNode.class, "Document can't be uploaded in TA nodes", null); + } + + @Override + public void removeIndividualAssessmentDocument(File document, UserCourseEnvironment userCourseEnvironment, Identity coachingIdentity) { + throw new OLATRuntimeException(STCourseNode.class, "Document can't be removed in TA nodes", null); + } + /** * @see org.olat.course.nodes.AssessableCourseNode#getUserAttempts(org.olat.course.run.userview.UserCourseEnvironment) */ diff --git a/src/main/java/org/olat/course/nodes/VideoCourseNode.java b/src/main/java/org/olat/course/nodes/VideoCourseNode.java index 378f4c57ad3dd7d2b5116dcb859145ae067adc5a..4fc9e538f639b14d281304a170793889fcc1a102 100644 --- a/src/main/java/org/olat/course/nodes/VideoCourseNode.java +++ b/src/main/java/org/olat/course/nodes/VideoCourseNode.java @@ -149,9 +149,12 @@ public class VideoCourseNode extends AbstractAccessableCourseNode { } @Override - public Controller createPeekViewRunController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv, - NodeEvaluation ne) { - Controller controller = new VideoPeekviewController(ureq, wControl, getReferencedRepositoryEntry().getOlatResource()); + public Controller createPeekViewRunController(UserRequest ureq, WindowControl wControl, + UserCourseEnvironment userCourseEnv, NodeEvaluation ne) { + Controller controller = new VideoPeekviewController(ureq, wControl, + getReferencedRepositoryEntry().getOlatResource(), + userCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry().getKey(), + getIdent()); return controller; } } diff --git a/src/main/java/org/olat/course/nodes/ViteroCourseNode.java b/src/main/java/org/olat/course/nodes/ViteroCourseNode.java index 7e5cd6203957d377830f3867f315640afa18c67a..43fbf075559827e29af995865a608dfa233442f8 100644 --- a/src/main/java/org/olat/course/nodes/ViteroCourseNode.java +++ b/src/main/java/org/olat/course/nodes/ViteroCourseNode.java @@ -160,6 +160,7 @@ public class ViteroCourseNode extends AbstractAccessableCourseNode { @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); // load configuration ViteroManager provider = (ViteroManager)CoreSpringFactory.getBean("viteroManager"); // remove meeting diff --git a/src/main/java/org/olat/course/nodes/WikiCourseNode.java b/src/main/java/org/olat/course/nodes/WikiCourseNode.java index fe90f27a25b5818e04e6a477c2c3eeac1d45e450..216e478953e589f91a1e8d924d9a80f3ad1a2bce 100644 --- a/src/main/java/org/olat/course/nodes/WikiCourseNode.java +++ b/src/main/java/org/olat/course/nodes/WikiCourseNode.java @@ -286,6 +286,7 @@ public class WikiCourseNode extends AbstractAccessableCourseNode { @Override public void cleanupOnDelete(ICourse course) { + super.cleanupOnDelete(course); // mark the subscription to this node as deleted SubscriptionContext subsContext = WikiManager.createTechnicalSubscriptionContextForCourse(course.getCourseEnvironment(), this); NotificationsManager.getInstance().delete(subsContext); diff --git a/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_de.properties index 860fa1e35cf068b8dd0bc6c973b3ce491c1adabf..bf39424438bd1854d96ed318e425fc2d27b5732b 100644 --- a/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_de.properties @@ -36,4 +36,4 @@ personal.title=Leistungs\u00fcbersicht title_video=Video freezenoaccess.title=Kein Zugang freezenoaccess.message=Dieses Kurs ist im read-only Modus. - +assessment.review.explanation=Die Beurteilung Ihrer Leistung durch Ihren Betreuer ist noch nicht abgeschlossen. Sobald die Bewertung freigegeben ist, wird diese hier angezeigt. \ No newline at end of file diff --git a/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_en.properties index 5c747375341c770563e48c38bb8c75ce64555179..b4ce9977c361e66060a5fab25795fbb017648525 100644 --- a/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_en.properties @@ -36,3 +36,4 @@ title_ta=<s>Task (deprecated)</s> title_tu=External page title_video=Video title_wiki=Wiki +assessment.review.explanation=The assessment of your performance has not yet been completed by your coach. Once the assessment is released, it will be displayed here. diff --git a/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_fr.properties index 5c8fd0a4308deb78c97c8e8c5ffbac2e51104c8a..7ed995af09b7aecd68344d02cd714ca8609a084e 100644 --- a/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/nodes/_i18n/LocalStrings_fr.properties @@ -1,4 +1,5 @@ -#Wed Jan 11 18:41:16 CET 2017 +#Thu Jun 08 21:28:55 CEST 2017 +assessment.review.explanation=L'\u00E9valuation de votre test n'a pas encore \u00E9t\u00E9 compl\u00E9t\u00E9e par votre coach. Une fois l'\u00E9valuation publi\u00E9e, elle sera visible ici. editor.lock.message=Cet \u00E9l\u00E9ment de cours est bloqu\u00E9, car il est en train d'\u00EAtre \u00E9dit\u00E9. editor.lock.title=El\u00E9ment de cours bloqu\u00E9. freezenoaccess.message=Ce cours est un mode de lecture seule. diff --git a/src/main/java/org/olat/course/nodes/basiclti/LTIConfigForm.java b/src/main/java/org/olat/course/nodes/basiclti/LTIConfigForm.java index e8ba2b12fca914d0e23301e8b95919f416a65520..4924c2f4dbfaf89f14f5e5dbea1fd0fd32443485 100644 --- a/src/main/java/org/olat/course/nodes/basiclti/LTIConfigForm.java +++ b/src/main/java/org/olat/course/nodes/basiclti/LTIConfigForm.java @@ -47,22 +47,22 @@ import org.olat.core.gui.components.link.Link; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.modal.DialogBoxController; +import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; import org.olat.core.gui.translator.Translator; import org.olat.core.logging.OLATRuntimeException; import org.olat.core.util.CodeHelper; import org.olat.core.util.StringHelper; import org.olat.course.nodes.BasicLTICourseNode; +import org.olat.ims.lti.LTIDisplayOptions; import org.olat.ims.lti.LTIManager; import org.olat.modules.ModuleConfiguration; import org.olat.user.UserManager; import org.olat.user.propertyhandlers.UserPropertyHandler; /** - * Description:<BR/> - * TODO: Class Description for LTConfigForm - * <P/> * -* @author guido + * @author guido * @author Charles Severance */ public class LTIConfigForm extends FormBasicController { @@ -77,10 +77,10 @@ public class LTIConfigForm extends FormBasicController { public static final String[] PROTOCOLS = new String[] {"http", "https"}; - public static final String CONFIG_KEY_DEBUG = "debug"; - public static final String CONFIG_KEY_CUSTOM = "custom"; - public static final String CONFIG_KEY_SENDNAME = "sendname"; - public static final String CONFIG_KEY_SENDEMAIL = "sendemail"; + public static final String CONFIG_KEY_DEBUG = "debug"; + public static final String CONFIG_KEY_CUSTOM = "custom"; + public static final String CONFIG_KEY_SENDNAME = "sendname"; + public static final String CONFIG_KEY_SENDEMAIL = "sendemail"; public static final String usageIdentifyer = LTIManager.class.getCanonicalName(); @@ -90,6 +90,10 @@ public class LTIConfigForm extends FormBasicController { private TextElement tkey; private TextElement tpass; + private MultipleSelectionElement skipLaunchPageEl; + private MultipleSelectionElement skipAcceptLaunchPageEl; + private DialogBoxController confirmDialogCtr; + private SelectionElement sendName; private SelectionElement sendEmail; private SelectionElement doDebug; @@ -97,19 +101,25 @@ public class LTIConfigForm extends FormBasicController { private TextElement scaleFactorEl; private TextElement cutValueEl; private MultipleSelectionElement isAssessableEl; - private MultipleSelectionElement authorRoleEl, coachRoleEl, participantRoleEl; + private MultipleSelectionElement authorRoleEl; + private MultipleSelectionElement coachRoleEl; + private MultipleSelectionElement participantRoleEl; private FormLayoutContainer customParamLayout; - private SingleSelection displayEl, heightEl, widthEl; + private SingleSelection displayEl; + private SingleSelection heightEl; + private SingleSelection widthEl; private String fullURI; private Boolean sendNameConfig; private Boolean sendEmailConfig; private Boolean doDebugConfig; private boolean isAssessable; - private String key, pass; + private String key; + private String pass; - private List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); + private List<NameValuePair> nameValuePairs = new ArrayList<>(); + private static final String[] enabledKeys = new String[]{"on"}; private String[] ltiRolesKeys = new String[]{ "Learner", "Instructor", "Administrator", "TeachingAssistant", "ContentDeveloper", "Mentor" @@ -203,7 +213,7 @@ public class LTIConfigForm extends FormBasicController { if (uri != null && uri.length() > 0 && uri.charAt(0) == '/') uri = uri.substring(1); String query = null; - if (configVersion == 2) { + if (configVersion >= 2) { //query string is available since config version 2 query = (String) config.get(LTIConfigForm.CONFIGKEY_QUERY); } @@ -252,11 +262,31 @@ public class LTIConfigForm extends FormBasicController { uifactory.addSpacerElement("attributes", formLayout, false); + String[] enableValues = new String[]{ translate("on") }; + skipLaunchPageEl = uifactory.addCheckboxesHorizontal("display.config.skipLaunchPage", formLayout, enabledKeys, enableValues); + if (config.getBooleanSafe(BasicLTICourseNode.CONFIG_SKIP_LAUNCH_PAGE)) { + skipLaunchPageEl.select(enabledKeys[0], true); + } + + skipAcceptLaunchPageEl = uifactory.addCheckboxesHorizontal("display.config.skipAcceptLaunchPage", formLayout, enabledKeys, enableValues); + if (config.getBooleanSafe(BasicLTICourseNode.CONFIG_SKIP_ACCEPT_LAUNCH_PAGE)) { + skipAcceptLaunchPageEl.select(enabledKeys[0], true); + } + skipAcceptLaunchPageEl.setHelpTextKey("display.config.skipAcceptLaunchPageWarning", null); + skipAcceptLaunchPageEl.addActionListener(FormEvent.ONCHANGE); + + uifactory.addSpacerElement("attributes", formLayout, false); + sendName = uifactory.addCheckboxesHorizontal("sendName", "display.config.sendName", formLayout, new String[]{"xx"}, new String[]{null}); sendName.select("xx", sendNameConfig); + sendName.addActionListener(FormEvent.ONCHANGE); sendEmail = uifactory.addCheckboxesHorizontal("sendEmail", "display.config.sendEmail", formLayout, new String[]{"xx"}, new String[]{null}); sendEmail.select("xx", sendEmailConfig); + sendEmail.addActionListener(FormEvent.ONCHANGE); + + boolean sendEnabled = sendName.isSelected(0) || sendEmail.isSelected(0); + skipAcceptLaunchPageEl.setVisible(sendEnabled); String page = velocity_root + "/custom.html"; customParamLayout = FormLayoutContainer.createCustomFormLayout("custom_fields", getTranslator(), page); @@ -339,7 +369,10 @@ public class LTIConfigForm extends FormBasicController { @Override protected void doDispose() { - // + // Dispose confirm dialog controller since it isn't listend to. + if (confirmDialogCtr != null) { + removeAsListenerAndDispose(confirmDialogCtr); + } } private void updateNameValuePair(String custom) { @@ -459,6 +492,7 @@ public class LTIConfigForm extends FormBasicController { return fullURL; } + @SuppressWarnings("unused") @Override protected boolean validateFormLogic(UserRequest ureq) { boolean allOk = true; @@ -499,6 +533,11 @@ public class LTIConfigForm extends FormBasicController { scaleFactorEl.setVisible(assessEnabled); cutValueEl.setVisible(assessEnabled); flc.setDirty(true); + } else if (sendName == source || sendEmail == source) { + boolean sendEnabled = sendName.isSelected(0) || sendEmail.isSelected(0); + skipAcceptLaunchPageEl.setVisible(sendEnabled); + } else if (source == skipAcceptLaunchPageEl && skipAcceptLaunchPageEl.isAtLeastSelected(1)) { + confirmDialogCtr = activateYesNoDialog(ureq, null, translate("display.config.skipAcceptLaunchPageConfirm"), confirmDialogCtr); } else if(source instanceof FormLink && source.getName().startsWith("add_")) { NameValuePair pair = (NameValuePair)source.getUserObject(); doAddNameValuePair(pair); @@ -524,6 +563,17 @@ public class LTIConfigForm extends FormBasicController { super.formInnerEvent(ureq, source, event); } + @Override + protected void event(UserRequest ureq, Controller source, Event event) { + if (source == confirmDialogCtr) { + if (DialogBoxUIFactory.isYesEvent(event)) { + skipAcceptLaunchPageEl.select(enabledKeys[0], true); + } else { + skipAcceptLaunchPageEl.select(enabledKeys[0], false); + } + } + } + @Override protected void formOK(UserRequest ureq) { fireEvent (ureq, Event.DONE_EVENT); @@ -550,7 +600,7 @@ public class LTIConfigForm extends FormBasicController { } catch (MalformedURLException e) { throw new OLATRuntimeException("MalformedURL in LTConfigForm which should not happen, since we've validated before. URL: " + thost.getValue(), e); } - config.setConfigurationVersion(2); + config.setConfigurationVersion(BasicLTICourseNode.CURRENT_VERSION); config.set(CONFIGKEY_PROTO, url.getProtocol()); config.set(CONFIGKEY_HOST, url.getHost()); config.set(CONFIGKEY_URI, url.getPath()); @@ -561,8 +611,18 @@ public class LTIConfigForm extends FormBasicController { config.set(CONFIGKEY_PASS, tpass.getValue()); config.set(CONFIG_KEY_DEBUG, Boolean.toString(doDebug.isSelected(0))); config.set(CONFIG_KEY_CUSTOM, getCustomConfig()); + if (skipLaunchPageEl.isAtLeastSelected(1)) { + config.setBooleanEntry(BasicLTICourseNode.CONFIG_SKIP_LAUNCH_PAGE, Boolean.TRUE); + } else { + config.setBooleanEntry(BasicLTICourseNode.CONFIG_SKIP_LAUNCH_PAGE, Boolean.FALSE); + } config.set(CONFIG_KEY_SENDNAME, Boolean.toString(sendName.isSelected(0))); config.set(CONFIG_KEY_SENDEMAIL, Boolean.toString(sendEmail.isSelected(0))); + if (skipAcceptLaunchPageEl.isAtLeastSelected(1) && (sendName.isSelected(0) || sendEmail.isSelected(0))) { + config.setBooleanEntry(BasicLTICourseNode.CONFIG_SKIP_ACCEPT_LAUNCH_PAGE, Boolean.TRUE); + } else { + config.setBooleanEntry(BasicLTICourseNode.CONFIG_SKIP_ACCEPT_LAUNCH_PAGE, Boolean.FALSE); + } if(isAssessableEl.isAtLeastSelected(1)) { config.setBooleanEntry(BasicLTICourseNode.CONFIG_KEY_HAS_SCORE_FIELD, Boolean.TRUE); @@ -582,7 +642,7 @@ public class LTIConfigForm extends FormBasicController { } else { config.setBooleanEntry(BasicLTICourseNode.CONFIG_KEY_HAS_PASSED_FIELD, Boolean.FALSE); config.remove(BasicLTICourseNode.CONFIG_KEY_PASSED_CUT_VALUE); - } + } } else { config.setBooleanEntry(BasicLTICourseNode.CONFIG_KEY_HAS_SCORE_FIELD, Boolean.FALSE); config.setBooleanEntry(BasicLTICourseNode.CONFIG_KEY_HAS_PASSED_FIELD, Boolean.FALSE); @@ -648,10 +708,10 @@ public class LTIConfigForm extends FormBasicController { } private String getFormKey() { - if (StringHelper.containsNonWhitespace(tkey.getValue())) + if (StringHelper.containsNonWhitespace(tkey.getValue())) { return tkey.getValue(); - else - return null; + } + return null; } public static class NameValuePair { diff --git a/src/main/java/org/olat/course/nodes/basiclti/LTIEditController.java b/src/main/java/org/olat/course/nodes/basiclti/LTIEditController.java index f481741822c5e0c26bed58332ac44a231fc860ff..2c1d2353c64fe88b0e56afbfdc58a3a03962ff19 100644 --- a/src/main/java/org/olat/course/nodes/basiclti/LTIEditController.java +++ b/src/main/java/org/olat/course/nodes/basiclti/LTIEditController.java @@ -25,12 +25,11 @@ package org.olat.course.nodes.basiclti; -import org.olat.core.commons.fullWebApp.LayoutMain3ColsController; +import org.olat.core.commons.fullWebApp.LayoutMain3ColsPreviewController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.link.Link; import org.olat.core.gui.components.link.LinkFactory; -import org.olat.core.gui.components.stack.BreadcrumbPanel; import org.olat.core.gui.components.tabbedpane.TabbedPane; import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.Controller; @@ -77,10 +76,8 @@ public class LTIEditController extends ActivateableTabbableDefaultController imp private BasicLTICourseNode courseNode; private ConditionEditController accessibilityCondContr; private TabbedPane myTabbedPane; - private Controller previewLayoutCtr; private Link previewButton; - private Controller previewLtiCtr; - private final BreadcrumbPanel stackPanel; + private LayoutMain3ColsPreviewController previewLayoutCtr; /** * Constructor for tunneling editor controller @@ -91,13 +88,12 @@ public class LTIEditController extends ActivateableTabbableDefaultController imp * @param course */ public LTIEditController(ModuleConfiguration config, UserRequest ureq, WindowControl wControl, - BreadcrumbPanel stackPanel, BasicLTICourseNode ltCourseNode, ICourse course, UserCourseEnvironment euce) { + BasicLTICourseNode ltCourseNode, ICourse course, UserCourseEnvironment euce) { super(ureq, wControl); this.config = config; this.courseNode = ltCourseNode; this.editCourseEnv = course.getCourseEnvironment(); - this.stackPanel = stackPanel; myContent = createVelocityContainer("edit"); previewButton = LinkFactory.createButtonSmall("command.preview", myContent, this); @@ -124,28 +120,24 @@ public class LTIEditController extends ActivateableTabbableDefaultController imp } - /**config.set + /** * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.components.Component, org.olat.core.gui.control.Event) */ + @Override public void event(UserRequest ureq, Component source, Event event) { - if (source == previewButton) { // those must be links - - removeAsListenerAndDispose(previewLtiCtr); - previewLtiCtr = new LTIRunController(getWindowControl(), config, ureq, courseNode, editCourseEnv); - listenTo(previewLtiCtr); - - // preview layout: only center column (col3) used - removeAsListenerAndDispose(previewLayoutCtr); - - previewLayoutCtr = new LayoutMain3ColsController(ureq, getWindowControl(), previewLtiCtr); + if (source == previewButton) { + Controller runCtr = new LTIRunController(getWindowControl(), config, ureq, courseNode, editCourseEnv); + previewLayoutCtr = new LayoutMain3ColsPreviewController(ureq, getWindowControl(), null, runCtr.getInitialComponent(), null); + previewLayoutCtr.addDisposableChildController(runCtr); + previewLayoutCtr.activate(); listenTo(previewLayoutCtr); - this.stackPanel.pushController(translate("preview"), previewLayoutCtr); } } /** * @see org.olat.core.gui.control.DefaultController#event(org.olat.core.gui.UserRequest, org.olat.core.gui.control.Controller, org.olat.core.gui.control.Event) */ + @Override public void event(UserRequest ureq, Controller source, Event event) { if (source == accessibilityCondContr) { if (event == Event.CHANGED_EVENT) { @@ -167,6 +159,8 @@ public class LTIEditController extends ActivateableTabbableDefaultController imp if (event == Event.DONE_EVENT) { fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT); } + } else if (source == previewLayoutCtr) { + removeAsListenerAndDispose(previewLayoutCtr); } } @@ -174,9 +168,11 @@ public class LTIEditController extends ActivateableTabbableDefaultController imp Boolean sf = courseNode.getModuleConfiguration().getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD,false); myTabbedPane.setEnabled(4, sf); } + /** * @see org.olat.core.gui.control.generic.tabbable.TabbableDefaultController#addTabs(org.olat.core.gui.components.TabbedPane) */ + @Override public void addTabs(TabbedPane tabbedPane) { myTabbedPane = tabbedPane; tabbedPane.addTab(translate(PANE_TAB_ACCESSIBILITY), accessibilityCondContr.getWrappedDefaultAccessConditionVC(translate("condition.accessibility.title"))); @@ -189,15 +185,17 @@ public class LTIEditController extends ActivateableTabbableDefaultController imp * * @see org.olat.core.gui.control.DefaultController#doDispose(boolean) */ + @Override protected void doDispose() { - // + // } - + @Override public String[] getPaneKeys() { return paneKeys; } + @Override public TabbedPane getTabbedPane() { return myTabbedPane; } diff --git a/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java b/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java index 0f386fd58445dc8f888c8726a4b3977ef54f27e5..cc9bb39db9fcd28fd083df64ffe157c9def349e0 100644 --- a/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java +++ b/src/main/java/org/olat/course/nodes/basiclti/LTIRunController.java @@ -63,6 +63,7 @@ import org.olat.course.run.environment.CourseEnvironment; import org.olat.course.run.scoring.ScoreEvaluation; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.ims.lti.LTIContext; +import org.olat.ims.lti.LTIDisplayOptions; import org.olat.ims.lti.LTIManager; import org.olat.ims.lti.ui.PostDataMapper; import org.olat.ims.lti.ui.TalkBackMapper; @@ -82,14 +83,16 @@ public class LTIRunController extends BasicController { private Link startButton; private final StackedPanel mainPanel; - private VelocityContainer run, startPage, acceptPage; + private VelocityContainer run; + private VelocityContainer startPage; private BasicLTICourseNode courseNode; private ModuleConfiguration config; private final CourseEnvironment courseEnv; private UserCourseEnvironment userCourseEnv; private SortedProperties userData = new SortedProperties(); private SortedProperties customUserData = new SortedProperties(); - private Link acceptLink, back; + private Link acceptLink; + private Link back; private boolean fullScreen; private ChiefController thebaseChief; @@ -148,15 +151,7 @@ public class LTIRunController extends BasicController { mainPanel = new SimpleStackedPanel("ltiContainer"); putInitialPanel(mainPanel); - - // only run directly when user as already accepted to data exchange or no data has to be exchanged - createExchangeDataProperties(); - String dataExchangeHash = createHashFromExchangeDataProperties(); - if (dataExchangeHash == null || checkHasDataExchangeAccepted(dataExchangeHash)) { - doRun(ureq); - } else { - doAskDataExchange(); - } + doRun(ureq); } /** @@ -170,27 +165,27 @@ public class LTIRunController extends BasicController { * not yet accepted or for other values */ private boolean checkHasDataExchangeAccepted(String hash) { - // + boolean dataAccepted = false; CoursePropertyManager propMgr = this.userCourseEnv.getCourseEnvironment().getCoursePropertyManager(); Property prop = propMgr.findCourseNodeProperty(this.courseNode, getIdentity(), null, PROP_NAME_DATA_EXCHANGE_ACCEPTED); if (prop != null) { // compare if value in property is the same as calculated today. If not, user as to accept again String storedHash = prop.getStringValue(); if (storedHash != null && hash != null && storedHash.equals(hash)) { - return true; + dataAccepted = true; } else { // remove property, not valid anymore propMgr.deleteProperty(prop); } } - return false; + return dataAccepted; } /** * Helper to initialize the ask-for-data-exchange screen */ private void doAskDataExchange() { - acceptPage = createVelocityContainer("accept"); + VelocityContainer acceptPage = createVelocityContainer("accept"); acceptPage.contextPut("userData", userData); acceptPage.contextPut("customUserData", customUserData); acceptLink = LinkFactory.createButton("accept", acceptPage, this); @@ -350,10 +345,25 @@ public class LTIRunController extends BasicController { boolean resultsVisible = eval.getUserVisible() == null || eval.getUserVisible().booleanValue(); startPage.contextPut("resultsVisible", resultsVisible); mainPanel.setContent(startPage); - } else if(display == LTIDisplayOptions.window) { - mainPanel.setContent(startPage); + } + + // only run when user as already accepted to data exchange or no data + // has to be exchanged or when it is configured to not show the accept + // dialog, + createExchangeDataProperties(); + String dataExchangeHash = createHashFromExchangeDataProperties(); + Boolean skipAcceptLaunchPage = config.getBooleanEntry(BasicLTICourseNode.CONFIG_SKIP_ACCEPT_LAUNCH_PAGE); + if (dataExchangeHash == null || checkHasDataExchangeAccepted(dataExchangeHash) || (skipAcceptLaunchPage != null && skipAcceptLaunchPage.booleanValue()) ) { + Boolean skipLaunchPage = config.getBooleanEntry(BasicLTICourseNode.CONFIG_SKIP_LAUNCH_PAGE); + if(skipLaunchPage != null && skipLaunchPage.booleanValue()) { + // start the content immediately + openBasicLTIContent(ureq); + } else { + // or show the start button + mainPanel.setContent(startPage); + } } else { - openBasicLTIContent(ureq); + doAskDataExchange(); } } diff --git a/src/main/java/org/olat/course/nodes/basiclti/_content/overview.html b/src/main/java/org/olat/course/nodes/basiclti/_content/overview.html index 553d995626f6d6df72506916c182b9ef11b0c820..cc88910d231645b78f8a7602f9959b54ddd74da3 100644 --- a/src/main/java/org/olat/course/nodes/basiclti/_content/overview.html +++ b/src/main/java/org/olat/course/nodes/basiclti/_content/overview.html @@ -21,7 +21,11 @@ #if($resultsVisible) $score #else - $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + <span id="o_score_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + </span> + $r.mouseoverHelp("o_score_in_review", "assessment.review.explanation") #end #else <div class="o_noinfo">$r.translateWithPackage("org.olat.course.nodes.ms", "score.noscore")</div> @@ -35,7 +39,11 @@ <th>$r.translate("passed.yourpassed")</th> <td> #if($hasPassedValue && !$resultsVisible) - $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + <span id="o_passed_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + </span> + $r.mouseoverHelp("o_passed_in_review", "assessment.review.explanation") #elseif($hasPassedValue && $passed) <i class="o_icon o_icon_passed"> </i> $r.translate("passed.yes") #elseif($hasPassedValue && !$passed) diff --git a/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_de.properties index e62872f954856e6951ca2176539b81c0f9f73257..d3c1f3125d582086f55bccc850d0d8ad7a64840d 100644 --- a/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_de.properties @@ -29,6 +29,10 @@ display.config.height=$org.olat.core.gui.control.generic.iframe\:height.label display.config.width=Breite Anzeigefl\u00e4che display.config.free=Text display.config.free.userprops=Benutzer +display.config.skipAcceptLaunchPage=Zustimmung "Daten\u00fcbertragung" unterdr\u00fccken +display.config.skipAcceptLaunchPageConfirm=Es werden pers\u00f6nliche Daten der Benutzer an einen externen Server \u00fcbermittelt. Wenn diese Option aktiviert ist, k\u00f6nnen die Benutzer diese Daten\u00fcbertragung nicht akzeptiern oder ablehnen. Wollen Sie die Option aktivieren? +display.config.skipAcceptLaunchPageWarning=Es werden pers\u00f6nliche Daten der Benutzer an einen externen Server \u00fcbermittelt. Wenn diese Option aktiviert ist, k\u00f6nnen die Benutzer diese Daten\u00fcbertragung nicht akzeptiern oder ablehnen. +display.config.skipLaunchPage=Inhalt automatisch starten add=+ remove=- height.auto=$org.olat.core.gui.control.generic.iframe\:height.auto @@ -43,7 +47,7 @@ participant.roles=Teilnehmer coach.roles=Betreuer author.roles=Besitzer roles.lti.learner=Lerner -roles.lti.instructor=Instruktur +roles.lti.instructor=Instruktor roles.lti.administrator=Administrator roles.lti.teachingAssistant=Assistent Lehrperson roles.lti.contentDeveloper=Inhaltersteller @@ -59,29 +63,5 @@ score.yourscore=$org.olat.course.nodes.ms\:score.yourscore passed.yourpassed=$org.olat.course.nodes.ms\:passed.yourpassed passed.no=$org.olat.course.nodes.ms\:passed.no passed.yes=$org.olat.course.nodes.ms\:passed.yes - cshelp.lti1=LTI steht f\u00fcr "Learning Tool Interoperability" und ist ein IMS Standard zur Einbindung von externen Lernapplikationen in eine Lernplattform. - - - - - - - - - - - - - - - - - - - - - condition.accessibility.title=Zugang - - diff --git a/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_en.properties index 480b426449c37d719b2e46582fb430be76bb2fc0..dd5edab0d0671871728d20cb6e1f5c763f787688 100644 --- a/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/basiclti/_i18n/LocalStrings_en.properties @@ -15,28 +15,6 @@ add=+ assessable.label=Transfer score attempts.yourattempts=$org.olat.course.nodes.scorm\:attempts.yourattempts author.roles=Author - - - - - - - - - - - - - - - - - - - - - - coach.roles=Coach command.preview=Show preview condition.accessibility.title=Access @@ -54,6 +32,10 @@ display.config.window=Display display.config.window.fullScreen=Display only module, hide LMS (iFrame) display.config.window.iframe=Embedded in course (iFrame) display.config.window.window=Open in new window +display.config.skipAcceptLaunchPage=Suppress "data transmission" agreement +display.config.skipAcceptLaunchPageConfirm=Personal data of the users will be transmitted to the external server. When this option is enabled, the users have no possibility to accept or decline the data transmission. Do you want to enable this option? +display.config.skipAcceptLaunchPageWarning=Personal data of the users will be transmitted to the external server. When this option is enabled, the users have no possibility to accept or decline the data transmission. +display.config.skipLaunchPage=Skip launch page error.hostmissing.long=In the tab "Page content" a host has to be configured for the external page "{0}" error.hostmissing.short=No host indicated for "{0}". form.error.wrongFloat=$org.olat.course.assessment\:form.error.wrongFloat diff --git a/src/main/java/org/olat/course/nodes/bc/FolderNodeCallback.java b/src/main/java/org/olat/course/nodes/bc/FolderNodeCallback.java index 134c9852365ec5cd19471f9aed85165d967bb830..ffbbd24c11becfb5c9724f781fe9eb7dfb781dc7 100644 --- a/src/main/java/org/olat/course/nodes/bc/FolderNodeCallback.java +++ b/src/main/java/org/olat/course/nodes/bc/FolderNodeCallback.java @@ -39,10 +39,11 @@ import org.olat.course.run.userview.NodeEvaluation; public class FolderNodeCallback implements VFSSecurityCallback { - private NodeEvaluation ne; + private final String relPath; private Quota nodeFolderQuota; - private boolean isOlatAdmin; - private boolean isGuestOnly; + private final NodeEvaluation ne; + private final boolean isOlatAdmin; + private final boolean isGuestOnly; private final SubscriptionContext nodefolderSubContext; /** @@ -55,37 +56,35 @@ public class FolderNodeCallback implements VFSSecurityCallback { */ public FolderNodeCallback(String relPath, NodeEvaluation ne, boolean isOlatAdmin, boolean isGuestOnly, SubscriptionContext nodefolderSubContext) { this.ne = ne; + this.relPath = relPath; this.isOlatAdmin = isOlatAdmin; this.isGuestOnly = isGuestOnly; this.nodefolderSubContext = nodefolderSubContext; - QuotaManager qm = QuotaManager.getInstance(); - nodeFolderQuota = qm.getCustomQuota(relPath); - if (nodeFolderQuota == null) { - Quota defQuota = qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_NODES); - nodeFolderQuota = qm.createQuota(relPath, defQuota.getQuotaKB(), defQuota.getUlLimitKB()); - } } /** * @see org.olat.modules.bc.callbacks.SecurityCallback#canList(org.olat.modules.bc.Path) */ + @Override public boolean canList() { - return ne.isCapabilityAccessible("download") || ne.isCapabilityAccessible("upload") || isOlatAdmin; + return isOlatAdmin || ne.isCapabilityAccessible("download") || ne.isCapabilityAccessible("upload"); } /** * @see org.olat.modules.bc.callbacks.SecurityCallback#canRead(org.olat.modules.bc.Path) */ + @Override public boolean canRead() { - return ne.isCapabilityAccessible("download") || ne.isCapabilityAccessible("upload") || isOlatAdmin; + return isOlatAdmin || ne.isCapabilityAccessible("download") || ne.isCapabilityAccessible("upload"); } /** * @see org.olat.modules.bc.callbacks.SecurityCallback#canWrite(org.olat.modules.bc.Path) */ + @Override public boolean canWrite() { if (isGuestOnly) return false; - return ne.isCapabilityAccessible("upload") || isOlatAdmin; + return isOlatAdmin || ne.isCapabilityAccessible("upload"); } @Override @@ -96,18 +95,21 @@ public class FolderNodeCallback implements VFSSecurityCallback { /** * @see org.olat.modules.bc.callbacks.SecurityCallback#canDelete(org.olat.modules.bc.Path) */ + @Override public boolean canDelete() { if (isGuestOnly) return false; - return ne.isCapabilityAccessible("upload") || isOlatAdmin; + return isOlatAdmin || ne.isCapabilityAccessible("upload"); } /** * @see org.olat.core.util.vfs.callbacks.VFSSecurityCallback#canCopy() */ + @Override public boolean canCopy() { return canRead() && canWrite(); } - + + @Override public boolean canDeleteRevisionsPermanently() { return isOlatAdmin; } @@ -115,13 +117,23 @@ public class FolderNodeCallback implements VFSSecurityCallback { /** * @see org.olat.modules.bc.callbacks.SecurityCallback#getQuotaKB(org.olat.modules.bc.Path) */ + @Override public Quota getQuota() { + if(nodeFolderQuota == null) { + QuotaManager qm = QuotaManager.getInstance(); + nodeFolderQuota = qm.getCustomQuota(relPath); + if (nodeFolderQuota == null) { + Quota defQuota = qm.getDefaultQuota(QuotaConstants.IDENTIFIER_DEFAULT_NODES); + nodeFolderQuota = qm.createQuota(relPath, defQuota.getQuotaKB(), defQuota.getUlLimitKB()); + } + } return nodeFolderQuota; } /** * @see org.olat.core.util.vfs.callbacks.VFSSecurityCallback#setQuota(org.olat.admin.quota.Quota) */ + @Override public void setQuota(Quota quota) { nodeFolderQuota = quota; } @@ -129,6 +141,7 @@ public class FolderNodeCallback implements VFSSecurityCallback { /** * @see org.olat.modules.bc.callbacks.SecurityCallback#getSubscriptionContext() */ + @Override public SubscriptionContext getSubscriptionContext() { return nodefolderSubContext; } diff --git a/src/main/java/org/olat/course/nodes/card2brain/Card2BrainConfigController.java b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainConfigController.java new file mode 100644 index 0000000000000000000000000000000000000000..d1e906f1035199ede0bf303afa4ca1cc41a555ce --- /dev/null +++ b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainConfigController.java @@ -0,0 +1,281 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.card2brain; + +import org.olat.core.commons.fullWebApp.LayoutMain3ColsPreviewController; +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItem; +import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.FormLink; +import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; +import org.olat.core.gui.components.form.flexible.elements.SpacerElement; +import org.olat.core.gui.components.form.flexible.elements.TextElement; +import org.olat.core.gui.components.form.flexible.impl.FormBasicController; +import org.olat.core.gui.components.form.flexible.impl.FormEvent; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.Event; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.util.StringHelper; +import org.olat.course.nodes.Card2BrainCourseNode; +import org.olat.modules.ModuleConfiguration; +import org.olat.modules.card2brain.Card2BrainManager; +import org.olat.modules.card2brain.Card2BrainModule; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 11.04.2017<br> + * + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class Card2BrainConfigController extends FormBasicController { + + private static final String[] enabledKeys = new String[] { "on" }; + private static final String FORM_MISSING_MANDATORY = "form.legende.mandatory"; + + private TextElement flashcardAliasEl; + private SpacerElement privateLoginSpacer; + private MultipleSelectionElement enablePrivateLoginEl; + private TextElement privateKeyEl; + private TextElement privateSecretEl; + private FormLink previewButton; + private LayoutMain3ColsPreviewController previewLayoutCtr; + + private final ModuleConfiguration config; + + @Autowired + private Card2BrainModule card2BrainModule; + @Autowired + private Card2BrainManager card2BrainManager; + + public Card2BrainConfigController(UserRequest ureq, WindowControl wControl, ModuleConfiguration config) { + super(ureq, wControl); + + this.config = config; + + initForm(ureq); + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + setFormTitle("edit.title"); + setFormContextHelp("KnowledgeTransfer#_card2brain"); + + String flashcardAlias = config.getStringValue(Card2BrainCourseNode.CONFIG_FLASHCARD_ALIAS); + flashcardAliasEl = uifactory.addTextElement("edit.flashcard.alias", "edit.flashcard.alias", 128, flashcardAlias, + formLayout); + flashcardAliasEl.setMandatory(true); + flashcardAliasEl.setHelpTextKey("edit.FlashcardHelpText", null); + + previewButton = uifactory.addFormLink("edit.preview", formLayout, "btn btn-default o_xsmall"); + previewButton.setIconLeftCSS("o_icon o_icon_preview"); + + privateLoginSpacer = uifactory.addSpacerElement("Spacer", formLayout, false); + + boolean enablePrivateLogin = config.getBooleanSafe(Card2BrainCourseNode.CONFIG_ENABLE_PRIVATE_LOGIN); + String[] enableValues = new String[] { translate("on") }; + enablePrivateLoginEl = uifactory.addCheckboxesHorizontal("edit.access.enablePrivateLogin", formLayout, + enabledKeys, enableValues); + if (enablePrivateLogin) { + enablePrivateLoginEl.select(enabledKeys[0], true); + } + enablePrivateLoginEl.addActionListener(FormEvent.ONCHANGE); + + String privateKey = config.getStringValue(Card2BrainCourseNode.CONFIG_PRIVATE_KEY); + privateKeyEl = uifactory.addTextElement("edit.access.privateKey", "edit.access.privateKey", 128, privateKey, + formLayout); + privateKeyEl.setMandatory(true); + privateKeyEl.setHelpTextKey("edit.KeyHelpText", null); + + String privateSecret = config.getStringValue(Card2BrainCourseNode.CONFIG_PRIVATE_SECRET); + privateSecretEl = uifactory.addTextElement("edit.access.privateSecret", "edit.access.privateSecret", + 128, privateSecret, formLayout); + privateSecretEl.setMandatory(true); + privateSecretEl.setHelpTextKey("edit.SecretHelpText", null); + + uifactory.addFormSubmitButton("save", formLayout); + + showHidePrivateLoginFields(); + validateLogin(); + + if (StringHelper.containsNonWhitespace(flashcardAlias)) { + // Validate at init e.g. if the flashcards still exists. + validateFormLogic(ureq); + } else { + // Don't show the preview button after insert of an new course element + showHidePreviewButton(false); + } + } + + /** + * The checkbox of the private login is only visible if the appropriate + * option is enabled. + */ + private void showHidePrivateLoginFields() { + privateLoginSpacer.setVisible(card2BrainModule.isPrivateLoginEnabled()); + enablePrivateLoginEl.setVisible(card2BrainModule.isPrivateLoginEnabled()); + + privateKeyEl.setVisible(card2BrainModule.isPrivateLoginEnabled() && isPrivateLoginActivated()); + privateSecretEl.setVisible(card2BrainModule.isPrivateLoginEnabled() && isPrivateLoginActivated()); + } + + /** + * Show or hide the preview button. + */ + private void showHidePreviewButton(boolean show) { + previewButton.setVisible(show); + } + + @Override + protected boolean validateFormLogic(UserRequest ureq) { + boolean allOk = super.validateFormLogic(ureq); + + allOk &= validateFlashcardAlias(parseAlias(flashcardAliasEl.getValue())); + allOk &= validateLogin(); + + // Show the preview button only when the configuration is valid. + showHidePreviewButton(allOk); + + return allOk; + } + + private boolean validateFlashcardAlias(String alias) { + boolean allOk = true; + + if (!StringHelper.containsNonWhitespace(alias)) { + flashcardAliasEl.setErrorKey(FORM_MISSING_MANDATORY, null); + allOk &= false; + } else if (!card2BrainManager.checkSetOfFlashcards(alias)) { + flashcardAliasEl.setErrorKey("edit.warning.aliasCheckFailed", null); + allOk &= false; + } + + return allOk; + } + + private boolean validateLogin() { + boolean allOk = true; + + if (isPrivateLoginActivated()) { + if (!StringHelper.containsNonWhitespace(privateKeyEl.getValue())) { + privateKeyEl.setErrorKey(FORM_MISSING_MANDATORY, null); + allOk &= false; + } + if (!StringHelper.containsNonWhitespace(privateSecretEl.getValue())) { + privateSecretEl.setErrorKey(FORM_MISSING_MANDATORY, null); + allOk &= false; + } + } + + boolean isEnterpriseLogin = !isPrivateLoginActivated(); + if (!card2BrainModule.isEnterpriseLoginEnabled() && !card2BrainModule.isPrivateLoginEnabled()) { + setFormWarning("edit.warning.bothLoginDisabled"); + allOk &= false; + } else if (isEnterpriseLogin && !card2BrainModule.isEnterpriseLoginEnabled()) { + setFormWarning("edit.warning.enterpriseLoginDisabled"); + allOk &= false; + } else if (!isEnterpriseLogin && !card2BrainModule.isPrivateLoginEnabled()) { + setFormWarning("edit.warning.privateLoginDisabled"); + allOk &= false; + } else { + setFormWarning(null); + } + + return allOk; + } + + @Override + protected void formOK(UserRequest ureq) { + setFormWarning(null); + fireEvent(ureq, Event.DONE_EVENT); + } + + @Override + protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { + if (source == enablePrivateLoginEl) { + showHidePrivateLoginFields(); + } else if (source == previewButton) { + Controller card2brainRunCtr = new Card2BrainRunController(ureq, getWindowControl(), config); + previewLayoutCtr = new LayoutMain3ColsPreviewController(ureq, getWindowControl(), null, + card2brainRunCtr.getInitialComponent(), null); + previewLayoutCtr.addDisposableChildController(card2brainRunCtr); + previewLayoutCtr.activate(); + listenTo(previewLayoutCtr); + } + super.formInnerEvent(ureq, source, event); + } + + @Override + public void event(UserRequest ureq, Controller source, Event event) { + if (source == previewLayoutCtr) { + removeAsListenerAndDispose(previewLayoutCtr); + } + super.event(ureq, source, event); + } + + protected ModuleConfiguration getUpdatedConfig() { + config.set(Card2BrainCourseNode.CONFIG_FLASHCARD_ALIAS, parseAlias(flashcardAliasEl.getValue())); + if (isPrivateLoginActivated()) { + config.set(Card2BrainCourseNode.CONFIG_ENABLE_PRIVATE_LOGIN, Boolean.toString(true)); + config.set(Card2BrainCourseNode.CONFIG_PRIVATE_KEY, privateKeyEl.getValue()); + config.set(Card2BrainCourseNode.CONFIG_PRIVATE_SECRET, privateSecretEl.getValue()); + } else { + config.set(Card2BrainCourseNode.CONFIG_ENABLE_PRIVATE_LOGIN, Boolean.toString(false)); + config.set(Card2BrainCourseNode.CONFIG_PRIVATE_KEY, null); + config.set(Card2BrainCourseNode.CONFIG_PRIVATE_SECRET, null); + } + return config; + } + + @Override + protected void doDispose() { + // + } + + /** + * + * @return whether the private login is activated by the user. + */ + private boolean isPrivateLoginActivated() { + boolean isPrivateLoginActivated = false; + + if (enablePrivateLoginEl.isAtLeastSelected(1)) { + isPrivateLoginActivated = true; + } + + return isPrivateLoginActivated; + } + + /** + * Parse the alias of the set of flashcards.<br> + * Remove the unnecessary part if someone inserts the whole weblink from the + * card2brain website e.g. + * https://card2brain.ch/box/20170420_02_chemie_und_werkstoffe. + * + * @param alias + * the original alias value + * @return the parsed String + */ + private String parseAlias(String alias) { + return alias.replace("https://card2brain.ch/box/", ""); + } + +} diff --git a/src/main/java/org/olat/course/nodes/card2brain/Card2BrainContext.java b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainContext.java new file mode 100644 index 0000000000000000000000000000000000000000..b6ab82fc496400d618a602d9f3ea818a6a42604c --- /dev/null +++ b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainContext.java @@ -0,0 +1,105 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.card2brain; + +import org.olat.core.id.Identity; +import org.olat.ims.lti.LTIContext; +import org.olat.ims.lti.LTIDisplayOptions; + +/** + * + * Initial date: 11.04.2017<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class Card2BrainContext implements LTIContext { + + private static final String LTI_ROLE = "Learner"; + private static final String HEIGTH = "auto"; + private static final String WIDTH = "auto"; + private static final LTIDisplayOptions TARGET = LTIDisplayOptions.iframe; + + @Override + public String getSourcedId() { + return null; + } + + @Override + public String getTalkBackMapperUri() { + return null; + } + + @Override + public String getOutcomeMapperUri() { + return null; + } + + @Override + public String getResourceId() { + return null; + } + + @Override + public String getResourceTitle() { + return null; + } + + @Override + public String getResourceDescription() { + return null; + } + + @Override + public String getContextId() { + return null; + } + + @Override + public String getContextTitle() { + return null; + } + + @Override + public String getRoles(Identity identity) { + return LTI_ROLE; + } + + @Override + public String getCustomProperties() { + return null; + } + + @Override + public String getTarget() { + return TARGET.toString(); + } + + @Override + public String getPreferredWidth() { + return WIDTH; + } + + @Override + public String getPreferredHeight() { + return HEIGTH; + } + + +} diff --git a/src/main/java/org/olat/course/nodes/card2brain/Card2BrainCourseNodeConfiguration.java b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainCourseNodeConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..53bf48cd3f93fc2ae6e0cce3aeb167dae3cdf044 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainCourseNodeConfiguration.java @@ -0,0 +1,75 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.card2brain; + +import java.util.Locale; + +import org.olat.core.CoreSpringFactory; +import org.olat.core.gui.translator.Translator; +import org.olat.core.util.Util; +import org.olat.course.nodes.AbstractCourseNodeConfiguration; +import org.olat.course.nodes.Card2BrainCourseNode; +import org.olat.course.nodes.CourseNode; +import org.olat.course.nodes.CourseNodeConfiguration; +import org.olat.course.nodes.CourseNodeGroup; +import org.olat.modules.card2brain.Card2BrainModule; + +/** + * + * Initial date: 10.04.2017<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class Card2BrainCourseNodeConfiguration extends AbstractCourseNodeConfiguration { + + @Override + public String getAlias() { + return "card2brain"; + } + + @Override + public String getGroup() { + return CourseNodeGroup.content.name(); + } + + @Override + public CourseNode getInstance() { + return new Card2BrainCourseNode(); + } + + @Override + public String getLinkText(Locale locale) { + Translator fallback = Util.createPackageTranslator(CourseNodeConfiguration.class, locale); + Translator translator = Util.createPackageTranslator(this.getClass(), locale, fallback); + return translator.translate("link.text"); + } + + @Override + public String getIconCSSClass() { + return "o_card2brain_icon"; + } + + @Override + public boolean isEnabled() { + Card2BrainModule module = CoreSpringFactory.getImpl(Card2BrainModule.class); + return module.isEnabled(); + } + +} diff --git a/src/main/java/org/olat/course/nodes/card2brain/Card2BrainEditController.java b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainEditController.java new file mode 100644 index 0000000000000000000000000000000000000000..8833779ca25dc21f5c4ba4ec294fb7ff686c184e --- /dev/null +++ b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainEditController.java @@ -0,0 +1,108 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.card2brain; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.Component; +import org.olat.core.gui.components.tabbedpane.TabbedPane; +import org.olat.core.gui.components.velocity.VelocityContainer; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.ControllerEventListener; +import org.olat.core.gui.control.Event; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.tabbable.ActivateableTabbableDefaultController; +import org.olat.course.ICourse; +import org.olat.course.assessment.AssessmentHelper; +import org.olat.course.condition.Condition; +import org.olat.course.condition.ConditionEditController; +import org.olat.course.editor.NodeEditController; +import org.olat.course.nodes.Card2BrainCourseNode; +import org.olat.course.run.userview.UserCourseEnvironment; + +/** + * + * Initial date: 11.04.2017<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class Card2BrainEditController extends ActivateableTabbableDefaultController implements ControllerEventListener { + + private static final String PANE_TAB_ACCESSIBILITY = "pane.tab.accessibility"; + public static final String PANE_TAB_VCCONFIG = "pane.tab.vcconfig"; + final static String[] paneKeys = { PANE_TAB_VCCONFIG, PANE_TAB_ACCESSIBILITY }; + + private VelocityContainer editVc; + private Card2BrainConfigController card2BrainConfigController; + private ConditionEditController accessibilityCondContr; + private TabbedPane tabPane; + + public Card2BrainEditController(UserRequest ureq, WindowControl wControl, + Card2BrainCourseNode card2BrainCourseNode, ICourse course, UserCourseEnvironment userCourseEnv) { + super(ureq, wControl); + + card2BrainConfigController = new Card2BrainConfigController(ureq, wControl, card2BrainCourseNode.getModuleConfiguration()); + listenTo(card2BrainConfigController); + + Condition accessCondition = card2BrainCourseNode.getPreConditionAccess(); + accessibilityCondContr = new ConditionEditController(ureq, wControl, userCourseEnv, accessCondition, + AssessmentHelper.getAssessableNodes(course.getEditorTreeModel(), card2BrainCourseNode)); + listenTo(accessibilityCondContr); + + editVc = createVelocityContainer("edit"); + editVc.put("configForm", card2BrainConfigController.getInitialComponent()); + } + + @Override + public void addTabs(TabbedPane tabbedPane) { + tabPane = tabbedPane; + tabbedPane.addTab(translate(PANE_TAB_ACCESSIBILITY), + accessibilityCondContr.getWrappedDefaultAccessConditionVC(translate("condition.accessibility.title"))); + tabbedPane.addTab(translate(PANE_TAB_VCCONFIG), editVc); + } + + @Override + public String[] getPaneKeys() { + return paneKeys; + } + + @Override + public TabbedPane getTabbedPane() { + return tabPane; + } + + @Override + public void event(UserRequest ureq, Controller source, Event event) { + if (source == card2BrainConfigController && event.equals(Event.DONE_EVENT)) { + card2BrainConfigController.getUpdatedConfig(); + fireEvent(ureq, NodeEditController.NODECONFIG_CHANGED_EVENT); + } + } + + @Override + protected void event(UserRequest ureq, Component source, Event event) { + // + } + + @Override + protected void doDispose() { + // + } + +} diff --git a/src/main/java/org/olat/course/nodes/card2brain/Card2BrainPeekViewController.java b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainPeekViewController.java new file mode 100644 index 0000000000000000000000000000000000000000..aa1c5c69c2b3ac210ff1329eb2f417352b440752 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainPeekViewController.java @@ -0,0 +1,88 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.card2brain; + +import org.olat.NewControllerFactory; +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.Component; +import org.olat.core.gui.components.panel.Panel; +import org.olat.core.gui.components.velocity.VelocityContainer; +import org.olat.core.gui.control.Event; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.controller.BasicController; +import org.olat.modules.card2brain.Card2BrainModule; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 12.04.2017<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class Card2BrainPeekViewController extends BasicController { + + private final static String EVENT_RUN = "run"; + + private Panel main; + private VelocityContainer container; + + private final Long repositoryEntryKey; + private final String nodeId; + private final String flashcardAlias; + + @Autowired + private Card2BrainModule card2BrainModule; + + public Card2BrainPeekViewController(UserRequest ureq, WindowControl wControl, Long repositoryEntryKey, String nodeId, String flashcardAlias) { + super(ureq, wControl); + + this.flashcardAlias = flashcardAlias; + this.repositoryEntryKey = repositoryEntryKey; + this.nodeId = nodeId; + + main = new Panel("card2brainPanel"); + runPeekview(); + putInitialPanel(main); + } + + private void runPeekview() { + container = createVelocityContainer("peekview"); + + String src = String.format(card2BrainModule.getPeekViewUrl(), flashcardAlias); + container.contextPut("src", src); + container.contextPut("run", EVENT_RUN); + + main.setContent(container); + } + + @Override + protected void event(UserRequest ureq, Component source, Event event) { + if (source == container && EVENT_RUN.equals(event.getCommand())) { + String businessPath = "[RepositoryEntry:" + repositoryEntryKey + "][CourseNode:" + nodeId + "]"; + NewControllerFactory.getInstance().launch(businessPath, ureq, getWindowControl()); + } + } + + @Override + protected void doDispose() { + // + } + +} diff --git a/src/main/java/org/olat/course/nodes/card2brain/Card2BrainRunController.java b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainRunController.java new file mode 100644 index 0000000000000000000000000000000000000000..b6c18e61963fe1ba52bf40c521a8aa3a3d19887b --- /dev/null +++ b/src/main/java/org/olat/course/nodes/card2brain/Card2BrainRunController.java @@ -0,0 +1,110 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.card2brain; + +import java.util.Map; + +import org.olat.core.dispatcher.mapper.Mapper; +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.Component; +import org.olat.core.gui.components.htmlheader.jscss.JSAndCSSComponent; +import org.olat.core.gui.components.panel.Panel; +import org.olat.core.gui.components.velocity.VelocityContainer; +import org.olat.core.gui.control.Event; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.controller.BasicController; +import org.olat.course.nodes.Card2BrainCourseNode; +import org.olat.ims.lti.LTIContext; +import org.olat.ims.lti.LTIManager; +import org.olat.ims.lti.ui.PostDataMapper; +import org.olat.modules.ModuleConfiguration; +import org.olat.modules.card2brain.Card2BrainModule; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 11.04.2017<br> + * + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class Card2BrainRunController extends BasicController { + + private Panel main; + + private final ModuleConfiguration config; + + @Autowired + private Card2BrainModule card2BrainModule; + @Autowired + private LTIManager ltiManager; + + public Card2BrainRunController(UserRequest ureq, WindowControl wControl, ModuleConfiguration config) { + super(ureq, wControl); + + this.config = config; + + main = new Panel("card2brainPanel"); + runCard2Brain(ureq); + putInitialPanel(main); + } + + private void runCard2Brain(UserRequest ureq) { + VelocityContainer container = createVelocityContainer("run"); + + String url = String.format(card2BrainModule.getBaseUrl(), + config.getStringValue(Card2BrainCourseNode.CONFIG_FLASHCARD_ALIAS)); + + String oauth_consumer_key; + String oauth_secret; + if (config.getBooleanSafe(Card2BrainCourseNode.CONFIG_ENABLE_PRIVATE_LOGIN)) { + oauth_consumer_key = (String) config.get(Card2BrainCourseNode.CONFIG_PRIVATE_KEY); + oauth_secret = (String) config.get(Card2BrainCourseNode.CONFIG_PRIVATE_SECRET); + } else { + oauth_consumer_key = card2BrainModule.getEnterpriseKey(); + oauth_secret = card2BrainModule.getEnterpriseSecret(); + } + + LTIContext context = new Card2BrainContext(); + Map<String, String> unsignedProps = ltiManager.forgeLTIProperties(getIdentity(), getLocale(), context, true, + true); + + Mapper contentMapper = new PostDataMapper(unsignedProps, url, oauth_consumer_key, oauth_secret, false); + + String mapperUri = registerMapper(ureq, contentMapper); + container.contextPut("mapperUri", mapperUri + "/"); + + JSAndCSSComponent js = new JSAndCSSComponent("js", new String[] { "js/iframeResizer/iframeResizer.min.js" }, null); + container.put("js", js); + + main.setContent(container); + } + + @Override + protected void event(UserRequest ureq, Component source, Event event) { + // + } + + @Override + protected void doDispose() { + // + } + +} diff --git a/src/main/java/org/olat/course/nodes/card2brain/_content/edit.html b/src/main/java/org/olat/course/nodes/card2brain/_content/edit.html new file mode 100644 index 0000000000000000000000000000000000000000..7f74c5e349c1700e11926f137bbaf1263d2387ba --- /dev/null +++ b/src/main/java/org/olat/course/nodes/card2brain/_content/edit.html @@ -0,0 +1 @@ +$r.render("configForm") \ No newline at end of file diff --git a/src/main/java/org/olat/course/nodes/card2brain/_content/peekview.html b/src/main/java/org/olat/course/nodes/card2brain/_content/peekview.html new file mode 100644 index 0000000000000000000000000000000000000000..d91e81afc69bf3b0a8057f0e125f1318f1b09368 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/card2brain/_content/peekview.html @@ -0,0 +1,4 @@ +<div class="o_c2b_peekview"> + <div class="o_c2b_cover" onClick="$r.javaScriptCommand(${run});""></div> + <iframe class="o_c2b_iframe" src="${src}" frameborder="0" scrolling="no"></iframe> +</div> diff --git a/src/main/java/org/olat/course/nodes/card2brain/_content/run.html b/src/main/java/org/olat/course/nodes/card2brain/_content/run.html new file mode 100644 index 0000000000000000000000000000000000000000..0a56e2dc46a8a3207be3b9c7d9826e759dc832fa --- /dev/null +++ b/src/main/java/org/olat/course/nodes/card2brain/_content/run.html @@ -0,0 +1,20 @@ +<div class="o_iframedisplay"> + <iframe id="Card2BrainIFrame" src="${mapperUri}?$r.uuid" marginwidth="0" marginheight="0" frameborder="0" allowfullscreen="true" webkitallowfullscreen="true" mozallowfullscreen="true"></iframe> +</div> +<script type="text/javascript"> +/* <![CDATA[ */ + ## Init the iFrame to the max height possible. + jQuery(function() {b_resizeIframeToMainMaxHeight("Card2BrainIFrame");}); + + ## Activate the iframe-resize script for the iFrame. + ## Set initally scrolling to true as fallback if the site in the iFrame + ## has not loaded the contentWindow script. + jQuery('#Card2BrainIFrame').iFrameResize({ + checkOrigin:false, + scrolling: true, + initCallback: function(iframe) { + iframe.style.overflow = 'hidden'; + iframe.scrolling = 'no'; + }}); +/* ]]> */ +</script> \ No newline at end of file diff --git a/src/main/java/org/olat/course/nodes/card2brain/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/card2brain/_i18n/LocalStrings_de.properties new file mode 100644 index 0000000000000000000000000000000000000000..e2d3f2f3a42c2bc861db4254938fedc592cc30b3 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/card2brain/_i18n/LocalStrings_de.properties @@ -0,0 +1,21 @@ +#Thu Apr 20 14:14:09 CEST 2017 +condition.accessibility.title=Zugang +edit.FlashcardHelpText=Das Alias ist in den Details der Kartenkartei auf card2brain zu finden. Das Alias ist der letzte Abschnitt des Weblinks, z.B. 20170419_das_kleine_garten_abc +edit.KeyHelpText=Der API Key ist in den Einstellungen auf der Webseite von card2brain zu finden. +edit.SecretHelpText=Das API Secret ist in den Einstellungen auf der Webseite von card2brain zu finden. +edit.access.enablePrivateLogin=Privates Login verwenden +edit.access.privateKey=API Key +edit.access.privateSecret=API Secret +edit.flashcard.alias=Alias der Lernkartei +edit.preview=Vorschau +edit.title=Lernkartei konfigurieren +edit.warning.aliasCheckFailed=Das Alias konnte nicht verifiziert werden. Existiert eine Kartenkartei mit diesem Alias? +edit.warning.bothLoginDisabled=Beide Login Methoden wurden deaktiviert. Wenden Sie sich an den Administrator. +edit.warning.bothLoginDisabled.short=Beide Login Methoden sind deaktiviert. +edit.warning.enterpriseLoginDisabled=Diese Lernkartei wurde mit einem Enterprise Login konfiguriert. Das Enterprise Login wurde in der Zwischenzeit durch den Administrator deaktiviert. +edit.warning.enterpriseLoginDisabled.short=Das Enterprise Login ist deaktiviert. +edit.warning.privateLoginDisabled=Diese Lernkartei wurde mit einem Private Login konfiguriert. Das Private Login wurde in der Zwischenzeit durch den Administrator deaktiviert. Speichern Sie die Konfiguration erneut, um das Enterprise Login zu \u00FCbernehmen. +edit.warning.privateLoginDisabled.short=Das private Login ist deaktiviert. +link.text=card2brain Lernkarten +pane.tab.accessibility=Zugang +pane.tab.vcconfig=Lernkartei diff --git a/src/main/java/org/olat/course/nodes/card2brain/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/card2brain/_i18n/LocalStrings_en.properties new file mode 100644 index 0000000000000000000000000000000000000000..d680001ce7cfc32c3eac5e6bb913c512a0c05a06 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/card2brain/_i18n/LocalStrings_en.properties @@ -0,0 +1,21 @@ +#Thu Apr 20 14:16:23 CEST 2017 +condition.accessibility.title=Access +edit.FlashcardHelpText=The alias is available in the details of the set of flashcards on the card2brain website. The alias is the last part of the weblink, e.g. 20170419_das_kleine_garten_abc +edit.KeyHelpText=The API Key is available in the preferences of the card2brain website. +edit.SecretHelpText=The API Secret is available in the preferences of the card2brain website. +edit.access.enablePrivateLogin=Use private login +edit.access.privateKey=API Key +edit.access.privateSecret=API Secret +edit.flashcard.alias=Alias of flashcards +edit.preview=Preview +edit.title=Flashcard Configuration +edit.warning.aliasCheckFailed=The alias could not be verified. Does a set of flashcard with that alias exist? +edit.warning.bothLoginDisabled=Both login methods are disabled. Please contact your administrator. +edit.warning.bothLoginDisabled.short=Both login methods are disabled. +edit.warning.enterpriseLoginDisabled=That set of flashcard was configured with a enterprise login. The enterprise login was disabled by the administrator in the meantime. +edit.warning.enterpriseLoginDisabled.short=The enterprise login is disabled. +edit.warning.privateLoginDisabled=That set of flashcard was configured with a private login. The private login was disabled by the administrator in the meantime. Save the configuration again to use the enterprise login. +edit.warning.privateLoginDisabled.short=The private login is disabled. +link.text=card2brain flashcards +pane.tab.accessibility=Access +pane.tab.vcconfig=Set of flashcards diff --git a/src/main/java/org/olat/course/nodes/card2brain/_spring/card2brainContext.xml b/src/main/java/org/olat/course/nodes/card2brain/_spring/card2brainContext.xml new file mode 100644 index 0000000000000000000000000000000000000000..dc45f75594cc9cf10452db20b4c896aafeb58ee8 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/card2brain/_spring/card2brainContext.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans.xsd"> + + <bean id="card2brain" class="org.olat.course.nodes.card2brain.Card2BrainCourseNodeConfiguration" scope="prototype"> + <property name="order" value="250" /> + </bean> + +</beans> \ No newline at end of file diff --git a/src/main/java/org/olat/course/nodes/cl/ui/CheckListConfigurationController.java b/src/main/java/org/olat/course/nodes/cl/ui/CheckListConfigurationController.java index b089ef07c9158df74c10764b6fbdb37d5ea97fcc..992457002fdf5a81cceb294a850265db60648220 100644 --- a/src/main/java/org/olat/course/nodes/cl/ui/CheckListConfigurationController.java +++ b/src/main/java/org/olat/course/nodes/cl/ui/CheckListConfigurationController.java @@ -55,7 +55,7 @@ public class CheckListConfigurationController extends FormBasicController { private static final String[] onKeys = new String[]{ "on" }; private static final String[] outputKeys = new String[]{ "cutvalue", "sum", "coach"}; - private MultipleSelectionElement dueDateEl, scoreGrantedEl, passedEl, commentEl; + private MultipleSelectionElement dueDateEl, scoreGrantedEl, passedEl, commentEl, assessmentDocsEl; private SingleSelection outputEl, numOfCheckListEl, sumCheckboxEl; private TextElement minPointsEl, maxPointsEl, cutValueEl, titlePrefixEl; private RichTextElement tipUserEl, tipCoachEl; @@ -201,6 +201,14 @@ public class CheckListConfigurationController extends FormBasicController { commentEl.select(onKeys[0], true); } + assessmentDocsEl = uifactory.addCheckboxesHorizontal("form.individual.assessment.docs", formLayout, new String[]{"xx"}, new String[]{null}); + boolean docsCf = config.getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_INDIVIDUAL_ASSESSMENT_DOCS, false); + if(docsCf) { + assessmentDocsEl.select(onKeys[0], true); + } + + uifactory.addSpacerElement("spacer-comment", formLayout, false); + String iu = (String)config.get(MSCourseNode.CONFIG_KEY_INFOTEXT_USER); tipUserEl = uifactory.addRichTextElementForStringDataMinimalistic("tip.user", "config.tip.user", iu, 5, -1, formLayout, getWindowControl()); @@ -272,6 +280,8 @@ public class CheckListConfigurationController extends FormBasicController { // mandatory comment flag config.set(MSCourseNode.CONFIG_KEY_HAS_COMMENT_FIELD, new Boolean(commentEl.isSelected(0))); + // individual assessment docs + config.setBooleanEntry(MSCourseNode.CONFIG_KEY_HAS_INDIVIDUAL_ASSESSMENT_DOCS, new Boolean(assessmentDocsEl.isSelected(0))); // set info text only if something is in there String iu = tipUserEl.getValue(); diff --git a/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunController.java b/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunController.java index 751769b95f888b4131ce41989c52f4f30ec7f9ed..0859355a9947deb12c6639cd51cdb5b7af1c21cb 100644 --- a/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunController.java +++ b/src/main/java/org/olat/course/nodes/cl/ui/CheckListRunController.java @@ -19,6 +19,7 @@ */ package org.olat.course.nodes.cl.ui; +import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -48,6 +49,7 @@ import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; +import org.olat.core.util.prefs.Preferences; import org.olat.core.util.vfs.VFSContainer; import org.olat.core.util.vfs.VFSItem; import org.olat.core.util.vfs.VFSLeaf; @@ -62,6 +64,7 @@ import org.olat.course.nodes.cl.model.Checkbox; import org.olat.course.nodes.cl.model.CheckboxList; import org.olat.course.nodes.cl.model.DBCheck; import org.olat.course.nodes.cl.model.DBCheckbox; +import org.olat.course.nodes.ms.DocumentsMapper; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.modules.ModuleConfiguration; import org.olat.modules.assessment.AssessmentEntry; @@ -137,6 +140,7 @@ public class CheckListRunController extends FormBasicController implements Contr layoutCont.contextPut("readOnly", new Boolean(readOnly)); if(dueDate != null) { layoutCont.contextPut("dueDate", dueDate); + layoutCont.contextPut("in-due-date", isPanelOpen(ureq, "due-date", true)); if(dueDate.compareTo(new Date()) < 0) { layoutCont.contextPut("afterDueDate", Boolean.TRUE); } @@ -170,34 +174,36 @@ public class CheckListRunController extends FormBasicController implements Contr if(withScore || withPassed) { layoutCont.contextPut("enableScoreInfo", Boolean.TRUE); - exposeConfigToVC(layoutCont); - exposeUserDataToVC(layoutCont); + exposeConfigToVC(ureq, layoutCont); + exposeUserDataToVC(ureq, layoutCont); } else { layoutCont.contextPut("enableScoreInfo", Boolean.FALSE); } } } - private void exposeConfigToVC(FormLayoutContainer layoutCont) { + private void exposeConfigToVC(UserRequest ureq, FormLayoutContainer layoutCont) { layoutCont.contextPut(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD, config.get(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD)); layoutCont.contextPut(MSCourseNode.CONFIG_KEY_HAS_PASSED_FIELD, config.get(MSCourseNode.CONFIG_KEY_HAS_PASSED_FIELD)); layoutCont.contextPut(MSCourseNode.CONFIG_KEY_HAS_COMMENT_FIELD, config.get(MSCourseNode.CONFIG_KEY_HAS_COMMENT_FIELD)); String infoTextUser = (String) config.get(MSCourseNode.CONFIG_KEY_INFOTEXT_USER); if(StringHelper.containsNonWhitespace(infoTextUser)) { layoutCont.contextPut(MSCourseNode.CONFIG_KEY_INFOTEXT_USER, infoTextUser); + layoutCont.contextPut("in-disclaimer", isPanelOpen(ureq, "disclaimer", true)); } layoutCont.contextPut(MSCourseNode.CONFIG_KEY_PASSED_CUT_VALUE, AssessmentHelper.getRoundedScore((Float)config.get(MSCourseNode.CONFIG_KEY_PASSED_CUT_VALUE))); layoutCont.contextPut(MSCourseNode.CONFIG_KEY_SCORE_MIN, AssessmentHelper.getRoundedScore((Float)config.get(MSCourseNode.CONFIG_KEY_SCORE_MIN))); layoutCont.contextPut(MSCourseNode.CONFIG_KEY_SCORE_MAX, AssessmentHelper.getRoundedScore((Float)config.get(MSCourseNode.CONFIG_KEY_SCORE_MAX))); } - private void exposeUserDataToVC(FormLayoutContainer layoutCont) { + private void exposeUserDataToVC(UserRequest ureq, FormLayoutContainer layoutCont) { AssessmentEntry scoreEval = courseNode.getUserAssessmentEntry(userCourseEnv); if(scoreEval == null) { layoutCont.contextPut("score", null); layoutCont.contextPut("hasPassedValue", Boolean.FALSE); layoutCont.contextPut("passed", null); layoutCont.contextPut("comment", null); + layoutCont.contextPut("docs", null); } else { boolean resultsVisible = scoreEval.getUserVisibility() == null || scoreEval.getUserVisibility().booleanValue(); layoutCont.contextPut("resultsVisible", resultsVisible); @@ -205,8 +211,21 @@ public class CheckListRunController extends FormBasicController implements Contr layoutCont.contextPut("hasPassedValue", (scoreEval.getPassed() == null ? Boolean.FALSE : Boolean.TRUE)); layoutCont.contextPut("passed", scoreEval.getPassed()); if(resultsVisible) { - StringBuilder comment = Formatter.stripTabsAndReturns(scoreEval.getComment()); - layoutCont.contextPut("comment", StringHelper.xssScan(comment)); + if(courseNode.hasCommentConfigured()) { + StringBuilder comment = Formatter.stripTabsAndReturns(scoreEval.getComment()); + layoutCont.contextPut("comment", StringHelper.xssScan(comment)); + layoutCont.contextPut("in-comment", isPanelOpen(ureq, "comment", true)); + } + if(courseNode.hasIndividualAsssessmentDocuments()) { + List<File> docs = courseNode.getIndividualAssessmentDocuments(userCourseEnv); + String mapperUri = registerCacheableMapper(ureq, null, new DocumentsMapper(docs)); + layoutCont.contextPut("docsMapperUri", mapperUri); + layoutCont.contextPut("docs", docs); + layoutCont.contextPut("in-assessmentDocuments", isPanelOpen(ureq, "assessmentDocuments", true)); + } + } else { + layoutCont.contextPut("comment", null); + layoutCont.contextPut("docs", null); } } @@ -270,13 +289,19 @@ public class CheckListRunController extends FormBasicController implements Contr CheckboxWrapper wrapper = (CheckboxWrapper)boxEl.getUserObject(); if(wrapper != null) { boolean checked = boxEl.isAtLeastSelected(1); - doCheck(wrapper, checked); + doCheck(ureq, wrapper, checked); + } + } else if("ONCLICK".equals(event.getCommand())) { + String cmd = ureq.getParameter("fcid"); + String panelId = ureq.getParameter("panel"); + if(StringHelper.containsNonWhitespace(cmd) && StringHelper.containsNonWhitespace(panelId)) { + saveOpenPanel(ureq, panelId, "show".equals(cmd)); } } super.formInnerEvent(ureq, source, event); } - private void doCheck(CheckboxWrapper wrapper, boolean checked) { + private void doCheck(UserRequest ureq, CheckboxWrapper wrapper, boolean checked) { DBCheckbox theOne; if(wrapper.getDbCheckbox() == null) { String uuid = wrapper.getCheckbox().getCheckboxId(); @@ -305,7 +330,7 @@ public class CheckListRunController extends FormBasicController implements Contr logUpdateCheck(checkbox.getCheckboxId(), checkbox.getTitle()); } - exposeUserDataToVC(flc); + exposeUserDataToVC(ureq, flc); } private void logUpdateCheck(String checkboxId, String boxTitle) { @@ -318,6 +343,24 @@ public class CheckListRunController extends FormBasicController implements Contr //nothin to do } + private boolean isPanelOpen(UserRequest ureq, String panelId, boolean def) { + Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); + Boolean showConfig = (Boolean) guiPrefs.get(CheckListRunController.class, getOpenPanelId(panelId)); + return showConfig == null ? def : showConfig.booleanValue(); + } + + private void saveOpenPanel(UserRequest ureq, String panelId, boolean newValue) { + Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); + if (guiPrefs != null) { + guiPrefs.putAndSave(CheckListRunController.class, getOpenPanelId(panelId), new Boolean(newValue)); + } + flc.getFormItemComponent().contextPut("in-" + panelId, new Boolean(newValue)); + } + + private String getOpenPanelId(String panelId) { + return panelId + "::" + userCourseEnv.getCourseEnvironment().getCourseResourceableId() + "::" + courseNode.getIdent(); + } + public static class CheckboxWrapper { private final Checkbox checkbox; diff --git a/src/main/java/org/olat/course/nodes/cl/ui/_content/run.html b/src/main/java/org/olat/course/nodes/cl/ui/_content/run.html index a9720e9731dc1f313a6d130a9545d173aac8b621..7e514eba02e0b407030e6dc1886c917269a642c6 100644 --- a/src/main/java/org/olat/course/nodes/cl/ui/_content/run.html +++ b/src/main/java/org/olat/course/nodes/cl/ui/_content/run.html @@ -21,7 +21,11 @@ #if($resultsVisible) $score #else - $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + <span id="o_score_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + </span> + $r.mouseoverHelp("o_score_in_review", "assessment.review.explanation") #end #else <div class="o_noinfo">$r.translate("score.noscore")</div> @@ -41,7 +45,11 @@ <th>$r.translate("passed.yourpassed")</th> <td> #if($hasPassedValue && !$resultsVisible) - $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + <span id="o_passed_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + </span> + $r.mouseoverHelp("o_passed_in_review", "assessment.review.explanation") #elseif($hasPassedValue && $passed) <i class="o_icon o_icon_passed"> </i> $r.translate("passed.yes") #elseif($hasPassedValue && !$passed) @@ -61,46 +69,79 @@ <div class="panel panel-default o_comment"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseComment"> <h4 class="panel-title"> - <i id="collapseCommentToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> + <i id="collapseCommentToggler" class="o_icon o_icon-fw #if($r.isTrue($in-comment)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("comment.title") </h4> </div> - <div id="collapseComment" class="panel-collapse collapse in"><div class="panel-body"> + <div id="collapseComment" class="panel-collapse collapse #if($r.isTrue($in-comment)) in #end"><div class="panel-body"> $comment </div></div> </div> <script type="text/javascript"> /* <![CDATA[ */ jQuery('#collapseComment').on('hide.bs.collapse', function () { - jQuery('#collapseCommentToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + jQuery('#collapseCommentToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $f.backgroundCommand("hide","panel","comment") }) jQuery('#collapseComment').on('show.bs.collapse', function () { - jQuery('#collapseCommentToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + jQuery('#collapseCommentToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $f.backgroundCommand("show","panel","comment") }) /* ]]> */ </script> #end +#if ($r.isNotEmpty($docs)) + <div class="panel panel-default o_assessment_docs"> + <div class="panel-heading" data-toggle="collapse" data-target="#collapseAssessmentDocuments"> + <h4 class="panel-title"> + <i id="collapseAssessmentDocumentsToggler" class="o_icon o_icon-fw #if($r.isTrue($in-assessmentDocuments)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> + $r.translate("assessment.documents.title") + </h4> + </div> + <div id="collapseAssessmentDocuments" class="panel-collapse collapse #if($r.isTrue($in-assessmentDocuments)) in #end"><div class="panel-body"> + <ul class="list-unstyled"> + #foreach($doc in $docs) + <li><a href="$docsMapperUri/$doc.name" target="_blank"><i class="o_icon o_icon-fw $r.getFiletypeIconCss($doc.name)"> </i> $r.escapeHtml($doc.name) ($r.formatBytes(${doc.length()}))</a></li> + #end + </ul> + </div></div> + </div> + <script type="text/javascript"> + /* <![CDATA[ */ + jQuery('#collapseAssessmentDocuments').on('hide.bs.collapse', function () { + jQuery('#collapseAssessmentDocumentsToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $f.backgroundCommand("hide","panel","assessmentDocuments") + }) + jQuery('#collapseAssessmentDocuments').on('show.bs.collapse', function () { + jQuery('#collapseAssessmentDocumentsToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $f.backgroundCommand("show","panel","assessmentDocuments") + }) + /* ]]> */ + </script> +#end #if($infoTextUser) <div class="panel panel-default o_disclaimer"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseDisclaimer"> <h4 class="panel-title"> - <i id="collapseDisclaimerToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> + <i id="collapseDisclaimerToggler" class="o_icon o_icon-fw #if($r.isTrue($in-disclaimer)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("info.title") </h4> </div> - <div id="collapseDisclaimer" class="panel-collapse collapse in"><div class="panel-body"> + <div id="collapseDisclaimer" class="panel-collapse collapse #if($r.isTrue($in-disclaimer)) in #end"><div class="panel-body"> $r.formatLatexFormulas($infoTextUser) </div></div> </div> <script type="text/javascript"> /* <![CDATA[ */ jQuery('#collapseDisclaimer').on('hide.bs.collapse', function () { - jQuery('#collapseDisclaimerToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + jQuery('#collapseDisclaimerToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $f.backgroundCommand("hide","panel","disclaimer") }) jQuery('#collapseDisclaimer').on('show.bs.collapse', function () { - jQuery('#collapseDisclaimerToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + jQuery('#collapseDisclaimerToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $f.backgroundCommand("show","panel","disclaimer") }) /* ]]> */ </script> @@ -110,14 +151,12 @@ <div class="panel panel-default o_duedate #if($afterDueDate) o_duedate_passed #end"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseDuedate"> <h4 class="panel-title"> - <i id="collapseDuedateToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> + <i id="collapseDuedateToggler" class="o_icon o_icon-fw #if($r.isTrue($in-due-date)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("config.due.date") </h4> </div> - <div id="collapseDuedate" class="panel-collapse collapse in"><div class="panel-body"> - <p> - $r.translate("run.due.date.desc") - </p> + <div id="collapseDuedate" class="panel-collapse collapse #if($r.isTrue($in-due-date)) in #end"><div class="panel-body"> + <p>$r.translate("run.due.date.desc")</p> <p class="#if($afterDueDate) o_failed #else o_passed #end"> <i class="o_icon o_icon_calendar o_icon-fw"></i> $r.translate("run.due.date", $r.formatDateAndTime($dueDate)) @@ -127,10 +166,12 @@ <script type="text/javascript"> /* <![CDATA[ */ jQuery('#collapseDuedate').on('hide.bs.collapse', function () { - jQuery('#collapseManagedToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + jQuery('#collapseDuedateToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $f.backgroundCommand("hide","panel","due-date") }) jQuery('#collapseDuedate').on('show.bs.collapse', function () { - jQuery('#collapseDuedateToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + jQuery('#collapseDuedateToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $f.backgroundCommand("show","panel","due-date") }) /* ]]> */ </script> diff --git a/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_de.properties index 5abf7b061a2a8fb4713ddcee44954f3cce8c2cfc..63531f6e32d7408fef15e41a988853ecccea61fe 100644 --- a/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_de.properties @@ -2,6 +2,7 @@ add.checkbox=Checkbox hinzuf\u00FCgen assessment=Bewertung assessment.checkbox.description=Bewertung pro Checkbox\: Bearbeiten Sie hier die Kreuze ihrer betreuten Teilnehmer nach Checkbox. +assessment.documents.title=$org.olat.course.nodes.ms\:assessment.documents.title award.point.on=Punkte vergeben bei Auswahl box.assessment=Per Box Bewertung box.check=Check @@ -44,6 +45,7 @@ down=Runter edit.checkbox=Checkbox bearbeiten file=Datei filter.all=Alle anzeigen +form.individual.assessment.docs=$org.olat.course.nodes.ms\:form.individual.assessment.docs form.error.date=Es muss ein Datum angegeben werden. form.error.scoreOutOfRange=$org.olat.course.assessment\:form.error.scoreOutOfRange form.error.wrongFloat=$org.olat.course.nodes.ms\:form.error.wrongFloat diff --git a/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_en.properties index 7d2a04d62df92de1dcad749f2117636c7dd03b8f..b6027b44d7ea2e054d358430c85eee9955d68013 100644 --- a/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_en.properties @@ -2,6 +2,7 @@ add.checkbox=Add checkbox assessment=Assessment assessment.checkbox.description=Edit per Checkbox\: Apply the checkbox filter to edit the same checkbox across all participants. +assessment.documents.title=$org.olat.course.nodes.ms\:assessment.documents.title award.point.on=Grant score on check box.assessment=Edit per checkbox box.check=Check @@ -44,6 +45,7 @@ down=Down edit.checkbox=Edit checkbox file=File filter.all=Show all +form.individual.assessment.docs=$org.olat.course.nodes.ms\:form.individual.assessment.docs form.error.date=A date must be indicated. form.error.scoreOutOfRange=$org.olat.course.assessment\:form.error.scoreOutOfRange form.error.wrongFloat=$org.olat.course.nodes.ms\:form.error.wrongFloat diff --git a/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_fr.properties index 1788513f71a183625739cd878e19cc0e2221f420..060217e575221bb25999292c531d64aec6d115ec 100644 --- a/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/nodes/cl/ui/_i18n/LocalStrings_fr.properties @@ -1,7 +1,8 @@ -#Wed Mar 08 12:19:55 CET 2017 +#Thu Jun 08 20:30:59 CEST 2017 add.checkbox=Ajouter une case \u00E0 cocher assessment=Evaluation assessment.checkbox.description=Modifier en fonction de la case \u00E0 cocher\: modifier la case \u00E0 cocher s\u00E9lectionner gr\u00E2ce au filtre de tous les participants. +assessment.documents.title=$org.olat.course.nodes.ms\:assessment.documents.title award.point.on=Points attribu\u00E9s lors de la s\u00E9lection box.assessment=Editer par case \u00E0 cocher box.check=S\u00E9lectionn\u00E9 @@ -47,6 +48,7 @@ filter.all=Tout afficher form.error.date=La date est un champ obligatoire. form.error.scoreOutOfRange=$org.olat.course.assessment\:form.error.scoreOutOfRange form.error.wrongFloat=$org.olat.course.nodes.ms\:form.error.wrongFloat +form.individual.assessment.docs=$org.olat.course.nodes.ms\:form.individual.assessment.docs info.title=$org.olat.course.nodes.ms\:info.title label=Etiquette label.achieved=Atteint diff --git a/src/main/java/org/olat/course/nodes/en/EnrollmentManager.java b/src/main/java/org/olat/course/nodes/en/EnrollmentManager.java index 51d8252224ac4ac403a8b64db9e278f500a361a7..a201774b274fbdd61135087406aad8c0f69e6f94 100644 --- a/src/main/java/org/olat/course/nodes/en/EnrollmentManager.java +++ b/src/main/java/org/olat/course/nodes/en/EnrollmentManager.java @@ -150,7 +150,7 @@ public class EnrollmentManager extends BasicManager { if(bundle != null) { mailManager.sendMessage(bundle); } - MailHelper.printErrorsAndWarnings(result, wControl, trans.getLocale()); + MailHelper.printErrorsAndWarnings(result, wControl, false, trans.getLocale()); } public void doCancelEnrollmentInWaitingList(final Identity identity, final BusinessGroup enrolledWaitingListGroup, final ENCourseNode enNode, @@ -174,7 +174,7 @@ public class EnrollmentManager extends BasicManager { if(bundle != null) { mailManager.sendMessage(bundle); } - MailHelper.printErrorsAndWarnings(result, wControl, trans.getLocale()); + MailHelper.printErrorsAndWarnings(result, wControl, false, trans.getLocale()); } // Helper Methods @@ -396,7 +396,7 @@ public class EnrollmentManager extends BasicManager { if(bundle != null) { mailManager.sendMessage(bundle); } - MailHelper.printErrorsAndWarnings(result, wControl, trans.getLocale()); + MailHelper.printErrorsAndWarnings(result, wControl, false, trans.getLocale()); return true; } @@ -433,7 +433,7 @@ public class EnrollmentManager extends BasicManager { if(bundle != null) { mailManager.sendMessage(bundle); } - MailHelper.printErrorsAndWarnings(result, wControl, trans.getLocale()); + MailHelper.printErrorsAndWarnings(result, wControl, false, trans.getLocale()); return true; } diff --git a/src/main/java/org/olat/course/nodes/feed/FeedNodeSecurityCallback.java b/src/main/java/org/olat/course/nodes/feed/FeedNodeSecurityCallback.java index 46a67cf25a691a1f34d2bf1cfe824d8dfc1c53ec..018e98961595c203e376c9dd4aec9026c6bb0e72 100644 --- a/src/main/java/org/olat/course/nodes/feed/FeedNodeSecurityCallback.java +++ b/src/main/java/org/olat/course/nodes/feed/FeedNodeSecurityCallback.java @@ -19,6 +19,7 @@ */ package org.olat.course.nodes.feed; +import org.olat.core.commons.services.notifications.SubscriptionContext; import org.olat.course.run.userview.NodeEvaluation; import org.olat.modules.webFeed.FeedSecurityCallback; @@ -37,6 +38,7 @@ public class FeedNodeSecurityCallback implements FeedSecurityCallback { private boolean isOlatAdmin; private boolean isGuestOnly; private boolean isOwner; + private SubscriptionContext subsContext; public FeedNodeSecurityCallback(NodeEvaluation ne, boolean isOlatAdmin, boolean isOwner, boolean isGuestOnly) { this.ne = ne; @@ -98,4 +100,14 @@ public class FeedNodeSecurityCallback implements FeedSecurityCallback { public boolean mayViewAllDrafts() { return isOwner || isOlatAdmin; } + + @Override + public SubscriptionContext getSubscriptionContext() { + return subsContext; + } + + @Override + public void setSubscriptionContext(SubscriptionContext subsContext) { + this.subsContext = subsContext; + } } diff --git a/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_de.properties index 383ba0a5cb74888bc4814732c48fdcc58364748c..b1cee0a9d405ceae48f9aa4674e95cd7ecbbcc65 100644 --- a/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/gta/ui/_i18n/LocalStrings_de.properties @@ -37,7 +37,7 @@ coach.corrections.waiting=Die eingereichte Arbeit wartet auf Begutachtung coach.document=Dokumente coach.document.open.editor=Dokument erstellen coach.documents.successfully.reviewed=Begutachtet\! -coach.feedback.documents.desc=Die hier eingestellten Dokumente werden f\u00FCr den Teilnehmer sichtbar, sobald Sie die die Abgabe akzeptiert haben oder eine \u00DCberarbeitung einfordern. +coach.feedback.documents.desc=Die hier eingestellten Dokumente werden f\u00FCr den Teilnehmer sichtbar, sobald Sie die Abgabe akzeptiert haben oder eine \u00DCberarbeitung einfordern. coach.feedback.documents.title=Dokumente f\u00FCr Feedback vorbereiten coach.need.revision.button=Ben\u00F6tigt \u00DCberarbeitung coach.reopen=Neu er\u00F6ffnen diff --git a/src/main/java/org/olat/course/nodes/iq/ConfirmChangeResourceController.java b/src/main/java/org/olat/course/nodes/iq/ConfirmChangeResourceController.java new file mode 100644 index 0000000000000000000000000000000000000000..a6b971a0430cffad2db7bf491a57eec1e7702228 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/iq/ConfirmChangeResourceController.java @@ -0,0 +1,147 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.iq; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.util.Date; +import java.util.zip.ZipOutputStream; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItem; +import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.FormLink; +import org.olat.core.gui.components.form.flexible.impl.FormBasicController; +import org.olat.core.gui.components.form.flexible.impl.FormEvent; +import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; +import org.olat.core.gui.components.link.Link; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.Event; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.media.FileMediaResource; +import org.olat.core.util.Formatter; +import org.olat.core.util.StringHelper; +import org.olat.course.CourseFactory; +import org.olat.course.ICourse; +import org.olat.course.nodes.QTICourseNode; +import org.olat.repository.RepositoryEntry; + +/** + * This controller will make an archive of the current test entry results + * and propose some informations. + * + * + * Initial date: 24 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class ConfirmChangeResourceController extends FormBasicController { + + private FormLink downloadButton; + + private final ICourse course; + private final File downloadArchiveFile; + private final QTICourseNode courseNode; + private final RepositoryEntry newTestEntry; + private final RepositoryEntry currentTestEntry; + private final int numOfAssessedIdentities; + + public ConfirmChangeResourceController(UserRequest ureq, WindowControl wControl, ICourse course, QTICourseNode courseNode, + RepositoryEntry newTestEntry, RepositoryEntry currentTestEntry, int numOfAssessedIdentities) { + super(ureq, wControl, "confirm_change"); + this.course = course; + this.courseNode = courseNode; + this.newTestEntry = newTestEntry; + this.currentTestEntry = currentTestEntry; + this.numOfAssessedIdentities = numOfAssessedIdentities; + downloadArchiveFile = prepareArchive(ureq); + initForm(ureq); + } + + public RepositoryEntry getNewTestEntry() { + return newTestEntry; + } + + public RepositoryEntry getCurrentTestEntry() { + return currentTestEntry; + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + if(formLayout instanceof FormLayoutContainer) { + FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout; + layoutCont.contextPut("infos1", translate("confirmation.change.warning.1", new String[]{ Integer.toString(numOfAssessedIdentities) })); + layoutCont.contextPut("infos2", translate("confirmation.change.warning.2")); + String[] archiveArgs = new String[] { downloadArchiveFile.getParentFile().getName(), downloadArchiveFile.getName() }; + layoutCont.contextPut("infos3", translate("confirmation.change.warning.3", archiveArgs)); + } + + downloadButton = uifactory.addFormLink("download", downloadArchiveFile.getName(), null, formLayout, Link.LINK | Link.NONTRANSLATED); + downloadButton.setIconLeftCSS("o_icon o_icon_downloads"); + uifactory.addFormCancelButton("cancel", formLayout, ureq, getWindowControl()); + uifactory.addFormSubmitButton("ok", formLayout); + } + + private File prepareArchive(UserRequest ureq) { + File exportDir = CourseFactory.getOrCreateDataExportDirectory(ureq.getIdentity(), course.getCourseTitle()); + String label = StringHelper.transformDisplayNameToFileSystemName(courseNode.getShortName()) + + "_" + Formatter.formatDatetimeWithMinutes(new Date()) + ".zip"; + String urlEncodedLabel = StringHelper.urlEncodeUTF8(label); + File archiveFile = new File(exportDir, urlEncodedLabel); + + try(OutputStream out= new FileOutputStream(archiveFile); + ZipOutputStream exportStream = new ZipOutputStream(out)) { + courseNode.archiveNodeData(getLocale(), course, null, exportStream, "UTF8"); + return archiveFile; + } catch(Exception e) { + logError("", e); + return null; + } + } + + @Override + protected void doDispose() { + // + } + + @Override + protected void formOK(UserRequest ureq) { + fireEvent(ureq, Event.DONE_EVENT); + } + + @Override + protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { + if(downloadButton == source) { + doDownload(ureq); + } + super.formInnerEvent(ureq, source, event); + } + + @Override + protected void formCancelled(UserRequest ureq) { + fireEvent(ureq, Event.CANCELLED_EVENT); + } + + private void doDownload(UserRequest ureq) { + ureq.getDispatchResult() + .setResultingMediaResource(new FileMediaResource(downloadArchiveFile, true)); + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/nodes/iq/IQConfigurationController.java b/src/main/java/org/olat/course/nodes/iq/IQConfigurationController.java index 9547cd6c40e2ef38752fbed725193dfe0e70ecc0..dbb3d2aa3b00600059152348589abb26b678d0a2 100644 --- a/src/main/java/org/olat/course/nodes/iq/IQConfigurationController.java +++ b/src/main/java/org/olat/course/nodes/iq/IQConfigurationController.java @@ -21,7 +21,9 @@ package org.olat.course.nodes.iq; import java.io.File; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.olat.basesecurity.BaseSecurity; import org.olat.basesecurity.Constants; @@ -52,6 +54,7 @@ import org.olat.course.nodes.AbstractAccessableCourseNode; import org.olat.course.nodes.CourseNodeFactory; import org.olat.course.nodes.IQSELFCourseNode; import org.olat.course.nodes.IQSURVCourseNode; +import org.olat.course.nodes.QTICourseNode; import org.olat.fileresource.types.ImsQTI21Resource; import org.olat.ims.qti.QTIResult; import org.olat.ims.qti.QTIResultManager; @@ -101,6 +104,7 @@ public class IQConfigurationController extends BasicController { private IQEditReplaceWizard replaceWizard; private AssessmentTestDisplayController previewQTI21Ctrl; private ReferencableEntriesSearchController searchController; + private ConfirmChangeResourceController confirmChangeResourceCtrl; private IQEditForm modOnyxConfigForm; private IQ12EditForm mod12ConfigForm; @@ -287,20 +291,19 @@ public class IQConfigurationController extends BasicController { @Override public void event(UserRequest urequest, Controller source, Event event) { - if (source.equals(searchController)) { + if (source == searchController) { if (event == ReferencableEntriesSearchController.EVENT_REPOSITORY_ENTRY_SELECTED) { // repository search controller done cmc.deactivate(); RepositoryEntry re = searchController.getSelectedEntry(); - try { - boolean needManualCorrection = checkManualCorrectionNeeded(re); - doIQReference(urequest, re, needManualCorrection); - updateEditController(urequest, true); - } catch (Exception e) { - logError("", e); - showError("error.resource.corrupted"); - } + doConfirmChangeTestAndSurvey(urequest, re); + } + } else if(source == confirmChangeResourceCtrl) { + if(event == Event.DONE_EVENT) { + RepositoryEntry newEntry = confirmChangeResourceCtrl.getNewTestEntry(); + doChangeResource(urequest, newEntry); } + cmc.deactivate(); } else if (source == replaceWizard) { if(event == Event.CANCELLED_EVENT) { cmc.deactivate(); @@ -336,6 +339,58 @@ public class IQConfigurationController extends BasicController { } } + /** + * This check if there is some QTI 2.1 results for the current selected test. + * + * @param ureq + * @param newEntry + */ + private void doConfirmChangeTestAndSurvey(UserRequest ureq, RepositoryEntry newEntry) { + try { + RepositoryEntry currentEntry = courseNode.getReferencedRepositoryEntry(); + RepositoryEntry courseEntry = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry(); + + int numOfAssessedIdentities = 0; + if(currentEntry != null) { + List<AssessmentTestSession> assessmentTestSessions = qti21service.getAssessmentTestSessions(courseEntry, courseNode.getIdent(), currentEntry); + Set<Identity> assessedIdentities = new HashSet<>(); + for(AssessmentTestSession assessmentTestSession:assessmentTestSessions) { + if(StringHelper.containsNonWhitespace(assessmentTestSession.getAnonymousIdentifier())) { + numOfAssessedIdentities++; + } else if(assessmentTestSession.getIdentity() != null) { + assessedIdentities.add(assessmentTestSession.getIdentity()); + } + } + numOfAssessedIdentities += assessedIdentities.size(); + } + + if(numOfAssessedIdentities > 0) { + confirmChangeResourceCtrl = new ConfirmChangeResourceController(ureq, getWindowControl(), + course, (QTICourseNode)courseNode, newEntry, currentEntry, numOfAssessedIdentities); + listenTo(confirmChangeResourceCtrl); + cmc = new CloseableModalController(getWindowControl(), translate("close"), confirmChangeResourceCtrl.getInitialComponent()); + listenTo(cmc); + cmc.activate(); + } else { + doChangeResource(ureq, newEntry); + } + } catch (Exception e) { + logError("", e); + showError("error.resource.corrupted"); + } + } + + private void doChangeResource(UserRequest ureq, RepositoryEntry newEntry) { + try { + boolean needManualCorrection = checkManualCorrectionNeeded(newEntry); + doIQReference(ureq, newEntry, needManualCorrection); + updateEditController(ureq, true); + } catch (Exception e) { + logError("", e); + showError("error.resource.corrupted"); + } + } + private void doPreview(UserRequest ureq) { removeAsListenerAndDispose(previewLayoutCtr); diff --git a/src/main/java/org/olat/course/nodes/iq/IQEditController.java b/src/main/java/org/olat/course/nodes/iq/IQEditController.java index a90cc15c2eb36f786bbbb43c04408ca32145a7d0..59a4b75f45165ed242eac5ad1b53247269a7b005 100644 --- a/src/main/java/org/olat/course/nodes/iq/IQEditController.java +++ b/src/main/java/org/olat/course/nodes/iq/IQEditController.java @@ -82,6 +82,8 @@ public class IQEditController extends ActivateableTabbableDefaultController impl public static final String CONFIG_KEY_RENDERMENUOPTION="renderMenu"; /** configuration key: enable score progress switch*/ public static final String CONFIG_KEY_SCOREPROGRESS = "displayScoreProgress"; + /** configuration key: suppress feedbacks */ + public static final String CONFIG_KEY_HIDE_FEEDBACKS = "hideFeedbacks"; /** configuration key: enable cancel switch*/ public static final String CONFIG_KEY_ENABLECANCEL = "enableCancel"; /** configuration key: enable suspend switch*/ diff --git a/src/main/java/org/olat/course/nodes/iq/IQRunController.java b/src/main/java/org/olat/course/nodes/iq/IQRunController.java index 9836e1834017da7df54547fdeeb92cb97f48537b..6182d38a1c2900f60a3b9c5a552590f618293e00 100644 --- a/src/main/java/org/olat/course/nodes/iq/IQRunController.java +++ b/src/main/java/org/olat/course/nodes/iq/IQRunController.java @@ -25,6 +25,7 @@ package org.olat.course.nodes.iq; +import java.io.File; import java.text.DateFormat; import java.util.Arrays; import java.util.Date; @@ -60,6 +61,7 @@ import org.olat.core.util.UserSession; import org.olat.core.util.Util; import org.olat.core.util.event.EventBus; import org.olat.core.util.event.GenericEventListener; +import org.olat.core.util.prefs.Preferences; import org.olat.core.util.resource.OresHelper; import org.olat.core.util.vfs.VFSContainer; import org.olat.course.CourseFactory; @@ -79,6 +81,7 @@ import org.olat.course.nodes.IQTESTCourseNode; import org.olat.course.nodes.ObjectivesHelper; import org.olat.course.nodes.PersistentAssessableCourseNode; import org.olat.course.nodes.SelfAssessableCourseNode; +import org.olat.course.nodes.ms.DocumentsMapper; import org.olat.course.run.scoring.ScoreEvaluation; import org.olat.course.run.userview.UserCourseEnvironment; import org.olat.ims.qti.QTIChangeLogMessage; @@ -364,6 +367,7 @@ public class IQRunController extends BasicController implements GenericEventList myContent.put("disc", iFrameCtr.getInitialComponent()); iFrameCtr.setCurrentURI(sDisclaimer); myContent.contextPut("hasDisc", Boolean.TRUE); + myContent.contextPut("in-disclaimer", isPanelOpen(ureq, "disclaimer", true)); } } } @@ -487,6 +491,10 @@ public class IQRunController extends BasicController implements GenericEventList } } else if (source == hideResultsButton) { myContent.contextPut("showResults", Boolean.FALSE); + } else if("show".equals(event.getCommand())) { + saveOpenPanel(ureq, ureq.getParameter("panel"), true); + } else if("hide".equals(event.getCommand())) { + saveOpenPanel(ureq, ureq.getParameter("panel"), false); } } @@ -617,6 +625,7 @@ public class IQRunController extends BasicController implements GenericEventList myContent.contextPut("hasPassedValue", Boolean.FALSE); myContent.contextPut("passed", Boolean.FALSE); myContent.contextPut("comment", null); + myContent.contextPut("docs", null); myContent.contextPut("attempts", 0); } else { //block if test passed (and config set to check it) @@ -635,8 +644,19 @@ public class IQRunController extends BasicController implements GenericEventList myContent.contextPut("hasPassedValue", (assessmentEntry.getPassed() == null ? Boolean.FALSE : Boolean.TRUE)); myContent.contextPut("passed", assessmentEntry.getPassed()); if(resultsVisible) { - StringBuilder comment = Formatter.stripTabsAndReturns(assessmentEntry.getComment()); - myContent.contextPut("comment", StringHelper.xssScan(comment)); + if(acn.hasCommentConfigured()) { + StringBuilder comment = Formatter.stripTabsAndReturns(assessmentEntry.getComment()); + myContent.contextPut("comment", StringHelper.xssScan(comment)); + myContent.contextPut("in-comment", isPanelOpen(ureq, "comment", true)); + } + + if(acn.hasIndividualAsssessmentDocuments()) { + List<File> docs = acn.getIndividualAssessmentDocuments(userCourseEnv); + String mapperUri = registerCacheableMapper(ureq, null, new DocumentsMapper(docs)); + myContent.contextPut("docsMapperUri", mapperUri); + myContent.contextPut("docs", docs); + myContent.contextPut("in-assessmentDocuments", isPanelOpen(ureq, "assessmentDocuments", true)); + } } myContent.contextPut("attempts", assessmentEntry.getAttempts() == null ? 0 : assessmentEntry.getAttempts()); } @@ -687,24 +707,25 @@ public class IQRunController extends BasicController implements GenericEventList //migration: check if old tests have no summary configured String configuredSummary = (String) modConfig.get(IQEditController.CONFIG_KEY_SUMMARY); boolean noSummary = configuredSummary==null || (configuredSummary!=null && configuredSummary.equals(AssessmentInstance.QMD_ENTRY_SUMMARY_NONE)); - if(!noSummary) { + if(!noSummary) { Boolean showResultsObj = modConfig.getBooleanEntry(IQEditController.CONFIG_KEY_RESULT_ON_HOME_PAGE); boolean showResultsOnHomePage = (showResultsObj!=null && showResultsObj.booleanValue()); - myContent.contextPut("showResultsOnHomePage",new Boolean(showResultsOnHomePage)); + myContent.contextPut("showResultsOnHomePage",new Boolean(showResultsOnHomePage)); + myContent.contextPut("in-results", isPanelOpen(ureq, "results", true)); boolean dateRelatedVisibility = AssessmentHelper.isResultVisible(modConfig); if(showResultsOnHomePage && dateRelatedVisibility) { myContent.contextPut("showResultsVisible",Boolean.TRUE); - showResultsButton = LinkFactory.createButton("command.showResults", myContent, this); - hideResultsButton = LinkFactory.createButton("command.hideResults", myContent, this); + showResultsButton = LinkFactory.createButton("command.showResults", myContent, this); + hideResultsButton = LinkFactory.createButton("command.hideResults", myContent, this); } else if(showResultsOnHomePage) { Date startDate = (Date)modConfig.get(IQEditController.CONFIG_KEY_RESULTS_START_DATE); - Date endDate = (Date)modConfig.get(IQEditController.CONFIG_KEY_RESULTS_END_DATE); - String visibilityStartDate = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, ureq.getLocale()).format(startDate); - String visibilityEndDate = "-"; - if(endDate!=null) { - visibilityEndDate = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, ureq.getLocale()).format(endDate); - } - String visibilityPeriod = getTranslator().translate("showResults.visibility", new String[] { visibilityStartDate, visibilityEndDate}); + Date endDate = (Date)modConfig.get(IQEditController.CONFIG_KEY_RESULTS_END_DATE); + String visibilityStartDate = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, ureq.getLocale()).format(startDate); + String visibilityEndDate = "-"; + if(endDate!=null) { + visibilityEndDate = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, ureq.getLocale()).format(endDate); + } + String visibilityPeriod = getTranslator().translate("showResults.visibility", new String[] { visibilityStartDate, visibilityEndDate}); myContent.contextPut("visibilityPeriod",visibilityPeriod); myContent.contextPut("showResultsVisible",Boolean.FALSE); } @@ -719,6 +740,24 @@ public class IQRunController extends BasicController implements GenericEventList myContent.contextPut("attempts", am.getNodeAttempts(courseNode, identity)); } + private boolean isPanelOpen(UserRequest ureq, String panelId, boolean def) { + Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); + Boolean showConfig = (Boolean) guiPrefs.get(IQRunController.class, getOpenPanelId(panelId)); + return showConfig == null ? def : showConfig.booleanValue(); + } + + private void saveOpenPanel(UserRequest ureq, String panelId, boolean newValue) { + Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); + if (guiPrefs != null) { + guiPrefs.putAndSave(IQRunController.class, getOpenPanelId(panelId), new Boolean(newValue)); + } + myContent.contextPut("in-" + panelId, new Boolean(newValue)); + } + + private String getOpenPanelId(String panelId) { + return panelId + "::" + userCourseEnv.getCourseEnvironment().getCourseResourceableId() + "::" + courseNode.getIdent(); + } + /** * * @see org.olat.core.gui.control.DefaultController#doDisspose(boolean) diff --git a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java index bd9d5ba54aa75659795fe48636be1641d17d21f9..fc5be993b87b5984dd89db682d7f3dc3040bc35c 100644 --- a/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java +++ b/src/main/java/org/olat/course/nodes/iq/QTI21AssessmentRunController.java @@ -51,6 +51,7 @@ import org.olat.core.util.Util; import org.olat.core.util.event.EventBus; import org.olat.core.util.event.GenericEventListener; import org.olat.core.util.mail.MailBundle; +import org.olat.core.util.prefs.Preferences; import org.olat.core.util.resource.OresHelper; import org.olat.core.util.vfs.VFSContainer; import org.olat.course.CourseModule; @@ -66,6 +67,7 @@ import org.olat.course.nodes.IQSELFCourseNode; import org.olat.course.nodes.IQTESTCourseNode; import org.olat.course.nodes.QTICourseNode; import org.olat.course.nodes.SelfAssessableCourseNode; +import org.olat.course.nodes.ms.DocumentsMapper; import org.olat.course.run.environment.CourseEnvironment; import org.olat.course.run.scoring.ScoreEvaluation; import org.olat.course.run.userview.UserCourseEnvironment; @@ -146,6 +148,7 @@ public class QTI21AssessmentRunController extends BasicController implements Gen testEntry = courseNode.getReferencedRepositoryEntry(); singleUserEventCenter = userSession.getSingleUserEventCenter(); mainVC = createVelocityContainer("assessment_run"); + mainVC.setDomReplaceable(false); // DOM ID set in velocity addLoggingResourceable(LoggingResourceable.wrap(courseNode)); @@ -189,6 +192,7 @@ public class QTI21AssessmentRunController extends BasicController implements Gen mainVC.put("disc", iFrameCtr.getInitialComponent()); iFrameCtr.setCurrentURI(sDisclaimer); mainVC.contextPut("hasDisc", Boolean.TRUE); + mainVC.contextPut("in-disclaimer", isPanelOpen(ureq, "disclaimer", true)); } } } @@ -236,9 +240,9 @@ public class QTI21AssessmentRunController extends BasicController implements Gen mainVC.contextPut("passed", scoreEval.getPassed()); mainVC.contextPut("attempts", attempts); //at least one attempt mainVC.contextPut("showChangeLog", Boolean.TRUE && enableScoreInfo); - exposeResults(true); + exposeResults(ureq, true); } else { - exposeResults(false); + exposeResults(ureq, false); } } else if(courseNode instanceof IQTESTCourseNode) { IQTESTCourseNode testCourseNode = (IQTESTCourseNode)courseNode; @@ -267,9 +271,20 @@ public class QTI21AssessmentRunController extends BasicController implements Gen mainVC.contextPut("hasPassedValue", (passed == null ? Boolean.FALSE : Boolean.TRUE)); mainVC.contextPut("passed", passed); if(resultsVisible) { - StringBuilder comment = Formatter.stripTabsAndReturns(testCourseNode.getUserUserComment(userCourseEnv)); - if (comment != null && comment.length() > 0) { - mainVC.contextPut("comment", StringHelper.xssScan(comment)); + if(testCourseNode.hasCommentConfigured()) { + StringBuilder comment = Formatter.stripTabsAndReturns(testCourseNode.getUserUserComment(userCourseEnv)); + if (comment != null && comment.length() > 0) { + mainVC.contextPut("comment", StringHelper.xssScan(comment)); + mainVC.contextPut("in-comment", isPanelOpen(ureq, "comment", true)); + } + } + + if(testCourseNode.hasIndividualAsssessmentDocuments()) { + List<File> docs = testCourseNode.getIndividualAssessmentDocuments(userCourseEnv); + String mapperUri = registerCacheableMapper(ureq, null, new DocumentsMapper(docs)); + mainVC.contextPut("docsMapperUri", mapperUri); + mainVC.contextPut("docs", docs); + mainVC.contextPut("in-assessmentDocuments", isPanelOpen(ureq, "assessmentDocuments", true)); } } Integer attempts = assessmentEntry.getAttempts(); @@ -294,7 +309,7 @@ public class QTI21AssessmentRunController extends BasicController implements Gen } } - exposeResults(resultsVisible); + exposeResults(ureq, resultsVisible); } } @@ -323,7 +338,7 @@ public class QTI21AssessmentRunController extends BasicController implements Gen * * @param ureq */ - private void exposeResults(boolean resultsVisible) { + private void exposeResults(UserRequest ureq, boolean resultsVisible) { //migration: check if old tests have no summary configured boolean showResultsOnHomePage = config.getBooleanSafe(IQEditController.CONFIG_KEY_RESULT_ON_HOME_PAGE); QTI21AssessmentResultsOptions showSummary = deliveryOptions.getAssessmentResultsOptions(); @@ -341,22 +356,20 @@ public class QTI21AssessmentRunController extends BasicController implements Gen hideResultsButton.setCustomDisplayText(translate("showResults.title")); hideResultsButton.setElementCssClass("o_qti_hide_assessment_results"); hideResultsButton.setIconLeftCSS("o_icon o_icon-fw o_icon_close_togglebox"); - } else if(showResultsOnHomePage) { - Date startDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_START_DATE); - Date endDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_END_DATE); - String visibilityStartDate = Formatter.getInstance(getLocale()).formatDate(startDate); - String visibilityEndDate = "-"; - if(endDate != null) { - visibilityEndDate = Formatter.getInstance(getLocale()).formatDate(endDate); + if(isPanelOpen(ureq, "results", true)) { + doShowResults(ureq); } - String visibilityPeriod = getTranslator().translate("showResults.visibility", new String[] { visibilityStartDate, visibilityEndDate}); - mainVC.contextPut("visibilityPeriod", visibilityPeriod); + } else if(showResultsOnHomePage) { + exposeVisiblityPeriod(); mainVC.contextPut("showResultsVisible", Boolean.FALSE); } else { + exposeVisiblityPeriod(); mainVC.contextPut("showResultsVisible", Boolean.FALSE); } } else { + exposeVisiblityPeriod(); mainVC.contextPut("showResultsVisible", Boolean.FALSE); + mainVC.contextPut("showResultsOnHomePage", new Boolean(showResultsOnHomePage && !showSummary.none())); } if(!anonym && resultsVisible) { @@ -365,6 +378,24 @@ public class QTI21AssessmentRunController extends BasicController implements Gen } } + private void exposeVisiblityPeriod() { + boolean showResultsActive = config.getBooleanSafe(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS); + Date startDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_START_DATE); + Date endDate = config.getDateValue(IQEditController.CONFIG_KEY_RESULTS_END_DATE); + if(showResultsActive && startDate != null) { + Formatter formatter = Formatter.getInstance(getLocale()); + String visibilityStartDate = formatter.formatDate(startDate); + String visibilityEndDate = "-"; + if(endDate != null) { + visibilityEndDate = formatter.formatDate(endDate); + } + String visibilityPeriod = translate("showResults.visibility", new String[] { visibilityStartDate, visibilityEndDate }); + mainVC.contextPut("visibilityPeriod", visibilityPeriod); + } else { + mainVC.contextPut("visibilityPeriod", translate("showResults.visibility.future")); + } + } + private boolean isResultVisible(ModuleConfiguration modConfig) { boolean isVisible = false; boolean showResultsActive = modConfig.getBooleanSafe(IQEditController.CONFIG_KEY_DATE_DEPENDENT_RESULTS); @@ -414,9 +445,13 @@ public class QTI21AssessmentRunController extends BasicController implements Gen }else if(source == showResultsButton) { doShowResults(ureq); } else if (source == hideResultsButton) { - doHideResults(); + doHideResults(ureq); } else if (source == signatureDownloadLink) { doDownloadSignature(ureq); + } else if("show".equals(event.getCommand())) { + saveOpenPanel(ureq, ureq.getParameter("panel"), true); + } else if("hide".equals(event.getCommand())) { + saveOpenPanel(ureq, ureq.getParameter("panel"), false); } } @@ -481,10 +516,30 @@ public class QTI21AssessmentRunController extends BasicController implements Gen mainVC.put("resultReport", resultCtrl.getInitialComponent()); mainVC.contextPut("showResults", Boolean.TRUE); } + saveOpenPanel(ureq, "results", Boolean.TRUE); } - private void doHideResults() { + private void doHideResults(UserRequest ureq) { mainVC.contextPut("showResults", Boolean.FALSE); + saveOpenPanel(ureq, "results", Boolean.FALSE); + } + + private boolean isPanelOpen(UserRequest ureq, String panelId, boolean def) { + Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); + Boolean showConfig = (Boolean) guiPrefs.get(QTI21AssessmentRunController.class, getOpenPanelId(panelId)); + return showConfig == null ? def : showConfig.booleanValue(); + } + + private void saveOpenPanel(UserRequest ureq, String panelId, boolean newValue) { + Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); + if (guiPrefs != null) { + guiPrefs.putAndSave(QTI21AssessmentRunController.class, getOpenPanelId(panelId), new Boolean(newValue)); + } + mainVC.contextPut("in-" + panelId, new Boolean(newValue)); + } + + private String getOpenPanelId(String panelId) { + return panelId + "::" + userCourseEnv.getCourseEnvironment().getCourseResourceableId() + "::" + courseNode.getIdent(); } private void doDownloadSignature(UserRequest ureq) { @@ -556,6 +611,7 @@ public class QTI21AssessmentRunController extends BasicController implements Gen finalOptions.setEnableSuspend(config.getBooleanSafe(IQEditController.CONFIG_KEY_ENABLESUSPEND, testOptions.isEnableSuspend())); finalOptions.setDisplayQuestionProgress(config.getBooleanSafe(IQEditController.CONFIG_KEY_QUESTIONPROGRESS, testOptions.isDisplayQuestionProgress())); finalOptions.setDisplayScoreProgress(config.getBooleanSafe(IQEditController.CONFIG_KEY_SCOREPROGRESS, testOptions.isDisplayScoreProgress())); + finalOptions.setHideFeedbacks(config.getBooleanSafe(IQEditController.CONFIG_KEY_HIDE_FEEDBACKS, testOptions.isHideFeedbacks())); finalOptions.setAssessmentResultsOptions(QTI21AssessmentResultsOptions.parseString(config.getStringValue(IQEditController.CONFIG_KEY_SUMMARY, AssessmentInstance.QMD_ENTRY_SUMMARY_COMPACT))); finalOptions.setShowMenu(config.getBooleanSafe(IQEditController.CONFIG_KEY_ENABLEMENU, testOptions.isShowMenu())); finalOptions.setAllowAnonym(config.getBooleanSafe(IQEditController.CONFIG_ALLOW_ANONYM, testOptions.isAllowAnonym())); diff --git a/src/main/java/org/olat/course/nodes/iq/QTI21EditLayoutForm.java b/src/main/java/org/olat/course/nodes/iq/QTI21EditLayoutForm.java index d4df7239d426a30a44451c1726b9dabb362ea46c..82e846cf07397c58eedea25f747bee4f910c2f50 100644 --- a/src/main/java/org/olat/course/nodes/iq/QTI21EditLayoutForm.java +++ b/src/main/java/org/olat/course/nodes/iq/QTI21EditLayoutForm.java @@ -66,6 +66,7 @@ public class QTI21EditLayoutForm extends FormBasicController { private MultipleSelectionElement limitAttemptsEl, blockAfterSuccessEl; private MultipleSelectionElement displayQuestionProgressEl, displayScoreProgressEl; private MultipleSelectionElement allowAnonymEl; + private MultipleSelectionElement showFeedbacksEl; private MultipleSelectionElement digitalSignatureEl, digitalSignatureMailEl; private FormLayoutContainer maxTimeCont; @@ -254,6 +255,15 @@ public class QTI21EditLayoutForm extends FormBasicController { enableCancelEl.select(onKeys[0], true); } + boolean hideFeedbacks = configRef ? deliveryOptions.isHideFeedbacks() : + modConfig.getBooleanSafe(IQEditController.CONFIG_KEY_HIDE_FEEDBACKS, deliveryOptions.isHideFeedbacks()); + showFeedbacksEl = uifactory.addCheckboxesHorizontal("showFeedbacks", "qti.form.showfeedbacks", formLayout, onKeys, onValues); + showFeedbacksEl.setElementCssClass("o_sel_qti_show_feedbacks"); + showFeedbacksEl.setEnabled(!configRef); + if(!hideFeedbacks) { + showFeedbacksEl.select(onKeys[0], true); + } + if(!configRef) { uifactory.addFormSubmitButton("submit", formLayout); } @@ -344,6 +354,7 @@ public class QTI21EditLayoutForm extends FormBasicController { if(configEl.isOneSelected()) { modConfig.setBooleanEntry(IQEditController.CONFIG_KEY_CONFIG_REF, configEl.isSelected(0)); if(configEl.isSelected(1)) {// manual configuration + persistConfiguration(); long maxTime = getMaxTimeLimit(); if(maxTime > 0) { modConfig.setIntValue(IQEditController.CONFIG_KEY_TIME_LIMIT, (int)maxTime); @@ -365,6 +376,11 @@ public class QTI21EditLayoutForm extends FormBasicController { @Override protected void formOK(UserRequest ureq) { + persistConfiguration(); + fireEvent(ureq, Event.DONE_EVENT); + } + + protected void persistConfiguration() { modConfig.setBooleanEntry(IQEditController.CONFIG_KEY_CONFIG_REF, configEl.isSelected(0)); modConfig.setBooleanEntry(IQEditController.CONFIG_FULLWINDOW, fullWindowEl.isSelected(0)); if(limitAttemptsEl.isSelected(0)) { @@ -381,6 +397,7 @@ public class QTI21EditLayoutForm extends FormBasicController { modConfig.setBooleanEntry(IQEditController.CONFIG_KEY_ENABLESUSPEND, enableSuspendEl.isSelected(0)); modConfig.setBooleanEntry(IQEditController.CONFIG_KEY_QUESTIONPROGRESS, displayQuestionProgressEl.isSelected(0)); modConfig.setBooleanEntry(IQEditController.CONFIG_KEY_SCOREPROGRESS, displayScoreProgressEl.isSelected(0)); + modConfig.setBooleanEntry(IQEditController.CONFIG_KEY_HIDE_FEEDBACKS, !showFeedbacksEl.isSelected(0)); modConfig.setBooleanEntry(IQEditController.CONFIG_ALLOW_ANONYM, allowAnonymEl.isSelected(0)); if(qtiModule.isDigitalSignatureEnabled() && digitalSignatureEl.isSelected(0)) { @@ -407,7 +424,5 @@ public class QTI21EditLayoutForm extends FormBasicController { } else { modConfig.remove(IQEditController.CONFIG_KEY_TIME_LIMIT); } - - fireEvent(ureq, Event.DONE_EVENT); } } diff --git a/src/main/java/org/olat/course/nodes/iq/_content/assessment_run.html b/src/main/java/org/olat/course/nodes/iq/_content/assessment_run.html index 0f007e01b8e86b96020375099351fbc7c2aef501..38b7d43e6191ec1fb29a753ba3ed9ca8840bb7b0 100644 --- a/src/main/java/org/olat/course/nodes/iq/_content/assessment_run.html +++ b/src/main/java/org/olat/course/nodes/iq/_content/assessment_run.html @@ -1,3 +1,4 @@ +<div id="$r.getCId()" class="o_course_run o_course_iq"> #if ($enableScoreInfo) #if($r.isNotNull($attempts) && $attempts > 0) <div class="panel panel-default o_personal"> @@ -27,7 +28,11 @@ #if($resultsVisible) $score #else - $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + <span id="o_score_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + </span> + $r.mouseoverHelp("o_score_in_review", "assessment.review.explanation") #end #end </td> @@ -36,7 +41,11 @@ <th>$r.translate("passed.yourpassed")</th> <td> #if($hasPassedValue && !$resultsVisible) - $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + <span id="o_passed_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + </span> + $r.mouseoverHelp("o_passed_in_review", "assessment.review.explanation") #elseif($hasPassedValue && $passed) <i class="o_icon o_icon_passed"></i> $r.translate("passed.yes") @@ -59,24 +68,56 @@ </table> </div> - #if ($comment) + #if ($r.isNotEmpty($comment)) <div class="panel panel-default o_comment"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseComment"> <h4 class="panel-title"> - <i id="collapseCommentsToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> + <i id="collapseCommentsToggler" class="o_icon o_icon-fw #if($r.isTrue($in-comment)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("comment.yourcomment")</h4> </div> - <div id="collapseComment" class="panel-collapse collapse in"><div class="panel-body"> + <div id="collapseComment" class="panel-collapse collapse #if($r.isTrue($in-comment)) in #end"><div class="panel-body"> $comment </div> </div></div> <script type="text/javascript"> /* <![CDATA[ */ jQuery('#collapseComment').on('hide.bs.collapse', function () { - jQuery('#collapseCommentsToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + jQuery('#collapseCommentsToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $r.backgroundCommand("hide","panel","comment") }) jQuery('#collapseComment').on('show.bs.collapse', function () { - jQuery('#collapseCommentsToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + jQuery('#collapseCommentsToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $r.backgroundCommand("show","panel","comment") + }) + /* ]]> */ + </script> + #end + + #if ($r.isNotEmpty($docs)) + <div class="panel panel-default o_assessment_docs"> + <div class="panel-heading" data-toggle="collapse" data-target="#collapseAssessmentDocuments"> + <h4 class="panel-title"> + <i id="collapseAssessmentDocumentsToggler" class="o_icon o_icon-fw #if($r.isTrue($in-assessmentDocuments)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> + $r.translate("assessment.documents.title") + </h4> + </div> + <div id="collapseAssessmentDocuments" class="panel-collapse collapse #if($r.isTrue($in-assessmentDocuments)) in #end"><div class="panel-body"> + <ul class="list-unstyled"> + #foreach($doc in $docs) + <li><a href="$docsMapperUri/$doc.name" target="_blank"><i class="o_icon o_icon-fw $r.getFiletypeIconCss($doc.name)"> </i> $r.escapeHtml($doc.name) ($r.formatBytes(${doc.length()}))</a></li> + #end + </ul> + </div></div> + </div> + <script type="text/javascript"> + /* <![CDATA[ */ + jQuery('#collapseAssessmentDocuments').on('hide.bs.collapse', function () { + jQuery('#collapseAssessmentDocumentsToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $r.backgroundCommand("hide","panel","assessmentDocuments") + }) + jQuery('#collapseAssessmentDocuments').on('show.bs.collapse', function () { + jQuery('#collapseAssessmentDocumentsToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $r.backgroundCommand("show","panel","assessmentDocuments") }) /* ]]> */ </script> @@ -99,6 +140,7 @@ #if ($r.available("highScore")) $r.render("highScore") #end + #if($showResultsOnHomePage && $attempts > 0) <div class="panel panel-default o_results"> <div class="panel-heading"> @@ -111,10 +153,10 @@ #if($showResultsVisible) #if($showResults) <div class="panel-collapse collapse in"><div class="panel-body"> - <div id="o_qti_results" class="small">$r.render("resultReport")</div> + <div id="o_qti_results">$r.render("resultReport")</div> </div></div> #end - #else + #elseif($r.isNotNull($visibilityPeriod)) <div class="panel-collapse collapse in"><div class="panel-body">$visibilityPeriod</div></div> #end </div> @@ -128,13 +170,25 @@ <div class="panel panel-default o_disclaimer"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseDisclaimer"> <h4 class="panel-title"> - <i id="collapseDisclaimerToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> + <i id="collapseDisclaimerToggler" class="o_icon o_icon-fw #if($r.isTrue($in-disclaimer)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("disclaimer") </h4> </div> - <div id="collapseDisclaimer" class="panel-collapse collapse in"><div class="panel-body"> + <div id="collapseDisclaimer" class="panel-collapse collapse #if($r.isTrue($in-disclaimer)) in #end"><div class="panel-body"> $r.render("disc") </div></div> + <script type="text/javascript"> + /* <![CDATA[ */ + jQuery('#collapseDisclaimer').on('hide.bs.collapse', function () { + jQuery('#collapseDisclaimerToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $r.backgroundCommand("hide","panel","disclaimer") + }) + jQuery('#collapseDisclaimer').on('show.bs.collapse', function () { + jQuery('#collapseDisclaimerToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $r.backgroundCommand("show","panel","disclaimer") + }) + /* ]]> */ + </script> </div> #end #else @@ -142,13 +196,25 @@ <div class="panel panel-default o_disclaimer"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseDisclaimer"> <h4 class="panel-title"> - <i id="collapseDisclaimerToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> + <i id="collapseDisclaimerToggler" class="o_icon o_icon-fw #if($r.isTrue($in-disclaimer)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("disclaimer") </h4> </div> - <div id="collapseDisclaimer" class="panel-collapse collapse in"><div class="panel-body"> + <div id="collapseDisclaimer" class="panel-collapse collapse #if($r.isTrue($in-disclaimer)) in #end"><div class="panel-body"> $r.render("disc") </div></div> + <script type="text/javascript"> + /* <![CDATA[ */ + jQuery('#collapseDisclaimer').on('hide.bs.collapse', function () { + jQuery('#collapseDisclaimerToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $r.backgroundCommand("hide","panel","disclaimer") + }) + jQuery('#collapseDisclaimer').on('show.bs.collapse', function () { + jQuery('#collapseDisclaimerToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $r.backgroundCommand("show","panel","disclaimer") + }) + /* ]]> */ + </script> </div> #end @@ -180,3 +246,4 @@ #end #end +</div> ## END of o_course_run o_course_iq container diff --git a/src/main/java/org/olat/course/nodes/iq/_content/confirm_change.html b/src/main/java/org/olat/course/nodes/iq/_content/confirm_change.html new file mode 100644 index 0000000000000000000000000000000000000000..5c11219038bd3d7d5b8b4b34bb6d16da8a295207 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/iq/_content/confirm_change.html @@ -0,0 +1,7 @@ +<div class="o_warning"> + <strong>$r.infos1</strong><br>$infos2<br>$r.render("download")<br>$infos3 +</div> +<div class="o_button_group"> + $r.render("cancel") + $r.render("ok") +</div> \ No newline at end of file diff --git a/src/main/java/org/olat/course/nodes/iq/_content/testrun.html b/src/main/java/org/olat/course/nodes/iq/_content/testrun.html index 56c8f366604fda60c4f0b4f315581f56623d100a..f5e85abc3c97bfc52095e6467faddff9e8a83d38 100644 --- a/src/main/java/org/olat/course/nodes/iq/_content/testrun.html +++ b/src/main/java/org/olat/course/nodes/iq/_content/testrun.html @@ -27,7 +27,11 @@ #if($resultsVisible) $score #else - $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + <span id="o_score_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + </span> + $r.mouseoverHelp("o_score_in_review", "assessment.review.explanation") #end #end </td> @@ -36,7 +40,11 @@ <th>$r.translate("passed.yourpassed")</th> <td> #if($hasPassedValue && !$resultsVisible) - $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + <span id="o_passed_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + </span> + $r.mouseoverHelp("o_passed_in_review", "assessment.review.explanation") #elseif($hasPassedValue && $passed) <i class="o_icon o_icon_passed"></i> $r.translate("passed.yes") @@ -52,25 +60,57 @@ </table> </div> - #if ($comment) + #if ($r.isNotEmpty($comment)) <div class="panel panel-default o_comment"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseComment"> <h4 class="panel-title"> - <i id="collapseCommentsToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> + <i id="collapseCommentsToggler" class="o_icon o_icon-fw #if($r.isTrue($in-comment)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("comment.yourcomment") </h4> </div> - <div id="collapseComment" class="panel-collapse collapse in"><div class="panel-body"> + <div id="collapseComment" class="panel-collapse collapse #if($r.isTrue($in-comment)) in #end"><div class="panel-body"> $comment - </div> - </div></div> + </div></div> + </div> <script type="text/javascript"> /* <![CDATA[ */ jQuery('#collapseComment').on('hide.bs.collapse', function () { - jQuery('#collapseCommentsToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + jQuery('#collapseCommentsToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $r.backgroundCommand("hide","panel","comment") }) jQuery('#collapseComment').on('show.bs.collapse', function () { - jQuery('#collapseCommentsToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + jQuery('#collapseCommentsToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $r.backgroundCommand("show","panel","comment") + }) + /* ]]> */ + </script> + #end + + #if ($r.isNotEmpty($docs)) + <div class="panel panel-default o_assessment_docs"> + <div class="panel-heading" data-toggle="collapse" data-target="#collapseAssessmentDocuments"> + <h4 class="panel-title"> + <i id="collapseAssessmentDocumentsToggler" class="o_icon o_icon-fw #if($r.isTrue($in-assessmentDocuments)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> + $r.translate("assessment.documents.title") + </h4> + </div> + <div id="collapseAssessmentDocuments" class="panel-collapse collapse #if($r.isTrue($in-assessmentDocuments)) in #end"><div class="panel-body"> + <ul class="list-unstyled"> + #foreach($doc in $docs) + <li><a href="$docsMapperUri/$doc.name" target="_blank"><i class="o_icon o_icon-fw $r.getFiletypeIconCss($doc.name)"> </i> $r.escapeHtml($doc.name) ($r.formatBytes(${doc.length()}))</a></li> + #end + </ul> + </div></div> + </div> + <script type="text/javascript"> + /* <![CDATA[ */ + jQuery('#collapseAssessmentDocuments').on('hide.bs.collapse', function () { + jQuery('#collapseAssessmentDocumentsToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $r.backgroundCommand("hide","panel","assessmentDocuments") + }) + jQuery('#collapseAssessmentDocuments').on('show.bs.collapse', function () { + jQuery('#collapseAssessmentDocumentsToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $r.backgroundCommand("show","panel","assessmentDocuments") }) /* ]]> */ </script> @@ -97,11 +137,11 @@ <div class="panel panel-default o_results"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseResults"> <h4 class="panel-title"> - <i id="collapseResultsToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> + <i id="collapseResultsToggler" class="o_icon o_icon-fw #if($r.isTrue($in-results)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("showResults.title") </h4> </div> - <div id="collapseResults" class="panel-collapse collapse in"><div class="panel-body"> + <div id="collapseResults" class="panel-collapse collapse #if($r.isTrue($in-results)) in #end"><div class="panel-body"> #if($showResultsVisible) #if ($showResults) $r.render("command.hideResults") @@ -125,10 +165,12 @@ <script type="text/javascript"> /* <![CDATA[ */ jQuery('#collapseResults').on('hide.bs.collapse', function () { - jQuery('#collapseResultsToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + jQuery('#collapseResultsToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $r.backgroundCommand("hide","panel","results") }) jQuery('#collapseResults').on('show.bs.collapse', function () { - jQuery('#collapseResultsToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + jQuery('#collapseResultsToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $r.backgroundCommand("show","panel","results") }) /* ]]> */ </script> @@ -143,13 +185,25 @@ <div class="panel panel-default o_disclaimer"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseDisclaimer"> <h4 class="panel-title"> - <i id="collapseDisclaimerToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> + <i id="collapseDisclaimerToggler" class="o_icon o_icon-fw #if($r.isTrue($in-disclaimer)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("disclaimer") </h4> </div> - <div id="collapseDisclaimer" class="panel-collapse collapse in"><div class="panel-body"> + <div id="collapseDisclaimer" class="panel-collapse collapse #if($r.isTrue($in-disclaimer)) in #end"><div class="panel-body"> $r.render("disc") </div></div> + <script type="text/javascript"> + /* <![CDATA[ */ + jQuery('#collapseDisclaimer').on('hide.bs.collapse', function () { + jQuery('#collapseDisclaimerToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $r.backgroundCommand("hide","panel","disclaimer") + }) + jQuery('#collapseDisclaimer').on('show.bs.collapse', function () { + jQuery('#collapseDisclaimerToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $r.backgroundCommand("show","panel","disclaimer") + }) + /* ]]> */ + </script> </div> #end #else @@ -157,13 +211,25 @@ <div class="panel panel-default o_disclaimer"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseDisclaimer"> <h4 class="panel-title"> - <i id="collapseDisclaimerToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> + <i id="collapseDisclaimerToggler" class="o_icon o_icon-fw #if($r.isTrue($in-disclaimer)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("disclaimer") </h4> </div> - <div id="collapseDisclaimer" class="panel-collapse collapse in"><div class="panel-body"> + <div id="collapseDisclaimer" class="panel-collapse collapse #if($r.isTrue($in-disclaimer)) in #end"><div class="panel-body"> $r.render("disc") </div></div> + <script type="text/javascript"> + /* <![CDATA[ */ + jQuery('#collapseDisclaimer').on('hide.bs.collapse', function () { + jQuery('#collapseDisclaimerToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $r.backgroundCommand("hide","panel","disclaimer") + }) + jQuery('#collapseDisclaimer').on('show.bs.collapse', function () { + jQuery('#collapseDisclaimerToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $r.backgroundCommand("show","panel","disclaimer") + }) + /* ]]> */ + </script> </div> #end #if ($infobox) diff --git a/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_de.properties index 7f0d51af4adb64687dd67b935b3dc4ff0993eda0..f5a147ee99aa43cf89e299e3de646f7e5dd8cbe0 100644 --- a/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_de.properties @@ -1,4 +1,5 @@ #Tue Nov 15 16:23:43 CET 2016 +assessment.documents.title=Bewertungsdokumente Intro.self=Dr\u00FCcken Sie Start, um mit dem Selbsttest zu beginnen. Intro.surv=Dr\u00FCcken Sie Start, um mit dem Fragebogen zu beginnen. Intro.test=Dr\u00FCcken Sie Start, um den Test zu beginnen. @@ -22,6 +23,9 @@ command.preview=Vorschau anzeigen command.showResults=Resultate anzeigen comment.yourcomment=Kommentar vom Betreuer condition.accessibility.title=Zugang +confirmation.change.warning.1=Dieser Test/Fragebogen wurde bereits von {0} Teilnehmer(n) gestartet und zum Teil auch beendet\! +confirmation.change.warning.2=Die Ergebnisse der beendeten Tests/Frageb\u00F6gen werden archiviert. Die archivierten Ergebnisse k\u00F6nnen Sie hier herunterladen\: +confirmation.change.warning.3=Eine Kopie dieser Ergebnis\u00FCbersicht finden Sie in Ihrem pers\u00F6nlichen Ordner unter\:<br><i>private/archive/{0}/{1}</i>. correction.auto=Auto correction.manual=Manuell correction.mode=Korrektur @@ -114,6 +118,7 @@ qti.form.sequence.section=Eine Sektion pro Seite qti.form.setting.repo=Konfiguration von Lernressource \u00FCbernehmen qti.form.setting.node=Konfiguration anpassen qti.form.show.results=Datumsabh\u00E4ngig +qti.form.showfeedbacks=Feedbacks anzeigen qti.form.summary=\u00DCbersicht Resultate qti.form.summary.help=Wenn nur "Aufgabe" gew\u00E4hlt wird, werden die Metadaten pro Frage aufgelistet. Wenn "Korrekte L\u00F6sung" oder "L\u00F6sung vom Teilnehmer" angew\u00E4hlt wird, erscheint nur die L\u00F6sung. Die Fragestellung wird nur angezeigt, wenn "Aufgabe" und zus\u00E4tzlich entweder "Korrekte L\u00F6sung" oder "L\u00F6sung vom Teilnehmer" ausgew\u00E4hlt wird. qti.form.summary.metadata=Testzusammenfassung @@ -148,6 +153,7 @@ selectfile=Datei w\u00E4hlen showResults.detailed=Resultate showResults.title=Resultate showResults.visibility=Die Resultate werden von "{0}" bis "{1}" angezeigt. +showResults.visibility.future=Die Resultate werden angezeigt sobald die Korrektur abgeschlossen ist. start=Start table.header.lastModified=Last modified table.header.results=Resultaten diff --git a/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_en.properties index 07023362748c329e2cbd2010893901894ffb0869..41f8ec64c43139410c4e5c993c25f021aa6d11a8 100644 --- a/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_en.properties @@ -1,4 +1,5 @@ #Mon Aug 22 14:20:31 CEST 2016 +assessment.documents.title=Assessment documents Intro.self=Press the start button to begin with your self-test. Intro.surv=Press the start button to begin with your questionnaire. Intro.test=Press the start button to begin with your test. @@ -22,6 +23,9 @@ command.preview=Show preview command.showResults=Show results comment.yourcomment=Comment from your tutor condition.accessibility.title=Access +confirmation.change.warning.1=This test/questionnaire has already been launched by {0} participant(s) and finished in part\! +confirmation.change.warning.2=All results of tests/questionnaires already finished will be archived. The archived data can be downloaded here\: +confirmation.change.warning.3=A copy of this overview can be found in your personal folder:<br><i>private/archive/{0}/{1}</i>. correction.auto=Auto correction.manual=Manual correction.mode=Correction @@ -114,6 +118,7 @@ qti.form.sequence.section=One section per page qti.form.setting.repo=Use configuration of the learning resource qti.form.setting.node=Adjust configuration qti.form.show.results=Depending on date +qti.form.showfeedbacks=Show feedbacks qti.form.summary=Overview results qti.form.summary.help=If only "Questions" is selected the metadata for every questions will be shown. If "Solution of the participant" or "Correct solution" is selected, only the solution will be shown. The question text itself is only shown if "Questions" and additionally either "Solution of the participant" or "Correct solution" is selected. qti.form.summary.metadata=Test summary @@ -148,6 +153,7 @@ selectfile=Choose file showResults.detailed=Results showResults.title=Results showResults.visibility=Your results will be displayed from "{0}" until "{1}" +showResults.visibility.future=Your results will be displayed here as soon as the correction has been completed. start=Start table.header.lastModified=Last modified table.header.results=Results diff --git a/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_fr.properties index 395b0d38187a21e6812b43e613fb4541728dde02..0f71128e4453845676bfdf8895279f2815d978e8 100644 --- a/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/nodes/iq/_i18n/LocalStrings_fr.properties @@ -1,7 +1,8 @@ -#Fri Mar 10 14:05:11 CET 2017 +#Thu Jun 08 21:31:30 CEST 2017 Intro.self=Pressez sur D\u00E9marrer pour commencer l'auto-test. Intro.surv=Pressez sur D\u00E9marrer pour commencer avec le questionnaire. Intro.test=Pressez sur D\u00E9marrer pour commencer le test. +assessment.documents.title=Documents d'\u00E9valuation attempts.nomoreattempts=Vous n'avez plus d'autres essais attempts.yourattempts=Nombre d'essais effectu\u00E9es changelog.title=Historique des modifications de la ressource @@ -22,9 +23,13 @@ command.preview=Afficher aper\u00E7u command.showResults=Afficher r\u00E9sultat comment.yourcomment=Commentaire du tuteur condition.accessibility.title=Acc\u00E8s +confirmation.change.warning.1=Ce test/questionnaire a d\u00E9j\u00E0 \u00E9t\u00E9 lanc\u00E9 par {0} participant/s et partiellement termin\u00E9\! +confirmation.change.warning.2=Les r\u00E9sultats archiv\u00E9s peuvent \u00EAtre t\u00E9l\u00E9charg\u00E9s ici\: +confirmation.change.warning.3=Une copie de cette vue d'ensemble des r\u00E9sultats se trouve dans votre dossier personnel sous\:<br><i>private/archive/{0}/{1}</i>. correction.auto=Automatique correction.manual=Manuelle correction.mode=Correction +correction.mode.help=Pour la correction automatique, le r\u00E9sultat s'affiche imm\u00E9diatement. Pour la correction manuelle, la visibilit\u00E9 doit \u00EAtre modifi\u00E9e dans l'outil d'\u00E9valuation. Pour les types de questions texte libre, dessin et t\u00E9l\u00E9chargement de fichier, une correction manuelle est obligatoire. correcttest=Corriger le Test coursefolder=Dossier stockage cours "{0}" digital.signature=Signature digitale @@ -113,6 +118,7 @@ qti.form.sequence.section=Une section par page qti.form.setting.node=Ajuster la configuration qti.form.setting.repo=Utiliser la configuration de l'objet didactique qti.form.show.results=D\u00E9pendant de la date +qti.form.showfeedbacks=Montrer le feedback qti.form.summary=Aper\u00E7u r\u00E9sultats qti.form.summary.compact=Compact (sans solutions) qti.form.summary.detailed=D\u00E9taill\u00E9 (avec solutions) @@ -146,6 +152,7 @@ selectfile=S\u00E9lectionner fichier showResults.detailed=R\u00E9sultat showResults.title=R\u00E9sultats showResults.visibility=Les r\u00E9sultats seront affich\u00E9s de "{0}" \u00E0 "{1}". +showResults.visibility.future=Vos r\u00E9sultats seront visibles ici d\u00E8s que la correction en sera termin\u00E9e. start=D\u00E9marrer table.header.lastModified=Derni\u00E8re mise \u00E0 jour table.header.results=R\u00E9sultats diff --git a/src/main/java/org/olat/course/nodes/ms/DocumentsMapper.java b/src/main/java/org/olat/course/nodes/ms/DocumentsMapper.java new file mode 100644 index 0000000000000000000000000000000000000000..179079c254607605a5fe0b9b269f6b1beab28041 --- /dev/null +++ b/src/main/java/org/olat/course/nodes/ms/DocumentsMapper.java @@ -0,0 +1,64 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.nodes.ms; + +import java.io.File; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import org.olat.core.dispatcher.mapper.Mapper; +import org.olat.core.gui.media.FileMediaResource; +import org.olat.core.gui.media.MediaResource; +import org.olat.core.gui.media.NotFoundMediaResource; +import org.olat.core.util.StringHelper; + +/** + * + * Initial date: 1 juin 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class DocumentsMapper implements Mapper { + + private final List<File> documents; + + public DocumentsMapper(List<File> documents) { + this.documents = documents; + } + + @Override + public MediaResource handle(String relPath, HttpServletRequest request) { + if(StringHelper.containsNonWhitespace(relPath)) { + if(relPath.startsWith("/")) { + relPath = relPath.substring(1, relPath.length()); + } + + if(documents != null) { + for(File document:documents) { + if(relPath.equals(document.getName())) { + return new FileMediaResource(document, true); + } + } + } + } + return new NotFoundMediaResource(relPath); + } +} diff --git a/src/main/java/org/olat/course/nodes/ms/MSCourseNodeRunController.java b/src/main/java/org/olat/course/nodes/ms/MSCourseNodeRunController.java index 3ed0f26a420cd62a9ce313cc75323c4ab8b8c21c..58037ef4cd065a25102d05359a2c30c090a076a5 100644 --- a/src/main/java/org/olat/course/nodes/ms/MSCourseNodeRunController.java +++ b/src/main/java/org/olat/course/nodes/ms/MSCourseNodeRunController.java @@ -25,6 +25,9 @@ package org.olat.course.nodes.ms; +import java.io.File; +import java.util.List; + import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.velocity.VelocityContainer; @@ -34,6 +37,7 @@ import org.olat.core.gui.control.controller.BasicController; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; +import org.olat.core.util.prefs.Preferences; import org.olat.course.CourseModule; import org.olat.course.assessment.AssessmentHelper; import org.olat.course.auditing.UserNodeAuditManager; @@ -56,7 +60,9 @@ public class MSCourseNodeRunController extends BasicController { private final VelocityContainer myContent; private final boolean showLog; private boolean hasScore, hasPassed, hasComment; + private final UserCourseEnvironment userCourseEnv; private final boolean overrideUserResultsVisiblity; + private final PersistentAssessableCourseNode courseNode; @Autowired private CourseModule courseModule; @@ -82,36 +88,39 @@ public class MSCourseNodeRunController extends BasicController { * @param ureq The user request * @param wControl The window control * @param userCourseEnv The user course environment - * @param msCourseNode An assessable course element + * @param courseNode An assessable course element * @param displayNodeInfo If true, the node title and learning objectives will be displayed * @param showLog If true, the change log will be displayed * @param overrideUserResultsVisiblity If the controller can override the user visiblity of the score evaluation */ - public MSCourseNodeRunController(UserRequest ureq, WindowControl wControl, UserCourseEnvironment userCourseEnv, PersistentAssessableCourseNode msCourseNode, + public MSCourseNodeRunController(UserRequest ureq, WindowControl wControl, + UserCourseEnvironment userCourseEnv, PersistentAssessableCourseNode courseNode, boolean displayNodeInfo, boolean showLog, boolean overrideUserResultsVisiblity) { super(ureq, wControl, Util.createPackageTranslator(CourseNode.class, ureq.getLocale())); this.showLog = showLog; + this.courseNode = courseNode; + this.userCourseEnv = userCourseEnv; this.overrideUserResultsVisiblity = overrideUserResultsVisiblity; myContent = createVelocityContainer("run"); - if (msCourseNode.getModuleConfiguration().getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD,false)){ - HighScoreRunController highScoreCtr = new HighScoreRunController(ureq, wControl, userCourseEnv, msCourseNode); + ModuleConfiguration config = courseNode.getModuleConfiguration(); + if (config.getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD,false)) { + HighScoreRunController highScoreCtr = new HighScoreRunController(ureq, wControl, userCourseEnv, courseNode); if (highScoreCtr.isViewHighscore()) { Component highScoreComponent = highScoreCtr.getInitialComponent(); myContent.put("highScore", highScoreComponent); } } - ModuleConfiguration config = msCourseNode.getModuleConfiguration(); myContent.contextPut("displayNodeInfo", Boolean.valueOf(displayNodeInfo)); if (displayNodeInfo) { // push title and learning objectives, only visible on intro page - myContent.contextPut("menuTitle", msCourseNode.getShortTitle()); - myContent.contextPut("displayTitle", msCourseNode.getLongTitle()); + myContent.contextPut("menuTitle", courseNode.getShortTitle()); + myContent.contextPut("displayTitle", courseNode.getLongTitle()); // Adding learning objectives - String learningObj = msCourseNode.getLearningObjectives(); + String learningObj = courseNode.getLearningObjectives(); if (learningObj != null) { Component learningObjectives = ObjectivesHelper.createLearningObjectivesComponent(learningObj, ureq); myContent.put("learningObjectives", learningObjectives); @@ -122,9 +131,9 @@ public class MSCourseNodeRunController extends BasicController { //admin setting whether to show change log or not myContent.contextPut("changelogconfig", courseModule.isDisplayChangeLog()); - // Push variables to velcity page - exposeConfigToVC(config); - exposeUserDataToVC(userCourseEnv, msCourseNode); + // Push variables to velocity page + exposeConfigToVC(ureq, config); + exposeUserDataToVC(ureq, userCourseEnv, courseNode); putInitialPanel(myContent); } @@ -154,23 +163,28 @@ public class MSCourseNodeRunController extends BasicController { */ @Override public void event(UserRequest ureq, Component source, Event event) { - // + if("show".equals(event.getCommand())) { + saveOpenPanel(ureq, ureq.getParameter("panel"), true); + } else if("hide".equals(event.getCommand())) { + saveOpenPanel(ureq, ureq.getParameter("panel"), false); + } } - private void exposeConfigToVC(ModuleConfiguration config) { + private void exposeConfigToVC(UserRequest ureq, ModuleConfiguration config) { myContent.contextPut(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD, config.get(MSCourseNode.CONFIG_KEY_HAS_SCORE_FIELD)); myContent.contextPut(MSCourseNode.CONFIG_KEY_HAS_PASSED_FIELD, config.get(MSCourseNode.CONFIG_KEY_HAS_PASSED_FIELD)); myContent.contextPut(MSCourseNode.CONFIG_KEY_HAS_COMMENT_FIELD, config.get(MSCourseNode.CONFIG_KEY_HAS_COMMENT_FIELD)); String infoTextUser = (String) config.get(MSCourseNode.CONFIG_KEY_INFOTEXT_USER); if(StringHelper.containsNonWhitespace(infoTextUser)) { myContent.contextPut(MSCourseNode.CONFIG_KEY_INFOTEXT_USER, infoTextUser); + myContent.contextPut("in-disclaimer", isPanelOpen(ureq, "disclaimer", true)); } myContent.contextPut(MSCourseNode.CONFIG_KEY_PASSED_CUT_VALUE, AssessmentHelper.getRoundedScore((Float)config.get(MSCourseNode.CONFIG_KEY_PASSED_CUT_VALUE))); myContent.contextPut(MSCourseNode.CONFIG_KEY_SCORE_MIN, AssessmentHelper.getRoundedScore((Float)config.get(MSCourseNode.CONFIG_KEY_SCORE_MIN))); myContent.contextPut(MSCourseNode.CONFIG_KEY_SCORE_MAX, AssessmentHelper.getRoundedScore((Float)config.get(MSCourseNode.CONFIG_KEY_SCORE_MAX))); } - private void exposeUserDataToVC(UserCourseEnvironment userCourseEnv, PersistentAssessableCourseNode courseNode) { + private void exposeUserDataToVC(UserRequest ureq, UserCourseEnvironment userCourseEnv, PersistentAssessableCourseNode courseNode) { AssessmentEntry assessmentEntry = courseNode.getUserAssessmentEntry(userCourseEnv); if(assessmentEntry == null) { myContent.contextPut("hasPassedValue", Boolean.FALSE); @@ -180,7 +194,7 @@ public class MSCourseNodeRunController extends BasicController { String rawComment = assessmentEntry.getComment(); hasPassed = assessmentEntry.getPassed() != null; hasScore = assessmentEntry.getScore() != null; - hasComment = StringHelper.containsNonWhitespace(rawComment); + hasComment = courseNode.hasCommentConfigured() && StringHelper.containsNonWhitespace(rawComment); boolean resultsVisible = overrideUserResultsVisiblity || assessmentEntry.getUserVisibility() == null @@ -191,8 +205,19 @@ public class MSCourseNodeRunController extends BasicController { myContent.contextPut("passed", assessmentEntry.getPassed()); if(resultsVisible) { - StringBuilder comment = Formatter.stripTabsAndReturns(rawComment); - myContent.contextPut("comment", StringHelper.xssScan(comment)); + if(hasComment) { + StringBuilder comment = Formatter.stripTabsAndReturns(rawComment); + myContent.contextPut("comment", StringHelper.xssScan(comment)); + myContent.contextPut("in-comment", isPanelOpen(ureq, "comment", true)); + } + + if(courseNode.hasIndividualAsssessmentDocuments()) { + List<File> docs = courseNode.getIndividualAssessmentDocuments(userCourseEnv); + String mapperUri = registerCacheableMapper(ureq, null, new DocumentsMapper(docs)); + myContent.contextPut("docsMapperUri", mapperUri); + myContent.contextPut("docs", docs); + myContent.contextPut("in-assessmentDocuments", isPanelOpen(ureq, "assessmentDocuments", true)); + } } } @@ -202,10 +227,24 @@ public class MSCourseNodeRunController extends BasicController { } } - /** - * - * @see org.olat.core.gui.control.DefaultController#doDispose(boolean) - */ + private boolean isPanelOpen(UserRequest ureq, String panelId, boolean def) { + Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); + Boolean showConfig = (Boolean) guiPrefs.get(MSCourseNodeRunController.class, getOpenPanelId(panelId)); + return showConfig == null ? def : showConfig.booleanValue(); + } + + private void saveOpenPanel(UserRequest ureq, String panelId, boolean newValue) { + Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); + if (guiPrefs != null) { + guiPrefs.putAndSave(MSCourseNodeRunController.class, getOpenPanelId(panelId), new Boolean(newValue)); + } + myContent.contextPut("in-" + panelId, new Boolean(newValue)); + } + + private String getOpenPanelId(String panelId) { + return panelId + "::" + userCourseEnv.getCourseEnvironment().getCourseResourceableId() + "::" + courseNode.getIdent(); + } + @Override protected void doDispose() { // do nothing here yet diff --git a/src/main/java/org/olat/course/nodes/ms/MSEditFormController.java b/src/main/java/org/olat/course/nodes/ms/MSEditFormController.java index 9c2811dc0899b32ed73bba3f8d547cdad3d8546d..a9df554dd31bd8280be2b5a27ae35a63a90a7780 100644 --- a/src/main/java/org/olat/course/nodes/ms/MSEditFormController.java +++ b/src/main/java/org/olat/course/nodes/ms/MSEditFormController.java @@ -21,11 +21,12 @@ package org.olat.course.nodes.ms; import java.util.Map; + import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; import org.olat.core.gui.components.form.flexible.elements.RichTextElement; -import org.olat.core.gui.components.form.flexible.elements.SelectionElement; import org.olat.core.gui.components.form.flexible.elements.SingleSelection; import org.olat.core.gui.components.form.flexible.elements.TextElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; @@ -51,10 +52,10 @@ public class MSEditFormController extends FormBasicController { private ModuleConfiguration modConfig; /** whether score will be awarded or not. */ - private SelectionElement scoreGranted; + private MultipleSelectionElement scoreGranted; /** Dropdown for choosing whether pass/fail will be displayed or not. */ - private SelectionElement displayPassed; + private MultipleSelectionElement displayPassed; /** * whether pass and fail will be decided automatically @@ -63,7 +64,9 @@ public class MSEditFormController extends FormBasicController { private SingleSelection displayType; /** whether results will be commented individually. */ - private SelectionElement commentFlag; + private MultipleSelectionElement commentFlag; + /** whether results will be commented individually. */ + private MultipleSelectionElement individualAssessmentDocsFlag; /** Text input element for the minimum score. */ private TextElement minVal; @@ -212,6 +215,12 @@ public class MSEditFormController extends FormBasicController { Boolean cf = (Boolean) modConfig.get(MSCourseNode.CONFIG_KEY_HAS_COMMENT_FIELD); if (cf == null) cf = Boolean.TRUE; commentFlag.select("xx", cf.booleanValue()); + + individualAssessmentDocsFlag = uifactory.addCheckboxesHorizontal("form.individual.assessment.docs", formLayout, new String[]{"xx"}, new String[]{null}); + boolean docsCf = modConfig.getBooleanSafe(MSCourseNode.CONFIG_KEY_HAS_INDIVIDUAL_ASSESSMENT_DOCS, false); + if(docsCf) { + individualAssessmentDocsFlag.select("xx", true); + } uifactory.addSpacerElement("spacer3", formLayout, false); @@ -362,6 +371,8 @@ public class MSEditFormController extends FormBasicController { // mandatory comment flag moduleConfiguration.set(MSCourseNode.CONFIG_KEY_HAS_COMMENT_FIELD, new Boolean(commentFlag.isSelected(0))); + // individual assessment docs + moduleConfiguration.setBooleanEntry(MSCourseNode.CONFIG_KEY_HAS_INDIVIDUAL_ASSESSMENT_DOCS, new Boolean(individualAssessmentDocsFlag.isSelected(0))); // set info text only if something is in there String iu = infotextUser.getValue(); diff --git a/src/main/java/org/olat/course/nodes/ms/_content/run.html b/src/main/java/org/olat/course/nodes/ms/_content/run.html index 6ca131639f1928c13e78ebec48f55985ee441a19..c0a109a7d8306213d943f2407d20648c6d8f3512 100644 --- a/src/main/java/org/olat/course/nodes/ms/_content/run.html +++ b/src/main/java/org/olat/course/nodes/ms/_content/run.html @@ -20,7 +20,11 @@ #if($resultsVisible) $score #else - $r.translate("in.review") + <span id="o_score_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translate("in.review") + </span> + $r.mouseoverHelp("o_score_in_review", "assessment.review.explanation") #end #else <div class="o_noinfo">$r.translate("score.noscore")</div> @@ -40,7 +44,11 @@ <th>$r.translate("passed.yourpassed")</th> <td> #if($hasPassedValue && !$resultsVisible) - $r.translate("in.review") + <span id="o_passed_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translate("in.review") + </span> + $r.mouseoverHelp("o_passed_in_review", "assessment.review.explanation") #elseif($hasPassedValue && $passed) <i class="o_icon o_icon_passed"> </i> $r.translate("passed.yes") #elseif($hasPassedValue && !$passed) @@ -55,25 +63,57 @@ </table> </div> -#if ($r.isNotEmpty($comment)) +#if ($r.isNotEmpty($comment)) <div class="panel panel-default o_comment"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseComment"> <h4 class="panel-title"> - <i id="collapseCommentToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> + <i id="collapseCommentToggler" class="o_icon o_icon-fw #if($r.isTrue($in-comment)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("comment.title") </h4> </div> - <div id="collapseComment" class="panel-collapse collapse in"><div class="panel-body"> + <div id="collapseComment" class="panel-collapse collapse #if($r.isTrue($in-comment)) in #end"><div class="panel-body"> $comment </div></div> </div> <script type="text/javascript"> /* <![CDATA[ */ jQuery('#collapseComment').on('hide.bs.collapse', function () { - jQuery('#collapseCommentToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + jQuery('#collapseCommentToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $r.backgroundCommand("hide","panel","comment") }) jQuery('#collapseComment').on('show.bs.collapse', function () { - jQuery('#collapseCommentToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + jQuery('#collapseCommentToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $r.backgroundCommand("show","panel","comment") + }) + /* ]]> */ + </script> +#end + +#if ($r.isNotEmpty($docs)) + <div class="panel panel-default o_assessment_docs"> + <div class="panel-heading" data-toggle="collapse" data-target="#collapseAssessmentDocuments"> + <h4 class="panel-title"> + <i id="collapseAssessmentDocumentsToggler" class="o_icon o_icon-fw #if($r.isTrue($in-assessmentDocuments)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> + $r.translate("assessment.documents.title") + </h4> + </div> + <div id="collapseAssessmentDocuments" class="panel-collapse collapse #if($r.isTrue($in-assessmentDocuments)) in #end"><div class="panel-body"> + <ul class="list-unstyled"> + #foreach($doc in $docs) + <li><a href="$docsMapperUri/$doc.name" target="_blank"><i class="o_icon o_icon-fw $r.getFiletypeIconCss($doc.name)"> </i> $r.escapeHtml($doc.name) ($r.formatBytes(${doc.length()}))</a></li> + #end + </ul> + </div></div> + </div> + <script type="text/javascript"> + /* <![CDATA[ */ + jQuery('#collapseAssessmentDocuments').on('hide.bs.collapse', function () { + jQuery('#collapseAssessmentDocumentsToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $r.backgroundCommand("hide","panel","assessmentDocuments") + }) + jQuery('#collapseAssessmentDocuments').on('show.bs.collapse', function () { + jQuery('#collapseAssessmentDocumentsToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $r.backgroundCommand("show","panel","assessmentDocuments") }) /* ]]> */ </script> @@ -83,21 +123,23 @@ <div class="panel panel-default o_disclaimer"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseDisclaimer"> <h4 class="panel-title"> - <i id="collapseDisclaimerToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> + <i id="collapseDisclaimerToggler" class="o_icon o_icon-fw #if($r.isTrue($in-disclaimer)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("info.title") </h4> </div> - <div id="collapseDisclaimer" class="panel-collapse collapse in"><div class="panel-body"> + <div id="collapseDisclaimer" class="panel-collapse collapse #if($r.isTrue($in-disclaimer)) in #end"><div class="panel-body"> $r.formatLatexFormulas($infoTextUser) </div></div> </div> <script type="text/javascript"> /* <![CDATA[ */ jQuery('#collapseDisclaimer').on('hide.bs.collapse', function () { - jQuery('#collapseDisclaimerToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + jQuery('#collapseDisclaimerToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $r.backgroundCommand("hide","panel","disclaimer") }) jQuery('#collapseDisclaimer').on('show.bs.collapse', function () { - jQuery('#collapseDisclaimerToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + jQuery('#collapseDisclaimerToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $r.backgroundCommand("show","panel","disclaimer") }) /* ]]> */ </script> @@ -110,9 +152,7 @@ #if($log) <div class="o_box"> #o_togglebox_start("o_course_run_log" $r.translate("log.title")) - <pre class="small"> -$log - </pre> + <pre class="small">$log</pre> #o_togglebox_end() </div> #end diff --git a/src/main/java/org/olat/course/nodes/ms/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/ms/_i18n/LocalStrings_de.properties index db6bec2c63fb9ca0f7ec0c8c3232dd69009e6961..55665ad91e9f42ffca66ed6cdbe3d195f10775e7 100644 --- a/src/main/java/org/olat/course/nodes/ms/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/ms/_i18n/LocalStrings_de.properties @@ -1,4 +1,5 @@ #Mon Mar 02 09:54:04 CET 2009 +assessment.documents.title=Bewertungsdokumente comment.nocomment=Es liegt kein Kommentar vor comment.title=Kommentar condition.accessibility.title=Zugang @@ -12,6 +13,7 @@ form.error.cutButNoScore=Die <b>Art der Ausgabe</b> muss auf «Manuell durc form.error.cutOutOfRange=Punkteschwelle liegt nicht zwischen Punkteminimum/-maximum form.error.minGreaterThanMax=Punkteminimum ist gr\u00F6sser als Punktemaximum form.error.wrongFloat=Falsches Zahlenformat. Beispiele\: 15.0, 5.5, 10 +form.individual.assessment.docs=Individuelle Bewertungsdokumente form.infotext.coach=Hinweis f\u00FCr Betreuer form.infotext.user=Hinweis f\u00FCr alle Benutzer form.max=Maximal erreichbare Punkte diff --git a/src/main/java/org/olat/course/nodes/ms/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/ms/_i18n/LocalStrings_en.properties index 9392cf865aef2cab89c4f0dd147c0805ac50c240..72828bdb2fb23de912e3172346534b56ad4d5a3b 100644 --- a/src/main/java/org/olat/course/nodes/ms/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/ms/_i18n/LocalStrings_en.properties @@ -1,4 +1,5 @@ #Sun Jan 23 12:26:04 CET 2011 +assessment.documents.title=Assessment documents comment.nocomment=No comments available comment.title=Comments condition.accessibility.title=Access @@ -12,6 +13,7 @@ form.error.cutButNoScore=<b>Type of display</b> must be set to «Manually b form.error.cutOutOfRange=Cut value not between minimum and maximum score form.error.minGreaterThanMax=Minumum score greater than maximum score form.error.wrongFloat=Wrong numerical format. Examples\: 15.0, 5.5, 10 +form.individual.assessment.docs=Individual assessment documents form.infotext.coach=Notice for tutors form.infotext.user=Notice for all users form.max=Maximum score diff --git a/src/main/java/org/olat/course/nodes/ms/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/nodes/ms/_i18n/LocalStrings_fr.properties index 978b343ede85433803bf3a6c07842665e329969d..a6bef239de2323cb6d285546381248e7406f5dca 100644 --- a/src/main/java/org/olat/course/nodes/ms/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/nodes/ms/_i18n/LocalStrings_fr.properties @@ -1,4 +1,5 @@ -#Wed Mar 08 12:20:47 CET 2017 +#Thu Jun 08 21:31:55 CEST 2017 +assessment.documents.title=Documents d'\u00E9valuation comment.nocomment=Il n'y a pas de commentaire comment.title=Commentaire condition.accessibility.title=Acc\u00E8s @@ -12,6 +13,7 @@ form.error.cutButNoScore=Le <b>type d'affichage</b> doit \u00EAtre sur «Ma form.error.cutOutOfRange=Score \u00E0 obtenir n'est pas compris entre minimum et maximum de points. form.error.minGreaterThanMax=Minimum de points plus grand que maximum form.error.wrongFloat=Format de nombre erron\u00E9. Exemples\: 15.0, 5.5, 10 +form.individual.assessment.docs=Documents d'\u00E9valuation individuels form.infotext.coach=Indication pour tuteurs form.infotext.user=Indication pour tous les utilisateurs form.max=Maximum de points r\u00E9alisables diff --git a/src/main/java/org/olat/course/nodes/pf/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/pf/ui/_i18n/LocalStrings_de.properties index 77f4ee11ebad4a1070688374dc516893c9f2922a..9f81f6393b910f4dccb9b4834bb4538987115f25 100644 --- a/src/main/java/org/olat/course/nodes/pf/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/pf/ui/_i18n/LocalStrings_de.properties @@ -30,7 +30,7 @@ table.cols.openbox=Aktion table.empty=Es wurden keine Teilnehmer gefunden. open.box=Ordner \u00F6ffnen table.no.selection=Es wurde kein Benutzer ausgew\u00E4hlt! -upload.link=Dokument mehreren verteilen +upload.link=Dokument an mehrere verteilen download.link=Mehrere Ordner herunterladen tab.coach=Betreuer Ansicht tab.participant=Teilnehmer Ansicht diff --git a/src/main/java/org/olat/course/nodes/portfolio/PortfolioCourseNodeRunController.java b/src/main/java/org/olat/course/nodes/portfolio/PortfolioCourseNodeRunController.java index f88c67105153c583ed682d8b31cdfb2db21975fa..3ca73e4ab83d74bd365399bc8b15ed58a5cf8ddb 100644 --- a/src/main/java/org/olat/course/nodes/portfolio/PortfolioCourseNodeRunController.java +++ b/src/main/java/org/olat/course/nodes/portfolio/PortfolioCourseNodeRunController.java @@ -20,7 +20,9 @@ package org.olat.course.nodes.portfolio; +import java.io.File; import java.util.Date; +import java.util.List; import org.olat.NewControllerFactory; import org.olat.core.gui.UserRequest; @@ -45,6 +47,7 @@ import org.olat.core.id.context.BusinessControlFactory; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; +import org.olat.core.util.prefs.Preferences; import org.olat.core.util.resource.OresHelper; import org.olat.course.CourseModule; import org.olat.course.assessment.AssessmentHelper; @@ -52,6 +55,7 @@ import org.olat.course.assessment.AssessmentManager; import org.olat.course.highscore.ui.HighScoreRunController; import org.olat.course.nodes.MSCourseNode; import org.olat.course.nodes.PortfolioCourseNode; +import org.olat.course.nodes.ms.DocumentsMapper; import org.olat.course.nodes.portfolio.PortfolioCourseNodeConfiguration.DeadlineType; import org.olat.course.run.scoring.ScoreAccounting; import org.olat.course.run.scoring.ScoreEvaluation; @@ -174,7 +178,7 @@ public class PortfolioCourseNodeRunController extends FormBasicController { } if(templateMap != null || templateBinder != null) { - updateUI(); + updateUI(ureq); } } @@ -193,7 +197,7 @@ public class PortfolioCourseNodeRunController extends FormBasicController { return deadLineInfo; } - protected void updateUI() { + protected void updateUI(UserRequest ureq) { if(templateMap != null) { copyMap = ePFMgr.loadPortfolioStructureMap(getIdentity(), templateMap, courseOres, courseNode.getIdent(), null); } else if(templateBinder != null) { @@ -204,7 +208,7 @@ public class PortfolioCourseNodeRunController extends FormBasicController { if(copyMap == null && (copyBinder == null || copyBinder.getBinderStatus() == BinderStatus.deleted)) { updateEmptyUI(); } else { - updateSelectedUI(); + updateSelectedUI(ureq); } if(selectMapLink != null) { @@ -241,7 +245,7 @@ public class PortfolioCourseNodeRunController extends FormBasicController { } } - private void updateSelectedUI() { + private void updateSelectedUI(UserRequest ureq) { if(selectMapLink == null) { selectMapLink = uifactory.addFormLink("select", "select.mymap", "select.mymap", infosContainer, Link.LINK); selectMapLink.setElementCssClass("o_sel_ep_select_map"); @@ -250,29 +254,29 @@ public class PortfolioCourseNodeRunController extends FormBasicController { } if(copyMap != null) { - updateSelectedMapUI(); + updateSelectedMapUI(ureq); } else if(copyBinder != null) { - updateSelectedBinderUI(); + updateSelectedBinderUI(ureq); } } - private void updateSelectedBinderUI() { + private void updateSelectedBinderUI(UserRequest ureq) { String copyTitle = StringHelper.escapeHtml(copyBinder.getTitle()); selectMapLink.getComponent().setCustomDisplayText(copyTitle); updateCopyDate(copyBinder.getCopyDate()); - updateAssessmentInfos(copyBinder.getReturnDate()); + updateAssessmentInfos(ureq, copyBinder.getReturnDate()); updateDeadlineText(copyBinder.getDeadLine()); } - private void updateSelectedMapUI() { + private void updateSelectedMapUI(UserRequest ureq) { String copyTitle = StringHelper.escapeHtml(copyMap.getTitle()); selectMapLink.getComponent().setCustomDisplayText(copyTitle); // show results, when already handed in EPStructuredMap structuredMap = (EPStructuredMap)copyMap; updateCopyDate(structuredMap.getCopyDate()); - updateAssessmentInfos(structuredMap.getReturnDate()); + updateAssessmentInfos(ureq, structuredMap.getReturnDate()); updateDeadlineText(structuredMap.getDeadLine()); } @@ -295,7 +299,7 @@ public class PortfolioCourseNodeRunController extends FormBasicController { } } - private void updateAssessmentInfos(Date returnDate) { + private void updateAssessmentInfos(UserRequest ureq, Date returnDate) { if(returnDate != null || copyBinder != null) { String rDate = formatter.formatDateAndTime(returnDate); uifactory.addStaticTextElement("map.returnDate", rDate, infosContainer); @@ -330,11 +334,19 @@ public class PortfolioCourseNodeRunController extends FormBasicController { // get comment if(resultsVisible) { - AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); - String comment = am.getNodeComment(courseNode, getIdentity()); - assessmentInfosContainer.contextPut("hasCommentField", new Boolean(comment != null)); - if (comment != null) { + if(courseNode.hasCommentConfigured()) { + AssessmentManager am = userCourseEnv.getCourseEnvironment().getAssessmentManager(); + String comment = am.getNodeComment(courseNode, getIdentity()); assessmentInfosContainer.contextPut("comment", comment); + assessmentInfosContainer.contextPut("in-comment", isPanelOpen(ureq, "comment", true)); + } + + if(courseNode.hasIndividualAsssessmentDocuments()) { + List<File> docs = courseNode.getIndividualAssessmentDocuments(userCourseEnv); + String mapperUri = registerCacheableMapper(ureq, null, new DocumentsMapper(docs)); + assessmentInfosContainer.contextPut("docsMapperUri", mapperUri); + assessmentInfosContainer.contextPut("docs", docs); + assessmentInfosContainer.contextPut("in-assessmentDocuments", isPanelOpen(ureq, "assessmentDocuments", true)); } } assessmentInfosContainer.setVisible(true); @@ -353,7 +365,7 @@ public class PortfolioCourseNodeRunController extends FormBasicController { if(restoreBinderCtrl == source) { if(DialogBoxUIFactory.isYesEvent(event)) { doRestore(); - updateUI(); + updateUI(ureq); } } super.event(ureq, source, event); @@ -393,7 +405,7 @@ public class PortfolioCourseNodeRunController extends FormBasicController { } } - updateUI(); + updateUI(ureq); } else if (source == selectMapLink) { String resourceUrl; if(copyMap != null) { @@ -406,6 +418,12 @@ public class PortfolioCourseNodeRunController extends FormBasicController { BusinessControl bc = BusinessControlFactory.getInstance().createFromString(resourceUrl); WindowControl bwControl = BusinessControlFactory.getInstance().createBusinessWindowControl(bc, getWindowControl()); NewControllerFactory.getInstance().launch(ureq, bwControl); + } else if("ONCLICK".equals(event.getCommand())) { + String cmd = ureq.getParameter("fcid"); + String panelId = ureq.getParameter("panel"); + if(StringHelper.containsNonWhitespace(cmd) && StringHelper.containsNonWhitespace(panelId)) { + saveOpenPanel(ureq, panelId, "show".equals(cmd)); + } } } @@ -415,4 +433,22 @@ public class PortfolioCourseNodeRunController extends FormBasicController { copyBinder = portfolioService.updateBinder(copyBinder); showInfo("restore.binder.success"); } + + private boolean isPanelOpen(UserRequest ureq, String panelId, boolean def) { + Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); + Boolean showConfig = (Boolean) guiPrefs.get(PortfolioCourseNodeRunController.class, getOpenPanelId(panelId)); + return showConfig == null ? def : showConfig.booleanValue(); + } + + private void saveOpenPanel(UserRequest ureq, String panelId, boolean newValue) { + Preferences guiPrefs = ureq.getUserSession().getGuiPreferences(); + if (guiPrefs != null) { + guiPrefs.putAndSave(PortfolioCourseNodeRunController.class, getOpenPanelId(panelId), new Boolean(newValue)); + } + flc.getFormItemComponent().contextPut("in-" + panelId, new Boolean(newValue)); + } + + private String getOpenPanelId(String panelId) { + return panelId + "::" + userCourseEnv.getCourseEnvironment().getCourseResourceableId() + "::" + courseNode.getIdent(); + } } diff --git a/src/main/java/org/olat/course/nodes/portfolio/_content/assessment_infos.html b/src/main/java/org/olat/course/nodes/portfolio/_content/assessment_infos.html index 7618d5bae2504c5fdcf8a3de824bbecb0450b350..103cf602113035c9a3155cc6d5e514fc8fd83e73 100644 --- a/src/main/java/org/olat/course/nodes/portfolio/_content/assessment_infos.html +++ b/src/main/java/org/olat/course/nodes/portfolio/_content/assessment_infos.html @@ -22,7 +22,11 @@ #if($resultsVisible) $score #else - $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + <span id="o_score_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + </span> + $r.mouseoverHelp("o_score_in_review", "assessment.review.explanation") #end #else <div class="o_noinfo">$r.translate("score.noscore")</div> @@ -42,7 +46,11 @@ <th>$r.translate("passed.yourpassed")</th> <td> #if($hasPassedValue && !$resultsVisible) - $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + <span id="o_passed_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + </span> + $r.mouseoverHelp("o_passed_in_review", "assessment.review.explanation") #elseif($hasPassedValue && $passed) <i class="o_icon o_icon_passed"> </i> $r.translate("map.passed") #elseif($hasPassedValue && !$passed) @@ -58,25 +66,58 @@ </div> #end -#if ($comment && !$comment.isEmpty()) +#if ($r.isNotEmpty($comment)) <div class="panel panel-default o_comment"> <div class="panel-heading" data-toggle="collapse" data-target="#collapseComment"> <h4 class="panel-title"> - <i id="collapseCommentToggler" class="o_icon o_icon-fw o_icon_close_togglebox"> </i> $r.translate("map.comment")</h4> + <i id="collapseCommentToggler" class="o_icon o_icon-fw #if($r.isTrue($in-comment)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> $r.translate("map.comment")</h4> </div> - <div id="collapseComment" class="panel-collapse collapse in"><div class="panel-body">$comment</div></div> + <div id="collapseComment" class="panel-collapse collapse #if($r.isTrue($in-comment)) in #end"><div class="panel-body">$comment</div></div> </div> <script type="text/javascript"> /* <![CDATA[ */ jQuery('#collapseComment').on('hide.bs.collapse', function () { - jQuery('#collapseCommentToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + jQuery('#collapseCommentToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $f.backgroundCommand("hide","panel","comment") }) jQuery('#collapseComment').on('show.bs.collapse', function () { - jQuery('#collapseCommentToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + jQuery('#collapseCommentToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $f.backgroundCommand("show","panel","comment") }) /* ]]> */ </script> #end + +#if ($r.isNotEmpty($docs)) +<div class="panel panel-default o_assessment_docs"> + <div class="panel-heading" data-toggle="collapse" data-target="#collapseAssessmentDocuments"> + <h4 class="panel-title"> + <i id="collapseAssessmentDocumentsToggler" class="o_icon o_icon-fw #if($r.isTrue($in-assessmentDocuments)) o_icon_close_togglebox #else o_icon_open_togglebox #end"> </i> + $r.translate("assessment.documents.title") + </h4> + </div> + <div id="collapseAssessmentDocuments" class="panel-collapse collapse #if($r.isTrue($in-assessmentDocuments)) in #end"><div class="panel-body"> + <ul class="list-unstyled"> + #foreach($doc in $docs) + <li><a href="$docsMapperUri/$doc.name" target="_blank"><i class="o_icon o_icon-fw $r.getFiletypeIconCss($doc.name)"> </i> $r.escapeHtml($doc.name) ($r.formatBytes(${doc.length()}))</a></li> + #end + </ul> + </div></div> +</div> +<script type="text/javascript"> + /* <![CDATA[ */ + jQuery('#collapseAssessmentDocuments').on('hide.bs.collapse', function () { + jQuery('#collapseAssessmentDocumentsToggler').removeClass('o_icon_close_togglebox').addClass('o_icon_open_togglebox'); + $f.backgroundCommand("hide","panel","assessmentDocuments") + }) + jQuery('#collapseAssessmentDocuments').on('show.bs.collapse', function () { + jQuery('#collapseAssessmentDocumentsToggler').removeClass('o_icon_open_togglebox').addClass('o_icon_close_togglebox'); + $f.backgroundCommand("show","panel","assessmentDocuments") + }) + /* ]]> */ +</script> +#end + #if ($r.available("highScore")) $r.render("highScore") #end \ No newline at end of file diff --git a/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_de.properties index 813addfcf3cb43e0ce5ddccaf112e0571907ae14..f8d4542a0878d964ef50c0bb963a6323941d6f03 100644 --- a/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_de.properties @@ -1,4 +1,5 @@ #Fri Sep 30 15:10:50 CEST 2016 +assessment.documents.title=$org.olat.course.nodes.ms\:assessment.documents.title ced.hover=Hilfe zum Kursbaustein Portfolioaufgabe deadline.day=Tag(e) deadline.month=Monat(e) diff --git a/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_en.properties index dc58cbf2549f9aa807b2322704e976a1b5291498..d93f771bd35d46c6b89b7d4893efc838a914498a 100644 --- a/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_en.properties @@ -1,4 +1,5 @@ #Tue Apr 10 10:35:27 CEST 2012 +assessment.documents.title=$org.olat.course.nodes.ms\:assessment.documents.title ced.hover=Help regarding course element portfolio task diff --git a/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_fr.properties index 1629abd917b9ea38678ebff547835cf9e3a6c2fa..e3b7d7134d3f59ac6ffcde4d9a2e8042187bbfc3 100644 --- a/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/course/nodes/portfolio/_i18n/LocalStrings_fr.properties @@ -1,4 +1,5 @@ -#Wed Mar 08 11:30:01 CET 2017 +#Thu Jun 08 20:31:12 CEST 2017 +assessment.documents.title=$org.olat.course.nodes.ms\:assessment.documents.title ced.hover=Aide pour l'\u00E9l\u00E9ment de cours "Devoir portfolio" deadline.day=jour/s deadline.month=mois diff --git a/src/main/java/org/olat/course/nodes/projectbroker/ProjectGroupController.java b/src/main/java/org/olat/course/nodes/projectbroker/ProjectGroupController.java index 1e562f6339cafc584a260a3949bd3bd9af01403b..0a2960162f22da926e6f39711400ed092f6cec57 100644 --- a/src/main/java/org/olat/course/nodes/projectbroker/ProjectGroupController.java +++ b/src/main/java/org/olat/course/nodes/projectbroker/ProjectGroupController.java @@ -190,7 +190,7 @@ public class ProjectGroupController extends BasicController { MailBundle ccBundle = mailManager.makeMailBundle(context, urequest.getIdentity(), mailTemplate, null, metaId, result); result.append(mailManager.sendMessage(ccBundle)); } - MailHelper.printErrorsAndWarnings(result, getWindowControl(), urequest.getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), urequest.getUserSession().getRoles().isOLATAdmin(), urequest.getLocale()); } fireEvent(urequest, Event.CHANGED_EVENT ); // Participant and waiting-list were changed => reload both diff --git a/src/main/java/org/olat/course/nodes/scorm/_content/run.html b/src/main/java/org/olat/course/nodes/scorm/_content/run.html index 4c0672b548160931e4fe7f62d0f3d4cbefbd214f..d215e20c17f8fcdb3d6d85ccea2e3486ad43e0a3 100644 --- a/src/main/java/org/olat/course/nodes/scorm/_content/run.html +++ b/src/main/java/org/olat/course/nodes/scorm/_content/run.html @@ -17,7 +17,11 @@ #if($resultsVisible) $score #else - $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + <span id="o_score_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + </span> + $r.mouseoverHelp("o_score_in_review", "assessment.review.explanation") #end #end </td> @@ -26,7 +30,11 @@ <th>$r.translate("passed.yourpassed")</th> <td> #if($hasPassedValue && !$resultsVisible) - $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + <span id="o_passed_in_review" class="o_in_review"> + <i class="o_icon o_icon-fw o_icon_warn"> </i> + $r.translateWithPackage("org.olat.course.nodes.ms", "in.review") + </span> + $r.mouseoverHelp("o_passed_in_review", "assessment.review.explanation") #elseif($hasPassedValue && $passed) <i class="o_icon o_icon_passed"> </i> $r.translate("passed.yes") #elseif($hasPassedValue && !$passed) diff --git a/src/main/java/org/olat/course/nodes/ta/TACourseNodeEditController.java b/src/main/java/org/olat/course/nodes/ta/TACourseNodeEditController.java index bb25b959299861dfd76cd6b44beffda7239bf23c..213c2d017976383a51b0f6a5efc15bc2d693a10a 100644 --- a/src/main/java/org/olat/course/nodes/ta/TACourseNodeEditController.java +++ b/src/main/java/org/olat/course/nodes/ta/TACourseNodeEditController.java @@ -535,7 +535,7 @@ public class TACourseNodeEditController extends ActivateableTabbableDefaultContr MailBundle ccBundle = mailManager.makeMailBundle(context, sender, mailTemplate, sender, metaId, result); result.append(mailManager.sendMessage(ccBundle)); } - MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); } } diff --git a/src/main/java/org/olat/course/nodes/video/VideoPeekviewController.java b/src/main/java/org/olat/course/nodes/video/VideoPeekviewController.java index 452b0483bb3e830fa498e3c42b3e44a0e5e2f96a..2124ad51eb6613f23350dddaec67d6f07bb95a58 100644 --- a/src/main/java/org/olat/course/nodes/video/VideoPeekviewController.java +++ b/src/main/java/org/olat/course/nodes/video/VideoPeekviewController.java @@ -19,6 +19,7 @@ */ package org.olat.course.nodes.video; +import org.olat.NewControllerFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.velocity.VelocityContainer; @@ -39,24 +40,39 @@ import org.springframework.beans.factory.annotation.Autowired; * */ public class VideoPeekviewController extends BasicController implements Controller{ + + private final static String EVENT_RUN = "run"; + + private final Long repositoryEntryKey; + private final String nodeId; + private VelocityContainer peekviewVC; @Autowired private VideoManager videoManager; - public VideoPeekviewController(UserRequest ureq, WindowControl wControl, OLATResource videoResource) { + public VideoPeekviewController(UserRequest ureq, WindowControl wControl, OLATResource videoResource, + Long repositoryEntryKey, String nodeId) { super(ureq, wControl); - VelocityContainer peekviewVC = createVelocityContainer("peekview"); + + this.repositoryEntryKey = repositoryEntryKey; + this.nodeId = nodeId; + + peekviewVC = createVelocityContainer("peekview"); VFSContainer posterFolder = videoManager.getMasterContainer(videoResource); String masterMapperId = "master-" + videoResource.getResourceableId(); String mediaUrl = registerCacheableMapper(ureq, masterMapperId, new VideoMediaMapper(posterFolder)); peekviewVC.contextPut("mediaUrl", mediaUrl); peekviewVC.contextPut("nodeLink", posterFolder); + peekviewVC.contextPut("run", EVENT_RUN); putInitialPanel(peekviewVC); } @Override protected void event(UserRequest ureq, Component source, Event event) { - //TODO: click on image should launch run view, activate in autoplay mode + if (source == peekviewVC && EVENT_RUN.equals(event.getCommand())) { + String businessPath = "[RepositoryEntry:" + repositoryEntryKey + "][CourseNode:" + nodeId + "]"; + NewControllerFactory.getInstance().launch(businessPath, ureq, getWindowControl()); + } } @Override diff --git a/src/main/java/org/olat/course/nodes/video/_content/peekview.html b/src/main/java/org/olat/course/nodes/video/_content/peekview.html index 1f927f03f4757bb5b989a30b04e6e8f2163cd48a..d4f99448937c2d118590eb19fd944afbba5b7d4d 100644 --- a/src/main/java/org/olat/course/nodes/video/_content/peekview.html +++ b/src/main/java/org/olat/course/nodes/video/_content/peekview.html @@ -1,4 +1,4 @@ <div class="o_video_peekview"> - <div class="o_video_poster" style="background-image: url('$mediaUrl/poster.jpg');"></div> + <div class="o_video_poster" style="background-image: url('$mediaUrl/poster.jpg');" onClick="$r.javaScriptCommand(${run});"></div> </div> diff --git a/src/main/java/org/olat/course/reminder/ui/CourseReminderLogsController.java b/src/main/java/org/olat/course/reminder/ui/CourseReminderLogsController.java index 514d14cf2578fa69dd5475afb306bc8f203a09c3..ac952facba430fbe5269978237aec0e673170aa0 100644 --- a/src/main/java/org/olat/course/reminder/ui/CourseReminderLogsController.java +++ b/src/main/java/org/olat/course/reminder/ui/CourseReminderLogsController.java @@ -218,7 +218,7 @@ public class CourseReminderLogsController extends FormBasicController { List<Identity> identitiesToRemind = Collections.singletonList(id); MailerResult result = reminderService.sendReminder(reloadedReminder, identitiesToRemind); if(result.getReturnCode() != MailerResult.OK) { - MailHelper.printErrorsAndWarnings(result, getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), false, getLocale()); } else { showInfo("reminder.resend"); } diff --git a/src/main/java/org/olat/course/reminder/ui/CourseSendReminderListController.java b/src/main/java/org/olat/course/reminder/ui/CourseSendReminderListController.java index 7e43e1381e39134021abac3e9573031d55055d5b..8f57cf40f85a871195c4592a8848faab93e112c9 100644 --- a/src/main/java/org/olat/course/reminder/ui/CourseSendReminderListController.java +++ b/src/main/java/org/olat/course/reminder/ui/CourseSendReminderListController.java @@ -176,7 +176,7 @@ public class CourseSendReminderListController extends FormBasicController { List<Identity> identitiesToRemind = Collections.singletonList(id); MailerResult result = reminderService.sendReminder(reloadedReminder, identitiesToRemind); if(result.getReturnCode() != MailerResult.OK) { - MailHelper.printErrorsAndWarnings(result, getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), false, getLocale()); } else { showInfo("reminder.resend"); } diff --git a/src/main/java/org/olat/course/run/preview/PreviewAssessmentManager.java b/src/main/java/org/olat/course/run/preview/PreviewAssessmentManager.java index 1a271f6d2329ad01813fef9be52684eccab368dd..b165328516dc155de304b12df1c393d4f2891125 100644 --- a/src/main/java/org/olat/course/run/preview/PreviewAssessmentManager.java +++ b/src/main/java/org/olat/course/run/preview/PreviewAssessmentManager.java @@ -25,6 +25,7 @@ package org.olat.course.run.preview; +import java.io.File; import java.util.Collections; import java.util.Date; import java.util.HashMap; @@ -114,6 +115,22 @@ final class PreviewAssessmentManager extends BasicManager implements AssessmentM throw new AssertException("Not implemented for preview."); } + @Override + public void addIndividualAssessmentDocument(CourseNode courseNode, Identity identity, Identity assessedIdentity, + File document, String filename) { + // do nothing + } + + @Override + public void removeIndividualAssessmentDocument(CourseNode courseNode, Identity identity, Identity assessedIdentity, File document) { + // do nothing + } + + @Override + public void deleteIndividualAssessmentDocuments(CourseNode courseNode) { + // + } + /** * @see org.olat.course.assessment.AssessmentManager#saveNodeCoachComment(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity, java.lang.String) */ @@ -165,6 +182,11 @@ final class PreviewAssessmentManager extends BasicManager implements AssessmentM public String getNodeComment(CourseNode courseNode, Identity identity) { return "This is a preview"; //default comment for preview } + + @Override + public List<File> getIndividualAssessmentDocuments(CourseNode courseNode, Identity identity) { + return Collections.emptyList(); + } /** * @see org.olat.course.assessment.AssessmentManager#getNodeCoachComment(org.olat.course.nodes.CourseNode, org.olat.core.id.Identity) diff --git a/src/main/java/org/olat/course/run/scoring/AssessmentEvaluation.java b/src/main/java/org/olat/course/run/scoring/AssessmentEvaluation.java index 6cd94507c3c4b53f96acc8cf9925faa89b9dfed3..984c19141be6559b6af67770c9a896834217f70c 100644 --- a/src/main/java/org/olat/course/run/scoring/AssessmentEvaluation.java +++ b/src/main/java/org/olat/course/run/scoring/AssessmentEvaluation.java @@ -36,6 +36,7 @@ public class AssessmentEvaluation extends ScoreEvaluation { private final Integer attempts; private final String comment; private final String coachComment; + private final int numOfAssessmentDocs; public AssessmentEvaluation(Float score, Boolean passed) { this(score, passed, null, null); @@ -46,19 +47,16 @@ public class AssessmentEvaluation extends ScoreEvaluation { } public AssessmentEvaluation(Float score, Boolean passed, Boolean fullyAssessed, Long assessmentID) { - this(score, passed, null, null, fullyAssessed, assessmentID); - } - - public AssessmentEvaluation(Float score, Boolean passed, AssessmentEntryStatus assessmentStatus, Boolean userVisibility, Boolean fullyAssessed, Long assessmentID) { - this(score, passed, null, assessmentStatus, userVisibility, fullyAssessed, assessmentID, null, null); + this(score, passed, null, null, null, fullyAssessed, assessmentID, null, null, -1); } public AssessmentEvaluation(Float score, Boolean passed, Integer attempts, AssessmentEntryStatus assessmentStatus, Boolean userVisibility, - Boolean fullyAssessed, Long assessmentID, String comment, String coachComment) { + Boolean fullyAssessed, Long assessmentID, String comment, String coachComment, int numOfAssessmentDocs) { super(score, passed, assessmentStatus, userVisibility, fullyAssessed, assessmentID); this.attempts = attempts; this.comment = comment; this.coachComment = coachComment; + this.numOfAssessmentDocs = numOfAssessmentDocs; } /** @@ -69,7 +67,7 @@ public class AssessmentEvaluation extends ScoreEvaluation { */ public AssessmentEvaluation(AssessmentEvaluation eval, AssessmentEntryStatus assessmentStatus) { this(eval.getScore(), eval.getPassed(), eval.getAttempts(), assessmentStatus, eval.getUserVisible(), - eval.getFullyAssessed(), eval.getAssessmentID(), eval.getComment(), eval.getCoachComment()); + eval.getFullyAssessed(), eval.getAssessmentID(), eval.getComment(), eval.getCoachComment(), -1); } public Integer getAttempts() { @@ -84,6 +82,10 @@ public class AssessmentEvaluation extends ScoreEvaluation { return coachComment; } + public int getNumOfAssessmentDocs() { + return numOfAssessmentDocs; + } + public static final AssessmentEvaluation toAssessmentEvalutation(AssessmentEntry entry, AssessableCourseNode node) { if(entry == null) { return AssessmentEvaluation.EMPTY_EVAL; @@ -109,6 +111,6 @@ public class AssessmentEvaluation extends ScoreEvaluation { comment = entry.getComment(); } return new AssessmentEvaluation(score, passed, attempts, entry.getAssessmentStatus(), entry.getUserVisibility(), - entry.getFullyAssessed(), entry.getAssessmentId(), comment, entry.getCoachComment()); + entry.getFullyAssessed(), entry.getAssessmentId(), comment, entry.getCoachComment(), entry.getNumberOfAssessmentDocuments()); } } \ No newline at end of file diff --git a/src/main/java/org/olat/course/run/scoring/ScoreAccounting.java b/src/main/java/org/olat/course/run/scoring/ScoreAccounting.java index ad7d8e4bd1d3938c119716b62684e18a224195c1..1d2697f1a3d892b3bbabf5819d8b9823f9f8d388 100644 --- a/src/main/java/org/olat/course/run/scoring/ScoreAccounting.java +++ b/src/main/java/org/olat/course/run/scoring/ScoreAccounting.java @@ -195,6 +195,7 @@ public class ScoreAccounting { Boolean passed = null; Boolean userVisibility = entry == null ? null : entry.getUserVisibility(); Long assessmendId = entry == null ? null : entry.getAssessmentId(); + int numOfAssessmentDocs = entry == null ? -1 : entry.getNumberOfAssessmentDocuments(); AssessmentEntryStatus assessmentStatus = AssessmentEntryStatus.inProgress; ConditionInterpreter ci = userCourseEnvironment.getConditionInterpreter(); if (cNode.hasScoreConfigured() && scoreExpressionStr != null) { @@ -220,7 +221,7 @@ public class ScoreAccounting { } } } - se = new AssessmentEvaluation(score, passed, null, assessmentStatus, userVisibility, null, assessmendId, null, null); + se = new AssessmentEvaluation(score, passed, null, assessmentStatus, userVisibility, null, assessmendId, null, null, numOfAssessmentDocs); if(entry == null) { Identity assessedIdentity = userCourseEnvironment.getIdentityEnvironment().getIdentity(); diff --git a/src/main/java/org/olat/course/statistic/MySQLTempStatTableCreator.java b/src/main/java/org/olat/course/statistic/MySQLTempStatTableCreator.java index 2f0e20a9d52759291342d41762ff04b068ce450f..28c96b5ebad9439c6c81b4bc19faa63124b249c7 100644 --- a/src/main/java/org/olat/course/statistic/MySQLTempStatTableCreator.java +++ b/src/main/java/org/olat/course/statistic/MySQLTempStatTableCreator.java @@ -28,8 +28,6 @@ import java.sql.Connection; import java.sql.SQLException; import java.util.Calendar; import java.util.Date; -import java.util.List; -import java.util.Map; import javax.sql.DataSource; @@ -97,34 +95,18 @@ public class MySQLTempStatTableCreator implements IStatisticUpdater { Calendar nowUpdatedCalendar = Calendar.getInstance(); nowUpdatedCalendar.setTime(until); - if (lastUpdatedCalendar.get(Calendar.MONTH)==nowUpdatedCalendar.get(Calendar.MONTH)) { - // that means we are in the same month, so use the current month's o_loggingtable - // e.g. o_loggingtable_201002 - String monthStr = String.valueOf(lastUpdatedCalendar.get(Calendar.MONTH)+1); - if (monthStr.length()==1) { - monthStr = "0"+monthStr; - } - String sameMonthTable = "o_loggingtable_"+String.valueOf(lastUpdatedCalendar.get(Calendar.YEAR))+monthStr; - List<Map<String,Object>> tables = jdbcTemplate_.queryForList("show tables like '"+sameMonthTable+"'"); - if (tables!=null && tables.size()==1) { - log_.info("updateStatistic: using "+sameMonthTable+" instead of "+oLoggingTable); - oLoggingTable = sameMonthTable; - } else { - log_.info("updateStatistic: using "+oLoggingTable+" ("+sameMonthTable+" didn't exist)"); - } - } else { - log_.info("updateStatistic: using "+oLoggingTable+" since from and to months are not the same"); - } - - jdbcTemplate_.execute( + long fromSeconds = from.getTime() / 1000l; + long untilSeconds = until.getTime() / 1000l; + + jdbcTemplate_.update( "insert into o_stat_temptable (creationdate,businesspath,userproperty2,userproperty4,userproperty10,userproperty3) " + "select " + "creationdate,businesspath,userproperty2,userproperty4,userproperty10,userproperty3 " + "from " + oLoggingTable + " where " + - "actionverb='launch' and actionobject='node' and creationdate>from_unixtime('"+(from.getTime()/1000)+"') and creationdate<=from_unixtime('"+(until.getTime()/1000)+"');"); - + "actionverb='launch' and actionobject='node' and creationdate>from_unixtime('"+ fromSeconds +"') and creationdate<=from_unixtime('"+ untilSeconds +"');"); + long numLoggingActions = jdbcTemplate_.queryForLong("select count(*) from o_stat_temptable;"); log_.info("updateStatistic: insert done. number of logging actions: "+numLoggingActions); } catch(RuntimeException e) { diff --git a/src/main/java/org/olat/course/statistic/MySQLTempStatTableDropper.java b/src/main/java/org/olat/course/statistic/MySQLTempStatTableDropper.java index eb4b58a8e67e4b7e60c1576ec4356795361e4c84..9cf0a14b7a514ab57f943529241e45f1a9250edf 100644 --- a/src/main/java/org/olat/course/statistic/MySQLTempStatTableDropper.java +++ b/src/main/java/org/olat/course/statistic/MySQLTempStatTableDropper.java @@ -40,7 +40,7 @@ import org.springframework.jdbc.core.JdbcTemplate; public class MySQLTempStatTableDropper implements IStatisticUpdater { /** the logging object used in this class **/ - private static final OLog log_ = Tracing.createLoggerFor(MySQLTempStatTableDropper.class); + private static final OLog log = Tracing.createLoggerFor(MySQLTempStatTableDropper.class); /** the jdbcTemplate is used to allow access to other than the default database and * allow raw sql code @@ -62,12 +62,12 @@ public class MySQLTempStatTableDropper implements IStatisticUpdater { jdbcTemplate_.execute("drop table o_stat_temptable;"); } catch(RuntimeException e) { - e.printStackTrace(System.out); + log.error("", e); } catch(Error er) { - er.printStackTrace(System.out); + log.error("", er); } finally { final long diff = System.currentTimeMillis() - startTime; - log_.info("updateStatistic: END. duration="+diff); + log.info("updateStatistic: END. duration=" + diff); } } diff --git a/src/main/java/org/olat/course/statistic/PostgreSQLTempStatTableCreator.java b/src/main/java/org/olat/course/statistic/PostgreSQLTempStatTableCreator.java new file mode 100644 index 0000000000000000000000000000000000000000..a3c3b47e85fc3c20bb64d9b2d55811b001078bdd --- /dev/null +++ b/src/main/java/org/olat/course/statistic/PostgreSQLTempStatTableCreator.java @@ -0,0 +1,94 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.statistic; + +import java.sql.Types; +import java.util.Date; + +import org.olat.core.logging.OLog; +import org.olat.core.logging.Tracing; +import org.springframework.jdbc.core.JdbcTemplate; + +/** + * Drop and create the temporary table, copy the needed data. + * + * + * Initial date: 8 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class PostgreSQLTempStatTableCreator implements IStatisticUpdater { + + /** the logging object used in this class **/ + private static final OLog log_ = Tracing.createLoggerFor(PostgreSQLTempStatTableCreator.class); + + /** the jdbcTemplate is used to allow access to other than the default database and + * allow raw sql code + */ + private JdbcTemplate jdbcTemplate; + + /** set via spring **/ + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + @Override + public void updateStatistic(boolean fullRecalculation, Date from, Date until, StatisticUpdateManager statisticUpdateManager) { + // create temp table + final long startTime = System.currentTimeMillis(); + log_.info("updateStatistic: dropping o_stat_temptable if still existing"); + try { + jdbcTemplate.execute("drop table o_stat_temptable;"); + } catch (Exception e) { + // + } + + try{ + log_.info("updateStatistic: creating o_stat_temptable"); + jdbcTemplate.execute( + "create table o_stat_temptable (" + + "creationdate timestamp not null," + + "businesspath varchar(2048) not null," + + "userproperty2 varchar(255)," + // homeOrg + "userproperty4 varchar(255)," + // orgType + "userproperty10 varchar(255)," + // studyBranch3 + "userproperty3 varchar(255)" + // studyLevel + ");"); + + log_.info("updateStatistic: inserting logging actions from "+from+" until "+until); + + int numLoggingActions = jdbcTemplate.update( + "insert into o_stat_temptable (creationdate,businesspath,userproperty2,userproperty4,userproperty10,userproperty3) " + + "select creationdate,businesspath,userproperty2,userproperty4,userproperty10,userproperty3 " + + "from o_loggingtable " + + "where actionverb='launch' and actionobject='node' and creationdate>? and creationdate<=?;", + new Object[]{ from, until }, new int[]{ Types.TIMESTAMP, Types.TIMESTAMP}); + + log_.info("updateStatistic: insert done. number of logging actions: " + numLoggingActions); + } catch(RuntimeException e) { + log_.warn("updateStatistic: ran into a RuntimeException: "+e, e); + } catch(Error er) { + log_.warn("updateStatistic: ran into an Error: "+er, er); + } finally { + final long diff = System.currentTimeMillis() - startTime; + log_.info("updateStatistic: END. duration="+diff); + } + } +} diff --git a/src/main/java/org/olat/course/statistic/PostgreSQLTempStatTableDropper.java b/src/main/java/org/olat/course/statistic/PostgreSQLTempStatTableDropper.java new file mode 100644 index 0000000000000000000000000000000000000000..27ebb17eb10c147ce3f879e719debfd16e380bf7 --- /dev/null +++ b/src/main/java/org/olat/course/statistic/PostgreSQLTempStatTableDropper.java @@ -0,0 +1,68 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.statistic; + +import java.util.Date; + +import org.olat.core.logging.OLog; +import org.olat.core.logging.Tracing; +import org.springframework.jdbc.core.JdbcTemplate; + +/** + * Only drop the temporary table. + * + * + * Initial date: 8 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class PostgreSQLTempStatTableDropper implements IStatisticUpdater { + + /** the logging object used in this class **/ + private static final OLog log = Tracing.createLoggerFor(PostgreSQLTempStatTableDropper.class); + + /** the jdbcTemplate is used to allow access to other than the default database and + * allow raw sql code + */ + private JdbcTemplate jdbcTemplate; + + /** set via spring **/ + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + @Override + public void updateStatistic(boolean fullRecalculation, Date from, Date until, StatisticUpdateManager statisticUpdateManager) { + // note: fullRecalculation has no affect to the dropper + + // create temp table + final long startTime = System.currentTimeMillis(); + try{ + jdbcTemplate.execute("drop table o_stat_temptable;"); + } catch(RuntimeException e) { + log.error("", e); + } catch(Error er) { + log.error("", er); + } finally { + final long diff = System.currentTimeMillis() - startTime; + log.info("updateStatistic: END. duration=" + diff); + } + } +} diff --git a/src/main/java/org/olat/course/statistic/SimpleStatisticInfoHelper.java b/src/main/java/org/olat/course/statistic/SimpleStatisticInfoHelper.java index 8abfe058d37320f9b28563c15a19599dce38f9ab..57180f3dd890237196b81d20157e5ae219270dfe 100644 --- a/src/main/java/org/olat/course/statistic/SimpleStatisticInfoHelper.java +++ b/src/main/java/org/olat/course/statistic/SimpleStatisticInfoHelper.java @@ -25,11 +25,12 @@ package org.olat.course.statistic; import java.util.Date; +import java.util.List; import java.util.Map; +import org.olat.core.commons.persistence.DB; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; -import org.springframework.jdbc.core.JdbcTemplate; /** * Simple helper class which knows about since when statistics are available. @@ -45,66 +46,42 @@ import org.springframework.jdbc.core.JdbcTemplate; public class SimpleStatisticInfoHelper { /** the logging object used in this class **/ - private static final OLog log_ = Tracing.createLoggerFor(SimpleStatisticInfoHelper.class); - - /** the jdbcTemplate is used to allow access to other than the default database and - * allow raw sql code - */ - private final JdbcTemplate jdbcTemplate_; + private static final OLog log = Tracing.createLoggerFor(SimpleStatisticInfoHelper.class); /** a map with all sql statements for the supported dbvendors **/ - private final Map<String,String> sql_; - - /** the dbvendor configured **/ - private final String dbVendor_; + private final Map<String,String> sql; /** the calculated creationdate **/ - private long creationdate_; + private Long creationDate; - /** whether or not creationdate has been computed **/ - private boolean initialized_ = false; - - /** - *@TODO - *@FIXME - * harsh violation of spring idea - yet we run with this until spring is refactored for 6.4 - */ - private static volatile SimpleStatisticInfoHelper SINGLETON_; - - /** spring **/ - public SimpleStatisticInfoHelper(JdbcTemplate jdbcTemplate, Map<String, String> sql, String dbVendor) { - jdbcTemplate_ = jdbcTemplate; - sql_ = sql; - dbVendor_ = dbVendor; - SINGLETON_ = this; + private DB dbInstance; + + public SimpleStatisticInfoHelper(DB dbInstance, Map<String, String> sql) { + this.dbInstance = dbInstance; + this.sql = sql; } /** * Computes the creationdate_ if it's not already computed and returns it * @return the creationdate */ - private synchronized Date doGetFirstLoggingTableCreationDate() { - if (!initialized_) { - creationdate_ = jdbcTemplate_.queryForLong(sql_.get(dbVendor_)); - initialized_ = true; - } - if (creationdate_!=-1) { - return new Date(creationdate_*1000); - } - // otherwise we have a misconfiguration - log_.error("getFirstLoggingTableCreationDate: misconfiguration! SimpleStatisticInfoHelper is not configured!"); - return null; - } - - /** - * @deprecated refactor SimpleStatisticInfoHelper in 6.4 !!! - */ - public static Date getFirstLoggingTableCreationDate() { - if (SINGLETON_==null) { - log_.error("getFirstLoggingTableCreationDate: misconfiguration! SimpleStatisticInfoHelper is not configured!"); - return null; - } else { - return SINGLETON_.doGetFirstLoggingTableCreationDate(); + public Date getFirstLoggingTableCreationDate() { + if (creationDate == null) { + try { + synchronized(this) { + if(creationDate == null) { + List<?> creationDates = dbInstance.getCurrentEntityManager() + .createNativeQuery(sql.get(dbInstance.getDbVendor())) + .getResultList(); + creationDate = creationDates == null || creationDates.isEmpty() ? null : ((Number)creationDates.get(0)).longValue(); + } + } + } catch (Exception e) { + log.error("", e); + } finally { + dbInstance.commitAndCloseSession(); + } } + return creationDate == null ? null : new Date(creationDate); } } diff --git a/src/main/java/org/olat/course/statistic/StatisticDisplayController.java b/src/main/java/org/olat/course/statistic/StatisticDisplayController.java index fb97a62a37b142a4e3fe536fb1198c3821877985..33f671692b45d5e61200dc9246979dcb0b2597b1 100644 --- a/src/main/java/org/olat/course/statistic/StatisticDisplayController.java +++ b/src/main/java/org/olat/course/statistic/StatisticDisplayController.java @@ -25,9 +25,7 @@ package org.olat.course.statistic; -import java.text.DateFormat; import java.util.ArrayList; -import java.util.Calendar; import java.util.Date; import java.util.Iterator; import java.util.LinkedList; @@ -54,6 +52,7 @@ import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.core.logging.activity.StringResourceableType; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; +import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.core.util.resource.OresHelper; @@ -64,6 +63,7 @@ import org.olat.course.nodes.CourseNode; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryManager; import org.olat.util.logging.activity.LoggingResourceable; +import org.springframework.beans.factory.annotation.Autowired; /** * Base class for Statistic Display Controllers - subclass this @@ -119,6 +119,8 @@ public class StatisticDisplayController extends BasicController { private Translator headerTranslator_; + @Autowired + private SimpleStatisticInfoHelper statisticInfoHelper; public StatisticDisplayController(UserRequest ureq, WindowControl windowControl, ICourse course, IStatisticManager statisticManager) { super(ureq, windowControl); @@ -142,7 +144,7 @@ public class StatisticDisplayController extends BasicController { protected Component createInitialComponent(UserRequest ureq) { statisticVc_ = createVelocityContainer("statistic"); - statisticVc_.contextPut("statsSince", getStatsSinceStr(ureq)); + statisticVc_.contextPut("statsSince", getStatsSinceStr()); recreateTableController(ureq); return statisticVc_; @@ -285,7 +287,7 @@ public class StatisticDisplayController extends BasicController { LoggingResourceable.wrapNonOlatResource(StringResourceableType.statisticType, "", STATISTIC_TYPE_VIEW_TOTAL_OF_NODES_STATISTIC)); selectionInfo = getTranslator().translate("statistic.chart.selectioninfo.total"); } - String chartIntroStr = headerTranslator_.translate("statistic.chart.intro", new String[] { selectionInfo, getStatsSinceStr(ureq) }); + String chartIntroStr = headerTranslator_.translate("statistic.chart.intro", new String[] { selectionInfo, getStatsSinceStr() }); StringBuffer chd = new StringBuffer(); List<Integer> values = new ArrayList<Integer>(); @@ -332,7 +334,7 @@ public class StatisticDisplayController extends BasicController { if (columnId==tableCtr_.getTableDataModel().getColumnCount()-1) { ThreadLocalUserActivityLogger.log(StatisticLoggingAction.VIEW_TOTAL_TOTAL_STATISTIC, getClass(), LoggingResourceable.wrapNonOlatResource(StringResourceableType.statisticType, "", STATISTIC_TYPE_VIEW_TOTAL_TOTAL_STATISTIC)); - chartIntroStr = headerTranslator_.translate("statistic.chart.pernode.total.intro", new String[] {getStatsSinceStr(ureq)}); + chartIntroStr = headerTranslator_.translate("statistic.chart.pernode.total.intro", new String[] { getStatsSinceStr() }); } else { ThreadLocalUserActivityLogger.log(StatisticLoggingAction.VIEW_TOTAL_BY_VALUE_STATISTIC, getClass(), LoggingResourceable.wrapNonOlatResource(StringResourceableType.statisticType, "", STATISTIC_TYPE_VIEW_TOTAL_BY_VALUE_STATISTIC), @@ -408,15 +410,12 @@ public class StatisticDisplayController extends BasicController { } } - protected String getStatsSinceStr(UserRequest ureq) { - Date d = SimpleStatisticInfoHelper.getFirstLoggingTableCreationDate(); + protected String getStatsSinceStr() { + Date d = statisticInfoHelper.getFirstLoggingTableCreationDate(); if (d==null) { return "n/a"; } - Calendar c = Calendar.getInstance(ureq.getLocale()); - c.setTime(d); - DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, ureq.getLocale()); - return df.format(c.getTime()); + return Formatter.getInstance(getLocale()).formatDate(d); } @Override diff --git a/src/main/java/org/olat/course/statistic/StatisticResult.java b/src/main/java/org/olat/course/statistic/StatisticResult.java index ea0f1d44e1e2699f9304dc8877eaf47b67b40d11..85e60a96ce89112a417479646abc3cde0ee22b1a 100644 --- a/src/main/java/org/olat/course/statistic/StatisticResult.java +++ b/src/main/java/org/olat/course/statistic/StatisticResult.java @@ -64,7 +64,7 @@ public class StatisticResult implements TableDataModel { | [RepositoryEntry:393216][CourseNode:73156787421533] | 3 | 33 | | [RepositoryEntry:393216][CourseNode:73156787421533] | 4 | 34 | */ - public StatisticResult(ICourse course, List<?> result) { + public StatisticResult(ICourse course, List<Object[]> result) { final Set<String> groupByKeys = new HashSet<String>(); doAddQueryListResultsForNodeAndChildren(course.getRunStructure().getRootNode(), result, groupByKeys); if (result.size()!=0) { @@ -103,7 +103,7 @@ public class StatisticResult implements TableDataModel { columnHeaders_ = new ArrayList<String>(columnHeaders); } - private void doAddQueryListResultsForNodeAndChildren(CourseNode node, List<?> result, Set<String> groupByKeys) { + private void doAddQueryListResultsForNodeAndChildren(CourseNode node, List<Object[]> result, Set<String> groupByKeys) { orderedNodesList_.add(node); for (Iterator<?> it = result.iterator(); it.hasNext();) { @@ -147,6 +147,10 @@ public class StatisticResult implements TableDataModel { } } + public Map<String, Integer> getStatistics(CourseNode courseNode) { + return statistic_.get(courseNode); + } + private Map<String, Object> getIndentednodeRendererMap(int row) { if (row>=orderedNodesList_.size()) { throw new IllegalStateException("row count too big: "+row+", only having "+orderedNodesList_.size()+" elements"); diff --git a/src/main/java/org/olat/course/statistic/StatisticUpdateManager.java b/src/main/java/org/olat/course/statistic/StatisticUpdateManager.java index 190d675f34cc45b6bed7be872882e93ab1de31f7..97deb16cd21f228b5b46f7f6e654c3d8ff3bbd75 100644 --- a/src/main/java/org/olat/course/statistic/StatisticUpdateManager.java +++ b/src/main/java/org/olat/course/statistic/StatisticUpdateManager.java @@ -33,6 +33,8 @@ package org.olat.course.statistic; * @author Stefan */ public interface StatisticUpdateManager { + + public void setEnabled(boolean enabled); /** * Add the given IStatisticUpdater to this StatisticUpdateManager. diff --git a/src/main/java/org/olat/course/statistic/StatisticUpdateManagerImpl.java b/src/main/java/org/olat/course/statistic/StatisticUpdateManagerImpl.java index 8a1cd60447b0246cdf4e872f04699296f5b1c4e1..864b8a01e98cba0625d6ac1f11810ed67fc08d76 100644 --- a/src/main/java/org/olat/course/statistic/StatisticUpdateManagerImpl.java +++ b/src/main/java/org/olat/course/statistic/StatisticUpdateManagerImpl.java @@ -36,7 +36,6 @@ import org.olat.core.gui.control.Event; import org.olat.core.logging.AssertException; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; -import org.olat.core.manager.BasicManager; import org.olat.core.util.coordinate.CoordinatorManager; import org.olat.core.util.event.GenericEventListener; import org.olat.core.util.event.MultiUserEvent; @@ -50,7 +49,7 @@ import org.olat.properties.PropertyManager; * Initial Date: 11.02.2010 <br> * @author Stefan */ -class StatisticUpdateManagerImpl extends BasicManager implements StatisticUpdateManager, GenericEventListener { +class StatisticUpdateManagerImpl implements StatisticUpdateManager, GenericEventListener { /** the logging object used in this class **/ static final OLog log_ = Tracing.createLoggerFor(StatisticUpdateManagerImpl.class); @@ -78,11 +77,7 @@ class StatisticUpdateManagerImpl extends BasicManager implements StatisticUpdate /** spring **/ public StatisticUpdateManagerImpl(CoordinatorManager coordinatorManager, StatisticUpdateConfig config, String enabled) { - enabled_ = enabled!=null && "enabled".equals(enabled); - if (!enabled_) { - log_.info("<init> disabled by configuration"); - return; - } + enabled_ = enabled != null && "enabled".equals(enabled); updaters_.addAll(config.getUpdaters()); // note: not using CoordinatorManager.getInstance().getCoordinator() in this spring-called-constructor @@ -96,6 +91,10 @@ class StatisticUpdateManagerImpl extends BasicManager implements StatisticUpdate OresHelper.createOLATResourceableTypeWithoutCheck(StatisticUpdateManagerImpl.class.getName())); } + public void setEnabled(boolean enabled) { + enabled_ = enabled; + } + /** * [used by Spring] * @param taskExecutorManager @@ -152,6 +151,8 @@ class StatisticUpdateManagerImpl extends BasicManager implements StatisticUpdate Date lastUpdatedDate = new Date(lastUpdatedInMilliseconds); Date nowDate = new Date(nowInMilliseconds); + + System.out.println(lastUpdatedDate + " :: " + nowDate); log_.info("updateStatistics: starting the update"); DBFactory.getInstance().intermediateCommit(); diff --git a/src/main/java/org/olat/course/statistic/UpdateStatisticsJob.java b/src/main/java/org/olat/course/statistic/UpdateStatisticsJob.java index 0435aa7a7dd1b51c339b2823dfe0474a419b65f1..259032d0e78818875f59966000a2edf8d93eba25 100644 --- a/src/main/java/org/olat/course/statistic/UpdateStatisticsJob.java +++ b/src/main/java/org/olat/course/statistic/UpdateStatisticsJob.java @@ -24,10 +24,10 @@ */ package org.olat.course.statistic; +import java.util.Random; + import org.olat.core.CoreSpringFactory; import org.olat.core.commons.services.scheduler.JobWithDB; -import org.olat.core.logging.OLog; -import org.olat.core.logging.Tracing; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -40,8 +40,7 @@ import org.quartz.JobExecutionException; public class UpdateStatisticsJob extends JobWithDB { /** the logging object used in this class **/ - private static final OLog log_ = Tracing.createLoggerFor(UpdateStatisticsJob.class); - + private final Random random = new Random(); /** * @@ -49,14 +48,25 @@ public class UpdateStatisticsJob extends JobWithDB { */ @Override public void executeWithDB(JobExecutionContext arg0) throws JobExecutionException { + jitter();// wait 0 - 60 seconds + StatisticUpdateManager statisticManager = (StatisticUpdateManager) CoreSpringFactory.getBean("org.olat.course.statistic.StatisticUpdateManager"); if (statisticManager==null) { - log_.error("executeWithDB: UpdateStatisticsJob configured, but no StatisticUpdateManager available"); + log.error("executeWithDB: UpdateStatisticsJob configured, but no StatisticUpdateManager available"); } else { if (!statisticManager.updateStatistics(false, null)) { - log_.warn("executeWithDB: UpdateStatisticsJob could not trigger updateStatistics - must be already running"); + log.warn("executeWithDB: UpdateStatisticsJob could not trigger updateStatistics - must be already running"); } } } - + + private void jitter() { + try { + double millis = random.nextDouble() * 60.0d * 1000.0d; + long wait = Math.round(millis); + Thread.sleep(wait); + } catch (InterruptedException e) { + log.error("", e); + } + } } diff --git a/src/main/java/org/olat/course/statistic/_spring/statisticContext.xml b/src/main/java/org/olat/course/statistic/_spring/statisticContext.xml index e44bab4567ed12a7c85177bb8fd7924d0fbd6c94..7607338add19adfcbf8971a9a572a982bdfb2ca8 100644 --- a/src/main/java/org/olat/course/statistic/_spring/statisticContext.xml +++ b/src/main/java/org/olat/course/statistic/_spring/statisticContext.xml @@ -34,28 +34,7 @@ The downside of this version is that it requires 'FILE' permissions for the database user executing the 'SELECT INTO OUTFILE' statement. This FILE - permission is a security risk and hence a possible concern. - - c) UZHStoredProcedureLogExporter - ............................... - a stored-procedure version where the database does the job of exporting - the selected o_loggingtable rows into a csv including avoiding the - security risk of the FILE permission. - - To avoid the FILE permission concern, this version uses a stored procedure - (which has root permissions) and only grants the executing user the permission - to execute mentioned stored procedure. - - This version requires a special database setup - i.e. it requires the - stored procedure to be set plus the GRANT ON PROCEDURE permission for the - executing user. - - This version should be performant since it leaves the job to the database - to export and doesn't read the reuslt into the JVM. - - The downside of this version is the setup work necessary plus it is currently - only available (i.e. tested) for MySQL - + permission is a security risk and hence a possible concern. --> <!-- @@ -120,398 +99,309 @@ </list> </property> </bean> - - - <!-- - ..................................................................... - Sample remaining configuration for SQLLogExporter or version b) above - ..................................................................... - - Implementation note: reason for select..(select into outfile) syntax is - a mysql bug, see here for details: - - http://bugs.mysql.com/bug.php?id=34665 - --> - <!--<bean id="courseLogExporter" - class="org.olat.course.statistic.export.SQLLogExporter"> - <property name="sessionFactory"> - <ref bean="logExportSessionFactory" /> + <!-- STATISTICS BEANS --> + <bean id="statisticsJdbcTemplate" + class="org.springframework.jdbc.core.JdbcTemplate"> + <property name="dataSource"> + <ref bean="${db.vendor}_${db.source}_DataSource"/> </property> - - <property name="anonymizedUserSql" - value="select - 'creationDate','username','actionVerb','actionObject','greatGrandParent','grandParent','parent','target' - union - ( - select - creationDate,password(concat(userName,':resId')),actionVerb,actionObject,greatGrandParentResName,grandParentResName,parentResName,targetResName - from - o_loggingtable v - where - v.resourceAdminAction = :resAdminAction - AND ( - (v.targetResId = :resId) OR - (v.parentResId = :resId) OR - (v.grandParentResId = :resId) OR - (v.greatGrandParentResId = :resId) - ) - INTO OUTFILE :outFile FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' - )"/> - <property name="nonAnonymizedUserSql" - value="select - 'creationDate','username','actionVerb','actionObject','greatGrandParent','grandParent','parent','target' - union - ( - select - creationDate,userName,actionVerb,actionObject,greatGrandParentResName,grandParentResName,parentResName,targetResName - from - o_loggingtable v - where - v.resourceAdminAction = :resAdminAction - AND ( - (v.targetResId = :resId) OR - (v.parentResId = :resId) OR - (v.grandParentResId = :resId) OR - (v.greatGrandParentResId = :resId) - ) - INTO OUTFILE :outFile FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' - )"/> </bean> - <bean id="logExportSessionFactory" - class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> - <property name="dataSource"> - <ref local="logExportDataSource" /> - </property> - <property name="mappingResources"> + + <!-- mysql : select businesspath,date(creationdate) day, count(*) cnt from o_loggingtable group by businesspath,day --> + <bean id="statisticUpdateConfig_mysql" class="org.olat.course.statistic.StatisticUpdateConfig" lazy-init="true"> + <property name="updaters"> <list> - <value>org/olat/core/logging/activity/LoggingObject.hbm.xml</value> + <bean class="org.olat.course.statistic.MySQLTempStatTableCreator" > + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> + </bean> + <ref bean="dailyStatisticUpdater_mysql"/> + <ref bean="weeklyStatisticUpdater_mysql"/> + <ref bean="dayOfWeekStatisticUpdater_mysql"/> + <ref bean="hourOfDayStatisticUpdater_mysql"/> + <bean class="org.olat.course.statistic.MySQLTempStatTableDropper" > + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> + </bean> </list> </property> </bean> + <!-- postgres select businesspath,date(creationdate) day, count(*) cnt from o_loggingtable group by businesspath,day --> + <bean id="statisticUpdateConfig_postgresql" class="org.olat.course.statistic.StatisticUpdateConfig" lazy-init="true"> + <property name="updaters"> + <list> + <bean class="org.olat.course.statistic.PostgreSQLTempStatTableCreator" > + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> + </bean> + <ref bean="dailyStatisticUpdater_postgresql" /> + <ref bean="weeklyStatisticUpdater_postgresql" /> + <ref bean="dayOfWeekStatisticUpdater_postgresql" /> + <ref bean="hourOfDayStatisticUpdater_postgresql" /> + <bean class="org.olat.course.statistic.PostgreSQLTempStatTableDropper" > + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> + </bean> + </list> + </property> + </bean> + <bean class="org.olat.course.statistic.StatisticUpdater" id="dailyStatisticUpdater_mysql" lazy-init="true"> + <property name="loggingName" value="DailyStatisticUpdater"/> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> + <property name="updateSQL"> + <list> + <!-- + + 'old' represents the existing i.e. old table + 'delta' represents the new stuff being added + this update goes through the 'old' table and adds from the 'delta' where entries already exist in 'old' + update o_stat_dayofweek as old, (select businesspath,dayofweek(creationdate) day, count(*) cnt from o_loggingtable where actionverb='launch' and actionobject='node' group by businesspath,day) as delta SET old.value=old.value+delta.cnt where old.day=delta.day and old.businesspath=delta.businesspath; + + --> + <value> + update o_stat_daily as old, + (select businesspath,date(creationdate) day, count(*) cnt from o_stat_temptable group by businesspath,day) as delta + set old.value=old.value+delta.cnt + where old.day=delta.day and old.businesspath=delta.businesspath; + </value> + <!-- + + again: + 'old' represents the existing i.e. old table + 'delta' represents the new stuff being added + this insert goes through the delta to add entries which do not yet exist in the 'old' table at all + insert into o_stat_dayofweek (businesspath,day,value) select delta.businesspath,delta.day,delta.cnt from (select businesspath,dayofweek(creationdate) day,count(*) cnt from o_loggingtable where actionverb='launch' and actionobject='node' group by businesspath,day) delta left join o_stat_dayofweek old on delta.businesspath=old.businesspath and delta.day=old.day where old.businesspath is null; + + --> + <value> + insert into o_stat_daily (businesspath, resid, day, value) + select + delta.businesspath, delta.resid, delta.day, delta.cnt + from (select + businesspath, + substr(businesspath,locate(':',businesspath)+1,locate(']',businesspath)-locate(':',businesspath)-1) resid, + date(creationdate) day, + count(*) cnt + from o_stat_temptable + group by businesspath,day) delta + left join o_stat_daily old on (delta.businesspath=old.businesspath and delta.day=old.day) + where old.businesspath is null; + </value> + <value> + delete from o_stat_daily where datediff(now(),day)>180; + </value> + </list> + </property> + <property name="deleteSQL" value="delete from o_stat_daily;"/> + </bean> - --><!-- - .................................................................................... - Sample remaining configuration for UZHStoredProcedureLogExporter or version c) above - .................................................................................... - --><!-- - - <bean id="courseLogExporter" - class="org.olat.course.statistic.export.UZHStoredProcedureLogExporter"> - - <property name="jdbcTemplate"> - <ref bean="mysqlJdbcTemplate"/> + <bean class="org.olat.course.statistic.StatisticUpdater" id="dailyStatisticUpdater_postgresql" lazy-init="true"> + <property name="loggingName" value="DailyStatisticUpdater"/> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> + <property name="updateSQL"> + <list> + <value> +update o_stat_daily set value=value + delta.cnt +from (select temptable.businesspath as tempbusinesspath, date_trunc('day', temptable.creationdate) as d, count(*) cnt + from o_stat_temptable as temptable + group by temptable.businesspath, d) as delta +where day=delta.d and businesspath=delta.tempbusinesspath; + </value> + <value> +insert into o_stat_daily (businesspath, resid, day, value) + (select temptable.businesspath as path, + int8(substring(temptable.businesspath from position(':' in temptable.businesspath) + 1 for position(']' in temptable.businesspath) - position(':' in temptable.businesspath) - 1)) as resid, + date_trunc('day', temptable.creationdate) as d, + count(*) as cnt + from o_stat_temptable as temptable + left join o_stat_daily old on (temptable.businesspath=old.businesspath and date_trunc('day', temptable.creationdate)=old.day) + where temptable.businesspath != '' and old.businesspath is null + group by temptable.businesspath, d); + </value> + </list> </property> - - <property name="header" value="tbd"/> - + + <property name="deleteSQL" value="delete from o_stat_daily;"/> </bean> - <bean id="mysqlJdbcTemplate" - class="org.springframework.jdbc.core.JdbcTemplate"> - - <property name="dataSource"> - <ref bean="logExportDataSource"/> + <bean id="weeklyStatisticUpdater_mysql" class="org.olat.course.statistic.StatisticUpdater"> + <property name="loggingName" value="weeklyStatisticUpdater"/> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> + <property name="updateSQL"> + <list> + <value> + update o_stat_weekly as old, + (select businesspath,concat(year(creationdate),'-',lpad(week(creationdate,3),2,'0')) week, count(*) cnt from o_stat_temptable group by businesspath,week) as delta + set old.value=old.value+delta.cnt + where old.week=delta.week and old.businesspath=delta.businesspath; + </value> + <value> + insert into o_stat_weekly (businesspath,resid,week,value) + select + delta.businesspath, delta.resid, delta.week, delta.cnt + from + (select + businesspath, + substr(businesspath,locate(':',businesspath)+1,locate(']',businesspath)-locate(':',businesspath)-1) resid, + concat(year(creationdate),'-',lpad(week(creationdate,3),2,'0')) week, + count(*) cnt + from o_stat_temptable group by businesspath,week) delta + left join o_stat_weekly old on delta.businesspath=old.businesspath and delta.week=old.week + where old.businesspath is null; + </value> + <value> + delete from o_stat_weekly where week<concat(year(now() - interval 180 day),'-',lpad(week(now() - interval 180 day,3),2,'0')); + </value> + </list> </property> - + <property name="deleteSQL" value="delete from o_stat_weekly;"/> </bean> - ---> - - <!-- STATISTICS BEANS --> - - <bean id="statisticsMysqlJdbcTemplate" - class="org.springframework.jdbc.core.JdbcTemplate"> - - <property name="dataSource"> - <ref bean="${db.vendor}_${db.source}_DataSource"/> + <bean id="weeklyStatisticUpdater_postgresql" class="org.olat.course.statistic.StatisticUpdater"> + <property name="loggingName" value="WeeklyStatisticUpdater"/> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> + <property name="updateSQL"> + <list> + <value> +update o_stat_weekly set value = value + delta.cnt +from (select businesspath as tempbusinesspath, + (date_part('year', temptable.creationdate) || '-' || date_part('week', temptable.creationdate)) as w, + count(*) cnt + from o_stat_temptable as temptable + group by tempbusinesspath, w) as delta + where week=delta.w and businesspath=tempbusinesspath; + </value> + <value> +insert into o_stat_weekly (businesspath, resid, week, value) + (select temptable.businesspath, + int8(substring(temptable.businesspath from position(':' in temptable.businesspath) + 1 for position(']' in temptable.businesspath) - position(':' in temptable.businesspath) - 1)) as resid, + (date_part('year', temptable.creationdate) || '-' || date_part('week', temptable.creationdate)) as w, + count(*) as cnt + from o_stat_temptable as temptable + left join o_stat_weekly old on (temptable.businesspath=old.businesspath and (date_part('year', temptable.creationdate) || '-' || date_part('week', temptable.creationdate))=old.week) + where temptable.businesspath != '' and old.businesspath is null + group by temptable.businesspath, w); + </value> + </list> </property> - + <property name="deleteSQL" value="delete from o_stat_weekly;"/> </bean> - -<!-- - mysql : select businesspath,date(creationdate) day, count(*) cnt from o_loggingtable group by businesspath,day - --> - <bean id="statisticUpdateConfig_test" class="org.olat.course.statistic.StatisticUpdateConfig" lazy-init="true"> - <property name="updaters"> - <list /> + <bean id="dayOfWeekStatisticUpdater_mysql" class="org.olat.course.statistic.StatisticUpdater"> + <property name="loggingName" value="DayOfWeekStatisticUpdater"/> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> + <property name="updateSQL"> + <list> + <value> + update o_stat_dayofweek as old, + (select businesspath,dayofweek(creationdate) day, count(*) cnt from o_stat_temptable group by businesspath,day) as delta + SET old.value=old.value+delta.cnt + where old.day=delta.day and old.businesspath=delta.businesspath; + </value> + <value> + insert into o_stat_dayofweek (businesspath,resid,day,value) + select + delta.businesspath, delta.resid, delta.day, delta.cnt + from + (select + businesspath, + substr(businesspath,locate(':',businesspath)+1,locate(']',businesspath)-locate(':',businesspath)-1) resid, + dayofweek(creationdate) day, + count(*) cnt + from o_stat_temptable group by businesspath,day) delta + left join o_stat_dayofweek old on delta.businesspath=old.businesspath and delta.day=old.day + where old.businesspath is null; + </value> + </list> </property> + <property name="deleteSQL" value="delete from o_stat_dayofweek;"/> </bean> - - <bean id="statisticUpdateConfig_mysql" class="org.olat.course.statistic.StatisticUpdateConfig" lazy-init="true"> - <property name="updaters"> + + <bean id="dayOfWeekStatisticUpdater_postgresql" class="org.olat.course.statistic.StatisticUpdater" > + <property name="loggingName" value="DayOfWeekStatisticUpdater"/> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> + <property name="updateSQL"> <list> - <bean class="org.olat.course.statistic.MySQLTempStatTableCreator" > - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> - </bean> - - <ref bean="DailyStatisticUpdater_mysql"/> - - <ref bean="WeeklyStatisticUpdater_mysql"/> - - <ref bean="DayOfWeekStatisticUpdater_mysql"/> - - <ref bean="HourOfDayStatisticUpdater_mysql"/> + <value> +update o_stat_dayofweek set value = value + delta.cnt +from (select temptable.businesspath as tempbusinesspath, int8(to_char(temptable.creationdate, 'D')) as d, count(*) cnt + from o_stat_temptable as temptable + group by tempbusinesspath, d) as delta + where day=delta.d and businesspath=tempbusinesspath; + </value> + <value> +insert into o_stat_dayofweek (businesspath, resid, day, value) + (select temptable.businesspath, + int8(substring(temptable.businesspath from position(':' in temptable.businesspath) + 1 for position(']' in temptable.businesspath) - position(':' in temptable.businesspath) - 1)), + int8(to_char(temptable.creationdate, 'D')) as d, + count(*) as cnt + from o_stat_temptable as temptable + left join o_stat_dayofweek old on (temptable.businesspath=old.businesspath and int8(to_char(temptable.creationdate, 'D'))=old.day) + where temptable.businesspath != '' and old.businesspath is null + group by temptable.businesspath, d); + </value> + </list> + </property> + <property name="deleteSQL" value="delete from o_stat_dayofweek;"/> + </bean> - <bean class="org.olat.course.statistic.MySQLTempStatTableDropper" > - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> - </bean> + <bean id="hourOfDayStatisticUpdater_mysql" class="org.olat.course.statistic.StatisticUpdater"> + <property name="loggingName" value="HourOfDayStatisticUpdater"/> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> + <property name="updateSQL"> + <list> + <value> + update o_stat_hourofday as old, + (select businesspath,hour(creationdate) hour, count(*) cnt from o_stat_temptable group by businesspath,hour) as delta + SET old.value=old.value+delta.cnt + where old.hour=delta.hour and old.businesspath=delta.businesspath; + </value> + <value> + insert into o_stat_hourofday (businesspath,resid,hour,value) + select + delta.businesspath, delta.resid, delta.hour, delta.cnt + from + (select + businesspath, + substr(businesspath,locate(':',businesspath)+1,locate(']',businesspath)-locate(':',businesspath)-1) resid, + hour(creationdate) hour, + count(*) cnt + from o_stat_temptable group by businesspath,hour) delta + left join o_stat_hourofday old on delta.businesspath=old.businesspath and delta.hour=old.hour + where old.businesspath is null; + </value> </list> </property> - </bean> + <property name="deleteSQL" value="delete from o_stat_hourofday;"/> + </bean> - <bean class="org.olat.course.statistic.StatisticUpdater" id="DailyStatisticUpdater_mysql" lazy-init="true"> - <property name="loggingName" value="DailyStatisticUpdater"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> - <property name="updateSQL"> - <list> - <!-- - - 'old' represents the existing i.e. old table - 'delta' represents the new stuff being added - this update goes through the 'old' table and adds from the 'delta' where entries already exist in 'old' - update o_stat_dayofweek as old, (select businesspath,dayofweek(creationdate) day, count(*) cnt from o_loggingtable where actionverb='launch' and actionobject='node' group by businesspath,day) as delta SET old.value=old.value+delta.cnt where old.day=delta.day and old.businesspath=delta.businesspath; - - --> - <value> - update o_stat_daily as old, - (select businesspath,date(creationdate) day, count(*) cnt from o_stat_temptable group by businesspath,day) as delta - SET old.value=old.value+delta.cnt - where old.day=delta.day and old.businesspath=delta.businesspath; - </value> - <!-- - - again: - 'old' represents the existing i.e. old table - 'delta' represents the new stuff being added - this insert goes through the delta to add entries which do not yet exist in the 'old' table at all - insert into o_stat_dayofweek (businesspath,day,value) select delta.businesspath,delta.day,delta.cnt from (select businesspath,dayofweek(creationdate) day,count(*) cnt from o_loggingtable where actionverb='launch' and actionobject='node' group by businesspath,day) delta left join o_stat_dayofweek old on delta.businesspath=old.businesspath and delta.day=old.day where old.businesspath is null; - - --> - <value> - insert into o_stat_daily (businesspath,resid,day,value) - select - delta.businesspath, delta.resid, delta.day, delta.cnt - from - (select - businesspath, - substr(businesspath,locate(':',businesspath)+1,locate(']',businesspath)-locate(':',businesspath)-1) resid, - date(creationdate) day, - count(*) cnt - from o_stat_temptable group by businesspath,day) delta - left join o_stat_daily old on delta.businesspath=old.businesspath and delta.day=old.day - where old.businesspath is null; - </value> - <value> - delete from o_stat_daily where datediff(now(),day)>180; - </value> - </list> - </property> - - <property name="deleteSQL" value="delete from o_stat_daily;"/> - - </bean> - - <bean class="org.olat.course.statistic.StatisticUpdater" id="WeeklyStatisticUpdater_mysql"> - <property name="loggingName" value="WeeklyStatisticUpdater"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> - <property name="updateSQL"> - <list> - <value> - update o_stat_weekly as old, - (select businesspath,concat(year(creationdate),'-',lpad(week(creationdate,3),2,'0')) week, count(*) cnt from o_stat_temptable group by businesspath,week) as delta - SET old.value=old.value+delta.cnt - where old.week=delta.week and old.businesspath=delta.businesspath; - </value> - <value> - insert into o_stat_weekly (businesspath,resid,week,value) - select - delta.businesspath, delta.resid, delta.week, delta.cnt - from - (select - businesspath, - substr(businesspath,locate(':',businesspath)+1,locate(']',businesspath)-locate(':',businesspath)-1) resid, - concat(year(creationdate),'-',lpad(week(creationdate,3),2,'0')) week, - count(*) cnt - from o_stat_temptable group by businesspath,week) delta - left join o_stat_weekly old on delta.businesspath=old.businesspath and delta.week=old.week - where old.businesspath is null; - </value> - <value> - delete from o_stat_weekly where week<concat(year(now() - interval 180 day),'-',lpad(week(now() - interval 180 day,3),2,'0')); - </value> - </list> - </property> - <property name="deleteSQL" value="delete from o_stat_weekly;"/> - </bean> - - <bean class="org.olat.course.statistic.StatisticUpdater" id="DayOfWeekStatisticUpdater_mysql"> - <property name="loggingName" value="DayOfWeekStatisticUpdater"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> - <property name="updateSQL"> - <list> - <value> - update o_stat_dayofweek as old, - (select businesspath,dayofweek(creationdate) day, count(*) cnt from o_stat_temptable group by businesspath,day) as delta - SET old.value=old.value+delta.cnt - where old.day=delta.day and old.businesspath=delta.businesspath; - </value> - <value> - insert into o_stat_dayofweek (businesspath,resid,day,value) - select - delta.businesspath, delta.resid, delta.day, delta.cnt - from - (select - businesspath, - substr(businesspath,locate(':',businesspath)+1,locate(']',businesspath)-locate(':',businesspath)-1) resid, - dayofweek(creationdate) day, - count(*) cnt - from o_stat_temptable group by businesspath,day) delta - left join o_stat_dayofweek old on delta.businesspath=old.businesspath and delta.day=old.day - where old.businesspath is null; - </value> - </list> - </property> - <property name="deleteSQL" value="delete from o_stat_dayofweek;"/> - </bean> - - <bean class="org.olat.course.statistic.StatisticUpdater" id="HourOfDayStatisticUpdater_mysql"> - <property name="loggingName" value="HourOfDayStatisticUpdater"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> - <property name="updateSQL"> - <list> - <value> - update o_stat_hourofday as old, - (select businesspath,hour(creationdate) hour, count(*) cnt from o_stat_temptable group by businesspath,hour) as delta - SET old.value=old.value+delta.cnt - where old.hour=delta.hour and old.businesspath=delta.businesspath; - </value> - <value> - insert into o_stat_hourofday (businesspath,resid,hour,value) - select - delta.businesspath, delta.resid, delta.hour, delta.cnt - from - (select - businesspath, - substr(businesspath,locate(':',businesspath)+1,locate(']',businesspath)-locate(':',businesspath)-1) resid, - hour(creationdate) hour, - count(*) cnt - from o_stat_temptable group by businesspath,hour) delta - left join o_stat_hourofday old on delta.businesspath=old.businesspath and delta.hour=old.hour - where old.businesspath is null; - - </value> - </list> - </property> - <property name="deleteSQL" value="delete from o_stat_hourofday;"/> - </bean> - - <!-- Postgres: - - mysql : select businesspath,date(creationdate) day, count(*) cnt from o_loggingtable group by businesspath,day - - --> - <bean id="statisticUpdateConfig_postgresql" class="org.olat.course.statistic.StatisticUpdateConfig" lazy-init="true"> - <property name="updaters"> + <bean id="hourOfDayStatisticUpdater_postgresql" class="org.olat.course.statistic.StatisticUpdater" > + <property name="loggingName" value="HourOfDayStatisticUpdater"/> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> + <property name="updateSQL"> <list> - <bean class="org.olat.course.statistic.StatisticUpdater" > - <property name="loggingName" value="DailyStatisticUpdater"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> - <property name="updateSQL"> - <list> - <value> - delete from o_stat_daily; - </value> - <value> - insert into o_stat_daily - (businesspath,resid,day,value) - (select businesspath, - int8(substring(businesspath from position(':' in businesspath) + 1 for position(']' in businesspath) - position(':' in businesspath) - 1)), - date_trunc('day',creationdate) as d, - count(*) as c - from o_loggingtable where actionverb='launch' and actionobject='node' and businesspath != '' group by businesspath, d); - </value> - </list> - </property> - - <property name="deleteSQL" value="delete from o_stat_daily;"/> - - </bean> - - <bean class="org.olat.course.statistic.StatisticUpdater" > - <property name="loggingName" value="WeeklyStatisticUpdater"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> - <property name="updateSQL"> - <list> - <value> - delete from o_stat_weekly; - </value> - <value> - insert into o_stat_weekly - (businesspath,resid,week,value) - (select businesspath, - int8(substring(businesspath from position(':' in businesspath) + 1 for position(']' in businesspath) - position(':' in businesspath) - 1)), - to_char(creationdate, 'IYYY') || '-' || to_char(creationdate, 'IW') as d, - count(*) as c - from o_loggingtable where actionverb='launch' and actionobject='node' and businesspath != '' group by businesspath, d); - </value> - </list> - </property> - <property name="deleteSQL" value="delete from o_stat_weekly;"/> - </bean> - - <bean class="org.olat.course.statistic.StatisticUpdater" > - <property name="loggingName" value="DayOfWeekStatisticUpdater"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> - <property name="updateSQL"> - <list> - <value> - delete from o_stat_dayofweek; - </value> - <value> - insert into o_stat_dayofweek - (businesspath,resid,day,value) - (select businesspath, - int8(substring(businesspath from position(':' in businesspath) + 1 for position(']' in businesspath) - position(':' in businesspath) - 1)), - int8(to_char(creationdate, 'D')) as d, - count(*) as c - from o_loggingtable where actionverb='launch' and actionobject='node' and businesspath != '' group by businesspath, d); - </value> - </list> - </property> - <property name="deleteSQL" value="delete from o_stat_dayofweek;"/> - </bean> - - <bean class="org.olat.course.statistic.StatisticUpdater" > - <property name="loggingName" value="HourOfDayStatisticUpdater"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> - <property name="updateSQL"> - <list> - <value> - delete from o_stat_hourofday; - </value> - <value> - insert into o_stat_hourofday - (businesspath,resid,hour,value) - (select businesspath, - int8(substring(businesspath from position(':' in businesspath) + 1 for position(']' in businesspath) - position(':' in businesspath) - 1)), - int8(to_char(creationdate, 'HH24')) as d, - count(*) as c - from o_loggingtable where actionverb='launch' and actionobject='node' and businesspath != '' group by businesspath, d); - </value> - </list> - </property> - <property name="deleteSQL" value="delete from o_stat_hourofday;"/> - </bean> - + <value> +update o_stat_hourofday set value = value + delta.cnt +from(select temptable.businesspath as tempbusinesspath, date_part('hour', temptable.creationdate) as h, count(*) cnt + from o_stat_temptable as temptable + group by businesspath, h) as delta +where hour=delta.h and businesspath=tempbusinesspath; + </value> + <value> +insert into o_stat_hourofday (businesspath, resid, hour, value) + (select temptable.businesspath, + int8(substring(temptable.businesspath from position(':' in temptable.businesspath) + 1 for position(']' in temptable.businesspath) - position(':' in temptable.businesspath) - 1)), + date_part('hour', temptable.creationdate) as h, + count(*) as cnt + from o_stat_temptable as temptable + left join o_stat_hourofday old on (temptable.businesspath=old.businesspath and date_part('hour', temptable.creationdate)=old.hour) + where temptable.businesspath != '' and old.businesspath is null + group by temptable.businesspath, h); + </value> </list> </property> + <property name="deleteSQL" value="delete from o_stat_hourofday;"/> </bean> <bean id="statisticUpdateConfig_oracle" class="org.olat.course.statistic.StatisticUpdateConfig" lazy-init="true"> @@ -519,7 +409,7 @@ <list> <bean class="org.olat.course.statistic.StatisticUpdater" id="LastUpdatedUpdater_oracle"> <property name="loggingName" value="LastUpdatedUpdater_oracle"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> <property name="updateSQL"> <list> <value> @@ -541,7 +431,7 @@ <bean class="org.olat.course.statistic.StatisticUpdater" > <property name="loggingName" value="StatTempTableCreator_oracle"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> <property name="updateSQL"> <list> <value> @@ -561,7 +451,7 @@ <bean class="org.olat.course.statistic.StatisticUpdater"> <property name="loggingName" value="DailyStatisticUpdater"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> <property name="updateSQL"> <list> <value> @@ -583,7 +473,7 @@ <bean class="org.olat.course.statistic.StatisticUpdater" > <property name="loggingName" value="WeeklyStatisticUpdater"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> <property name="updateSQL"> <list> <value> @@ -605,7 +495,7 @@ <bean class="org.olat.course.statistic.StatisticUpdater"> <property name="loggingName" value="DayOfWeekStatisticUpdater"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> <property name="updateSQL"> <list> <value> @@ -627,7 +517,7 @@ <bean class="org.olat.course.statistic.StatisticUpdater" > <property name="loggingName" value="HourOfDayStatisticUpdater"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> <property name="updateSQL"> <list> <value> @@ -649,7 +539,7 @@ <bean class="org.olat.course.statistic.StatisticUpdater" id="StatTempTableDropper_common"> <property name="loggingName" value="StatTempTableDropper_common"/> - <property name="jdbcTemplate" ref="statisticsMysqlJdbcTemplate" /> + <property name="jdbcTemplate" ref="statisticsJdbcTemplate" /> <property name="updateSQL" value="drop table o_stat_temptable PURGE" /> </bean> </list> @@ -669,7 +559,7 @@ <bean class="org.olat.course.statistic.SimpleStatisticInfoHelper" > <constructor-arg> - <ref bean="statisticsMysqlJdbcTemplate"/> + <ref bean="database"/> </constructor-arg> <constructor-arg> <map> @@ -684,8 +574,5 @@ </entry> </map> </constructor-arg> - <constructor-arg value="${db.vendor}"/> </bean> - - -</beans> +</beans> \ No newline at end of file diff --git a/src/main/java/org/olat/course/statistic/daily/DailyStat.hbm.xml b/src/main/java/org/olat/course/statistic/daily/DailyStat.hbm.xml deleted file mode 100644 index 72580864bf93d4df927c67c94e6924075581c7ec..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/course/statistic/daily/DailyStat.hbm.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE hibernate-mapping PUBLIC - "-//Hibernate/Hibernate Mapping DTD//EN" - "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> - -<hibernate-mapping default-lazy="false"> - <class name="org.olat.course.statistic.daily.DailyStat" - table="o_stat_daily"> - - <id name="key" column="id" type="long" unsaved-value="null"> - <generator class="identity" /> - </id> - <property name="businessPath" column="businesspath" type="string" length="2048" not-null="true" /> - <property name="resId" column="resid" type="long" not-null="true"/> - <property name="day" column="day" type="timestamp" not-null="true"/> - <property name="value" column="value" type="int" not-null="true"/> - - </class> -</hibernate-mapping> \ No newline at end of file diff --git a/src/main/java/org/olat/course/statistic/daily/DailyStat.java b/src/main/java/org/olat/course/statistic/daily/DailyStat.java index 38a164b721ddf798db01f62a7d506caf86f428bd..c96783d1dcb27a4d69f7d0ebaa17d804f38a8330 100644 --- a/src/main/java/org/olat/course/statistic/daily/DailyStat.java +++ b/src/main/java/org/olat/course/statistic/daily/DailyStat.java @@ -28,7 +28,17 @@ package org.olat.course.statistic.daily; import java.util.Date; -import org.olat.core.commons.persistence.PersistentObject; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; +import org.olat.core.id.Persistable; /** * Hibernate object representing an entry in the o_stat_daily table. @@ -36,16 +46,42 @@ import org.olat.core.commons.persistence.PersistentObject; * Initial Date: 18.02.2010 <br> * @author Stefan */ -public class DailyStat extends PersistentObject { +@Entity(name="dailystat") +@Table(name="o_stat_daily") +public class DailyStat implements Persistable { private static final long serialVersionUID = -2731771358539901670L; + + @Id + @GeneratedValue(generator = "system-uuid") + @GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={ + @Parameter(name="sequence_name", value="hibernate_unique_key"), + @Parameter(name="force_table_use", value="true"), + @Parameter(name="optimizer", value="legacy-hilo"), + @Parameter(name="value_column", value="next_hi"), + @Parameter(name="increment_size", value="32767"), + @Parameter(name="initial_value", value="32767") + }) + @Column(name="id", nullable=false, unique=true, insertable=true, updatable=false) + private Long key; + + @Column(name="businesspath", nullable=false, unique=false, insertable=true, updatable=true) private String businessPath; + @Temporal(TemporalType.TIMESTAMP) + @Column(name="day", nullable=false, unique=false, insertable=true, updatable=true) private Date day; + @Column(name="value", nullable=false, unique=false, insertable=true, updatable=true) private int value; + @Column(name="resid", nullable=false, unique=false, insertable=true, updatable=true) private long resId; public DailyStat(){ - // for hibernate + // for hibernate + } + + @Override + public Long getKey() { + return key; } public final long getResId() { @@ -79,5 +115,26 @@ public class DailyStat extends PersistentObject { public final void setValue(int value) { this.value = value; } + + @Override + public int hashCode() { + return getKey() == null ? 39563 : getKey().hashCode(); + } -} + @Override + public boolean equals(Object obj) { + if(obj == this) { + return true; + } + if(obj instanceof DailyStat) { + DailyStat stat = (DailyStat)obj; + return getKey() != null && getKey().equals(stat.getKey()); + } + return super.equals(obj); + } + + @Override + public boolean equalsByPersistableKey(Persistable persistable) { + return equals(persistable); + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/course/statistic/daily/DailyStatisticDisplayController.java b/src/main/java/org/olat/course/statistic/daily/DailyStatisticDisplayController.java index c57f3a178c9367b03797fef25338cbd1511f199e..c2969ed5be38a0053f433caadfb0901f686d4c42 100644 --- a/src/main/java/org/olat/course/statistic/daily/DailyStatisticDisplayController.java +++ b/src/main/java/org/olat/course/statistic/daily/DailyStatisticDisplayController.java @@ -57,7 +57,7 @@ public class DailyStatisticDisplayController extends StatisticDisplayController form_ = new DateChooserForm(ureq, getWindowControl(), 7); listenTo(form_); dailyStatisticFormVc_.put("statisticForm", form_.getInitialComponent()); - dailyStatisticFormVc_.contextPut("statsSince", getStatsSinceStr(ureq)); + dailyStatisticFormVc_.contextPut("statsSince", getStatsSinceStr()); dailyStatisticVc_.put("dailystatisticform", dailyStatisticFormVc_); diff --git a/src/main/java/org/olat/course/statistic/daily/DailyStatisticManager.java b/src/main/java/org/olat/course/statistic/daily/DailyStatisticManager.java index eeb7c3e036774742944e063c8502d0e7bcaac20a..404fd7af63e2fbe5e1dffba62a1ad98f2d03e915 100644 --- a/src/main/java/org/olat/course/statistic/daily/DailyStatisticManager.java +++ b/src/main/java/org/olat/course/statistic/daily/DailyStatisticManager.java @@ -32,11 +32,14 @@ import java.util.Calendar; import java.util.Date; import java.util.List; +import javax.persistence.TemporalType; +import javax.persistence.TypedQuery; + import org.olat.core.commons.persistence.DBFactory; -import org.olat.core.commons.persistence.DBQuery; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.table.ColumnDescriptor; -import org.olat.core.manager.BasicManager; +import org.olat.core.logging.OLog; +import org.olat.core.logging.Tracing; import org.olat.course.ICourse; import org.olat.course.statistic.IStatisticManager; import org.olat.course.statistic.StatisticDisplayController; @@ -50,7 +53,9 @@ import org.olat.course.statistic.TotalAwareColumnDescriptor; * Initial Date: 12.02.2010 <br> * @author Stefan */ -public class DailyStatisticManager extends BasicManager implements IStatisticManager { +public class DailyStatisticManager implements IStatisticManager { + + private static final OLog log = Tracing.createLoggerFor(DailyStatisticManager.class); /** the SimpleDateFormat with which the column headers will be created formatted by the database, * so change this in coordination with any db changes if you really need to @@ -59,11 +64,11 @@ public class DailyStatisticManager extends BasicManager implements IStatisticMan @Override public StatisticResult generateStatisticResult(UserRequest ureq, ICourse course, long courseRepositoryEntryKey) { - DBQuery dbQuery = DBFactory.getInstance().createQuery("select businessPath,day,value from org.olat.course.statistic.daily.DailyStat sv " - + "where sv.resId=:resId"); - dbQuery.setLong("resId", courseRepositoryEntryKey); - - return new StatisticResult(course, dbQuery.list()); + String q = "select businessPath,day,value from org.olat.course.statistic.daily.DailyStat sv where sv.resId=:resId"; + List<Object[]> raw = DBFactory.getInstance().getCurrentEntityManager() + .createQuery(q, Object[].class) + .setParameter("resId", courseRepositoryEntryKey).getResultList(); + return new StatisticResult(course, raw); } @Override @@ -81,7 +86,7 @@ public class DailyStatisticManager extends BasicManager implements IStatisticMan DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, ureq.getLocale()); header = df.format(c.getTime()); } catch(ParseException pe) { - getLogger().warn("createColumnDescriptor: ParseException while parsing "+headerId+".", pe); + log.warn("createColumnDescriptor: ParseException while parsing "+headerId+".", pe); } TotalAwareColumnDescriptor cd = new TotalAwareColumnDescriptor(header, column, StatisticDisplayController.CLICK_TOTAL_ACTION+column, ureq.getLocale(), ColumnDescriptor.ALIGNMENT_RIGHT); @@ -89,6 +94,7 @@ public class DailyStatisticManager extends BasicManager implements IStatisticMan return cd; } + @Override public StatisticResult generateStatisticResult(UserRequest ureq, ICourse course, long courseRepositoryEntryKey, Date fromDate, Date toDate) { if (fromDate==null && toDate==null) { // no restrictions, return the defaults @@ -97,25 +103,26 @@ public class DailyStatisticManager extends BasicManager implements IStatisticMan return statisticResult; } - StringBuffer dateClause = new StringBuffer(); - if (fromDate!=null) { - dateClause.append(" and (day>=:fromDate) "); + StringBuilder sb = new StringBuilder(); + sb.append("select businessPath,day,value from org.olat.course.statistic.daily.DailyStat sv where sv.resId=:resId"); + if (fromDate != null) { + sb.append(" and (day>=:fromDate) "); } - if (toDate!=null) { - dateClause.append(" and (day<=:toDate) "); + if (toDate != null) { + sb.append(" and (day<=:toDate) "); } - DBQuery dbQuery = DBFactory.getInstance().createQuery("select businessPath,day,value from org.olat.course.statistic.daily.DailyStat sv " - + "where sv.resId=:resId " - + dateClause); - dbQuery.setLong("resId", courseRepositoryEntryKey); - if (fromDate!=null) { - dbQuery.setDate("fromDate", fromDate); + + TypedQuery<Object[]> dbQuery = DBFactory.getInstance() + .getCurrentEntityManager().createQuery(sb.toString(), Object[].class) + .setParameter("resId", courseRepositoryEntryKey); + if (fromDate != null) { + dbQuery.setParameter("fromDate", fromDate, TemporalType.TIMESTAMP); } - if (toDate!=null) { - dbQuery.setDate("toDate", toDate); + if (toDate != null) { + dbQuery.setParameter("toDate", toDate, TemporalType.TIMESTAMP); } - StatisticResult statisticResult = new StatisticResult(course, dbQuery.list()); + StatisticResult statisticResult = new StatisticResult(course, dbQuery.getResultList()); fillGapsInColumnHeaders(statisticResult); return statisticResult; } @@ -154,7 +161,7 @@ public class DailyStatisticManager extends BasicManager implements IStatisticMan statisticResult.setColumnHeaders(columnHeaders); } catch(ParseException e) { - getLogger().warn("fillGapsInColumnHeaders: Got a ParseException while trying to fill gaps. Giving up. ",e); + log.warn("fillGapsInColumnHeaders: Got a ParseException while trying to fill gaps. Giving up. ",e); } } diff --git a/src/main/java/org/olat/course/statistic/dayofweek/DayOfWeekStat.hbm.xml b/src/main/java/org/olat/course/statistic/dayofweek/DayOfWeekStat.hbm.xml deleted file mode 100644 index 212a6f61115eb0702f17996998830c9118c2df23..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/course/statistic/dayofweek/DayOfWeekStat.hbm.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE hibernate-mapping PUBLIC - "-//Hibernate/Hibernate Mapping DTD//EN" - "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> - -<hibernate-mapping default-lazy="false"> - <class name="org.olat.course.statistic.dayofweek.DayOfWeekStat" - table="o_stat_dayofweek"> - - <id name="key" column="id" type="long" unsaved-value="null"> - <generator class="identity" /> - </id> - <property name="businessPath" column="businesspath" type="string" length="2048" not-null="true" /> - <property name="resId" column="resid" type="long" not-null="true"/> - <property name="day" column="day" type="int" not-null="true"/> - <property name="value" column="value" type="int" not-null="true"/> - - </class> -</hibernate-mapping> \ No newline at end of file diff --git a/src/main/java/org/olat/course/statistic/dayofweek/DayOfWeekStat.java b/src/main/java/org/olat/course/statistic/dayofweek/DayOfWeekStat.java index fc90161a90e25bf01f42db55eb5a5073d2954e28..71bf1582ab72d70935ba48171dabb58b3f15dc78 100644 --- a/src/main/java/org/olat/course/statistic/dayofweek/DayOfWeekStat.java +++ b/src/main/java/org/olat/course/statistic/dayofweek/DayOfWeekStat.java @@ -26,7 +26,15 @@ package org.olat.course.statistic.dayofweek; -import org.olat.core.commons.persistence.PersistentObject; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; +import org.olat.core.id.Persistable; /** * Hibernate object representing an entry in the o_stat_dayofweek table. @@ -34,16 +42,41 @@ import org.olat.core.commons.persistence.PersistentObject; * Initial Date: 12.02.2010 <br> * @author Stefan */ -public class DayOfWeekStat extends PersistentObject { +@Entity(name="dayofweekstat") +@Table(name="o_stat_dayofweek") +public class DayOfWeekStat implements Persistable { private static final long serialVersionUID = -5632266056691684451L; + + @Id + @GeneratedValue(generator = "system-uuid") + @GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={ + @Parameter(name="sequence_name", value="hibernate_unique_key"), + @Parameter(name="force_table_use", value="true"), + @Parameter(name="optimizer", value="legacy-hilo"), + @Parameter(name="value_column", value="next_hi"), + @Parameter(name="increment_size", value="32767"), + @Parameter(name="initial_value", value="32767") + }) + @Column(name="id", nullable=false, unique=true, insertable=true, updatable=false) + private Long key; + + @Column(name="businesspath", nullable=false, unique=false, insertable=true, updatable=true) private String businessPath; + @Column(name="day", nullable=false, unique=false, insertable=true, updatable=true) private int day; + @Column(name="value", nullable=false, unique=false, insertable=true, updatable=true) private int value; + @Column(name="resid", nullable=false, unique=false, insertable=true, updatable=true) private long resId; public DayOfWeekStat(){ - // for hibernate + // for hibernate + } + + @Override + public Long getKey() { + return key; } public final long getResId() { @@ -77,5 +110,26 @@ public class DayOfWeekStat extends PersistentObject { public final void setValue(int value) { this.value = value; } + + @Override + public int hashCode() { + return getKey() == null ? 39563 : getKey().hashCode(); + } + @Override + public boolean equals(Object obj) { + if(obj == this) { + return true; + } + if(obj instanceof DayOfWeekStat) { + DayOfWeekStat stat = (DayOfWeekStat)obj; + return getKey() != null && getKey().equals(stat.getKey()); + } + return super.equals(obj); + } + + @Override + public boolean equalsByPersistableKey(Persistable persistable) { + return equals(persistable); + } } diff --git a/src/main/java/org/olat/course/statistic/dayofweek/DayOfWeekStatisticManager.java b/src/main/java/org/olat/course/statistic/dayofweek/DayOfWeekStatisticManager.java index 74fafb39544d1adc15d1e481926ad634df8a8d42..b153ec65606584bd340b407887ae0c1ae5bf0fc7 100644 --- a/src/main/java/org/olat/course/statistic/dayofweek/DayOfWeekStatisticManager.java +++ b/src/main/java/org/olat/course/statistic/dayofweek/DayOfWeekStatisticManager.java @@ -31,11 +31,9 @@ import java.util.Date; import java.util.List; import org.olat.core.commons.persistence.DBFactory; -import org.olat.core.commons.persistence.DBQuery; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.table.ColumnDescriptor; import org.olat.core.gui.components.table.DefaultColumnDescriptor; -import org.olat.core.manager.BasicManager; import org.olat.course.ICourse; import org.olat.course.statistic.IStatisticManager; import org.olat.course.statistic.StatisticDisplayController; @@ -48,15 +46,17 @@ import org.olat.course.statistic.TotalAwareColumnDescriptor; * Initial Date: 12.02.2010 <br> * @author Stefan */ -public class DayOfWeekStatisticManager extends BasicManager implements IStatisticManager { +public class DayOfWeekStatisticManager implements IStatisticManager { @Override public StatisticResult generateStatisticResult(UserRequest ureq, ICourse course, long courseRepositoryEntryKey) { - DBQuery dbQuery = DBFactory.getInstance().createQuery("select businessPath,day,value from org.olat.course.statistic.dayofweek.DayOfWeekStat sv " - + "where sv.resId=:resId"); - dbQuery.setLong("resId", courseRepositoryEntryKey); + String q = "select businessPath,day,value from org.olat.course.statistic.dayofweek.DayOfWeekStat sv where sv.resId=:resId"; + List<Object[]> raw = DBFactory.getInstance().getCurrentEntityManager() + .createQuery(q, Object[].class) + .setParameter("resId", courseRepositoryEntryKey) + .getResultList(); - StatisticResult result = new StatisticResult(course, dbQuery.list()); + StatisticResult result = new StatisticResult(course, raw); // now sort by user's preferred firstDayOfWeek Calendar c = Calendar.getInstance(ureq.getLocale()); diff --git a/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStat.hbm.xml b/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStat.hbm.xml deleted file mode 100644 index 28f7608e1a5b05c6a915d07af1c6517da6072433..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStat.hbm.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE hibernate-mapping PUBLIC - "-//Hibernate/Hibernate Mapping DTD//EN" - "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> - -<hibernate-mapping default-lazy="false"> - <class name="org.olat.course.statistic.homeorg.HomeOrgStat" - table="o_stat_homeorg"> - - <id name="key" column="id" type="long" unsaved-value="null"> - <generator class="enhanced-sequence"> - <param name="sequence_name">hibernate_unique_key</param> - <param name="force_table_use">true</param> - <param name="optimizer">legacy-hilo</param> - <param name="value_column">next_hi</param> - <param name="increment_size">32767</param> - <param name="initial_value">32767</param> - </generator> - </id> - <property name="businessPath" column="businesspath" type="string" length="2048" not-null="true" /> - <property name="resId" column="resid" type="long" not-null="true"/> - <property name="homeOrg" column="homeorg" type="string" length="255"/> - <property name="value" column="value" type="int" not-null="true"/> - - </class> -</hibernate-mapping> \ No newline at end of file diff --git a/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStat.java b/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStat.java index 7900db171c7db17b514a01ef19ccd0cf53086709..f6dfc17de7556798cb2a057ad997b00f2c637c37 100644 --- a/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStat.java +++ b/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStat.java @@ -26,7 +26,16 @@ package org.olat.course.statistic.homeorg; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; import org.olat.core.commons.persistence.PersistentObject; +import org.olat.core.id.Persistable; /** * Hibernate object representing an entry in the o_stat_homeorg table. @@ -34,17 +43,42 @@ import org.olat.core.commons.persistence.PersistentObject; * Initial Date: 12.02.2010 <br> * @author Stefan */ +@Entity(name="homeorgstat") +@Table(name="o_stat_homeorg") public class HomeOrgStat extends PersistentObject { + + private static final long serialVersionUID = 2406231071967248143L; + @Id + @GeneratedValue(generator = "system-uuid") + @GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={ + @Parameter(name="sequence_name", value="hibernate_unique_key"), + @Parameter(name="force_table_use", value="true"), + @Parameter(name="optimizer", value="legacy-hilo"), + @Parameter(name="value_column", value="next_hi"), + @Parameter(name="increment_size", value="32767"), + @Parameter(name="initial_value", value="32767") + }) + @Column(name="id", nullable=false, unique=true, insertable=true, updatable=false) + private Long key; + @Column(name="businesspath", nullable=false, unique=false, insertable=true, updatable=true) private String businessPath; + @Column(name="homeorg", nullable=false, unique=false, insertable=true, updatable=true) private String homeOrg; + @Column(name="value", nullable=false, unique=false, insertable=true, updatable=true) private int value; + @Column(name="resid", nullable=false, unique=false, insertable=true, updatable=true) private long resId; public HomeOrgStat(){ // for hibernate } + @Override + public Long getKey() { + return key; + } + public final long getResId() { return resId; } @@ -77,4 +111,26 @@ public class HomeOrgStat extends PersistentObject { this.value = value; } + @Override + public int hashCode() { + return getKey() == null ? 39563 : getKey().hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(obj == this) { + return true; + } + if(obj instanceof HomeOrgStat) { + HomeOrgStat stat = (HomeOrgStat)obj; + return getKey() != null && getKey().equals(stat.getKey()); + } + return super.equals(obj); + } + + @Override + public boolean equalsByPersistableKey(Persistable persistable) { + return equals(persistable); + } + } diff --git a/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStatisticManager.java b/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStatisticManager.java index 1a89d43f581bc5e782c1cbac8a97d135756a0aa8..0a079f2928629aec1c90be1c162d5f3d61bf9008 100644 --- a/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStatisticManager.java +++ b/src/main/java/org/olat/course/statistic/homeorg/HomeOrgStatisticManager.java @@ -26,9 +26,9 @@ package org.olat.course.statistic.homeorg; import java.util.Date; +import java.util.List; import org.olat.core.commons.persistence.DBFactory; -import org.olat.core.commons.persistence.DBQuery; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.table.ColumnDescriptor; import org.olat.core.gui.components.table.DefaultColumnDescriptor; @@ -49,11 +49,12 @@ public class HomeOrgStatisticManager extends BasicManager implements IStatisticM @Override public StatisticResult generateStatisticResult(UserRequest ureq, ICourse course, long courseRepositoryEntryKey) { - DBQuery dbQuery = DBFactory.getInstance().createQuery("select businessPath,homeOrg,value from org.olat.course.statistic.homeorg.HomeOrgStat sv " - + "where sv.resId=:resId"); - dbQuery.setLong("resId", courseRepositoryEntryKey); - - return new StatisticResult(course, dbQuery.list()); + String q = "select businessPath,homeOrg,value from org.olat.course.statistic.homeorg.HomeOrgStat sv where sv.resId=:resId"; + List<Object[]> raw = DBFactory.getInstance().getCurrentEntityManager() + .createQuery(q, Object[].class) + .setParameter("resId", courseRepositoryEntryKey) + .getResultList(); + return new StatisticResult(course, raw); } @Override diff --git a/src/main/java/org/olat/course/statistic/hourofday/HourOfDayStat.hbm.xml b/src/main/java/org/olat/course/statistic/hourofday/HourOfDayStat.hbm.xml deleted file mode 100644 index 158c616da48474c388288695bcbbd3fd5ee0169d..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/course/statistic/hourofday/HourOfDayStat.hbm.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE hibernate-mapping PUBLIC - "-//Hibernate/Hibernate Mapping DTD//EN" - "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> - -<hibernate-mapping default-lazy="false"> - <class name="org.olat.course.statistic.hourofday.HourOfDayStat" - table="o_stat_hourofday"> - - <id name="key" column="id" type="long" unsaved-value="null"> - <generator class="identity" /> - </id> - <property name="businessPath" column="businesspath" type="string" length="2048" not-null="true" /> - <property name="resId" column="resid" type="long" not-null="true"/> - <property name="hour" column="hour" type="int" not-null="true"/> - <property name="value" column="value" type="int" not-null="true"/> - - </class> -</hibernate-mapping> \ No newline at end of file diff --git a/src/main/java/org/olat/course/statistic/hourofday/HourOfDayStat.java b/src/main/java/org/olat/course/statistic/hourofday/HourOfDayStat.java index e931868dc1ed84231ae1561ad58b192cd7230444..17c14685da54776a359aa2e6093885280e833203 100644 --- a/src/main/java/org/olat/course/statistic/hourofday/HourOfDayStat.java +++ b/src/main/java/org/olat/course/statistic/hourofday/HourOfDayStat.java @@ -26,7 +26,16 @@ package org.olat.course.statistic.hourofday; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; import org.olat.core.commons.persistence.PersistentObject; +import org.olat.core.id.Persistable; /** * Hibernate object representing an entry in the o_stat_hourofday table. @@ -34,11 +43,32 @@ import org.olat.core.commons.persistence.PersistentObject; * Initial Date: 12.02.2010 <br> * @author Stefan */ +@Entity(name="hourofdaystat") +@Table(name="o_stat_hourofday") public class HourOfDayStat extends PersistentObject { - + + private static final long serialVersionUID = -5831961644323028397L; + + @Id + @GeneratedValue(generator = "system-uuid") + @GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={ + @Parameter(name="sequence_name", value="hibernate_unique_key"), + @Parameter(name="force_table_use", value="true"), + @Parameter(name="optimizer", value="legacy-hilo"), + @Parameter(name="value_column", value="next_hi"), + @Parameter(name="increment_size", value="32767"), + @Parameter(name="initial_value", value="32767") + }) + @Column(name="id", nullable=false, unique=true, insertable=true, updatable=false) + private Long key; + + @Column(name="businesspath", nullable=false, unique=false, insertable=true, updatable=true) private String businessPath; + @Column(name="hour", nullable=false, unique=false, insertable=true, updatable=true) private int hour; + @Column(name="value", nullable=false, unique=false, insertable=true, updatable=true) private int value; + @Column(name="resid", nullable=false, unique=false, insertable=true, updatable=true) private long resId; public HourOfDayStat(){ @@ -77,4 +107,25 @@ public class HourOfDayStat extends PersistentObject { this.value = value; } + @Override + public int hashCode() { + return getKey() == null ? 39563 : getKey().hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(obj == this) { + return true; + } + if(obj instanceof HourOfDayStat) { + HourOfDayStat stat = (HourOfDayStat)obj; + return getKey() != null && getKey().equals(stat.getKey()); + } + return super.equals(obj); + } + + @Override + public boolean equalsByPersistableKey(Persistable persistable) { + return equals(persistable); + } } diff --git a/src/main/java/org/olat/course/statistic/hourofday/HourOfDayStatisticManager.java b/src/main/java/org/olat/course/statistic/hourofday/HourOfDayStatisticManager.java index 8e7dd43741a2e16d78291c1ee90403a2eda125f5..a0230b6c2d9c4af0b74bf203b94a4d746925183d 100644 --- a/src/main/java/org/olat/course/statistic/hourofday/HourOfDayStatisticManager.java +++ b/src/main/java/org/olat/course/statistic/hourofday/HourOfDayStatisticManager.java @@ -32,13 +32,11 @@ import java.util.Date; import java.util.List; import org.olat.core.commons.persistence.DBFactory; -import org.olat.core.commons.persistence.DBQuery; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.table.ColumnDescriptor; import org.olat.core.gui.components.table.DefaultColumnDescriptor; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; -import org.olat.core.manager.BasicManager; import org.olat.course.ICourse; import org.olat.course.statistic.IStatisticManager; import org.olat.course.statistic.StatisticDisplayController; @@ -51,18 +49,20 @@ import org.olat.course.statistic.TotalAwareColumnDescriptor; * Initial Date: 12.02.2010 <br> * @author Stefan */ -public class HourOfDayStatisticManager extends BasicManager implements IStatisticManager { +public class HourOfDayStatisticManager implements IStatisticManager { /** the logging object used in this class **/ private static final OLog log_ = Tracing.createLoggerFor(HourOfDayStatisticManager.class); @Override public StatisticResult generateStatisticResult(UserRequest ureq, ICourse course, long courseRepositoryEntryKey) { - DBQuery dbQuery = DBFactory.getInstance().createQuery("select businessPath,hour,value from org.olat.course.statistic.hourofday.HourOfDayStat sv " - + "where sv.resId=:resId"); - dbQuery.setLong("resId", courseRepositoryEntryKey); + String q = "select businessPath,hour,value from org.olat.course.statistic.hourofday.HourOfDayStat sv where sv.resId=:resId"; + List<Object[]> raw = DBFactory.getInstance().getCurrentEntityManager() + .createQuery(q, Object[].class) + .setParameter("resId", courseRepositoryEntryKey) + .getResultList(); - StatisticResult statisticResult = new StatisticResult(course, dbQuery.list()); + StatisticResult statisticResult = new StatisticResult(course, raw); List<String> columnHeaders = statisticResult.getColumnHeaders(); if (columnHeaders!=null && columnHeaders.size()>1) { try{ diff --git a/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStat.hbm.xml b/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStat.hbm.xml deleted file mode 100644 index f60558e9c1ae955e9e7843648c3ad996ec642118..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStat.hbm.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE hibernate-mapping PUBLIC - "-//Hibernate/Hibernate Mapping DTD//EN" - "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> - -<hibernate-mapping default-lazy="false"> - <class name="org.olat.course.statistic.orgtype.OrgTypeStat" - table="o_stat_orgtype"> - - <id name="key" column="id" type="long" unsaved-value="null"> - <generator class="enhanced-sequence"> - <param name="sequence_name">hibernate_unique_key</param> - <param name="force_table_use">true</param> - <param name="optimizer">legacy-hilo</param> - <param name="value_column">next_hi</param> - <param name="increment_size">32767</param> - <param name="initial_value">32767</param> - </generator> - </id> - <property name="businessPath" column="businesspath" type="string" length="2048" not-null="true" /> - <property name="resId" column="resid" type="long" not-null="true"/> - <property name="orgType" column="orgtype" type="string" length="255"/> - <property name="value" column="value" type="int" not-null="true"/> - - </class> -</hibernate-mapping> \ No newline at end of file diff --git a/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStat.java b/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStat.java index 4329a08e4076de13c2bfd9880b81a40de9dd08ce..3ac8a53ee777577d47e6447efc41d299a5b78fc8 100644 --- a/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStat.java +++ b/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStat.java @@ -26,7 +26,15 @@ package org.olat.course.statistic.orgtype; -import org.olat.core.commons.persistence.PersistentObject; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; +import org.olat.core.id.Persistable; /** * Hibernate object representing an entry in the o_stat_orgtype table. @@ -34,17 +42,42 @@ import org.olat.core.commons.persistence.PersistentObject; * Initial Date: 12.02.2010 <br> * @author Stefan */ -public class OrgTypeStat extends PersistentObject { +@Entity(name="orgtypestat") +@Table(name="o_stat_orgtype") +public class OrgTypeStat implements Persistable { + + private static final long serialVersionUID = 2407728544985519049L; + @Id + @GeneratedValue(generator = "system-uuid") + @GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={ + @Parameter(name="sequence_name", value="hibernate_unique_key"), + @Parameter(name="force_table_use", value="true"), + @Parameter(name="optimizer", value="legacy-hilo"), + @Parameter(name="value_column", value="next_hi"), + @Parameter(name="increment_size", value="32767"), + @Parameter(name="initial_value", value="32767") + }) + @Column(name="id", nullable=false, unique=true, insertable=true, updatable=false) + private Long key; + @Column(name="businesspath", nullable=false, unique=false, insertable=true, updatable=true) private String businessPath; + @Column(name="orgtype", nullable=false, unique=false, insertable=true, updatable=true) private String orgType; + @Column(name="value", nullable=false, unique=false, insertable=true, updatable=true) private int value; + @Column(name="resid", nullable=false, unique=false, insertable=true, updatable=true) private long resId; public OrgTypeStat(){ // for hibernate } + @Override + public Long getKey() { + return key; + } + public final long getResId() { return resId; } @@ -77,4 +110,26 @@ public class OrgTypeStat extends PersistentObject { this.value = value; } + @Override + public int hashCode() { + return getKey() == null ? 39563 : getKey().hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(obj == this) { + return true; + } + if(obj instanceof OrgTypeStat) { + OrgTypeStat stat = (OrgTypeStat)obj; + return getKey() != null && getKey().equals(stat.getKey()); + } + return super.equals(obj); + } + + @Override + public boolean equalsByPersistableKey(Persistable persistable) { + return equals(persistable); + } + } diff --git a/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStatisticManager.java b/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStatisticManager.java index dfe5feae44015603888cc25398de0b05949f6bea..7e9c037391c0635eff7aeff4120f6139a12beddc 100644 --- a/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStatisticManager.java +++ b/src/main/java/org/olat/course/statistic/orgtype/OrgTypeStatisticManager.java @@ -26,9 +26,9 @@ package org.olat.course.statistic.orgtype; import java.util.Date; +import java.util.List; import org.olat.core.commons.persistence.DBFactory; -import org.olat.core.commons.persistence.DBQuery; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.table.ColumnDescriptor; import org.olat.core.gui.components.table.DefaultColumnDescriptor; @@ -51,11 +51,12 @@ public class OrgTypeStatisticManager implements IStatisticManager { @Override public StatisticResult generateStatisticResult(UserRequest ureq, ICourse course, long courseRepositoryEntryKey) { - DBQuery dbQuery = DBFactory.getInstance().createQuery("select businessPath,orgType,value from org.olat.course.statistic.orgtype.OrgTypeStat sv " - + "where sv.resId=:resId"); - dbQuery.setLong("resId", courseRepositoryEntryKey); - - return new StatisticResult(course, dbQuery.list()); + String q = "select businessPath,orgType,value from org.olat.course.statistic.orgtype.OrgTypeStat sv where sv.resId=:resId"; + List<Object[]> raw = DBFactory.getInstance().getCurrentEntityManager() + .createQuery(q, Object[].class) + .setParameter("resId", courseRepositoryEntryKey) + .getResultList(); + return new StatisticResult(course, raw); } @Override diff --git a/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3Stat.hbm.xml b/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3Stat.hbm.xml deleted file mode 100644 index 85e332eacdefc3f008c8c84a5b9ba04f38deea73..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3Stat.hbm.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE hibernate-mapping PUBLIC - "-//Hibernate/Hibernate Mapping DTD//EN" - "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> - -<hibernate-mapping default-lazy="false"> - <class name="org.olat.course.statistic.studybranch3.StudyBranch3Stat" - table="o_stat_studybranch3"> - - <id name="key" column="id" type="long" unsaved-value="null"> - <generator class="enhanced-sequence"> - <param name="sequence_name">hibernate_unique_key</param> - <param name="force_table_use">true</param> - <param name="optimizer">legacy-hilo</param> - <param name="value_column">next_hi</param> - <param name="increment_size">32767</param> - <param name="initial_value">32767</param> - </generator> - </id> - <property name="businessPath" column="businesspath" type="string" length="2048" not-null="true" /> - <property name="resId" column="resid" type="long" not-null="true"/> - <property name="studyBranch3" column="studybranch3" type="string" length="255"/> - <property name="value" column="value" type="int" not-null="true"/> - - </class> -</hibernate-mapping> \ No newline at end of file diff --git a/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3Stat.java b/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3Stat.java index 8c499d3ff55bb8ffef5e6c2f0691c4a8cf43af46..d6d6d0eef870ad1b3bc24e7a1f4053d5d846967b 100644 --- a/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3Stat.java +++ b/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3Stat.java @@ -26,7 +26,15 @@ package org.olat.course.statistic.studybranch3; -import org.olat.core.commons.persistence.PersistentObject; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; +import org.olat.core.id.Persistable; /** * Hibernate object representing an entry in the o_stat_studybranch3 table. @@ -34,17 +42,42 @@ import org.olat.core.commons.persistence.PersistentObject; * Initial Date: 12.02.2010 <br> * @author Stefan */ -public class StudyBranch3Stat extends PersistentObject { +@Entity(name="studybranch3stat") +@Table(name="o_stat_studybranch3") +public class StudyBranch3Stat implements Persistable { + + private static final long serialVersionUID = 7156469152258502192L; + @Id + @GeneratedValue(generator = "system-uuid") + @GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={ + @Parameter(name="sequence_name", value="hibernate_unique_key"), + @Parameter(name="force_table_use", value="true"), + @Parameter(name="optimizer", value="legacy-hilo"), + @Parameter(name="value_column", value="next_hi"), + @Parameter(name="increment_size", value="32767"), + @Parameter(name="initial_value", value="32767") + }) + @Column(name="id", nullable=false, unique=true, insertable=true, updatable=false) + private Long key; + @Column(name="businesspath", nullable=false, unique=false, insertable=true, updatable=true) private String businessPath; + @Column(name="studybranch3", nullable=false, unique=false, insertable=true, updatable=true) private String studyBranch3; + @Column(name="value", nullable=false, unique=false, insertable=true, updatable=true) private int value; + @Column(name="resid", nullable=false, unique=false, insertable=true, updatable=true) private long resId; public StudyBranch3Stat(){ // for hibernate } + @Override + public Long getKey() { + return key; + } + public final long getResId() { return resId; } @@ -77,4 +110,26 @@ public class StudyBranch3Stat extends PersistentObject { this.value = value; } + @Override + public int hashCode() { + return getKey() == null ? 39563 : getKey().hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(obj == this) { + return true; + } + if(obj instanceof StudyBranch3Stat) { + StudyBranch3Stat stat = (StudyBranch3Stat)obj; + return getKey() != null && getKey().equals(stat.getKey()); + } + return super.equals(obj); + } + + @Override + public boolean equalsByPersistableKey(Persistable persistable) { + return equals(persistable); + } + } diff --git a/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3StatisticManager.java b/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3StatisticManager.java index 9fbdfe37f9617a2dc6725d318dda7fc50e3e9f25..84d63990dedd0c8d01eed3a969c669d93ea5bc4a 100644 --- a/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3StatisticManager.java +++ b/src/main/java/org/olat/course/statistic/studybranch3/StudyBranch3StatisticManager.java @@ -26,9 +26,9 @@ package org.olat.course.statistic.studybranch3; import java.util.Date; +import java.util.List; import org.olat.core.commons.persistence.DBFactory; -import org.olat.core.commons.persistence.DBQuery; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.table.ColumnDescriptor; import org.olat.core.gui.components.table.DefaultColumnDescriptor; @@ -52,11 +52,12 @@ public class StudyBranch3StatisticManager extends BasicManager implements IStati @Override public StatisticResult generateStatisticResult(UserRequest ureq, ICourse course, long courseRepositoryEntryKey) { - DBQuery dbQuery = DBFactory.getInstance().createQuery("select businessPath,studyBranch3,value from org.olat.course.statistic.studybranch3.StudyBranch3Stat sv " - + "where sv.resId=:resId"); - dbQuery.setLong("resId", courseRepositoryEntryKey); - - return new StatisticResult(course, dbQuery.list()); + String q = "select businessPath,studyBranch3,value from studybranch3stat sv where sv.resId=:resId"; + List<Object[]> raw = DBFactory.getInstance().getCurrentEntityManager() + .createQuery(q, Object[].class) + .setParameter("resId", courseRepositoryEntryKey) + .getResultList(); + return new StatisticResult(course, raw); } @Override diff --git a/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStat.hbm.xml b/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStat.hbm.xml deleted file mode 100644 index 9ab9435221f54d4feaf44602e9c666bcfd48d3e9..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStat.hbm.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE hibernate-mapping PUBLIC - "-//Hibernate/Hibernate Mapping DTD//EN" - "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> - -<hibernate-mapping default-lazy="false"> - <class name="org.olat.course.statistic.studylevel.StudyLevelStat" - table="o_stat_studylevel"> - - <id name="key" column="id" type="long" unsaved-value="null"> - <generator class="enhanced-sequence"> - <param name="sequence_name">hibernate_unique_key</param> - <param name="force_table_use">true</param> - <param name="optimizer">legacy-hilo</param> - <param name="value_column">next_hi</param> - <param name="increment_size">32767</param> - <param name="initial_value">32767</param> - </generator> - </id> - <property name="businessPath" column="businesspath" type="string" length="2048" not-null="true" /> - <property name="resId" column="resid" type="long" not-null="true"/> - <property name="studyLevel" column="studylevel" type="string" length="255"/> - <property name="value" column="value" type="int" not-null="true"/> - - </class> -</hibernate-mapping> \ No newline at end of file diff --git a/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStat.java b/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStat.java index 56295bcaec8cc89a08387e7666eb020056d74cf3..00114806a6ffe601af63b5dca960178346b215ab 100644 --- a/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStat.java +++ b/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStat.java @@ -26,27 +26,58 @@ package org.olat.course.statistic.studylevel; -import org.olat.core.commons.persistence.PersistentObject; -import org.olat.core.logging.OLog; -import org.olat.core.logging.Tracing; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; +import org.olat.core.id.Persistable; /** * <p> * Initial Date: 20.10.2009 <br> * @author Stefan */ -public class StudyLevelStat extends PersistentObject { - static final OLog log = Tracing.createLoggerFor(StudyLevelStat.class); + +@Entity(name="studylevelstat") +@Table(name="o_stat_studylevel") +public class StudyLevelStat implements Persistable { + + private static final long serialVersionUID = 1255485547339375940L; + @Id + @GeneratedValue(generator = "system-uuid") + @GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={ + @Parameter(name="sequence_name", value="hibernate_unique_key"), + @Parameter(name="force_table_use", value="true"), + @Parameter(name="optimizer", value="legacy-hilo"), + @Parameter(name="value_column", value="next_hi"), + @Parameter(name="increment_size", value="32767"), + @Parameter(name="initial_value", value="32767") + }) + @Column(name="id", nullable=false, unique=true, insertable=true, updatable=false) + private Long key; + @Column(name="businesspath", nullable=false, unique=false, insertable=true, updatable=true) private String businessPath; + @Column(name="studylevel", nullable=false, unique=false, insertable=true, updatable=true) private String studyLevel; + @Column(name="value", nullable=false, unique=false, insertable=true, updatable=true) private int value; + @Column(name="resid", nullable=false, unique=false, insertable=true, updatable=true) private long resId; public StudyLevelStat(){ // for hibernate } + @Override + public Long getKey() { + return key; + } + public final long getResId() { return resId; } @@ -79,4 +110,26 @@ public class StudyLevelStat extends PersistentObject { this.value = value; } + @Override + public int hashCode() { + return getKey() == null ? 39563 : getKey().hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(obj == this) { + return true; + } + if(obj instanceof StudyLevelStat) { + StudyLevelStat stat = (StudyLevelStat)obj; + return getKey() != null && getKey().equals(stat.getKey()); + } + return super.equals(obj); + } + + @Override + public boolean equalsByPersistableKey(Persistable persistable) { + return equals(persistable); + } + } diff --git a/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStatisticManager.java b/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStatisticManager.java index 534d166f90e75c0a449ab4342298743f31b01885..16e5a461c8ba75a419bdab6a350d4db70701d4b5 100644 --- a/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStatisticManager.java +++ b/src/main/java/org/olat/course/statistic/studylevel/StudyLevelStatisticManager.java @@ -26,9 +26,9 @@ package org.olat.course.statistic.studylevel; import java.util.Date; +import java.util.List; import org.olat.core.commons.persistence.DBFactory; -import org.olat.core.commons.persistence.DBQuery; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.table.ColumnDescriptor; import org.olat.core.gui.components.table.DefaultColumnDescriptor; @@ -52,11 +52,12 @@ public class StudyLevelStatisticManager extends BasicManager implements IStatist @Override public StatisticResult generateStatisticResult(UserRequest ureq, ICourse course, long courseRepositoryEntryKey) { - DBQuery dbQuery = DBFactory.getInstance().createQuery("select businessPath,studyLevel,value from org.olat.course.statistic.studylevel.StudyLevelStat sv " - + "where sv.resId=:resId"); - dbQuery.setLong("resId", courseRepositoryEntryKey); - - return new StatisticResult(course, dbQuery.list()); + String q = "select businessPath, studyLevel, value from studylevelstat sv where sv.resId=:resId"; + List<Object[]> raw = DBFactory.getInstance().getCurrentEntityManager() + .createQuery(q, Object[].class) + .setParameter("resId", courseRepositoryEntryKey) + .getResultList(); + return new StatisticResult(course, raw); } @Override diff --git a/src/main/java/org/olat/course/statistic/weekly/GeneralWeeklyStatisticManager.java b/src/main/java/org/olat/course/statistic/weekly/GeneralWeeklyStatisticManager.java deleted file mode 100644 index cfc9418214204f0c042c374fb9ccd46fe140d80b..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/course/statistic/weekly/GeneralWeeklyStatisticManager.java +++ /dev/null @@ -1,211 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <p> -* Licensed under the Apache License, Version 2.0 (the "License"); <br> -* you may not use this file except in compliance with the License.<br> -* You may obtain a copy of the License at -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <p> -* Unless required by applicable law or agreed to in writing,<br> -* software distributed under the License is distributed on an "AS IS" BASIS, <br> -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> -* See the License for the specific language governing permissions and <br> -* limitations under the License. -* <p> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ - -package org.olat.course.statistic.weekly; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.StringTokenizer; - -import org.olat.core.commons.persistence.DBFactory; -import org.olat.core.commons.persistence.DBQuery; -import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.table.ColumnDescriptor; -import org.olat.core.logging.OLog; -import org.olat.core.logging.Tracing; -import org.olat.course.ICourse; -import org.olat.course.statistic.IStatisticManager; -import org.olat.course.statistic.StatisticDisplayController; -import org.olat.course.statistic.StatisticResult; -import org.olat.course.statistic.TotalAwareColumnDescriptor; - -/** - * Implementation of the IStatisticManager for 'weekly' statistic - - * specific for Mysql since it uses the mysql specific week(date,mode) function - * <P> - * Initial Date: 12.02.2010 <br> - * @author Stefan - */ -public class GeneralWeeklyStatisticManager implements IStatisticManager { - - /** the logging object used in this class **/ - private static final OLog log_ = Tracing.createLoggerFor(GeneralWeeklyStatisticManager.class); - - @Override - public StatisticResult generateStatisticResult(UserRequest ureq, ICourse course, long courseRepositoryEntryKey) { - DBQuery dbQuery = DBFactory.getInstance().createQuery("select businessPath,week,value from org.olat.course.statistic.weekly.WeeklyStat sv " - + "where sv.resId=:resId"); - dbQuery.setLong("resId", courseRepositoryEntryKey); - - return new StatisticResult(course, dbQuery.list()); - } - - @Override - public ColumnDescriptor createColumnDescriptor(UserRequest ureq, int column, String headerId) { - if (column==0) { - throw new IllegalStateException("column must never be 0 here"); - } - - TotalAwareColumnDescriptor cd = new TotalAwareColumnDescriptor(headerId, column, - StatisticDisplayController.CLICK_TOTAL_ACTION+column, ureq.getLocale(), ColumnDescriptor.ALIGNMENT_RIGHT); - cd.setTranslateHeaderKey(false); - return cd; - } - - public StatisticResult generateStatisticResult(UserRequest ureq, ICourse course, long courseRepositoryEntryKey, Date fromDate, Date toDate) { - if (fromDate==null && toDate==null) { - // no restrictions, return the defaults - StatisticResult statisticResult = generateStatisticResult(ureq, course, courseRepositoryEntryKey); - fillGapsInColumnHeaders(statisticResult); - return statisticResult; - } - - SimpleDateFormat sdf = new SimpleDateFormat(); - StringBuffer dateClause = new StringBuffer(); - //concat(year(creationdate),'-',week(creationdate)) week - if (fromDate!=null) { - dateClause.append(" and (week=concat(:yearFromDate,'-',:weekFromDate) or week>=concat(:yearFromDate,'-',:weekFromDate)) "); - } - if (toDate!=null) { - dateClause.append(" and (week=concat(:yearToDate,'-',:weekToDate) or week<=concat(:yearToDate,'-',:weekToDate)) "); - } - DBQuery dbQuery = DBFactory.getInstance().createQuery("select businessPath,week,value from org.olat.course.statistic.weekly.WeeklyStat sv " - + "where sv.resId=:resId " - + dateClause); - dbQuery.setLong("resId", courseRepositoryEntryKey); - if (fromDate!=null) { - dbQuery.setString("yearFromDate", getYear(sdf, fromDate)); - dbQuery.setString("weekFromDate", getWeek(sdf, fromDate)); - } - if (toDate!=null) { - dbQuery.setString("yearToDate", getYear(sdf, toDate)); - dbQuery.setString("weekToDate", getWeek(sdf, toDate)); - } - // note: we use the default locale here since the WeeklyStatisticUpdater uses the default as well - // there is no such concept as 'weekly stats table per user locale' - // instead, the weekly stats table is generated with the system default locale - // dbQuery.setInteger("weekMode", MysqlWeekHelper.getMysqlWeekMode(Locale.getDefault())); - - StatisticResult statisticResult = new StatisticResult(course, dbQuery.list()); - fillGapsInColumnHeaders(statisticResult); - return statisticResult; - } - - private String getWeek(SimpleDateFormat sdf, Date date) { - sdf.applyPattern("w"); - return sdf.format(date); - } - - private String getYear(SimpleDateFormat sdf, Date date) { - sdf.applyPattern("yyyy"); - return sdf.format(date); - } - - /** fill any gaps in the column headers between the first and the last days **/ - private void fillGapsInColumnHeaders(StatisticResult statisticResult) { - if (statisticResult==null) { - throw new IllegalArgumentException("statisticResult must not be null"); - } - List<String> columnHeaders = statisticResult.getColumnHeaders(); - if (columnHeaders.size()<=1) { - // if the resulting set one or less, don't bother - return; - } - try{ - String firstWeek = columnHeaders.get(0); - String previousWeek = firstWeek; - for (int i = 1; i < columnHeaders.size(); i++) { - String currWeek = columnHeaders.get(i); - - if (!isNextWeek(previousWeek, currWeek)) { - String additionalWeek = nextWeek(previousWeek); - if (columnHeaders.contains(additionalWeek)) { - // oups, then we have a bug in our algorithm or what? - log_.warn("fillGapsInColumnHeaders: throwing a ParseException, can't add "+additionalWeek+" to "+columnHeaders); - throw new ParseException("Can't add "+additionalWeek+" to the list of weeks - it is already there", 0); - } - columnHeaders.add(i, additionalWeek); - previousWeek = additionalWeek; - } else { - previousWeek = currWeek; - } - } - statisticResult.setColumnHeaders(columnHeaders); - } catch(ParseException e) { - log_.warn("fillGapsInColumnHeaders: Got a ParseException while trying to fill gaps. Giving up. ",e); - } - - } - - private String nextWeek(String week) throws ParseException { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-w"); - Date d = sdf.parse(week); - d = new Date(d.getTime() + 7*24*60*60*1000); - String result = sdf.format(d); - - // bug with SimpleDateFormat: - // Mon Dec 29 00:00:00 CET 2008 - // returns - // 2008-01 - // which should probably rather be - // 2009-01 or 2008-53 - - if (result.compareTo(week)<0) { - // then we might have hit the bug mentioned above - // calculate manually - try{ - StringTokenizer st = new StringTokenizer(week, "-"); - Integer year = Integer.parseInt(st.nextToken()); - Integer w = Integer.parseInt(st.nextToken()); - if (result.equals(year+"-1")) { - // then it looks like we need to switch to the next year already - return (year+1)+"-"+1; - } - if (w==51) { - return year+"-"+52; - } else if (w==52) { - return year+"-"+53; - } else if (w>=53) { - return (year+1)+"-"+0; - } - } catch(NumberFormatException nfe) { - log_.warn("nextWeek: Got a NumberFormatException: "+nfe, nfe); - throw new ParseException("Got a NumberFormatException, rethrowing", 0); - } - } else if (result.equals(week)) { - // daylight saving - d = new Date(d.getTime() + 1*60*60*1000); - result = sdf.format(d); - } - - return result; - } - - private boolean isNextWeek(String week, String nextWeek) throws ParseException { - return nextWeek(week).equals(nextWeek); - } -} diff --git a/src/main/java/org/olat/course/statistic/weekly/MysqlWeekHelper.java b/src/main/java/org/olat/course/statistic/weekly/MysqlWeekHelper.java deleted file mode 100644 index c0428bf8bc3a5a7acce65d05896a49bf237326e7..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/course/statistic/weekly/MysqlWeekHelper.java +++ /dev/null @@ -1,89 +0,0 @@ -/** -* OLAT - Online Learning and Training<br> -* http://www.olat.org -* <p> -* Licensed under the Apache License, Version 2.0 (the "License"); <br> -* you may not use this file except in compliance with the License.<br> -* You may obtain a copy of the License at -* <p> -* http://www.apache.org/licenses/LICENSE-2.0 -* <p> -* Unless required by applicable law or agreed to in writing,<br> -* software distributed under the License is distributed on an "AS IS" BASIS, <br> -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> -* See the License for the specific language governing permissions and <br> -* limitations under the License. -* <p> -* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br> -* University of Zurich, Switzerland. -* <hr> -* <a href="http://www.openolat.org"> -* OpenOLAT - Online Learning and Training</a><br> -* This file has been modified by the OpenOLAT community. Changes are licensed -* under the Apache 2.0 license as the original file. -*/ -package org.olat.course.statistic.weekly; - -import java.util.Calendar; -import java.util.Locale; - -/** helper class used to calculate the mysql week mode based on a locale **/ -public class MysqlWeekHelper { - - public static int getMysqlWeekMode(Locale locale) { - /* - * From http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_week - * -Mode First day of week Range Week 1 is the first week … -0 Sunday 0-53 with a Sunday in this year -1 Monday 0-53 with more than 3 days this year -2 Sunday 1-53 with a Sunday in this year -3 Monday 1-53 with more than 3 days this year -4 Sunday 0-53 with more than 3 days this year -5 Monday 0-53 with a Monday in this year -6 Sunday 1-53 with more than 3 days this year -7 Monday 1-53 with a Monday in this year - */ - - Calendar c = Calendar.getInstance(locale); - int firstDayOfWeek = c.getFirstDayOfWeek(); - int minimalDaysInFirstWeek = c.getMinimalDaysInFirstWeek(); - - if (firstDayOfWeek==Calendar.SUNDAY) { - // that could be mode 0,2,4,6 - - //Mode First day of week Range Week 1 is the first week … - // 0 Sunday 0-53 with a Sunday in this year - // 4 Sunday 0-53 with more than 3 days this year - - // 2 Sunday 1-53 with a Sunday in this year - // 6 Sunday 1-53 with more than 3 days this year - - if (minimalDaysInFirstWeek==7) { - return 2; - } else if (minimalDaysInFirstWeek>3) { - return 6; - } else { - return 4; - } - } else { - // otherwise it must be MONDAY - - // that could be mode 1,3,5,7 - - // Mode First day of week Range Week 1 is the first week … - // 1 Monday 0-53 with more than 3 days this year - // 3 Monday 1-53 with more than 3 days this year - // 5 Monday 0-53 with a Monday in this year - // 7 Monday 1-53 with a Monday in this year - - if (minimalDaysInFirstWeek==7) { - return 7; - } else if (minimalDaysInFirstWeek>3) { - return 3; - } else { - return 1; - } - } - } -} diff --git a/src/main/java/org/olat/course/statistic/weekly/WeeklyStat.hbm.xml b/src/main/java/org/olat/course/statistic/weekly/WeeklyStat.hbm.xml deleted file mode 100644 index 474830595ad7204ba6420fea6fbc8f0022ee1eac..0000000000000000000000000000000000000000 --- a/src/main/java/org/olat/course/statistic/weekly/WeeklyStat.hbm.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0"?> -<!DOCTYPE hibernate-mapping PUBLIC - "-//Hibernate/Hibernate Mapping DTD//EN" - "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> - -<hibernate-mapping default-lazy="false"> - <class name="org.olat.course.statistic.weekly.WeeklyStat" - table="o_stat_weekly"> - - <id name="key" column="id" type="long" unsaved-value="null"> - <generator class="identity" /> - </id> - <property name="businessPath" column="businesspath" type="string" length="2048" not-null="true" /> - <property name="resId" column="resid" type="long" not-null="true"/> - <property name="week" column="week" type="string" length="7" not-null="true"/> - <property name="value" column="value" type="int" not-null="true"/> - - </class> -</hibernate-mapping> \ No newline at end of file diff --git a/src/main/java/org/olat/course/statistic/weekly/WeeklyStat.java b/src/main/java/org/olat/course/statistic/weekly/WeeklyStat.java index 4d3224a63db17c60404383c074c80217ae1d489f..ca1deb711b907b6466a20854bfdecf8616ef06de 100644 --- a/src/main/java/org/olat/course/statistic/weekly/WeeklyStat.java +++ b/src/main/java/org/olat/course/statistic/weekly/WeeklyStat.java @@ -26,7 +26,15 @@ package org.olat.course.statistic.weekly; -import org.olat.core.commons.persistence.PersistentObject; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.Table; + +import org.hibernate.annotations.GenericGenerator; +import org.hibernate.annotations.Parameter; +import org.olat.core.id.Persistable; /** * Hibernate object representing an entry in the o_stat_weekly table. @@ -34,18 +42,42 @@ import org.olat.core.commons.persistence.PersistentObject; * Initial Date: 12.02.2010 <br> * @author Stefan */ -public class WeeklyStat extends PersistentObject { +@Entity(name="weeklystat") +@Table(name="o_stat_weekly") +public class WeeklyStat implements Persistable { private static final long serialVersionUID = 8424069134569751417L; + + @Id + @GeneratedValue(generator = "system-uuid") + @GenericGenerator(name = "system-uuid", strategy = "enhanced-sequence", parameters={ + @Parameter(name="sequence_name", value="hibernate_unique_key"), + @Parameter(name="force_table_use", value="true"), + @Parameter(name="optimizer", value="legacy-hilo"), + @Parameter(name="value_column", value="next_hi"), + @Parameter(name="increment_size", value="32767"), + @Parameter(name="initial_value", value="32767") + }) + @Column(name="id", nullable=false, unique=true, insertable=true, updatable=false) + private Long key; + @Column(name="businesspath", nullable=false, unique=false, insertable=true, updatable=true) private String businessPath; + @Column(name="week", nullable=false, unique=false, insertable=true, updatable=true) private String week; + @Column(name="value", nullable=false, unique=false, insertable=true, updatable=true) private int value; + @Column(name="resid", nullable=false, unique=false, insertable=true, updatable=true) private long resId; public WeeklyStat(){ // for hibernate } + @Override + public Long getKey() { + return key; + } + public final long getResId() { return resId; } @@ -78,4 +110,26 @@ public class WeeklyStat extends PersistentObject { this.value = value; } + @Override + public int hashCode() { + return getKey() == null ? 39563 : getKey().hashCode(); + } + + @Override + public boolean equals(Object obj) { + if(obj == this) { + return true; + } + if(obj instanceof WeeklyStat) { + WeeklyStat stat = (WeeklyStat)obj; + return getKey() != null && getKey().equals(stat.getKey()); + } + return super.equals(obj); + } + + @Override + public boolean equalsByPersistableKey(Persistable persistable) { + return equals(persistable); + } + } diff --git a/src/main/java/org/olat/course/statistic/weekly/WeeklyStatisticDisplayController.java b/src/main/java/org/olat/course/statistic/weekly/WeeklyStatisticDisplayController.java index aaef7fac5b1debabef543c8b8673df887f216b10..49d3fa131e99af6392bc15fcfcd33a074b217e9f 100644 --- a/src/main/java/org/olat/course/statistic/weekly/WeeklyStatisticDisplayController.java +++ b/src/main/java/org/olat/course/statistic/weekly/WeeklyStatisticDisplayController.java @@ -57,7 +57,7 @@ public class WeeklyStatisticDisplayController extends StatisticDisplayController form_ = new DateChooserForm(ureq, getWindowControl(), 8*7); listenTo(form_); weeklyStatisticFormVc_.put("statisticForm", form_.getInitialComponent()); - weeklyStatisticFormVc_.contextPut("statsSince", getStatsSinceStr(ureq)); + weeklyStatisticFormVc_.contextPut("statsSince", getStatsSinceStr()); weeklyStatisticVc_.put("weeklystatisticform", weeklyStatisticFormVc_); diff --git a/src/main/java/org/olat/course/statistic/weekly/WeeklyStatisticManager.java b/src/main/java/org/olat/course/statistic/weekly/WeeklyStatisticManager.java index a9edacc99699fe6ad98373eea46c5d06d7febc61..a5a5077ff3c78af9988d143240b3a7f8109b0ca0 100644 --- a/src/main/java/org/olat/course/statistic/weekly/WeeklyStatisticManager.java +++ b/src/main/java/org/olat/course/statistic/weekly/WeeklyStatisticManager.java @@ -31,13 +31,13 @@ import java.util.Date; import java.util.List; import java.util.StringTokenizer; +import javax.persistence.TypedQuery; + import org.olat.core.commons.persistence.DBFactory; -import org.olat.core.commons.persistence.DBQuery; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.table.ColumnDescriptor; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; -import org.olat.core.manager.BasicManager; import org.olat.course.ICourse; import org.olat.course.statistic.IStatisticManager; import org.olat.course.statistic.StatisticDisplayController; @@ -55,19 +55,20 @@ import org.olat.course.statistic.TotalAwareColumnDescriptor; * Initial Date: 12.02.2010 <br> * @author Stefan */ -public class WeeklyStatisticManager extends BasicManager implements IStatisticManager { +public class WeeklyStatisticManager implements IStatisticManager { /** the logging object used in this class **/ - private static final OLog log_ = Tracing.createLoggerFor(WeeklyStatisticManager.class); + private static final OLog log = Tracing.createLoggerFor(WeeklyStatisticManager.class); private SimpleDateFormat sdf_ = new SimpleDateFormat("yyyy-ww"); @Override public StatisticResult generateStatisticResult(UserRequest ureq, ICourse course, long courseRepositoryEntryKey) { - DBQuery dbQuery = DBFactory.getInstance().createQuery("select businessPath,week,value from org.olat.course.statistic.weekly.WeeklyStat sv " - + "where sv.resId=:resId"); - dbQuery.setLong("resId", courseRepositoryEntryKey); - - return new StatisticResult(course, dbQuery.list()); + String q = "select businessPath,week,value from weeklystat sv where sv.resId=:resId"; + List<Object[]> raw = DBFactory.getInstance().getCurrentEntityManager() + .createQuery(q, Object[].class) + .setParameter("resId", courseRepositoryEntryKey) + .getResultList(); + return new StatisticResult(course, raw); } @Override @@ -82,6 +83,7 @@ public class WeeklyStatisticManager extends BasicManager implements IStatisticMa return cd; } + @Override public StatisticResult generateStatisticResult(UserRequest ureq, ICourse course, long courseRepositoryEntryKey, Date fromDate, Date toDate) { if (fromDate==null && toDate==null) { // no restrictions, return the defaults @@ -90,36 +92,36 @@ public class WeeklyStatisticManager extends BasicManager implements IStatisticMa return statisticResult; } - StringBuffer dateClause = new StringBuffer(); + StringBuilder sb = new StringBuilder(); + sb.append("select businessPath, week, value from org.olat.course.statistic.weekly.WeeklyStat sv where sv.resId=:resId"); //concat(year(creationdate),'-',week(creationdate)) week - if (fromDate!=null) { - dateClause.append(" and (week=:fromDate or week>=:fromDate) "); + if (fromDate != null) { + sb.append(" and (week=:fromDate or week>=:fromDate) "); } if (toDate!=null) { - dateClause.append(" and (week=:toDate or week<=:toDate) "); + sb.append(" and (week=:toDate or week<=:toDate) "); } - DBQuery dbQuery = DBFactory.getInstance().createQuery("select businessPath,week,value from org.olat.course.statistic.weekly.WeeklyStat sv " - + "where sv.resId=:resId " - + dateClause); - dbQuery.setLong("resId", courseRepositoryEntryKey); + TypedQuery<Object[]> dbQuery = DBFactory.getInstance().getCurrentEntityManager() + .createQuery(sb.toString(), Object[].class) + .setParameter("resId", courseRepositoryEntryKey); StringBuffer infoMsg = new StringBuffer(); if (fromDate!=null) { - String fromDateStr = getYear(fromDate)+"-"+getWeek(fromDate); + String fromDateStr = getYear(fromDate) + "-" + getWeek(fromDate); infoMsg.append("from date: "+fromDateStr); - dbQuery.setString("fromDate", fromDateStr); + dbQuery.setParameter("fromDate", fromDateStr); } if (toDate!=null) { - String toDateStr = getYear(toDate)+"-"+getWeek(toDate); + String toDateStr = getYear(toDate) + "-" + getWeek(toDate); if (infoMsg!=null) { infoMsg.append(", "); } infoMsg.append("to date: "+toDateStr); - dbQuery.setString("toDate", toDateStr); + dbQuery.setParameter("toDate", toDateStr); } - log_.info("generateStatisticResult: Searching with params "+infoMsg.toString()); + log.info("generateStatisticResult: Searching with params "+infoMsg.toString()); - StatisticResult statisticResult = new StatisticResult(course, dbQuery.list()); + StatisticResult statisticResult = new StatisticResult(course, dbQuery.getResultList()); fillGapsInColumnHeaders(statisticResult); return statisticResult; } @@ -160,20 +162,20 @@ public class WeeklyStatisticManager extends BasicManager implements IStatisticMa try{ String firstWeek = columnHeaders.get(0); String previousWeek = firstWeek; - log_.debug("fillGapsInColumnHeaders: starting..."); - log_.debug("fillGapsInColumnHeaders: columnHeaders.size()="+columnHeaders.size()); - log_.debug("fillGapsInColumnHeaders: columnHeaders="+columnHeaders); + log.debug("fillGapsInColumnHeaders: starting..."); + log.debug("fillGapsInColumnHeaders: columnHeaders.size()="+columnHeaders.size()); + log.debug("fillGapsInColumnHeaders: columnHeaders="+columnHeaders); if (columnHeaders.size()>1) { Date previousWeekDate = sdf_.parse(previousWeek); String lastWeek = columnHeaders.get(columnHeaders.size()-1); Date lastWeekDate = sdf_.parse(lastWeek); if (previousWeekDate==null || lastWeekDate==null) { - log_.warn("fillGapsInColumnHeaders: can't get date from weeks: "+previousWeek+"/"+lastWeek); + log.warn("fillGapsInColumnHeaders: can't get date from weeks: "+previousWeek+"/"+lastWeek); return null; } if (previousWeekDate.compareTo(lastWeekDate)>=1) { // that means that we got wrong input params! - log_.warn("fillGapsInColumnHeaders: got a wrongly ordered input, skipping sorting. columnHeaders: "+columnHeaders); + log.warn("fillGapsInColumnHeaders: got a wrongly ordered input, skipping sorting. columnHeaders: "+columnHeaders); return null; } } @@ -181,18 +183,18 @@ public class WeeklyStatisticManager extends BasicManager implements IStatisticMa if (i>255) { // that's probably a bug in the loop - although it is unlikely to occur again (OLAT-5161) // we do an emergency stop here - log_.warn("fillGapsInColumnHeaders: stopped at i="+i+", skipped sorting. columnHeaders grew to: "+columnHeaders); + log.warn("fillGapsInColumnHeaders: stopped at i="+i+", skipped sorting. columnHeaders grew to: "+columnHeaders); return null; } String currWeek = columnHeaders.get(i); - log_.debug("fillGapsInColumnHeaders: columnHeaders["+i+"]: "+currWeek); + log.debug("fillGapsInColumnHeaders: columnHeaders["+i+"]: "+currWeek); if (!isNextWeek(previousWeek, currWeek)) { - log_.debug("fillGapsInColumnHeaders: isNextweek("+previousWeek+","+currWeek+"): false"); + log.debug("fillGapsInColumnHeaders: isNextweek("+previousWeek+","+currWeek+"): false"); String additionalWeek = nextWeek(previousWeek); if (columnHeaders.contains(additionalWeek)) { // oups, then we have a bug in our algorithm or what? - log_.warn("fillGapsInColumnHeaders: throwing a ParseException, can't add "+additionalWeek+" to "+columnHeaders); + log.warn("fillGapsInColumnHeaders: throwing a ParseException, can't add "+additionalWeek+" to "+columnHeaders); throw new ParseException("Can't add "+additionalWeek+" to the list of weeks - it is already there", 0); } if (sdf_.parse(additionalWeek).compareTo(sdf_.parse(currWeek))>0) { @@ -202,16 +204,16 @@ public class WeeklyStatisticManager extends BasicManager implements IStatisticMa columnHeaders.add(i, additionalWeek); previousWeek = additionalWeek; } else { - log_.debug("fillGapsInColumnHeaders: isNextweek("+previousWeek+","+currWeek+"): true"); + log.debug("fillGapsInColumnHeaders: isNextweek("+previousWeek+","+currWeek+"): true"); previousWeek = currWeek; } } - log_.debug("fillGapsInColumnHeaders: columnHeaders.size()="+columnHeaders.size()); - log_.debug("fillGapsInColumnHeaders: columnHeaders="+columnHeaders); - log_.debug("fillGapsInColumnHeaders: done."); + log.debug("fillGapsInColumnHeaders: columnHeaders.size()="+columnHeaders.size()); + log.debug("fillGapsInColumnHeaders: columnHeaders="+columnHeaders); + log.debug("fillGapsInColumnHeaders: done."); return columnHeaders; } catch(ParseException e) { - log_.warn("fillGapsInColumnHeaders: Got a ParseException while trying to fill gaps. Giving up. ",e); + log.warn("fillGapsInColumnHeaders: Got a ParseException while trying to fill gaps. Giving up. ",e); return null; } } @@ -247,7 +249,7 @@ public class WeeklyStatisticManager extends BasicManager implements IStatisticMa return (year+1)+"-"+0; } } catch(NumberFormatException nfe) { - log_.warn("nextWeek: Got a NumberFormatException: "+nfe, nfe); + log.warn("nextWeek: Got a NumberFormatException: "+nfe, nfe); throw new ParseException("Got a NumberFormatException, rethrowing", 0); } } else if (result.equals(week)) { diff --git a/src/main/java/org/olat/group/GroupfoldersWebDAVMergeSource.java b/src/main/java/org/olat/group/GroupfoldersWebDAVMergeSource.java index d6ed5aad7bdc16d53265e13876fa96410319622d..eaa2f98e22bf4ee833971344f868107ff601189c 100644 --- a/src/main/java/org/olat/group/GroupfoldersWebDAVMergeSource.java +++ b/src/main/java/org/olat/group/GroupfoldersWebDAVMergeSource.java @@ -117,7 +117,7 @@ class GroupfoldersWebDAVMergeSource extends WebDAVMergeSource { OlatRootFolderImpl localImpl = new OlatRootFolderImpl(folderPath, this); //already done in OlatRootFolderImpl localImpl.getBasefile().mkdirs(); // lazy initialize dirs String containerName = RequestUtil.normalizeFilename(name); - NamedContainerImpl grpContainer = new NamedContainerImpl(containerName, localImpl); + NamedContainerImpl grpContainer = new GroupNamedContainer(containerName, localImpl); boolean writeAccess; if (!isOwner) { @@ -127,7 +127,7 @@ class GroupfoldersWebDAVMergeSource extends WebDAVMergeSource { if (lFolderAccess != null) { folderAccess = lFolderAccess.intValue(); } - writeAccess = (folderAccess == CollaborationTools.CALENDAR_ACCESS_ALL); + writeAccess = (folderAccess == CollaborationTools.FOLDER_ACCESS_ALL); } else { writeAccess = true; } @@ -142,4 +142,16 @@ class GroupfoldersWebDAVMergeSource extends WebDAVMergeSource { grpContainer.setLocalSecurityCallback(secCallback); return grpContainer; } + + private static class GroupNamedContainer extends NamedContainerImpl { + + public GroupNamedContainer(String containerName, VFSContainer container) { + super(containerName, container); + } + + @Override + public boolean exists() { + return true; + } + } } diff --git a/src/main/java/org/olat/group/manager/BusinessGroupDAO.java b/src/main/java/org/olat/group/manager/BusinessGroupDAO.java index 818c0fc9456104efdfde286a66c2eb57cb25ad2c..d15089ad6a530157acb1c2fd9adbf1554ad3782c 100644 --- a/src/main/java/org/olat/group/manager/BusinessGroupDAO.java +++ b/src/main/java/org/olat/group/manager/BusinessGroupDAO.java @@ -251,10 +251,13 @@ public class BusinessGroupDAO { return groups.get(0); } + /** + * Work with the hibernate session + * @param group + * @return + */ public BusinessGroup merge(BusinessGroup group) { - EntityManager em = dbInstance.getCurrentEntityManager(); - BusinessGroup mergedGroup = em.merge(group); - return mergedGroup; + return dbInstance.getCurrentEntityManager().merge(group); } /** @@ -269,15 +272,6 @@ public class BusinessGroupDAO { dbInstance.getCurrentEntityManager().remove(group.getBaseGroup()); } - /** - * Work with the hibernate session - * @param group - * @return - */ - public BusinessGroup update(BusinessGroup group) { - return dbInstance.getCurrentEntityManager().merge(group); - } - public List<BusinessGroupMembership> getBusinessGroupsMembership(Collection<BusinessGroup> groups) { List<Long> groupKeys = new ArrayList<>(); for(BusinessGroup group:groups) { diff --git a/src/main/java/org/olat/group/ui/edit/BusinessGroupMembersController.java b/src/main/java/org/olat/group/ui/edit/BusinessGroupMembersController.java index 195cc234585c5753bbe9330f8d2cd13b3212a776..1369f2bbd10855a3b76141d70ced179ac3d8160b 100644 --- a/src/main/java/org/olat/group/ui/edit/BusinessGroupMembersController.java +++ b/src/main/java/org/olat/group/ui/edit/BusinessGroupMembersController.java @@ -247,6 +247,6 @@ public class BusinessGroupMembersController extends BasicController { MailTemplate template = (MailTemplate)runContext.get("mailTemplate"); MailPackage mailing = new MailPackage(template, getWindowControl().getBusinessControl().getAsString(), template != null); businessGroupService.updateMemberships(getIdentity(), allModifications, mailing); - MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), false, getLocale()); } } diff --git a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java index 65747e57555f212bda7b816efa21a82d2b2a17f7..c91d13cb863f16a45c32f77ab49f92612465bc54 100644 --- a/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java +++ b/src/main/java/org/olat/group/ui/main/AbstractBusinessGroupListController.java @@ -909,7 +909,7 @@ public abstract class AbstractBusinessGroupListController extends FormBasicContr private void finishUserManagement(MembershipModification mod, List<BusinessGroup> groups, MailTemplate template, boolean sendMail) { MailPackage mailing = new MailPackage(template, getWindowControl().getBusinessControl().getAsString(), sendMail); businessGroupService.updateMembership(getIdentity(), mod, groups, mailing); - MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(mailing.getResult(), getWindowControl(), false, getLocale()); } protected void doSearch(UserRequest ureq, SearchEvent event) { diff --git a/src/main/java/org/olat/course/nodes/basiclti/LTIDisplayOptions.java b/src/main/java/org/olat/ims/lti/LTIDisplayOptions.java similarity index 96% rename from src/main/java/org/olat/course/nodes/basiclti/LTIDisplayOptions.java rename to src/main/java/org/olat/ims/lti/LTIDisplayOptions.java index 00d95de2dcd247e2215857895868c7b6dad8ad7e..2800ea79229f9de5d9658b9dea837f51f5c82ed2 100644 --- a/src/main/java/org/olat/course/nodes/basiclti/LTIDisplayOptions.java +++ b/src/main/java/org/olat/ims/lti/LTIDisplayOptions.java @@ -17,7 +17,7 @@ * frentix GmbH, http://www.frentix.com * <p> */ -package org.olat.course.nodes.basiclti; +package org.olat.ims.lti; /** * diff --git a/src/main/java/org/olat/ims/lti/LTIManager.java b/src/main/java/org/olat/ims/lti/LTIManager.java index aa28560ab8eae91e2a256760095b56c93e66bd4d..7842eb43a97aadef892c6ea3e39567a8d7fbbb50 100644 --- a/src/main/java/org/olat/ims/lti/LTIManager.java +++ b/src/main/java/org/olat/ims/lti/LTIManager.java @@ -56,5 +56,12 @@ public interface LTIManager { */ public void deleteOutcomes(OLATResource resource); + /** + * Make a LTI request with a HTTP Post request. + * @param signedProps the signed LTI properties + * @param url the url to send the request + * @return the http response content as string or null if the request was not successful + */ + public String post(Map<String,String> signedProps, String url); } diff --git a/src/main/java/org/olat/ims/lti/manager/LTIManagerImpl.java b/src/main/java/org/olat/ims/lti/manager/LTIManagerImpl.java index 3956a5b7d393c2ebc63e4a33aff8bee2d8d2df31..174e1aee4ff07450386783e8669f8586b9c453cc 100644 --- a/src/main/java/org/olat/ims/lti/manager/LTIManagerImpl.java +++ b/src/main/java/org/olat/ims/lti/manager/LTIManagerImpl.java @@ -24,9 +24,19 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.stream.Collectors; import javax.persistence.TypedQuery; +import org.apache.commons.io.IOUtils; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.NameValuePair; +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.message.BasicNameValuePair; import org.imsglobal.basiclti.BasicLTIUtil; import org.olat.basesecurity.Authentication; import org.olat.basesecurity.BaseSecurityManager; @@ -35,6 +45,8 @@ import org.olat.core.helpers.Settings; import org.olat.core.id.Identity; import org.olat.core.id.User; import org.olat.core.id.UserConstants; +import org.olat.core.logging.OLog; +import org.olat.core.logging.Tracing; import org.olat.core.util.StringHelper; import org.olat.core.util.WebappHelper; import org.olat.ims.lti.LTIContext; @@ -55,6 +67,8 @@ import org.springframework.stereotype.Service; */ @Service public class LTIManagerImpl implements LTIManager { + + private static final OLog log = Tracing.createLoggerFor(LTIManagerImpl.class); @Autowired private DB dbInstance; @@ -129,8 +143,12 @@ public class LTIManagerImpl implements LTIManager { String tool_consumer_instance_url = null; String tool_consumer_instance_name = WebappHelper.getInstanceId(); String tool_consumer_instance_contact_email = WebappHelper.getMailConfig("mailSupport"); + + if (props == null) { + props = new HashMap<>(); + } - Map<String,String> signedProps = BasicLTIUtil.signProperties(props, url, "POST", + return BasicLTIUtil.signProperties(props, url, "POST", oauth_consumer_key, oauth_consumer_secret, tool_consumer_instance_guid, @@ -138,21 +156,19 @@ public class LTIManagerImpl implements LTIManager { tool_consumer_instance_url, tool_consumer_instance_name, tool_consumer_instance_contact_email); - - return signedProps; } @Override public Map<String,String> forgeLTIProperties(Identity identity, Locale locale, LTIContext context, boolean sendName, boolean sendEmail) { - final Identity ident = identity; final Locale loc = locale; + final Identity ident = identity; final User u = ident.getUser(); final String lastName = u.getProperty(UserConstants.LASTNAME, loc); final String firstName = u.getProperty(UserConstants.FIRSTNAME, loc); final String email = u.getProperty(UserConstants.EMAIL, loc); - Map<String,String> props = new HashMap<String,String>(); + Map<String,String> props = new HashMap<>(); setProperty(props, "resource_link_id", context.getResourceId()); setProperty(props, "resource_link_title", context.getResourceTitle()); setProperty(props, "resource_link_description", context.getResourceDescription()); @@ -208,7 +224,7 @@ public class LTIManagerImpl implements LTIManager { if (!StringHelper.containsNonWhitespace(param)) { continue; } - int pos = param.indexOf("="); + int pos = param.indexOf('='); if (pos < 1 || pos + 1 > param.length()) { continue; } @@ -291,5 +307,28 @@ public class LTIManagerImpl implements LTIManager { } return personSourceId; } + + @Override + public String post(Map<String,String> signedProps, String url) { + String content = null; + + // Map the LTI properties to HttpClient parameters + List<NameValuePair> urlParameters = signedProps.keySet().stream() + .map(k -> new BasicNameValuePair(k, signedProps.get(k))) + .collect(Collectors.toList()); + + // make the http request and evaluate the result + try (CloseableHttpClient httpclient = HttpClients.createDefault()) { + HttpPost request = new HttpPost(url); + HttpEntity postParams = new UrlEncodedFormEntity(urlParameters); + request.setEntity(postParams); + HttpResponse httpResponse = httpclient.execute(request); + content = IOUtils.toString(httpResponse.getEntity().getContent()); + } catch (Exception e) { + log.error("", e); + } + + return content; + } } diff --git a/src/main/java/org/olat/ims/qti/export/QTIExportItemFormatDelegate.java b/src/main/java/org/olat/ims/qti/export/QTIExportItemFormatDelegate.java new file mode 100644 index 0000000000000000000000000000000000000000..8675391b3710e75403aaa593b2668f7914bc7a16 --- /dev/null +++ b/src/main/java/org/olat/ims/qti/export/QTIExportItemFormatDelegate.java @@ -0,0 +1,77 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.ims.qti.export; + +import org.olat.course.archiver.ExportFormat; + +/** + * + * Initial date: 27 avr. 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTIExportItemFormatDelegate implements QTIExportItemFormatConfig { + + private final ExportFormat delegate; + + public QTIExportItemFormatDelegate(ExportFormat delegate) { + this.delegate = delegate; + } + + @Override + public boolean hasResponseCols() { + return delegate.isResponseCols(); + } + + @Override + public boolean hasPositionsOfResponsesCol() { + return delegate.isPositionsOfResponsesCol(); + } + + @Override + public boolean hasPointCol() { + return delegate.isPointCol(); + } + + @Override + public boolean hasTimeCols() { + return delegate.isTimeCols(); + } + + @Override + public void setPointCol(boolean pointColConfigured) { + delegate.setPointCol(pointColConfigured); + } + + @Override + public void setPositionsOfResponsesCol(boolean positionsOfResponsesColConfigured) { + delegate.setPositionsOfResponsesCol(positionsOfResponsesColConfigured); + } + + @Override + public void setResponseCols(boolean responseColsConfigured) { + delegate.setResponseCols(responseColsConfigured); + } + + @Override + public void setTimeCols(boolean timeColsConfigured) { + delegate.setTimeCols(timeColsConfigured); + } +} diff --git a/src/main/java/org/olat/ims/qti21/AssessmentItemSession.java b/src/main/java/org/olat/ims/qti21/AssessmentItemSession.java index e81822ab1aeebf7d9050cc4ec2c9e352e0338776..800cdd034bac11a9f7bcd20ab08c57b9e0608d7d 100644 --- a/src/main/java/org/olat/ims/qti21/AssessmentItemSession.java +++ b/src/main/java/org/olat/ims/qti21/AssessmentItemSession.java @@ -67,6 +67,10 @@ public interface AssessmentItemSession extends CreateInfo, ModifiedInfo { public void setManualScore(BigDecimal score); + public String getCoachComment(); + + public void setCoachComment(String comment); + public AssessmentTestSession getAssessmentTestSession(); } diff --git a/src/main/java/org/olat/ims/qti21/QTI21Constants.java b/src/main/java/org/olat/ims/qti21/QTI21Constants.java index 5c22c43c7da57537ea1d12df1e110561acba976c..e73a308df2438f6af62a7a16446ae33b9f1c7e34 100644 --- a/src/main/java/org/olat/ims/qti21/QTI21Constants.java +++ b/src/main/java/org/olat/ims/qti21/QTI21Constants.java @@ -132,5 +132,20 @@ public class QTI21Constants { public static final Identifier CORRECT_SOLUTION_IDENTIFIER = Identifier.parseString(CORRECT_SOLUTION); + + public static final String CSS_MATCH_MATRIX = "match_matrix"; + + public static final String CSS_MATCH_DRAG_AND_DROP = "match_dnd"; + + public static final String CSS_MATCH_SOURCE_TOP = "source-top"; + + public static final String CSS_MATCH_SOURCE_LEFT = "source-left"; + + public static final String CSS_MATCH_SOURCE_RIGHT = "source-right"; + + public static final String CSS_MATCH_SOURCE_BOTTOM = "source-bottom"; + + + } diff --git a/src/main/java/org/olat/ims/qti21/QTI21DeliveryOptions.java b/src/main/java/org/olat/ims/qti21/QTI21DeliveryOptions.java index f68604652f7571b4716ca5ec40f151d0cd10a6da..61d07052afdefc6cc89c64150b5faec089c8dd30 100644 --- a/src/main/java/org/olat/ims/qti21/QTI21DeliveryOptions.java +++ b/src/main/java/org/olat/ims/qti21/QTI21DeliveryOptions.java @@ -42,6 +42,8 @@ public class QTI21DeliveryOptions { private boolean personalNotes; private boolean hideLms; + private boolean hideFeedbacks; + private boolean blockAfterSuccess; private int maxAttempts; @@ -88,6 +90,14 @@ public class QTI21DeliveryOptions { this.displayQuestionProgress = displayQuestionProgress; } + public boolean isHideFeedbacks() { + return hideFeedbacks; + } + + public void setHideFeedbacks(boolean hideFeedbacks) { + this.hideFeedbacks = hideFeedbacks; + } + public boolean isShowTitles() { return showTitles; } @@ -201,6 +211,7 @@ public class QTI21DeliveryOptions { defaultSettings.enableSuspend = false; defaultSettings.displayScoreProgress = false; defaultSettings.displayQuestionProgress = false; + defaultSettings.hideFeedbacks = false; defaultSettings.hideLms = false; defaultSettings.showMenu = true; defaultSettings.showTitles = true; @@ -220,6 +231,7 @@ public class QTI21DeliveryOptions { defaultSettings.enableSuspend = true; defaultSettings.displayScoreProgress = true; defaultSettings.displayQuestionProgress = true; + defaultSettings.hideFeedbacks = false; defaultSettings.hideLms = true; defaultSettings.showMenu = true; defaultSettings.showTitles = true; @@ -240,6 +252,7 @@ public class QTI21DeliveryOptions { defaultSettings.enableSuspend = false; defaultSettings.displayScoreProgress = false; defaultSettings.displayQuestionProgress = true; + defaultSettings.hideFeedbacks = true; defaultSettings.hideLms = true; defaultSettings.showMenu = true; defaultSettings.showTitles = true; @@ -261,6 +274,7 @@ public class QTI21DeliveryOptions { clone.enableSuspend = enableSuspend; clone.displayScoreProgress = displayScoreProgress; clone.displayQuestionProgress = displayQuestionProgress; + clone.hideFeedbacks = hideFeedbacks; clone.hideLms = hideLms; clone.showMenu = showMenu; clone.showTitles = showTitles; diff --git a/src/main/java/org/olat/ims/qti21/QTI21Service.java b/src/main/java/org/olat/ims/qti21/QTI21Service.java index 8183fc36a0ed082f5bf5dc3f6785a881d031a757..14233dbcceadbdda86f03b43b7167732f00fa3cf 100644 --- a/src/main/java/org/olat/ims/qti21/QTI21Service.java +++ b/src/main/java/org/olat/ims/qti21/QTI21Service.java @@ -36,6 +36,7 @@ import org.olat.ims.qti21.model.ResponseLegality; import org.olat.ims.qti21.model.audit.CandidateEvent; import org.olat.ims.qti21.model.audit.CandidateItemEventType; import org.olat.ims.qti21.model.audit.CandidateTestEventType; +import org.olat.ims.qti21.model.jpa.AssessmentTestSessionStatistics; import org.olat.modules.assessment.AssessmentEntry; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryRef; @@ -268,6 +269,16 @@ public interface QTI21Service { */ public List<AssessmentTestSession> getAssessmentTestSessions(RepositoryEntryRef courseEntry, String subIdent, IdentityRef identity); + /** + * Retrieve the sessions of a user with the number of corrected assessment items (only the test and its resource are fetched). + * + * @param courseEntry The course + * @param subIdent The course node identifier + * @param identity The user to assess + * @return A list of assessment test sessions wrapped with number of corrected items + */ + public List<AssessmentTestSessionStatistics> getAssessmentTestSessionsStatistics(RepositoryEntryRef courseEntry, String subIdent, IdentityRef identity); + /** * Retrieve the last finished test session. * diff --git a/src/main/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAO.java b/src/main/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAO.java index 003bb2b9efda81a4d0f75f1b0a962c80adc1aa15..ac8fd02c189bfa966397e0c6400cf2c624341e95 100644 --- a/src/main/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAO.java +++ b/src/main/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAO.java @@ -23,6 +23,7 @@ import java.io.File; import java.nio.file.Path; import java.text.DateFormat; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -35,6 +36,7 @@ import org.olat.core.id.Identity; import org.olat.core.util.StringHelper; import org.olat.ims.qti21.AssessmentTestSession; import org.olat.ims.qti21.model.jpa.AssessmentTestSessionImpl; +import org.olat.ims.qti21.model.jpa.AssessmentTestSessionStatistics; import org.olat.modules.assessment.AssessmentEntry; import org.olat.repository.RepositoryEntry; import org.olat.repository.RepositoryEntryRef; @@ -361,6 +363,41 @@ public class AssessmentTestSessionDAO { return query.getResultList(); } + public List<AssessmentTestSessionStatistics> getUserTestSessionsStatistics(RepositoryEntryRef courseEntry, String courseSubIdent, IdentityRef identity) { + StringBuilder sb = new StringBuilder(); + sb.append("select session,") + .append(" (select count(itemSession.key) from qtiassessmentitemsession itemSession") + .append(" where itemSession.assessmentTestSession.key=session.key and itemSession.manualScore is not null") + .append(" ) as correctItems") + .append(" from qtiassessmenttestsession session") + .append(" left join fetch session.testEntry testEntry") + .append(" left join fetch testEntry.olatResource testResource") + .append(" where session.repositoryEntry.key=:repositoryEntryKey and session.identity.key=:identityKey and "); + if(StringHelper.containsNonWhitespace(courseSubIdent)) { + sb.append("session.subIdent=:subIdent"); + } else { + sb.append("session.subIdent is null"); + } + sb.append(" order by session.creationDate desc"); + + TypedQuery<Object[]> query = dbInstance.getCurrentEntityManager() + .createQuery(sb.toString(), Object[].class) + .setParameter("repositoryEntryKey", courseEntry.getKey()) + .setParameter("identityKey", identity.getKey()); + if(StringHelper.containsNonWhitespace(courseSubIdent)) { + query.setParameter("subIdent", courseSubIdent); + } + List<Object[]> raws = query.getResultList(); + List<AssessmentTestSessionStatistics> stats = new ArrayList<>(raws.size()); + for(Object[] raw:raws) { + AssessmentTestSession testSession = (AssessmentTestSession)raw[0]; + int numOfCorrectedItems = (raw[1] == null ? 0 : ((Number)raw[1]).intValue()); + stats.add(new AssessmentTestSessionStatistics(testSession, numOfCorrectedItems)); + } + + return stats; + } + public AssessmentTestSession getLastUserTestSession(RepositoryEntryRef courseEntry, String courseSubIdent, RepositoryEntry testEntry, IdentityRef identity) { StringBuilder sb = new StringBuilder(); sb.append("select session from qtiassessmenttestsession session") diff --git a/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java b/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java index 62279653a728de7999c0113b1c7e8369075aef5e..aadf4ec80bfea5c3a0a1d222926571dacd79ef4a 100644 --- a/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java +++ b/src/main/java/org/olat/ims/qti21/manager/QTI21ServiceImpl.java @@ -94,6 +94,7 @@ import org.olat.ims.qti21.model.ResponseLegality; import org.olat.ims.qti21.model.audit.CandidateEvent; import org.olat.ims.qti21.model.audit.CandidateItemEventType; import org.olat.ims.qti21.model.audit.CandidateTestEventType; +import org.olat.ims.qti21.model.jpa.AssessmentTestSessionStatistics; import org.olat.modules.assessment.AssessmentEntry; import org.olat.modules.assessment.manager.AssessmentEntryDAO; import org.olat.repository.RepositoryEntry; @@ -513,6 +514,11 @@ public class QTI21ServiceImpl implements QTI21Service, UserDataDeletable, Initia public List<AssessmentTestSession> getAssessmentTestSessions(RepositoryEntryRef courseEntry, String subIdent, IdentityRef identity) { return testSessionDao.getUserTestSessions(courseEntry, subIdent, identity); } + + @Override + public List<AssessmentTestSessionStatistics> getAssessmentTestSessionsStatistics(RepositoryEntryRef courseEntry, String subIdent, IdentityRef identity) { + return testSessionDao.getUserTestSessionsStatistics(courseEntry, subIdent, identity); + } @Override public AssessmentTestSession getLastAssessmentTestSessions(RepositoryEntryRef courseEntry, String subIdent, diff --git a/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java b/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java index 8aca11b1e3cee000a2ac8bd49d5479fa2c5166fd..4f872e5eb9a100b5c0155684904b5a86414eed7f 100644 --- a/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java +++ b/src/main/java/org/olat/ims/qti21/manager/archive/QTI21ArchiveFormat.java @@ -51,12 +51,11 @@ import org.olat.core.util.openxml.OpenXMLWorksheet.Row; import org.olat.core.util.openxml.workbookstyle.CellStyle; import org.olat.course.CourseFactory; import org.olat.course.ICourse; -import org.olat.course.archiver.QTIExportFormatConfig; +import org.olat.course.archiver.ExportFormat; import org.olat.course.nodes.CourseNode; import org.olat.fileresource.FileResourceManager; import org.olat.ims.qti.export.QTIArchiver; import org.olat.ims.qti.export.QTIExportFormatter; -import org.olat.ims.qti.export.QTIExportItemFormatConfig; import org.olat.ims.qti.export.helper.IdentityAnonymizerCallback; import org.olat.ims.qti21.AssessmentItemSession; import org.olat.ims.qti21.AssessmentResponse; @@ -136,7 +135,7 @@ public class QTI21ArchiveFormat { private IdentityAnonymizerCallback anonymizerCallback; private final QTI21StatisticSearchParams searchParams; - private QTIExportItemFormatConfig exportConfig; + private ExportFormat exportConfig; private List<ItemInfos> itemInfos; private final Map<String, InteractionArchive> interactionArchiveMap = new HashMap<>(); @@ -147,10 +146,10 @@ public class QTI21ArchiveFormat { public QTI21ArchiveFormat(Locale locale, QTI21StatisticSearchParams searchParams) { this.searchParams = searchParams; - if(searchParams.getArchiveOptions() == null || searchParams.getArchiveOptions().getQtiExportItemFormatConfig() == null) { - exportConfig = new QTIExportFormatConfig(true, true, true, true); + if(searchParams.getArchiveOptions() == null || searchParams.getArchiveOptions().getExportFormat() == null) { + exportConfig = new ExportFormat(true, true, true, true, true); } else { - exportConfig = searchParams.getArchiveOptions().getQtiExportItemFormatConfig(); + exportConfig = searchParams.getArchiveOptions().getExportFormat(); } userManager = CoreSpringFactory.getImpl(UserManager.class); @@ -205,11 +204,15 @@ public class QTI21ArchiveFormat { String label = StringHelper.transformDisplayNameToFileSystemName(courseNode.getShortName()) + "_" + Formatter.formatDatetimeWithMinutes(new Date()) + ".xlsx"; - + exportCourseElement(label, exportStream); + } + + public void exportCourseElement(String label, ZipOutputStream exportStream) { + ICourse course = CourseFactory.loadCourse(searchParams.getCourseEntry()); + CourseNode courseNode = course.getRunStructure().getNode(searchParams.getNodeIdent()); if("iqself".equals(courseNode.getType())) { anonymizerCallback = course.getCourseEnvironment().getCoursePropertyManager(); } - export(label, exportStream); } @@ -220,7 +223,7 @@ public class QTI21ArchiveFormat { export(archiveName, exportStream); } - private void export(String filename, ZipOutputStream exportStream) { + public void export(String filename, ZipOutputStream exportStream) { try { exportStream.putNextEntry(new ZipEntry(filename)); exportWorkbook(new ShieldOutputStream(exportStream)); @@ -305,7 +308,7 @@ public class QTI21ArchiveFormat { for(int i=0; i<infos.size(); i++) { int delta = col; ItemInfos item = infos.get(i); - if (exportConfig.hasResponseCols() || exportConfig.hasPointCol() || exportConfig.hasTimeCols()) { + if (exportConfig.isResponseCols() || exportConfig.isPointCol() || exportConfig.isTimeCols() || exportConfig.isCommentCol()) { List<Interaction> interactions = item.getInteractions(); for(int j=0; j<interactions.size(); j++) { Interaction interaction = interactions.get(j); @@ -313,13 +316,16 @@ public class QTI21ArchiveFormat { .writeHeader1(item.getAssessmentItem(), interaction, i, j, header1Row, col, workbook); } } - if (!exportConfig.hasResponseCols()) { + if (!exportConfig.isResponseCols()) { col -= col - delta; } - if (exportConfig.hasPointCol()) { + if (exportConfig.isPointCol()) { + col++; + } + if (exportConfig.isCommentCol()) { col++; } - if (exportConfig.hasTimeCols()) { + if (exportConfig.isTimeCols()) { col += anonymizerCallback != null ? 1 : 2; } } @@ -358,7 +364,7 @@ public class QTI21ArchiveFormat { List<ItemInfos> infos = getItemInfos(); for(int i=0; i<infos.size(); i++) { ItemInfos info = infos.get(i); - if (exportConfig.hasResponseCols()) { + if (exportConfig.isResponseCols()) { List<Interaction> interactions = info.getInteractions(); for(int j=0; j<interactions.size(); j++) { Interaction interaction = interactions.get(j); @@ -366,10 +372,13 @@ public class QTI21ArchiveFormat { .writeHeader2(info.getAssessmentItem(), interaction, i, j, header2Row, col, workbook); } } - if (exportConfig.hasPointCol()) { + if (exportConfig.isPointCol()) { header2Row.addCell(col++, translator.translate("item.score"), headerStyle); } - if (exportConfig.hasTimeCols()) { + if (exportConfig.isCommentCol()) { + header2Row.addCell(col++, translator.translate("item.comment"), headerStyle); + } + if (exportConfig.isTimeCols()) { if (anonymizerCallback == null){ header2Row.addCell(col++, translator.translate("item.start"), headerStyle); } @@ -455,7 +464,7 @@ public class QTI21ArchiveFormat { } else { col++; } - if (anonymizerCallback == null){ + if(anonymizerCallback == null) { dataRow.addCell(col++, testSession.getCreationDate(), workbook.getStyles().getDateStyle()); } dataRow.addCell(col++, toDurationInMilliseconds(testSession.getDuration()), null); @@ -467,11 +476,11 @@ public class QTI21ArchiveFormat { String itemRefIdentifier = itemRef.getIdentifier().toString(); AssessmentItemSession itemSession = responses.getItemSession(itemRefIdentifier); - if (exportConfig.hasResponseCols()) { + if (exportConfig.isResponseCols()) { List<Interaction> interactions = info.getInteractions(); for(int j=0; j<interactions.size(); j++) { Interaction interaction = interactions.get(j); - AssessmentResponse response = responses + AssessmentResponse response = responses .getResponse(itemRefIdentifier, interaction.getResponseIdentifier()); col = interactionArchiveMap.get(interaction.getQtiClassName()) .writeInteractionData(info.getAssessmentItem(), response, interaction, j, dataRow, col, workbook); @@ -480,17 +489,27 @@ public class QTI21ArchiveFormat { //score, start, duration if (itemSession == null) { - if (exportConfig.hasPointCol()) { + if (exportConfig.isPointCol()) { + col++; + } + if (exportConfig.isCommentCol()) { col++; } - if (exportConfig.hasTimeCols()) { + if (exportConfig.isTimeCols()) { col += anonymizerCallback != null ? 1 : 2; } } else { - if (exportConfig.hasPointCol()) { - dataRow.addCell(col++, itemSession.getScore(), null); + if (exportConfig.isPointCol()) { + if(itemSession.getManualScore() != null) { + dataRow.addCell(col++, itemSession.getManualScore(), null); + } else { + dataRow.addCell(col++, itemSession.getScore(), null); + } + } + if (exportConfig.isCommentCol()) { + dataRow.addCell(col++, itemSession.getCoachComment(), null); } - if (exportConfig.hasTimeCols()) { + if (exportConfig.isTimeCols()) { if (anonymizerCallback == null){ dataRow.addCell(col++, itemSession.getCreationDate(), workbook.getStyles().getTimeStyle()); } diff --git a/src/main/java/org/olat/ims/qti21/manager/openxml/QTI21WordExport.java b/src/main/java/org/olat/ims/qti21/manager/openxml/QTI21WordExport.java index 85d65f2e5517dbc76f22b44ae02ddc50e56b49f3..f6fa794d74dd1345cafc12a5fee00c3b75ca0f3b 100644 --- a/src/main/java/org/olat/ims/qti21/manager/openxml/QTI21WordExport.java +++ b/src/main/java/org/olat/ims/qti21/manager/openxml/QTI21WordExport.java @@ -48,7 +48,11 @@ import org.olat.core.logging.Tracing; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.core.util.openxml.HTMLToOpenXMLHandler; +import org.olat.core.util.openxml.OpenXMLConstants; import org.olat.core.util.openxml.OpenXMLDocument; +import org.olat.core.util.openxml.OpenXMLDocument.Border; +import org.olat.core.util.openxml.OpenXMLDocument.Indent; +import org.olat.core.util.openxml.OpenXMLDocument.Spacing; import org.olat.core.util.openxml.OpenXMLDocument.Style; import org.olat.core.util.openxml.OpenXMLDocument.Unit; import org.olat.core.util.openxml.OpenXMLDocumentWriter; @@ -61,7 +65,6 @@ import org.olat.ims.qti21.QTI21Constants; import org.olat.ims.qti21.manager.CorrectResponsesUtil; import org.olat.ims.qti21.model.QTI21QuestionType; import org.olat.ims.qti21.model.xml.AssessmentHtmlBuilder; -import org.olat.ims.qti21.model.xml.AssessmentTestBuilder; import org.olat.ims.qti21.model.xml.QtiNodesExtractor; import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder; import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.NumericalEntry; @@ -293,10 +296,10 @@ public class QTI21WordExport implements MediaResource { // pass rule if(outcomeRule instanceof OutcomeCondition) { OutcomeCondition outcomeCondition = (OutcomeCondition)outcomeRule; - boolean findIf = AssessmentTestBuilder.findSetOutcomeValue(outcomeCondition.getOutcomeIf(), QTI21Constants.PASS_IDENTIFIER); - boolean findElse = AssessmentTestBuilder.findSetOutcomeValue(outcomeCondition.getOutcomeElse(), QTI21Constants.PASS_IDENTIFIER); + boolean findIf = QtiNodesExtractor.findSetOutcomeValue(outcomeCondition.getOutcomeIf(), QTI21Constants.PASS_IDENTIFIER); + boolean findElse = QtiNodesExtractor.findSetOutcomeValue(outcomeCondition.getOutcomeElse(), QTI21Constants.PASS_IDENTIFIER); if(findIf && findElse) { - Double cutValue = AssessmentTestBuilder.extractCutValue(outcomeCondition.getOutcomeIf()); + Double cutValue = QtiNodesExtractor.extractCutValue(outcomeCondition.getOutcomeIf()); String cutValueLabel = translator.translate("cut.value"); document.appendText(cutValueLabel + ": " + AssessmentHelper.getRoundedScore(cutValue), true); } @@ -664,14 +667,321 @@ public class QTI21WordExport implements MediaResource { } private void startMatch(MatchInteraction matchInteraction) { + List<String> cssClasses = matchInteraction.getClassAttr(); + if(cssClasses.contains(QTI21Constants.CSS_MATCH_DRAG_AND_DROP)) { + if(hasClass(matchInteraction, QTI21Constants.CSS_MATCH_SOURCE_TOP) + || hasClass(matchInteraction, QTI21Constants.CSS_MATCH_SOURCE_BOTTOM)) { + startMatchDragAndDropHorizontal(matchInteraction); + } else { + startMatchDragAndDropVertical(matchInteraction); + } + } else { + startMatchMatrix(matchInteraction); + } + } + + + private void startMatchDragAndDropHorizontal(MatchInteraction matchInteraction) { + SimpleMatchSet sourcesMatchSet = matchInteraction.getSimpleMatchSets().get(0); + SimpleMatchSet targetsMatchSet = matchInteraction.getSimpleMatchSets().get(1); + List<SimpleAssociableChoice> sourcesAssociableChoices = sourcesMatchSet.getSimpleAssociableChoices(); + List<SimpleAssociableChoice> targetsAssociableChoices = targetsMatchSet.getSimpleAssociableChoices(); + if(hasClass(matchInteraction, QTI21Constants.CSS_MATCH_SOURCE_BOTTOM)) { + appendMatchTargetsHorizontal(targetsAssociableChoices, sourcesAssociableChoices, matchInteraction); + appendParagraph(new Spacing(20,20)); + appendMatchSourcesHorizontal(sourcesAssociableChoices); + } else { + appendMatchSourcesHorizontal(sourcesAssociableChoices); + appendParagraph(new Spacing(20,20)); + appendMatchTargetsHorizontal(targetsAssociableChoices, sourcesAssociableChoices, matchInteraction); + } + } + + private void appendMatchSourcesHorizontal(List<SimpleAssociableChoice> choices) { + String backgroundColor = "FFFFFF"; + Border sourceBorder = new Border(0, 6, "E9EAF2"); + + startTable(OpenXMLConstants.TABLE_FULL_WIDTH_DXA); + currentTable.addRowEl(); + createCellHeader(translator.translate("form.imd.layout.match.sources"), OpenXMLConstants.TABLE_FULL_WIDTH_DXA, 10); + currentTable.closeRow(); + + for(SimpleAssociableChoice choice:choices) { + currentTable.addRowEl(); + Element cell = factory.createTableCell(backgroundColor, sourceBorder, OpenXMLConstants.TABLE_FULL_WIDTH_PCT - 10, Unit.pct); + Node contentCell = currentTable.addCellEl(cell, 1); + + String html = htmlBuilder.flowStaticString(choice.getFlowStatics()); + List<Node> nodes = appendHtmlText(html, factory.createParagraphEl(), 7.5); + if(nodes.size() == 0) { + contentCell.appendChild(factory.createParagraphEl()); + } else { + for(Node node:nodes) { + contentCell.appendChild(node); + } + contentCell.appendChild(factory.createParagraphEl()); + } + currentTable.closeRow(); + } + endTable(); + } + + private void appendMatchTargetsHorizontal(List<SimpleAssociableChoice> targetChoices, List<SimpleAssociableChoice> sourceChoices, + MatchInteraction matchInteraction) { + + String backgroundColor = "E9EAF2"; + String dropBackgroundColor = "FFFFFF"; + Border targetBorder = new Border(0, 6, "E9EAF2"); + Border dropBorder = new Border(0, 6, "EEEEEE"); + int columnWidthPct = OpenXMLConstants.TABLE_FULL_WIDTH_PCT; + + startTable(OpenXMLConstants.TABLE_FULL_WIDTH_DXA); + currentTable.addRowEl(); + createCellHeader(translator.translate("form.imd.layout.match.targets.short"), OpenXMLConstants.TABLE_FULL_WIDTH_DXA, 10); + currentTable.closeRow(); + + for(SimpleAssociableChoice choice:targetChoices) { + currentTable.addRowEl(); + Node contentCell = currentTable.addCellEl(factory.createTableCell(backgroundColor, targetBorder, columnWidthPct - 10, Unit.pct), 1); + + String html = htmlBuilder.flowStaticString(choice.getFlowStatics()); + List<Node> nodes = appendHtmlText(html, factory.createParagraphEl(), 7.5); + for(Node node:nodes) { + contentCell.appendChild(node); + } + + // add the drop panels + Element wrapEl = factory.createParagraphEl(); + HTMLToOpenXMLHandler dropTable = new HTMLToOpenXMLHandler(factory, wrapEl, false); + dropTable.setMaxWidthCm(7); + dropTable.startTable(columnWidthPct - 50); + if(withResponses) { + for(SimpleAssociableChoice sourceChoice:sourceChoices) { + boolean correct = isCorrectMatchResponse(sourceChoice.getIdentifier(), choice.getIdentifier(), matchInteraction); + if(correct) { + dropTable.startCurrentTableRow(); + Node answerCell = dropTable.addCell(factory.createTableCell(dropBackgroundColor, targetBorder, columnWidthPct - 10, Unit.pct)); + String answerHtml = htmlBuilder.flowStaticString(sourceChoice.getFlowStatics()); + List<Node> answerNodes = appendHtmlText(answerHtml, factory.createParagraphEl(), 7.5); + if(answerNodes.size() == 0) { + answerCell.appendChild(factory.createParagraphEl()); + } else { + for(Node answerNode:answerNodes) { + answerCell.appendChild(answerNode); + } + } + dropTable.closeCurrentTableRow(); + } + } + } else { + dropTable.startCurrentTableRow(); + Node dropCell = dropTable.addCell(factory.createTableCell(dropBackgroundColor, dropBorder, columnWidthPct - 10, Unit.pct)); + dropCell.appendChild(factory.createParagraphEl()); + dropCell.appendChild(factory.createParagraphEl()); + dropCell.appendChild(factory.createParagraphEl()); + dropTable.closeCurrentTableRow(); + } + dropTable.endTable(); + + List<Node> dropNodes = dropTable.getContent(); + for(Node dropNode:dropNodes) { + contentCell.appendChild(dropNode); + } + contentCell.appendChild(factory.createParagraphEl()); + currentTable.closeRow(); + } + endTable(); + } + + /** + * The sources are in one column, the targets are in the second. + * @param matchInteraction + */ + private void startMatchDragAndDropVertical(MatchInteraction matchInteraction) { + SimpleMatchSet sourcesMatchSet = matchInteraction.getSimpleMatchSets().get(0); + SimpleMatchSet targetsMatchSet = matchInteraction.getSimpleMatchSets().get(1); + List<SimpleAssociableChoice> sourcesAssociableChoices = sourcesMatchSet.getSimpleAssociableChoices(); + List<SimpleAssociableChoice> targetsAssociableChoices = targetsMatchSet.getSimpleAssociableChoices(); + + // calculate the width of the table () and of its columns + int tableWidthDxa = OpenXMLConstants.TABLE_FULL_WIDTH_DXA; + int tableWidthPct = OpenXMLConstants.TABLE_FULL_WIDTH_PCT; + int numOfColumns = 2; + int columnWidthDxa = tableWidthDxa / numOfColumns; + int columnWidthPct = tableWidthPct / numOfColumns; + + Integer[] columnsWidth = new Integer[numOfColumns]; + for(int i=numOfColumns; i-->0; ) { + columnsWidth[i] = columnWidthDxa; + } + startTable(columnsWidth); + + if(hasClass(matchInteraction, QTI21Constants.CSS_MATCH_SOURCE_RIGHT)) { + currentTable.addRowEl(); + createCellHeader(translator.translate("form.imd.layout.match.targets.short"), columnWidthPct, 50); + createCellHeader(translator.translate("form.imd.layout.match.sources"), columnWidthPct, 50); + currentTable.closeRow(); + + currentTable.addRowEl(); + Element targetsCell = currentTable.addCellEl(factory.createTableCell(null, columnWidthPct, Unit.pct), 1); + appendMatchTargetsVertical(targetsAssociableChoices, sourcesAssociableChoices, matchInteraction, columnWidthPct, targetsCell); + Element sourcesCell = currentTable.addCellEl(factory.createTableCell(null, columnWidthPct, Unit.pct), 1); + appendMatchSourcesVertical(sourcesAssociableChoices, columnWidthPct, sourcesCell); + currentTable.closeRow(); + } else { + currentTable.addRowEl(); + createCellHeader(translator.translate("form.imd.layout.match.sources"), columnWidthPct, 50); + createCellHeader(translator.translate("form.imd.layout.match.targets.short"), columnWidthPct, 50); + currentTable.closeRow(); + + currentTable.addRowEl(); + Element sourcesCell = currentTable.addCellEl(factory.createTableCell(null, columnWidthPct, Unit.pct), 1); + appendMatchSourcesVertical(sourcesAssociableChoices, columnWidthPct, sourcesCell); + Element targetsCell = currentTable.addCellEl(factory.createTableCell(null, columnWidthPct, Unit.pct), 1); + appendMatchTargetsVertical(targetsAssociableChoices, sourcesAssociableChoices, matchInteraction, columnWidthPct, targetsCell); + currentTable.closeRow(); + } + + endTable(); + } + + private void createCellHeader(String header, int columnWidthPct, int indent) { + Element sourcesHeaderCell = currentTable.addCellEl(factory.createTableCell(null, columnWidthPct, Unit.pct), 1); + + Element paragraphEl = factory.createParagraphEl(new Indent(indent), null, null, null); + Element runEl = factory.createRunEl(); + runEl.appendChild(factory.createRunPrefsEl(Style.bold)); + runEl.appendChild(factory.createTextEl(header)); + + paragraphEl.appendChild(runEl); + sourcesHeaderCell.appendChild(paragraphEl); + } + + private boolean hasClass(Interaction interaction, String cssClass) { + List<String> cssClassses = interaction.getClassAttr(); + return cssClassses != null && cssClassses.contains(cssClass); + } + + private void appendMatchSourcesVertical(List<SimpleAssociableChoice> choices, int columnWidthPct, Element sourcesCell) { + Element wrapEl = factory.createParagraphEl(); + + String backgroundColor = "FFFFFF"; + Border sourceBorder = new Border(0, 6, "E9EAF2"); + + HTMLToOpenXMLHandler innerTable = new HTMLToOpenXMLHandler(factory, wrapEl, false); + innerTable.setMaxWidthCm(7.5); + innerTable.startTable(columnWidthPct); + for(SimpleAssociableChoice choice:choices) { + innerTable.startCurrentTableRow(); + Node contentCell = innerTable.addCell(factory.createTableCell(backgroundColor, sourceBorder, columnWidthPct - 10, Unit.pct)); + + String html = htmlBuilder.flowStaticString(choice.getFlowStatics()); + List<Node> nodes = appendHtmlText(html, factory.createParagraphEl(), 7.5); + if(nodes.size() == 0) { + contentCell.appendChild(factory.createParagraphEl()); + } else { + for(Node node:nodes) { + contentCell.appendChild(node); + } + contentCell.appendChild(factory.createParagraphEl()); + } + innerTable.closeCurrentTableRow(); + } + innerTable.endTable(); + + List<Node> innerNodes = innerTable.getContent(); + for(int i=1; i< innerNodes.size(); i++) { + sourcesCell.appendChild(innerNodes.get(i)); + } + sourcesCell.appendChild(factory.createParagraphEl()); + } + + private void appendMatchTargetsVertical(List<SimpleAssociableChoice> targetChoices, List<SimpleAssociableChoice> sourceChoices, + MatchInteraction matchInteraction, int columnWidthPct, Element sourcesCell) { + + String backgroundColor = "E9EAF2"; + String dropBackgroundColor = "FFFFFF"; + Border targetBorder = new Border(0, 6, "E9EAF2"); + Border dropBorder = new Border(0, 6, "EEEEEE"); + Element wrapEl = factory.createParagraphEl(); + + HTMLToOpenXMLHandler innerTable = new HTMLToOpenXMLHandler(factory, wrapEl, false); + innerTable.setMaxWidthCm(7.5); + innerTable.startTable(columnWidthPct); + for(SimpleAssociableChoice choice:targetChoices) { + innerTable.startCurrentTableRow(); + Node contentCell = innerTable.addCell(factory.createTableCell(backgroundColor, targetBorder, columnWidthPct - 10, Unit.pct)); + + String html = htmlBuilder.flowStaticString(choice.getFlowStatics()); + List<Node> nodes = appendHtmlText(html, factory.createParagraphEl(), 7.5); + for(Node node:nodes) { + contentCell.appendChild(node); + } + + // add the drop panels + HTMLToOpenXMLHandler dropTable = new HTMLToOpenXMLHandler(factory, wrapEl, false); + dropTable.setMaxWidthCm(7); + dropTable.startTable(columnWidthPct - 50); + if(withResponses) { + for(SimpleAssociableChoice sourceChoice:sourceChoices) { + boolean correct = isCorrectMatchResponse(sourceChoice.getIdentifier(), choice.getIdentifier(), matchInteraction); + if(correct) { + dropTable.startCurrentTableRow(); + Node answerCell = dropTable.addCell(factory.createTableCell(dropBackgroundColor, targetBorder, columnWidthPct - 10, Unit.pct)); + String answerHtml = htmlBuilder.flowStaticString(sourceChoice.getFlowStatics()); + List<Node> answerNodes = appendHtmlText(answerHtml, factory.createParagraphEl(), 7.5); + if(answerNodes.size() == 0) { + answerCell.appendChild(factory.createParagraphEl()); + } else { + for(Node answerNode:answerNodes) { + answerCell.appendChild(answerNode); + } + } + dropTable.closeCurrentTableRow(); + } + } + } else { + dropTable.startCurrentTableRow(); + Node dropCell = dropTable.addCell(factory.createTableCell(dropBackgroundColor, dropBorder, columnWidthPct - 10, Unit.pct)); + appendDropPlaceholder(dropCell); + dropTable.closeCurrentTableRow(); + } + dropTable.endTable(); + + List<Node> dropNodes = dropTable.getContent(); + for(int i=1; i<dropNodes.size(); i++) { + contentCell.appendChild(dropNodes.get(i)); + } + contentCell.appendChild(factory.createParagraphEl()); + innerTable.closeCurrentTableRow(); + } + innerTable.endTable(); + + List<Node> innerNodes = innerTable.getContent(); + for(int i=1; i<innerNodes.size(); i++) { + sourcesCell.appendChild(innerNodes.get(i)); + } + sourcesCell.appendChild(factory.createParagraphEl()); + } + + private void appendDropPlaceholder(Node cell) { + Element paragraphEl = factory.createParagraphEl(); + Node runEl = paragraphEl.appendChild(factory.createRunEl()); + runEl.appendChild(factory.createBreakEl()); + runEl.appendChild(factory.createBreakEl()); + runEl.appendChild(factory.createBreakEl()); + cell.appendChild(paragraphEl); + } + + private void startMatchMatrix(MatchInteraction matchInteraction) { SimpleMatchSet questionMatchSetVertical = matchInteraction.getSimpleMatchSets().get(0); SimpleMatchSet questionMatchSetHorizontal = matchInteraction.getSimpleMatchSets().get(1); List<SimpleAssociableChoice> horizontalAssociableChoices = questionMatchSetHorizontal.getSimpleAssociableChoices(); List<SimpleAssociableChoice> verticalAssociableChoices = questionMatchSetVertical.getSimpleAssociableChoices(); // calculate the width of the table () and of its columns - int tableWidthDxa = 11294; - int tableWidthPct = 4858; + int tableWidthDxa = OpenXMLConstants.TABLE_FULL_WIDTH_DXA; + int tableWidthPct = OpenXMLConstants.TABLE_FULL_WIDTH_PCT; int numOfColumns = horizontalAssociableChoices.size() + 1; int columnWidthDxa = tableWidthDxa / numOfColumns; int columnWidthPct = tableWidthPct / numOfColumns; @@ -721,13 +1031,19 @@ public class QTI21WordExport implements MediaResource { } } + public List<Node> appendHtmlText(String html, Element wrapEl) { + return appendHtmlText(html, wrapEl, OpenXMLConstants.PAGE_FULL_WIDTH_CM); + } + + public List<Node> appendHtmlText(String html, Element wrapEl, double widthCm) { if(!StringHelper.containsNonWhitespace(html)) { return Collections.emptyList(); } try { SAXParser parser = new SAXParser(); HTMLToOpenXMLHandler handler = new HTMLToOpenXMLHandler(factory, wrapEl, false); + handler.setMaxWidthCm(widthCm); parser.setContentHandler(handler); parser.parse(new InputSource(new StringReader(html))); return handler.getContent(); diff --git a/src/main/java/org/olat/ims/qti21/model/QTI21QuestionType.java b/src/main/java/org/olat/ims/qti21/model/QTI21QuestionType.java index b25f03ad9f96c043e156198c886942667bb18087..cf588220b3d8b21dbd4aeddfe74c91e9f5cb3486 100644 --- a/src/main/java/org/olat/ims/qti21/model/QTI21QuestionType.java +++ b/src/main/java/org/olat/ims/qti21/model/QTI21QuestionType.java @@ -50,6 +50,7 @@ public enum QTI21QuestionType { mc(true, "mc", "o_mi_qtimc", QuestionType.MC), kprim(true, "kprim", "o_mi_qtikprim", QuestionType.KPRIM), match(true, "match", "o_mi_qtimatch", QuestionType.MATCH), + matchdraganddrop(true, "matchdraganddrop", "o_mi_qtimatch_draganddrop", QuestionType.MATCHDRAGANDDROP), fib(true, "fib", "o_mi_qtifib", QuestionType.FIB), numerical(true, "numerical", "o_mi_qtinumerical", QuestionType.NUMERICAL), hotspot(true, "hotspot", "o_mi_qtihotspot", QuestionType.HOTSPOT), @@ -209,7 +210,9 @@ public enum QTI21QuestionType { ResponseDeclaration responseDeclaration = item.getResponseDeclaration(interaction.getResponseIdentifier()); String responseIdentifier = responseDeclaration.getIdentifier().toString(); Cardinality cardinalty = responseDeclaration.getCardinality(); - if(cardinalty.isMultiple()) { + if(hasClass(interaction, "match_dnd")) { + return QTI21QuestionType.matchdraganddrop; + } else if(cardinalty.isMultiple()) { if(responseIdentifier.startsWith("KPRIM_")) { return QTI21QuestionType.kprim; } else { @@ -239,4 +242,9 @@ public enum QTI21QuestionType { return QTI21QuestionType.unkown; } } + + private static final boolean hasClass(Interaction interaction, String cssClass) { + List<String> cssClasses = interaction.getClassAttr(); + return cssClasses != null && cssClasses.size() > 0 && cssClasses.contains(cssClass); + } } diff --git a/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentItemSessionImpl.java b/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentItemSessionImpl.java index 154180128ffbba67b42e556265d1cdb6443da923..fb6ad7e352ae823f803ccb019fed6858f3459840 100644 --- a/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentItemSessionImpl.java +++ b/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentItemSessionImpl.java @@ -79,6 +79,8 @@ public class AssessmentItemSessionImpl implements AssessmentItemSession, Persist @Column(name="q_manual_score", nullable=true, insertable=true, updatable=true) private BigDecimal manualScore; + @Column(name="q_coach_comment", nullable=true, insertable=true, updatable=true) + private String coachComment; @ManyToOne(targetEntity=AssessmentTestSessionImpl.class,fetch=FetchType.LAZY,optional=false) @JoinColumn(name="fk_assessmenttest_session", nullable=false, insertable=true, updatable=false) @@ -143,14 +145,24 @@ public class AssessmentItemSessionImpl implements AssessmentItemSession, Persist this.score = score; } + @Override public BigDecimal getManualScore() { return manualScore; } + @Override public void setManualScore(BigDecimal manualScore) { this.manualScore = manualScore; } + public String getCoachComment() { + return coachComment; + } + + public void setCoachComment(String coachComment) { + this.coachComment = coachComment; + } + @Override public String getAssessmentItemIdentifier() { return assessmentItemIdentifier; @@ -160,6 +172,7 @@ public class AssessmentItemSessionImpl implements AssessmentItemSession, Persist this.assessmentItemIdentifier = assessmentItemIdentifier; } + @Override public String getSectionIdentifier() { return sectionIdentifier; } @@ -168,6 +181,7 @@ public class AssessmentItemSessionImpl implements AssessmentItemSession, Persist this.sectionIdentifier = sectionIdentifier; } + @Override public String getTestPartIdentifier() { return testPartIdentifier; } @@ -176,6 +190,7 @@ public class AssessmentItemSessionImpl implements AssessmentItemSession, Persist this.testPartIdentifier = testPartIdentifier; } + @Override public AssessmentTestSession getAssessmentTestSession() { return assessmentTestSession; } diff --git a/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentTestSessionStatistics.java b/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentTestSessionStatistics.java new file mode 100644 index 0000000000000000000000000000000000000000..f3c0e9bd99eed65f7b48225ce1d707060bc52815 --- /dev/null +++ b/src/main/java/org/olat/ims/qti21/model/jpa/AssessmentTestSessionStatistics.java @@ -0,0 +1,47 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.ims.qti21.model.jpa; + +import org.olat.ims.qti21.AssessmentTestSession; + +/** + * + * Initial date: 26 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class AssessmentTestSessionStatistics { + + private final AssessmentTestSession testSession; + private final int numOfCorrectedItems; + + public AssessmentTestSessionStatistics(AssessmentTestSession testSession, int numOfCorrectedItems) { + this.testSession = testSession; + this.numOfCorrectedItems = numOfCorrectedItems; + } + + public AssessmentTestSession getTestSession() { + return testSession; + } + + public int getNumOfCorrectedItems() { + return numOfCorrectedItems; + } +} diff --git a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentHtmlBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentHtmlBuilder.java index 2d103637fe363fa9fa78aea67a8be1c1a9490749..9b19ebdd7da2a89265465c91c4e14cfb7db44823 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentHtmlBuilder.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentHtmlBuilder.java @@ -214,7 +214,9 @@ public class AssessmentHtmlBuilder { AttributesImpl attributesCleaned = new AttributesImpl(""); for(int i=0; i<attributes.getLength(); i++) { String name = attributes.getLocalName(i); - if(!"openolattype".equalsIgnoreCase(name)) { + if(!"openolattype".equalsIgnoreCase(name) + && !"data-qti-solution".equalsIgnoreCase(name) + && !"data-qti-solution-empty".equalsIgnoreCase(name)) { String value = attributes.getValue(i); attributesCleaned.addAttribute(name, value); } diff --git a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentTestBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentTestBuilder.java index 2f16d5bebba17981fdf13bdf0929ad7f3f1b472c..f36e4a63ce44624d0e93674d8ed84faff9401639 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentTestBuilder.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentTestBuilder.java @@ -35,12 +35,9 @@ import uk.ac.ed.ph.jqtiplus.node.test.AssessmentTest; import uk.ac.ed.ph.jqtiplus.node.test.TestFeedback; import uk.ac.ed.ph.jqtiplus.node.test.TimeLimits; import uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.OutcomeCondition; -import uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.OutcomeConditionChild; -import uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.OutcomeIf; import uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.OutcomeProcessing; import uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.OutcomeRule; import uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.SetOutcomeValue; -import uk.ac.ed.ph.jqtiplus.types.Identifier; import uk.ac.ed.ph.jqtiplus.value.FloatValue; /** @@ -101,10 +98,10 @@ public class AssessmentTestBuilder { // pass rule if(outcomeRule instanceof OutcomeCondition) { OutcomeCondition outcomeCondition = (OutcomeCondition)outcomeRule; - boolean findIf = findSetOutcomeValue(outcomeCondition.getOutcomeIf(), QTI21Constants.PASS_IDENTIFIER); - boolean findElse = findSetOutcomeValue(outcomeCondition.getOutcomeElse(), QTI21Constants.PASS_IDENTIFIER); + boolean findIf = QtiNodesExtractor.findSetOutcomeValue(outcomeCondition.getOutcomeIf(), QTI21Constants.PASS_IDENTIFIER); + boolean findElse = QtiNodesExtractor.findSetOutcomeValue(outcomeCondition.getOutcomeElse(), QTI21Constants.PASS_IDENTIFIER); if(findIf && findElse) { - cutValue = extractCutValue(outcomeCondition.getOutcomeIf()); + cutValue = QtiNodesExtractor.extractCutValue(outcomeCondition.getOutcomeIf()); cutValueRule = outcomeCondition; } } @@ -112,38 +109,6 @@ public class AssessmentTestBuilder { } } - public static Double extractCutValue(OutcomeIf outcomeIf) { - if(outcomeIf != null && outcomeIf.getExpressions().size() > 0) { - Expression gte = outcomeIf.getExpressions().get(0); - if(gte.getExpressions().size() > 1) { - Expression baseValue = gte.getExpressions().get(1); - if(baseValue instanceof BaseValue) { - BaseValue value = (BaseValue)baseValue; - if(value.getSingleValue() instanceof FloatValue) { - return ((FloatValue)value.getSingleValue()).doubleValue(); - } - } - } - } - return null; - } - - public static boolean findSetOutcomeValue(OutcomeConditionChild outcomeConditionChild, Identifier identifier) { - if(outcomeConditionChild == null - || outcomeConditionChild.getOutcomeRules() == null - || outcomeConditionChild.getOutcomeRules().isEmpty()) return false; - - List<OutcomeRule> outcomeRules = outcomeConditionChild.getOutcomeRules(); - for(OutcomeRule outcomeRule:outcomeRules) { - SetOutcomeValue setOutcomeValue = (SetOutcomeValue)outcomeRule; - if(identifier.equals(setOutcomeValue.getIdentifier())) { - return true; - } - } - - return false; - } - private void extractFeedbacks() { List<TestFeedback> feedbacks = assessmentTest.getTestFeedbacks(); for(TestFeedback feedback:feedbacks) { diff --git a/src/main/java/org/olat/ims/qti21/model/xml/QtiNodesExtractor.java b/src/main/java/org/olat/ims/qti21/model/xml/QtiNodesExtractor.java index 6e5f7b6d01c7ae52b46cb134ca6f4a9878a87688..50e65a8911c3c95538aea9355abda17db779512b 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/QtiNodesExtractor.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/QtiNodesExtractor.java @@ -26,6 +26,10 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import org.olat.ims.qti21.QTI21Constants; + +import uk.ac.ed.ph.jqtiplus.node.expression.Expression; +import uk.ac.ed.ph.jqtiplus.node.expression.general.BaseValue; import uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem; import uk.ac.ed.ph.jqtiplus.node.item.CorrectResponse; import uk.ac.ed.ph.jqtiplus.node.outcome.declaration.OutcomeDeclaration; @@ -33,6 +37,11 @@ import uk.ac.ed.ph.jqtiplus.node.shared.BaseTypeAndCardinality; import uk.ac.ed.ph.jqtiplus.node.shared.FieldValue; import uk.ac.ed.ph.jqtiplus.node.shared.declaration.DefaultValue; import uk.ac.ed.ph.jqtiplus.node.test.AssessmentTest; +import uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.OutcomeCondition; +import uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.OutcomeConditionChild; +import uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.OutcomeIf; +import uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.OutcomeRule; +import uk.ac.ed.ph.jqtiplus.node.test.outcome.processing.SetOutcomeValue; import uk.ac.ed.ph.jqtiplus.types.Identifier; import uk.ac.ed.ph.jqtiplus.value.Cardinality; import uk.ac.ed.ph.jqtiplus.value.DirectedPairValue; @@ -124,5 +133,54 @@ public interface QtiNodesExtractor { } } } - + + public static Double extractCutValue(AssessmentTest assessmentTest) { + Double cutValue = null; + if(assessmentTest.getOutcomeProcessing() != null) { + List<OutcomeRule> outcomeRules = assessmentTest.getOutcomeProcessing().getOutcomeRules(); + for(OutcomeRule outcomeRule:outcomeRules) { + if(outcomeRule instanceof OutcomeCondition) { + OutcomeCondition outcomeCondition = (OutcomeCondition)outcomeRule; + boolean findIf = findSetOutcomeValue(outcomeCondition.getOutcomeIf(), QTI21Constants.PASS_IDENTIFIER); + boolean findElse = findSetOutcomeValue(outcomeCondition.getOutcomeElse(), QTI21Constants.PASS_IDENTIFIER); + if(findIf && findElse) { + cutValue = extractCutValue(outcomeCondition.getOutcomeIf()); + } + } + } + } + return cutValue; + } + + public static boolean findSetOutcomeValue(OutcomeConditionChild outcomeConditionChild, Identifier identifier) { + if(outcomeConditionChild == null + || outcomeConditionChild.getOutcomeRules() == null + || outcomeConditionChild.getOutcomeRules().isEmpty()) return false; + + List<OutcomeRule> outcomeRules = outcomeConditionChild.getOutcomeRules(); + for(OutcomeRule outcomeRule:outcomeRules) { + SetOutcomeValue setOutcomeValue = (SetOutcomeValue)outcomeRule; + if(identifier.equals(setOutcomeValue.getIdentifier())) { + return true; + } + } + + return false; + } + + public static Double extractCutValue(OutcomeIf outcomeIf) { + if(outcomeIf != null && outcomeIf.getExpressions().size() > 0) { + Expression gte = outcomeIf.getExpressions().get(0); + if(gte.getExpressions().size() > 1) { + Expression baseValue = gte.getExpressions().get(1); + if(baseValue instanceof BaseValue) { + BaseValue value = (BaseValue)baseValue; + if(value.getSingleValue() instanceof FloatValue) { + return ((FloatValue)value.getSingleValue()).doubleValue(); + } + } + } + } + return null; + } } diff --git a/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java index 146c07f0cd0aa16a9ef1447a9127d1fc48183534..4945c6351350e71b5df2fe3030a23aa1557763a7 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/interactions/FIBAssessmentItemBuilder.java @@ -167,20 +167,21 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { } } - private void extractQuestions() { + public String extractQuestions() { StringOutput sb = new StringOutput(); List<Block> blocks = assessmentItem.getItemBody().getBlocks(); for(Block block:blocks) { qtiSerializer.serializeJqtiObject(block, new StreamResult(sb)); } question = sb.toString(); + return question; } /** * We loop around the textEntryInteraction, search the responseDeclaration. responseDeclaration * of type string are gap text, of type float are numerical. */ - private void extractEntriesSettingsFromResponseDeclaration() { + public void extractEntriesSettingsFromResponseDeclaration() { DoubleAdder mappedScore = new DoubleAdder(); AtomicInteger countAlternatives = new AtomicInteger(0); @@ -199,6 +200,9 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { extractTextEntrySettingsFromResponseDeclaration(textEntry, responseDeclaration, countAlternatives, mappedScore); String marker = "responseIdentifier=\"" + interaction.getResponseIdentifier().toString() + "\""; question = question.replace(marker, marker + " openolatType=\"string\""); + if(StringHelper.containsNonWhitespace(textEntry.getSolution())) { + question = question.replace(marker, marker + " data-qti-solution=\"" + StringHelper.escapeHtml(textEntry.getSolution()) + "\""); + } entry = textEntry; } else if(responseDeclaration.hasBaseType(BaseType.FLOAT) && responseDeclaration.hasCardinality(Cardinality.SINGLE)) { @@ -208,6 +212,9 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { String marker = "responseIdentifier=\"" + interaction.getResponseIdentifier().toString() + "\""; question = question.replace(marker, marker + " openolatType=\"float\""); + if(numericalEntry.getSolution() != null) { + question = question.replace(marker, marker + " data-qti-solution=\"" + Double.toString(numericalEntry.getSolution()) + "\""); + } } } if(entry != null) { @@ -849,7 +856,6 @@ public class FIBAssessmentItemBuilder extends AssessmentItemBuilder { incorrectOutcomeValue.setExpression(correctValue); responseRules.add(count++, incorrectOutcomeValue); - } } diff --git a/src/main/java/org/olat/ims/qti21/model/xml/interactions/MatchAssessmentItemBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/interactions/MatchAssessmentItemBuilder.java index 39daeece28244ac9e954447af663b449ab4bb7fb..59a7d45439e84275edc6d638bf8bdfed57dd4485 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/interactions/MatchAssessmentItemBuilder.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/interactions/MatchAssessmentItemBuilder.java @@ -34,6 +34,7 @@ import java.util.Map; import javax.xml.transform.stream.StreamResult; import org.olat.core.gui.render.StringOutput; +import org.olat.core.util.StringHelper; import org.olat.ims.qti21.QTI21Constants; import org.olat.ims.qti21.model.QTI21QuestionType; import org.olat.ims.qti21.model.xml.AssessmentItemBuilder; @@ -91,16 +92,17 @@ public class MatchAssessmentItemBuilder extends AssessmentItemBuilder { private MatchInteraction matchInteraction; private Map<Identifier, List<Identifier>> associations; private Map<DirectedPairValue, Double> scoreMapping; + - public MatchAssessmentItemBuilder(String title, QtiSerializer qtiSerializer) { - super(createAssessmentItem(title), qtiSerializer); + public MatchAssessmentItemBuilder(String title, String matchCssClass, QtiSerializer qtiSerializer) { + super(createAssessmentItem(title, matchCssClass), qtiSerializer); } public MatchAssessmentItemBuilder(AssessmentItem assessmentItem, QtiSerializer qtiSerializer) { super(assessmentItem, qtiSerializer); } - private static AssessmentItem createAssessmentItem(String title) { + private static AssessmentItem createAssessmentItem(String title, String matchCssClass) { AssessmentItem assessmentItem = AssessmentItemFactory.createAssessmentItem(QTI21QuestionType.match, title); NodeGroupList nodeGroups = assessmentItem.getNodeGroups(); @@ -115,7 +117,11 @@ public class MatchAssessmentItemBuilder extends AssessmentItemBuilder { //the single choice interaction ItemBody itemBody = appendDefaultItemBody(assessmentItem); - appendMatchInteraction(itemBody, responseDeclarationId); + MatchInteraction interaction = appendMatchInteraction(itemBody, responseDeclarationId); + List<String> cssClasses = new ArrayList<>(); + cssClasses.add(matchCssClass); + interaction.setClassAttr(cssClasses); + Map<Identifier, List<Identifier>> associations = new HashMap<>(); appendAssociationMatchResponseDeclaration(responseDeclaration, associations, 1.0); @@ -208,6 +214,7 @@ public class MatchAssessmentItemBuilder extends AssessmentItemBuilder { qtiSerializer.serializeJqtiObject(block, new StreamResult(sb)); } } + question = sb.toString(); } @@ -238,9 +245,38 @@ public class MatchAssessmentItemBuilder extends AssessmentItemBuilder { @Override public QTI21QuestionType getQuestionType() { + if(matchInteraction != null) { + List<?> cssClassses = matchInteraction.getClassAttr(); + if(cssClassses != null && cssClassses.contains(QTI21Constants.CSS_MATCH_DRAG_AND_DROP)) { + return QTI21QuestionType.matchdraganddrop; + } + } return QTI21QuestionType.match; } + public boolean hasMatchInteractionClass(String cssClass) { + List<String> cssClassses = matchInteraction.getClassAttr(); + return cssClassses != null && cssClassses.contains(cssClass); + } + + public void addMatchInteractionClass(String cssClass) { + if(!StringHelper.containsNonWhitespace(cssClass)) return; + + List<String> cssClassses = new ArrayList<>(matchInteraction.getClassAttr()); + cssClassses.add(cssClass); + matchInteraction.setClassAttr(cssClassses); + } + + public void removeMatchInteractionClass(String... cssClasses) { + if(cssClasses == null || cssClasses.length == 0 || cssClasses[0] == null) return; + + List<String> cssClassses = new ArrayList<>(matchInteraction.getClassAttr()); + for(String cssClass:cssClasses) { + cssClassses.remove(cssClass); + } + matchInteraction.setClassAttr(cssClassses); + } + public boolean isShuffle() { return shuffle; } diff --git a/src/main/java/org/olat/ims/qti21/pool/QTI21AssessmentItemFactory.java b/src/main/java/org/olat/ims/qti21/pool/QTI21AssessmentItemFactory.java index c855f74f68435ce9e9e30fbaade6a3f207d97abc..788594a9baf431121753f40bb5891594ad760529 100644 --- a/src/main/java/org/olat/ims/qti21/pool/QTI21AssessmentItemFactory.java +++ b/src/main/java/org/olat/ims/qti21/pool/QTI21AssessmentItemFactory.java @@ -52,6 +52,7 @@ public class QTI21AssessmentItemFactory implements QItemFactory { case mc: return "QTI 2.1 " + trans.translate("new.mc"); case kprim: return "QTI 2.1 " + trans.translate("new.kprim"); case match: return "QTI 2.1 " + trans.translate("new.match"); + case matchdraganddrop: return "QTI 2.1 " + trans.translate("new.matchdraganddrop"); case fib: return "QTI 2.1 " + trans.translate("new.fib"); case numerical: return "QTI 2.1 " + trans.translate("new.fib.numerical"); case essay: return "QTI 2.1 " + trans.translate("new.essay"); diff --git a/src/main/java/org/olat/ims/qti21/pool/QTI21ImportProcessor.java b/src/main/java/org/olat/ims/qti21/pool/QTI21ImportProcessor.java index 1eccd9781d85a0442f6e47b8361f0b9d96308f00..95e4dc25d7427def4aa5aed248b798f54d9d3041 100644 --- a/src/main/java/org/olat/ims/qti21/pool/QTI21ImportProcessor.java +++ b/src/main/java/org/olat/ims/qti21/pool/QTI21ImportProcessor.java @@ -283,6 +283,7 @@ public class QTI21ImportProcessor { case mc: return qItemTypeDao.loadByType(QuestionType.MC.name()); case kprim: return qItemTypeDao.loadByType(QuestionType.KPRIM.name()); case match: return qItemTypeDao.loadByType(QuestionType.MATCH.name()); + case matchdraganddrop: return qItemTypeDao.loadByType(QuestionType.MATCHDRAGANDDROP.name()); case fib: return qItemTypeDao.loadByType(QuestionType.FIB.name()); case numerical: return qItemTypeDao.loadByType(QuestionType.NUMERICAL.name()); case hotspot: return qItemTypeDao.loadByType(QuestionType.HOTSPOT.name()); diff --git a/src/main/java/org/olat/ims/qti21/pool/QTI21QPoolServiceProvider.java b/src/main/java/org/olat/ims/qti21/pool/QTI21QPoolServiceProvider.java index 946cfd1bf61bec6a1f27b077b0814c3ed8b7fb40..283e5e0ff9348349cb4d92781911f3fba379b2fe 100644 --- a/src/main/java/org/olat/ims/qti21/pool/QTI21QPoolServiceProvider.java +++ b/src/main/java/org/olat/ims/qti21/pool/QTI21QPoolServiceProvider.java @@ -343,7 +343,8 @@ public class QTI21QPoolServiceProvider implements QPoolSPI { case sc: itemBuilder = new SingleChoiceAssessmentItemBuilder(translator.translate("new.sc"), translator.translate("new.answer"), qtiService.qtiSerializer()); break; case mc: itemBuilder = new MultipleChoiceAssessmentItemBuilder(translator.translate("new.mc"), translator.translate("new.answer"), qtiService.qtiSerializer()); break; case kprim: itemBuilder = new KPrimAssessmentItemBuilder(translator.translate("new.kprim"), translator.translate("new.answer"), qtiService.qtiSerializer()); break; - case match: itemBuilder = new MatchAssessmentItemBuilder(translator.translate("new.match"), qtiService.qtiSerializer()); break; + case match: itemBuilder = new MatchAssessmentItemBuilder(translator.translate("new.match"), QTI21Constants.CSS_MATCH_MATRIX, qtiService.qtiSerializer()); break; + case matchdraganddrop: itemBuilder = new MatchAssessmentItemBuilder(translator.translate("new.match"), QTI21Constants.CSS_MATCH_DRAG_AND_DROP, qtiService.qtiSerializer()); break; case fib: itemBuilder = new FIBAssessmentItemBuilder(translator.translate("new.fib"), EntryType.text, qtiService.qtiSerializer()); break; case numerical: itemBuilder = new FIBAssessmentItemBuilder(translator.translate("new.fib.numerical"), EntryType.numerical, qtiService.qtiSerializer()); break; case essay: itemBuilder = new EssayAssessmentItemBuilder(translator.translate("new.essay"), qtiService.qtiSerializer()); break; diff --git a/src/main/java/org/olat/ims/qti21/resultexport/QTI21ResultsExportMediaResource.java b/src/main/java/org/olat/ims/qti21/resultexport/QTI21ResultsExportMediaResource.java index 2f4f95745467cf5d3a67c44d06e6ae84efa16b5a..bc73ecc11005f63c1bf7ad32ce11ade29b148358 100644 --- a/src/main/java/org/olat/ims/qti21/resultexport/QTI21ResultsExportMediaResource.java +++ b/src/main/java/org/olat/ims/qti21/resultexport/QTI21ResultsExportMediaResource.java @@ -60,10 +60,12 @@ import org.olat.core.id.UserConstants; import org.olat.core.logging.OLog; import org.olat.core.logging.Tracing; import org.olat.core.util.FileUtils; +import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.core.util.WebappHelper; import org.olat.core.util.ZipUtil; +import org.olat.course.nodes.ArchiveOptions; import org.olat.course.nodes.QTICourseNode; import org.olat.course.run.environment.CourseEnvironment; import org.olat.fileresource.FileResourceManager; @@ -72,6 +74,8 @@ import org.olat.ims.qti.resultexport.ResultDetail; import org.olat.ims.qti21.AssessmentTestSession; import org.olat.ims.qti21.QTI21AssessmentResultsOptions; import org.olat.ims.qti21.QTI21Service; +import org.olat.ims.qti21.manager.archive.QTI21ArchiveFormat; +import org.olat.ims.qti21.model.QTI21StatisticSearchParams; import org.olat.ims.qti21.ui.AssessmentResultController; import org.olat.repository.RepositoryEntry; @@ -168,6 +172,9 @@ public class QTI21ResultsExportMediaResource implements MediaResource { ZipOutputStream zout = new ZipOutputStream(hres.getOutputStream()); zout.setLevel(9); exportTestResults(zout); + for(RepositoryEntry testEntry:testEntries) { + exportExcelResults(testEntry, zout); + } zout.close(); } catch (Exception e) { log.error("Unknown error while assessment result resource export", e); @@ -180,7 +187,6 @@ public class QTI21ResultsExportMediaResource implements MediaResource { * @throws IOException */ public void exportTestResults(ZipOutputStream zout) throws IOException { - List<AssessedMember> assessedMembers = createAssessedMembersDetail(zout); //convert velocity template to zip entry @@ -201,6 +207,18 @@ public class QTI21ResultsExportMediaResource implements MediaResource { } } + private void exportExcelResults(RepositoryEntry testEntry, ZipOutputStream zout) { + ArchiveOptions options = new ArchiveOptions(); + options.setIdentities(identities); + QTI21StatisticSearchParams searchParams = new QTI21StatisticSearchParams(options, testEntry, entry, courseNode.getIdent()); + searchParams.setLimitToIdentities(identities); + QTI21ArchiveFormat qaf = new QTI21ArchiveFormat(translator.getLocale(), searchParams); + String label = StringHelper.transformDisplayNameToFileSystemName(courseNode.getShortName() + "_" + testEntry.getDisplayname()) + + "_" + Formatter.formatDatetimeWithMinutes(new Date()) + + ".xlsx"; + qaf.exportCourseElement(exportFolderName + "/" + label, zout); + } + private List<ResultDetail> createResultDetail (Identity identity, ZipOutputStream zout, String idDir) throws IOException { List<ResultDetail> assessments = new ArrayList<ResultDetail>(); List<AssessmentTestSession> sessions = qtiService.getAssessmentTestSessions(entry, courseNode.getIdent(), identity); @@ -226,9 +244,9 @@ public class QTI21ResultsExportMediaResource implements MediaResource { String mapperUri = "../../../test" + testEntry.getKey() + "/";//add test repo key String submissionMapperUri = "."; - Controller assessmentResultController = new AssessmentResultController( - ureq, mockwControl, identity, false, session, - fUnzippedDirRoot, mapperUri, submissionMapperUri, QTI21AssessmentResultsOptions.allOptions(), false, true); + String exportUri = "../" + translator.translate("table.user.attempt") + (sessions.indexOf(session)+1); + Controller assessmentResultController = new AssessmentResultController(ureq, mockwControl, identity, false, session, + fUnzippedDirRoot, mapperUri, submissionMapperUri, QTI21AssessmentResultsOptions.allOptions(), false, true, exportUri); Component component = assessmentResultController.getInitialComponent(); String componentHTML = createResultHTML(component); @@ -237,6 +255,10 @@ public class QTI21ResultsExportMediaResource implements MediaResource { File resultXML = qtiService.getAssessmentResultFile(session); convertToZipEntry(zout, idPath + assessmentID +".xml", resultXML); + File signatureXML = qtiService.getAssessmentResultSignature(session); + if (signatureXML != null) { + convertToZipEntry(zout, idPath + "assessmentResultSignature.xml", signatureXML); + } File submissionDir = qtiService.getSubmissionDirectory(session); String baseDir = idPath + "submissions/"; ZipUtil.addDirectoryToZip(submissionDir.toPath(), baseDir, zout); diff --git a/src/main/java/org/olat/ims/qti21/resultexport/_content/qti21results.html b/src/main/java/org/olat/ims/qti21/resultexport/_content/qti21results.html index 90fa8303e96abecc19a1a85d92e86072b0c4cc1f..c9cb7e638f26fdc9750966c750cd22647dcd37ac 100644 --- a/src/main/java/org/olat/ims/qti21/resultexport/_content/qti21results.html +++ b/src/main/java/org/olat/ims/qti21/resultexport/_content/qti21results.html @@ -12,6 +12,7 @@ <script type="text/javascript" src='../../../js/jquery/qti/jquery.graphicOrder.js'></script> <script type="text/javascript" src='../../../js/jquery/qti/jquery.hotspot.js'></script> <script type="text/javascript" src='../../../js/jquery/qti/jquery.match.js'></script> + <script type="text/javascript" src='../../../js/jquery/qti/jquery.match_dnd.js'></script> <script type="text/javascript" src='../../../js/jquery/qti/jquery.order.js'></script> <script type="text/javascript" src='../../../js/jquery/qti/jquery.positionObject.js'></script> <script type="text/javascript" src='../../../js/jquery/qti/jquery.qtiTimer.js'></script> diff --git a/src/main/java/org/olat/ims/qti21/ui/AssessmentResultController.java b/src/main/java/org/olat/ims/qti21/ui/AssessmentResultController.java index 145fcaf5dd04c6a7b7847cff43b7b32e73a3fb3a..55797ecbf28529dde9fb595850cabbea7291421c 100644 --- a/src/main/java/org/olat/ims/qti21/ui/AssessmentResultController.java +++ b/src/main/java/org/olat/ims/qti21/ui/AssessmentResultController.java @@ -20,6 +20,7 @@ package org.olat.ims.qti21.ui; import java.io.File; +import java.math.BigDecimal; import java.net.URI; import java.util.ArrayList; import java.util.Date; @@ -45,19 +46,22 @@ import org.olat.core.gui.media.MediaResource; import org.olat.core.gui.media.NotFoundMediaResource; import org.olat.core.id.Identity; import org.olat.core.util.CodeHelper; -import org.olat.core.util.StringHelper; import org.olat.course.assessment.AssessmentHelper; import org.olat.fileresource.DownloadeableMediaResource; import org.olat.fileresource.types.ImsQTI21Resource; import org.olat.fileresource.types.ImsQTI21Resource.PathResourceLocator; +import org.olat.ims.qti21.AssessmentItemSession; import org.olat.ims.qti21.AssessmentTestSession; import org.olat.ims.qti21.QTI21AssessmentResultsOptions; import org.olat.ims.qti21.QTI21Constants; import org.olat.ims.qti21.QTI21Service; import org.olat.ims.qti21.model.QTI21QuestionType; +import org.olat.ims.qti21.model.xml.QtiNodesExtractor; import org.olat.ims.qti21.ui.assessment.TerminatedStaticCandidateSessionContext; +import org.olat.ims.qti21.ui.components.FeedbackResultFormItem; import org.olat.ims.qti21.ui.components.InteractionResultFormItem; import org.olat.ims.qti21.ui.components.ItemBodyResultFormItem; +import org.olat.user.UserManager; import org.springframework.beans.factory.annotation.Autowired; import org.w3c.dom.Document; @@ -75,6 +79,7 @@ import uk.ac.ed.ph.jqtiplus.node.result.OutcomeVariable; import uk.ac.ed.ph.jqtiplus.node.result.SessionStatus; import uk.ac.ed.ph.jqtiplus.node.result.TestResult; import uk.ac.ed.ph.jqtiplus.node.test.AssessmentItemRef; +import uk.ac.ed.ph.jqtiplus.node.test.AssessmentTest; import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem; import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentTest; import uk.ac.ed.ph.jqtiplus.state.AssessmentSectionSessionState; @@ -119,15 +124,25 @@ public class AssessmentResultController extends FormBasicController { private final ResourceLocator inputResourceLocator; private final ResolvedAssessmentTest resolvedAssessmentTest; private UserShortDescription assessedIdentityInfosCtrl; + private final Map<String,AssessmentItemSession> identifierToItemSession = new HashMap<>(); private int count = 0; @Autowired private QTI21Service qtiService; + @Autowired + private UserManager userMgr; + public AssessmentResultController(UserRequest ureq, WindowControl wControl, Identity assessedIdentity, boolean anonym, AssessmentTestSession candidateSession, File fUnzippedDirRoot, String mapperUri, String submissionMapperUri, QTI21AssessmentResultsOptions options, boolean withPrint, boolean withTitle) { + this(ureq, wControl, assessedIdentity, anonym, candidateSession, fUnzippedDirRoot, mapperUri, submissionMapperUri, options, withPrint, withTitle, null); + } + + public AssessmentResultController(UserRequest ureq, WindowControl wControl, Identity assessedIdentity, boolean anonym, + AssessmentTestSession candidateSession, File fUnzippedDirRoot, String mapperUri, String submissionMapperUri, + QTI21AssessmentResultsOptions options, boolean withPrint, boolean withTitle, String exportUri) { super(ureq, wControl, "assessment_results"); this.anonym = anonym; @@ -147,20 +162,29 @@ public class AssessmentResultController extends FormBasicController { if(!anonym && assessedIdentity != null) { assessedIdentityInfosCtrl = new UserShortDescription(ureq, getWindowControl(), assessedIdentity); + assessedIdentityInfosCtrl.setUsernameAtBottom(); listenTo(assessedIdentityInfosCtrl); } resolvedAssessmentTest = qtiService.loadAndResolveAssessmentTest(fUnzippedDirRoot, false, false); File signature = qtiService.getAssessmentResultSignature(candidateSession); - if(signature != null) { - signatureMapperUri = registerCacheableMapper(ureq, "QTI21Signature::" + CodeHelper.getForeverUniqueID(), - new SignatureMapper(signature)); + if (signature != null) { + if (exportUri != null) { + signatureMapperUri = exportUri; + } else { + signatureMapperUri = registerCacheableMapper(ureq, "QTI21Signature::" + CodeHelper.getForeverUniqueID(), + new SignatureMapper(signature)); + } } testSessionState = qtiService.loadTestSessionState(candidateSession); assessmentResult = qtiService.getAssessmentResult(candidateSession); candidateSessionContext = new TerminatedStaticCandidateSessionContext(candidateSession); + List<AssessmentItemSession> itemSessions = qtiService.getAssessmentItemSessions(candidateSession); + for(AssessmentItemSession itemSession:itemSessions) { + identifierToItemSession.put(itemSession.getAssessmentItemIdentifier(), itemSession); + } initForm(ureq); } @@ -169,6 +193,14 @@ public class AssessmentResultController extends FormBasicController { protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { if(formLayout instanceof FormLayoutContainer) { FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout; + layoutCont.contextPut("options", options); + if(assessedIdentity != null) { + layoutCont.contextPut("userDisplayName", userMgr.getUserDisplayName(assessedIdentity.getKey())); + } else { + layoutCont.contextPut("userDisplayName", Boolean.FALSE); + } + + if(testSessionState == null || assessmentResult == null) { // An author has deleted the test session before the user end it. // It can happen with time limited tests. @@ -180,25 +212,34 @@ public class AssessmentResultController extends FormBasicController { layoutCont.contextPut("title", new Boolean(withTitle)); layoutCont.contextPut("print", new Boolean(withPrint)); layoutCont.contextPut("printCommand", Boolean.FALSE); - layoutCont.contextPut("testSessionNotFound", Boolean.FALSE); if(withPrint) { layoutCont.contextPut("winid", "w" + layoutCont.getFormItemComponent().getDispatchID()); layoutCont.getFormItemComponent().addListener(this); } - + if(assessedIdentityInfosCtrl != null) { layoutCont.put("assessedIdentityInfos", assessedIdentityInfosCtrl.getInitialComponent()); } else if(anonym) { layoutCont.contextPut("anonym", Boolean.TRUE); } - Results results = new Results(false, "o_qtiassessment_icon", options.isMetadata()); - results.setSessionState(testSessionState); + Results testResults = new Results(false, "o_qtiassessment_icon", options.isMetadata()); + testResults.setSessionState(testSessionState); - layoutCont.contextPut("testResults", results); + layoutCont.contextPut("testResults", testResults); TestResult testResult = assessmentResult.getTestResult(); if(testResult != null) { - extractOutcomeVariable(testResult.getItemVariables(), results); + extractOutcomeVariable(testResult.getItemVariables(), testResults); + if(candidateSession.getManualScore() != null) { + testResults.addScore(candidateSession.getManualScore()); + testResults.setManualScore(candidateSession.getManualScore()); + } + + AssessmentTest assessmentTest = resolvedAssessmentTest.getRootNodeLookup().extractIfSuccessful(); + Double cutValue = QtiNodesExtractor.extractCutValue(assessmentTest); + if(cutValue != null) { + testResults.setCutValue(cutValue); + } } if(signatureMapperUri != null) { @@ -206,12 +247,12 @@ public class AssessmentResultController extends FormBasicController { layoutCont.contextPut("signatureUrl", signatureUrl); } - initFormSections(layoutCont); + initFormSections(layoutCont, testResults); } } } - private void initFormSections(FormLayoutContainer layoutCont) { + private void initFormSections(FormLayoutContainer layoutCont, Results testResults) { List<Results> itemResults = new ArrayList<>(); layoutCont.contextPut("itemResults", itemResults); @@ -220,6 +261,8 @@ public class AssessmentResultController extends FormBasicController { identifierToRefs.put(itemRef.getIdentifier(), itemRef); } + Map<TestPlanNode, Results> resultsMap = new HashMap<>(); + TestPlan testPlan = testSessionState.getTestPlan(); List<TestPlanNode> nodes = testPlan.getTestPlanNodeList(); for(TestPlanNode node:nodes) { @@ -231,33 +274,42 @@ public class AssessmentResultController extends FormBasicController { if(sectionState != null) { r.setSessionState(sectionState); } + resultsMap.put(node, r); itemResults.add(r); + testResults.setNumberOfSections(testResults.getNumberOfSections() + 1); } else if(testNodeType == TestNodeType.ASSESSMENT_ITEM_REF) { - Results results = initFormItemResult(layoutCont, node, identifierToRefs); + Results results = initFormItemResult(layoutCont, node, identifierToRefs, resultsMap); if(results != null) { itemResults.add(results); } + testResults.setNumberOfQuestions(testResults.getNumberOfQuestions() + 1); + if(results.sessionStatus == SessionStatus.FINAL) { + testResults.setNumberOfAnsweredQuestions(testResults.getNumberOfAnsweredQuestions() + 1); + } } } } - private Results initFormItemResult(FormLayoutContainer layoutCont, TestPlanNode node, Map<Identifier, AssessmentItemRef> identifierToRefs) { + private Results initFormItemResult(FormLayoutContainer layoutCont, TestPlanNode node, + Map<Identifier, AssessmentItemRef> identifierToRefs, Map<TestPlanNode, Results> resultsMap) { TestPlanNodeKey testPlanNodeKey = node.getKey(); Identifier identifier = testPlanNodeKey.getIdentifier(); AssessmentItemRef itemRef = identifierToRefs.get(identifier); ResolvedAssessmentItem resolvedAssessmentItem = resolvedAssessmentTest.getResolvedAssessmentItem(itemRef); AssessmentItem assessmentItem = resolvedAssessmentItem.getRootNodeLookup().extractIfSuccessful(); QTI21QuestionType type = QTI21QuestionType.getType(assessmentItem); - + AssessmentItemSession itemSession = identifierToItemSession.get(identifier.toString()); + Results r = new Results(false, node.getSectionPartTitle(), type.getCssClass(), options.isQuestionSummary()); - r.setSessionStatus("");//init + r.setSessionStatus(null);//init + r.setItemIdentifier(node.getIdentifier().toString()); ItemSessionState sessionState = testSessionState.getItemSessionStates().get(testPlanNodeKey); if(sessionState != null) { r.setSessionState(sessionState); SessionStatus sessionStatus = sessionState.getSessionStatus(); if(sessionState != null) { - r.setSessionStatus(translate("results.session.status." + sessionStatus.toQtiString())); + r.setSessionStatus(sessionStatus); } } @@ -265,6 +317,15 @@ public class AssessmentResultController extends FormBasicController { if(itemResult != null) { extractOutcomeVariable(itemResult.getItemVariables(), r); } + if(itemSession != null) { + if(itemSession.getManualScore() != null) { + r.setScore(itemSession.getManualScore()); + r.setManualScore(itemSession.getManualScore()); + } + r.setComment(itemSession.getCoachComment()); + } + + //update max score of section if(options.isQuestions()) { FormItem questionItem = initQuestionItem(layoutCont, sessionState, resolvedAssessmentItem); @@ -274,11 +335,34 @@ public class AssessmentResultController extends FormBasicController { if(options.isUserSolutions() || options.isCorrectSolutions()) { List<InteractionResults> interactionResults = initFormItemInteractions(layoutCont, sessionState, assessmentItem, resolvedAssessmentItem); r.getInteractionResults().addAll(interactionResults); - } + + if(options.isCorrectSolutions()) { + String correctSolutionId = "correctSolutionItem" + count++; + FeedbackResultFormItem correctSolutionItem = new FeedbackResultFormItem(correctSolutionId, resolvedAssessmentItem); + initInteractionResultFormItem(correctSolutionItem, sessionState); + layoutCont.add(correctSolutionId, correctSolutionItem); + r.setCorrectSolutionItem(correctSolutionItem); + } + } + updateSectionScoreInformations(node, r, resultsMap); return r; } + private void updateSectionScoreInformations(TestPlanNode node, Results assessmentItemResults, Map<TestPlanNode, Results> resultsMap) { + if(node.getParent() == null && resultsMap.get(node.getParent()) == null) return; + + TestPlanNode section = node.getParent(); + Results sectionResults = resultsMap.get(section); + sectionResults.addSubResults(assessmentItemResults); + if(assessmentItemResults.hasMaxScore()) { + sectionResults.addMaxScore(assessmentItemResults); + if(assessmentItemResults.hasScore()) { + sectionResults.addScore(assessmentItemResults); + } + } + } + private FormItem initQuestionItem(FormLayoutContainer layoutCont, ItemSessionState sessionState, ResolvedAssessmentItem resolvedAssessmentItem) { @@ -335,14 +419,25 @@ public class AssessmentResultController extends FormBasicController { layoutCont.add(solutionId, formItem); solutionFormItem = formItem; } - interactionResults.add(new InteractionResults(responseFormItem, solutionFormItem)); } return interactionResults; } - private void initInteractionResultFormItem(InteractionResultFormItem formItem, ItemSessionState sectionState) { - formItem.setItemSessionState(sectionState); + private void initInteractionResultFormItem(InteractionResultFormItem formItem, ItemSessionState sessionState) { + formItem.setItemSessionState(sessionState); + formItem.setCandidateSessionContext(candidateSessionContext); + formItem.setResolvedAssessmentTest(resolvedAssessmentTest); + formItem.setResourceLocator(inputResourceLocator); + formItem.setAssessmentObjectUri(assessmentObjectUri); + formItem.setMapperUri(mapperUri); + if(submissionMapperUri != null) { + formItem.setSubmissionMapperUri(submissionMapperUri); + } + } + + private void initInteractionResultFormItem(FeedbackResultFormItem formItem, ItemSessionState sessionState) { + formItem.setItemSessionState(sessionState); formItem.setCandidateSessionContext(candidateSessionContext); formItem.setResolvedAssessmentTest(resolvedAssessmentTest); formItem.setResourceLocator(inputResourceLocator); @@ -357,7 +452,9 @@ public class AssessmentResultController extends FormBasicController { for(ItemVariable itemVariable:itemVariables) { if(itemVariable instanceof OutcomeVariable) { if(QTI21Constants.SCORE_IDENTIFIER.equals(itemVariable.getIdentifier())) { - results.setScore(getOutcomeNumberVariable(itemVariable)); + Double score = getOutcomeNumberVariable(itemVariable); + results.setScore(score); + results.setAutoScore(score); } else if(QTI21Constants.MAXSCORE_IDENTIFIER.equals(itemVariable.getIdentifier())) { results.setMaxScore(getOutcomeNumberVariable(itemVariable)); } else if(QTI21Constants.PASS_IDENTIFIER.equals(itemVariable.getIdentifier())) { @@ -367,10 +464,10 @@ public class AssessmentResultController extends FormBasicController { } } - private String getOutcomeNumberVariable(ItemVariable outcomeVariable) { + private Double getOutcomeNumberVariable(ItemVariable outcomeVariable) { Value value = outcomeVariable.getComputedValue(); if(value instanceof NumberValue) { - return AssessmentHelper.getRoundedScore(((NumberValue)value).doubleValue()); + return ((NumberValue)value).doubleValue(); } return null; } @@ -433,25 +530,37 @@ public class AssessmentResultController extends FormBasicController { } } - public static class Results { - + public class Results { + private Date entryTime; private Date endTime; private Long duration; - private String score; - private String maxScore; + private Double score; + private Double manualScore; + private Double autoScore; + + private Double maxScore; + private Double cutValue; private Boolean pass; + private String comment; + private String itemIdentifier; private final String title; private final String cssClass; private final boolean section; private final boolean metadataVisible; - private String sessionStatus; + private SessionStatus sessionStatus; + + private int numberOfSections = 0; + private int numberOfQuestions = 0; + private int numberOfAnsweredQuestions = 0; private FormItem questionItem; + private FormItem correctSolutionItem; private final List<InteractionResults> interactionResults = new ArrayList<>(); + private final List<Results> subResults = new ArrayList<>(); public Results(boolean section, String cssClass, boolean metadataVisible) { this.section = section; @@ -459,7 +568,7 @@ public class AssessmentResultController extends FormBasicController { this.metadataVisible = metadataVisible; this.title = null; } - + public Results(boolean section, String title, String cssClass, boolean metadataVisible) { this.section = section; this.title = title; @@ -467,6 +576,15 @@ public class AssessmentResultController extends FormBasicController { this.metadataVisible = metadataVisible; } + + public void setItemIdentifier(String itemIdentifier) { + this.itemIdentifier = itemIdentifier; + } + + public String getItemIdentifier() { + return this.itemIdentifier; + } + public void setSessionState(ControlObjectSessionState sessionState) { entryTime = sessionState.getEntryTime(); endTime = sessionState.getEndTime(); @@ -486,6 +604,24 @@ public class AssessmentResultController extends FormBasicController { return false; } + public boolean hasResponses() { + for(InteractionResults interactionResult:interactionResults) { + if(interactionResult.getResponseFormItem() != null) { + return true; + } + } + return false; + } + + public boolean hasSolutions() { + for(InteractionResults interactionResult:interactionResults) { + if(interactionResult.getSolutionFormItem() != null) { + return true; + } + } + return false; + } + public String getCssClass() { return cssClass; } @@ -512,28 +648,105 @@ public class AssessmentResultController extends FormBasicController { } public boolean hasScore() { - return StringHelper.containsNonWhitespace(score); + return score != null; } public String getScore() { - return score; + return AssessmentHelper.getRoundedScore(score); } - public void setScore(String score) { + public void setScore(BigDecimal score) { + if(score != null) { + this.score = score.doubleValue(); + } + } + + public void setScore(Double score) { this.score = score; } + public void addScore(Results results) { + if(results.hasScore()) { + if(score == null) { + score = 0.0d; + } + score = score.doubleValue() + results.score.doubleValue(); + } + } + + public void addScore(BigDecimal additionalScore) { + if(score == null) { + score = 0.0d; + } + score = score.doubleValue() + additionalScore.doubleValue(); + } + + public String getAutoScore() { + return AssessmentHelper.getRoundedScore(autoScore); + } + + public void setAutoScore(Double autoScore) { + if(autoScore != null) { + this.autoScore = autoScore.doubleValue(); + } + } + + public String getManualScore() { + return AssessmentHelper.getRoundedScore(manualScore); + } + + public void setManualScore(BigDecimal manualScore) { + if(manualScore != null) { + this.manualScore = manualScore.doubleValue(); + } + } + public boolean hasMaxScore() { - return StringHelper.containsNonWhitespace(maxScore); + return maxScore != null; } public String getMaxScore() { - return maxScore; + return maxScore == null ? "" : AssessmentHelper.getRoundedScore(maxScore); } - public void setMaxScore(String maxScore) { + public void setMaxScore(Double maxScore) { this.maxScore = maxScore; } + + public void addMaxScore(Results results) { + if(results.hasMaxScore()) { + if(maxScore == null) { + maxScore = 0.0d; + } + maxScore = maxScore.doubleValue() + results.maxScore.doubleValue(); + } + } + + public Double getCutValue() { + return cutValue; + } + + public String getCutPercent() { + if(maxScore == null) return null; + if(cutValue == null) return "0"; + + double percent = (cutValue / maxScore) * 100.0d; + long percentLong = Math.round(percent); + return Long.toString(percentLong); + } + + public void setCutValue(Double cutValue) { + this.cutValue = cutValue; + } + + public String getScorePercent() { + if(maxScore == null) return null; + if(score == null) return "0"; + + double percent = (score / maxScore) * 100.0d; + long percentLong = Math.round(percent); + return Long.toString(percentLong); + } public boolean hasPass() { return pass != null; @@ -547,13 +760,71 @@ public class AssessmentResultController extends FormBasicController { this.pass = pass; } + public String getComment() { + return comment; + } + + public void setComment(String comment) { + this.comment = comment; + } + public String getSessionStatus() { - return sessionStatus == null ? "" : sessionStatus; + return sessionStatus == null ? "" : translate("results.session.status." + sessionStatus.toQtiString()); } - public void setSessionStatus(String sessionStatus) { + public void setSessionStatus(SessionStatus sessionStatus) { this.sessionStatus = sessionStatus; } + + public boolean isEnded() { + return sessionStatus == SessionStatus.FINAL; + } + + public boolean isCorrect() { + return sessionStatus == SessionStatus.FINAL && + (maxScore != null && score != null && Math.abs(maxScore.doubleValue() - score.doubleValue()) < 0.0001); + } + + public int getNumberOfQuestions() { + return numberOfQuestions; + } + + public void setNumberOfQuestions(int numberOfQuestions) { + this.numberOfQuestions = numberOfQuestions; + } + + public int getNumberOfAnsweredQuestions() { + return numberOfAnsweredQuestions; + } + + public void setNumberOfAnsweredQuestions(int numberOfAnsweredQuestions) { + this.numberOfAnsweredQuestions = numberOfAnsweredQuestions; + } + + public String getNumberOfAnsweredQuestionsPercent() { + if(numberOfAnsweredQuestions <= 0) return "0"; + if(numberOfQuestions <= 0) return "100"; + + double val = ((double)numberOfAnsweredQuestions / (double)numberOfQuestions) * 100.0d; + long percent = Math.round(val); + return Long.toString(percent); + } + + public int getNumberOfSections() { + return numberOfSections; + } + + public void setNumberOfSections(int numberOfSections) { + this.numberOfSections = numberOfSections; + } + + public List<Results> getSubResults() { + return subResults; + } + + public void addSubResults(Results results) { + subResults.add(results); + } public FormItem getQuestionItem() { return questionItem; @@ -563,6 +834,14 @@ public class AssessmentResultController extends FormBasicController { this.questionItem = questionItem; } + public FormItem getCorrectSolutionItem() { + return correctSolutionItem; + } + + public void setCorrectSolutionItem(FormItem correctSolutionItem) { + this.correctSolutionItem = correctSolutionItem; + } + public List<InteractionResults> getInteractionResults() { return interactionResults; } diff --git a/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java b/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java index b7e03b6f67eb95dcfbf2dc1fd927066f21d1aed8..92527e94183d320cc291c65f86919413087262f7 100644 --- a/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java +++ b/src/main/java/org/olat/ims/qti21/ui/AssessmentTestDisplayController.java @@ -1455,11 +1455,11 @@ public class AssessmentTestDisplayController extends BasicController implements } private TestSessionController resumeSession(UserRequest ureq) { - Date currentRequestTimestamp = ureq.getRequestTimestamp(); + Date requestTimestamp = ureq.getRequestTimestamp(); final NotificationRecorder notificationRecorder = new NotificationRecorder(NotificationLevel.INFO); TestSessionController controller = createTestSessionController(notificationRecorder); - controller.unsuspendTestSession(currentRequestTimestamp); + controller.unsuspendTestSession(requestTimestamp); TestSessionState testSessionState = controller.getTestSessionState(); TestPlanNodeKey currentItemKey = testSessionState.getCurrentItemKey(); @@ -1470,7 +1470,7 @@ public class AssessmentTestDisplayController extends BasicController implements if(itemProcessingContext instanceof ItemSessionController && itemSessionState.isSuspended()) { ItemSessionController itemSessionController = (ItemSessionController)itemProcessingContext; - itemSessionController.unsuspendItemSession(currentRequestTimestamp); + itemSessionController.unsuspendItemSession(requestTimestamp); } } @@ -1678,6 +1678,7 @@ public class AssessmentTestDisplayController extends BasicController implements qtiEl.setRenderNavigation(!showMenuTree); qtiEl.setPersonalNotes(deliveryOptions.isPersonalNotes()); qtiEl.setShowTitles(deliveryOptions.isShowTitles()); + qtiEl.setHideFeedbacks(deliveryOptions.isHideFeedbacks()); qtiTreeEl.setResourceLocator(inputResourceLocator); qtiTreeEl.setTestSessionController(testSessionController); @@ -1972,7 +1973,8 @@ public class AssessmentTestDisplayController extends BasicController implements && deliveryOptions.getAssessmentResultsOptions() != null && !deliveryOptions.getAssessmentResultsOptions().none()) { removeAsListenerAndDispose(resultCtrl); - resultCtrl = new AssessmentResultController(ureq, getWindowControl(), assessedIdentity, anonym, + // show results in anonym mode to hide the user info table - user knows who he is (same as on test start page) + resultCtrl = new AssessmentResultController(ureq, getWindowControl(), assessedIdentity, true, AssessmentTestDisplayController.this.getCandidateSession(), fUnzippedDirRoot, mapperUri, null, deliveryOptions.getAssessmentResultsOptions(), false, true); listenTo(resultCtrl); diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java index 0bcf00373ae3bef22d0b9255fd7b46d6fc8db4e5..00dbae274541982eaabf3f69e9d9d72bed8e60c7 100644 --- a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java +++ b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentDetailsController.java @@ -22,6 +22,7 @@ package org.olat.ims.qti21.ui; import java.io.File; import java.math.BigDecimal; import java.net.URI; +import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; @@ -68,7 +69,8 @@ import org.olat.ims.qti21.QTI21DeliveryOptions; import org.olat.ims.qti21.QTI21Module; import org.olat.ims.qti21.QTI21Service; import org.olat.ims.qti21.model.DigitalSignatureOptions; -import org.olat.ims.qti21.ui.QTI21TestSessionTableModel.TSCols; +import org.olat.ims.qti21.model.jpa.AssessmentTestSessionStatistics; +import org.olat.ims.qti21.ui.QTI21AssessmentTestSessionTableModel.TSCols; import org.olat.ims.qti21.ui.assessment.IdentityAssessmentTestCorrectionController; import org.olat.ims.qti21.ui.event.RetrieveAssessmentTestSessionEvent; import org.olat.modules.ModuleConfiguration; @@ -81,6 +83,13 @@ import org.olat.repository.model.RepositoryEntrySecurity; import org.olat.user.UserManager; import org.springframework.beans.factory.annotation.Autowired; +import uk.ac.ed.ph.jqtiplus.state.ItemSessionState; +import uk.ac.ed.ph.jqtiplus.state.TestPlan; +import uk.ac.ed.ph.jqtiplus.state.TestPlanNode; +import uk.ac.ed.ph.jqtiplus.state.TestPlanNode.TestNodeType; +import uk.ac.ed.ph.jqtiplus.state.TestPlanNodeKey; +import uk.ac.ed.ph.jqtiplus.state.TestSessionState; + /** * This controller is used by the assessment tools of the course and * of the test resource. The assessment tool of the resource doesn't @@ -95,7 +104,7 @@ public class QTI21AssessmentDetailsController extends FormBasicController { private Component resetToolCmp; private FlexiTableElement tableEl; - private QTI21TestSessionTableModel tableModel; + private QTI21AssessmentTestSessionTableModel tableModel; private RepositoryEntry entry; private RepositoryEntry testEntry; @@ -148,7 +157,8 @@ public class QTI21AssessmentDetailsController extends FormBasicController { this.assessedUserCourseEnv = assessedUserCourseEnv; testEntry = courseNode.getReferencedRepositoryEntry(); assessedIdentity = assessedUserCourseEnv.getIdentityEnvironment().getIdentity(); - manualCorrections = qtiService.needManualCorrection(testEntry); + manualCorrections = qtiService.needManualCorrection(testEntry) + || IQEditController.CORRECTION_MANUAL.equals(courseNode.getModuleConfiguration().getStringValue(IQEditController.CONFIG_CORRECTION_MODE)); RepositoryEntry courseEntry = assessedUserCourseEnv.getCourseEnvironment().getCourseGroupManager().getCourseEntry(); reSecurity = repositoryManager.isAllowed(ureq, courseEntry); @@ -185,9 +195,15 @@ public class QTI21AssessmentDetailsController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(TSCols.terminationTime)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(TSCols.lastModified)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(TSCols.duration, new TextFlexiCellRenderer(EscapeMode.none))); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(TSCols.results, new TextFlexiCellRenderer(EscapeMode.none))); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(TSCols.numOfItemSessions, new TextFlexiCellRenderer(EscapeMode.none))); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(TSCols.responded, new TextFlexiCellRenderer(EscapeMode.none))); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(TSCols.corrected, new TextFlexiCellRenderer(EscapeMode.none))); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(TSCols.score, new TextFlexiCellRenderer(EscapeMode.none))); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(TSCols.manualScore, new TextFlexiCellRenderer(EscapeMode.none))); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(TSCols.finalScore, new TextFlexiCellRenderer(EscapeMode.none))); if(readOnly) { columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("select", translate("select"), "open")); @@ -202,7 +218,7 @@ public class QTI21AssessmentDetailsController extends FormBasicController { } - tableModel = new QTI21TestSessionTableModel(columnsModel, getTranslator()); + tableModel = new QTI21AssessmentTestSessionTableModel(columnsModel, getTranslator()); tableEl = uifactory.addTableElement(getWindowControl(), "sessions", tableModel, 20, false, getTranslator(), formLayout); tableEl.setEmtpyTableMessageKey("results.empty"); @@ -227,14 +243,42 @@ public class QTI21AssessmentDetailsController extends FormBasicController { } protected void updateModel() { - List<AssessmentTestSession> sessions = qtiService.getAssessmentTestSessions(entry, subIdent, assessedIdentity); - Collections.sort(sessions, new AssessmentTestSessionComparator()); - tableModel.setObjects(sessions); + List<AssessmentTestSessionStatistics> sessionsStatistics = qtiService.getAssessmentTestSessionsStatistics(entry, subIdent, assessedIdentity); + List<QTI21AssessmentTestSessionDetails> infos = new ArrayList<>(); + for(AssessmentTestSessionStatistics sessionStatistics:sessionsStatistics) { + AssessmentTestSession testSession = sessionStatistics.getTestSession(); + TestSessionState testSessionState = qtiService.loadTestSessionState(testSession); + TestPlan testPlan = testSessionState.getTestPlan(); + List<TestPlanNode> nodes = testPlan.getTestPlanNodeList(); + + int responded = 0; + int numOfItems = 0; + for(TestPlanNode node:nodes) { + TestNodeType testNodeType = node.getTestNodeType(); + ItemSessionState itemSessionState = testSessionState.getItemSessionStates().get(node.getKey()); + + TestPlanNodeKey testPlanNodeKey = node.getKey(); + if(testPlanNodeKey != null && testPlanNodeKey.getIdentifier() != null + && testNodeType == TestNodeType.ASSESSMENT_ITEM_REF) { + numOfItems++; + if(itemSessionState.isResponded()) { + responded++; + } + } + } + + infos.add(new QTI21AssessmentTestSessionDetails(testSession, + numOfItems, responded, sessionStatistics.getNumOfCorrectedItems())); + } + + + Collections.sort(infos, new AssessmentTestSessionComparator()); + tableModel.setObjects(infos); tableEl.reloadData(); tableEl.reset(); if(resetToolCmp != null) { - if(sessions.size() > 0) { + if(sessionsStatistics.size() > 0) { flc.getFormItemComponent().put("reset.tool", resetToolCmp); } else { flc.getFormItemComponent().remove(resetToolCmp); @@ -287,16 +331,16 @@ public class QTI21AssessmentDetailsController extends FormBasicController { if(event instanceof SelectionEvent) { SelectionEvent se = (SelectionEvent)event; String cmd = se.getCommand(); - AssessmentTestSession row = tableModel.getObject(se.getIndex()); - row = qtiService.getAssessmentTestSession(row.getKey()); + QTI21AssessmentTestSessionDetails row = tableModel.getObject(se.getIndex()); + AssessmentTestSession testSession = qtiService.getAssessmentTestSession(row.getTestSession().getKey()); if("open".equals(cmd)) { - if(row.getFinishTime() == null) { - doConfirmPullSession(ureq, row); + if(testSession.getFinishTime() == null) { + doConfirmPullSession(ureq, testSession); } else { - doOpenResult(ureq, row); + doOpenResult(ureq, testSession); } } else if("correction".equals(cmd)) { - doCorrection(ureq, row); + doCorrection(ureq, testSession); } } } @@ -418,10 +462,13 @@ public class QTI21AssessmentDetailsController extends FormBasicController { listenTo(cmc); } - public static class AssessmentTestSessionComparator implements Comparator<AssessmentTestSession> { + public static class AssessmentTestSessionComparator implements Comparator<QTI21AssessmentTestSessionDetails> { @Override - public int compare(AssessmentTestSession a1, AssessmentTestSession a2) { + public int compare(QTI21AssessmentTestSessionDetails q1, QTI21AssessmentTestSessionDetails q2) { + AssessmentTestSession a1 = q1.getTestSession(); + AssessmentTestSession a2 = q2.getTestSession(); + Date t1 = a1.getTerminationTime(); if(t1 == null) { t1 = a1.getFinishTime(); @@ -435,9 +482,9 @@ public class QTI21AssessmentDetailsController extends FormBasicController { if(t1 == null && t2 == null) { c = 0; } else if(t2 == null) { - return -1; - } else if(t1 == null) { return 1; + } else if(t1 == null) { + return -1; } else { c = t1.compareTo(t2); } diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionDetails.java b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionDetails.java new file mode 100644 index 0000000000000000000000000000000000000000..e4607a45d280575525f5859a87870a05c6726299 --- /dev/null +++ b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionDetails.java @@ -0,0 +1,60 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.ims.qti21.ui; + +import org.olat.ims.qti21.AssessmentTestSession; + +/** + * + * Initial date: 26 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTI21AssessmentTestSessionDetails { + + private final int numOfItems; + private final int numOfItemsResponded; + private final int numOfItemsCorrected; + private final AssessmentTestSession testSession; + + public QTI21AssessmentTestSessionDetails(AssessmentTestSession testSession, + int numOfItems, int numOfItemsResponded, int numOfItemsCorrected) { + this.testSession = testSession; + this.numOfItems = numOfItems; + this.numOfItemsResponded = numOfItemsResponded; + this.numOfItemsCorrected = numOfItemsCorrected; + } + + public int getNumOfItems() { + return numOfItems; + } + + public int getNumOfItemsCorrected() { + return numOfItemsCorrected; + } + + public int getNumOfItemsResponded() { + return numOfItemsResponded; + } + + public AssessmentTestSession getTestSession() { + return testSession; + } +} diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21TestSessionTableModel.java b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionTableModel.java similarity index 51% rename from src/main/java/org/olat/ims/qti21/ui/QTI21TestSessionTableModel.java rename to src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionTableModel.java index 402c0f4c8149d2fca9a16a9f85c36df161bdce34..a0e73d033291d90847cea56d2546bd45d361f2f5 100644 --- a/src/main/java/org/olat/ims/qti21/ui/QTI21TestSessionTableModel.java +++ b/src/main/java/org/olat/ims/qti21/ui/QTI21AssessmentTestSessionTableModel.java @@ -39,67 +39,108 @@ import org.olat.ims.qti21.ui.QTI21AssessmentDetailsController.AssessmentTestSess * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ -public class QTI21TestSessionTableModel extends DefaultFlexiTableDataModel<AssessmentTestSession> { +public class QTI21AssessmentTestSessionTableModel extends DefaultFlexiTableDataModel<QTI21AssessmentTestSessionDetails> { private final Translator translator; private AssessmentTestSession lastSession; - public QTI21TestSessionTableModel(FlexiTableColumnModel columnModel, Translator translator) { + public QTI21AssessmentTestSessionTableModel(FlexiTableColumnModel columnModel, Translator translator) { super(columnModel); this.translator = translator; } @Override - public DefaultFlexiTableDataModel<AssessmentTestSession> createCopyWithEmptyList() { - return new QTI21TestSessionTableModel(getTableColumnModel(), translator); + public DefaultFlexiTableDataModel<QTI21AssessmentTestSessionDetails> createCopyWithEmptyList() { + return new QTI21AssessmentTestSessionTableModel(getTableColumnModel(), translator); } @Override public Object getValueAt(int row, int col) { - AssessmentTestSession session = getObject(row); + QTI21AssessmentTestSessionDetails session = getObject(row); switch(TSCols.values()[col]) { - case lastModified: return session.getLastModified(); + case terminationTime: { + Date endTime = session.getTestSession().getTerminationTime(); + if(endTime == null) { + endTime = session.getTestSession().getFinishTime(); + } + return endTime; + } + case lastModified: return session.getTestSession().getLastModified(); case duration: { - if(session.getFinishTime() != null) { - return Formatter.formatDuration(session.getDuration().longValue()); + if(session.getTestSession().getFinishTime() != null) { + return Formatter.formatDuration(session.getTestSession().getDuration().longValue()); } return "<span class='o_ochre'>" + translator.translate("assessment.test.open") + "</span>"; } - case test: return session.getTestEntry().getDisplayname(); - case results: { - if(session.getFinishTime() != null) { - return AssessmentHelper.getRoundedScore(session.getScore()); + case test: return session.getTestSession().getTestEntry().getDisplayname(); + case numOfItemSessions: { + return session.getNumOfItems(); + } + case responded: { + return session.getNumOfItemsResponded(); + } + case corrected: { + return session.getNumOfItemsCorrected(); + } + case score: { + if(session.getTestSession().getFinishTime() != null) { + return AssessmentHelper.getRoundedScore(session.getTestSession().getScore()); } return "<span class='o_ochre'>" + translator.translate("assessment.test.notReleased") + "</span>"; } + case manualScore: { + if(session.getTestSession().getFinishTime() != null) { + return AssessmentHelper.getRoundedScore(session.getTestSession().getManualScore()); + } + return ""; + } + case finalScore: { + if(session.getTestSession().getFinishTime() != null) { + double score = 0.0d; + if(session.getTestSession().getScore() != null) { + score += session.getTestSession().getScore().doubleValue(); + } + if(session.getTestSession().getManualScore() != null) { + score += session.getTestSession().getManualScore().doubleValue(); + } + return AssessmentHelper.getRoundedScore(score); + } + return ""; + } case open: { - Date finished = session.getFinishTime(); + Date finished = session.getTestSession().getFinishTime(); return finished == null ? Boolean.FALSE : Boolean.TRUE; } case correction: { - return (lastSession != null && lastSession.equals(session)); + return (lastSession != null && lastSession.equals(session.getTestSession())); } default: return "ERROR"; } } @Override - public void setObjects(List<AssessmentTestSession> objects) { + public void setObjects(List<QTI21AssessmentTestSessionDetails> objects) { super.setObjects(objects); - List<AssessmentTestSession> sessions = new ArrayList<>(objects); + List<QTI21AssessmentTestSessionDetails> sessions = new ArrayList<>(objects); Collections.sort(sessions, new AssessmentTestSessionComparator()); if(sessions.size() > 0) { - lastSession = sessions.get(0); + lastSession = sessions.get(0).getTestSession(); } } public enum TSCols implements FlexiColumnDef { + terminationTime("table.header.terminationTime"), lastModified("table.header.lastModified"), duration("table.header.duration"), test("table.header.test"), - results("table.header.results"), + numOfItemSessions("table.header.itemSessions"), + responded("table.header.responded"), + corrected("table.header.corrected"), + score("table.header.score"), + manualScore("table.header.manualScore"), + finalScore("table.header.finalScore"), open("table.header.action"), correction("table.header.action"); diff --git a/src/main/java/org/olat/ims/qti21/ui/QTI21DeliveryOptionsController.java b/src/main/java/org/olat/ims/qti21/ui/QTI21DeliveryOptionsController.java index 4f75a89b5437a58a7a5a12b5b2ce1d917a2007a8..6c02618d67381f99a98d1249b8ba46a2af45da97 100644 --- a/src/main/java/org/olat/ims/qti21/ui/QTI21DeliveryOptionsController.java +++ b/src/main/java/org/olat/ims/qti21/ui/QTI21DeliveryOptionsController.java @@ -68,6 +68,7 @@ public class QTI21DeliveryOptionsController extends FormBasicController implemen private SingleSelection settingTypeEl; private MultipleSelectionElement showTitlesEl, showMenuEl; private MultipleSelectionElement personalNotesEl; + private MultipleSelectionElement showFeedbacksEl; private MultipleSelectionElement enableCancelEl, enableSuspendEl; private MultipleSelectionElement limitAttemptsEl, blockAfterSuccessEl; private MultipleSelectionElement displayQuestionProgressEl, displayScoreProgressEl; @@ -158,7 +159,10 @@ public class QTI21DeliveryOptionsController extends FormBasicController implemen digitalSignatureEl.setVisible(qtiModule.isDigitalSignatureEnabled()); digitalSignatureEl.addActionListener(FormEvent.ONCHANGE); digitalSignatureMailEl = uifactory.addCheckboxesHorizontal("digital.signature.mail", "digital.signature.mail.test.option", formLayout, onKeys, onValues); - + + showFeedbacksEl = uifactory.addCheckboxesHorizontal("showFeedbacks", "qti.form.showfeedbacks", formLayout, onKeys, onValues); + showFeedbacksEl.setElementCssClass("o_sel_qti_show_feedbacks"); + showResultsOnFinishEl = uifactory.addCheckboxesHorizontal("resultOnFiniish", "qti.form.results.onfinish", formLayout, onKeys, onValues); showResultsOnFinishEl.addActionListener(FormEvent.ONCHANGE); showResultsOnFinishEl.setElementCssClass("o_sel_qti_show_results"); @@ -202,6 +206,7 @@ public class QTI21DeliveryOptionsController extends FormBasicController implemen applyMultipleSelection(displayScoreProgressEl, options.isDisplayScoreProgress()); applyMultipleSelection(enableSuspendEl, options.isEnableSuspend()); applyMultipleSelection(enableCancelEl, options.isEnableCancel()); + applyMultipleSelection(showFeedbacksEl, !options.isHideFeedbacks()); QTI21AssessmentResultsOptions resultsOptions = options.getAssessmentResultsOptions(); if(!resultsOptions.none()) { @@ -323,7 +328,8 @@ public class QTI21DeliveryOptionsController extends FormBasicController implemen deliveryOptions.setDisplayScoreProgress(displayScoreProgressEl.isAtLeastSelected(1)); deliveryOptions.setAllowAnonym(allowAnonymEl.isAtLeastSelected(1)); deliveryOptions.setHideLms(hideLmsEl.isAtLeastSelected(1)); - + deliveryOptions.setHideFeedbacks(!showFeedbacksEl.isAtLeastSelected(1));//reverse logic for compatibility + if(showResultsOnFinishEl.isAtLeastSelected(1)) { QTI21AssessmentResultsOptions resultsOptions = new QTI21AssessmentResultsOptions( assessmentResultsOnFinishEl.isSelected(0), assessmentResultsOnFinishEl.isSelected(1), diff --git a/src/main/java/org/olat/ims/qti21/ui/ResourcesMapper.java b/src/main/java/org/olat/ims/qti21/ui/ResourcesMapper.java index a5688fa896e9f5176d3d7b6301c10cbc3fb7f5aa..386be1065d6dc17f6c21b5d2b9e5a77a4e37f3e4 100644 --- a/src/main/java/org/olat/ims/qti21/ui/ResourcesMapper.java +++ b/src/main/java/org/olat/ims/qti21/ui/ResourcesMapper.java @@ -89,6 +89,9 @@ public class ResourcesMapper implements Mapper { } else { resource = new FileMediaResource(file, true); } + } else if(filename.endsWith("/raw/_noversion_/images/transparent.gif")) { + String realPath = request.getServletContext().getRealPath("/static/images/transparent.gif"); + resource = new FileMediaResource(new File(realPath), true); } else { String submissionName = null; File storage = null; diff --git a/src/main/java/org/olat/ims/qti21/ui/_content/assessment_results.html b/src/main/java/org/olat/ims/qti21/ui/_content/assessment_results.html index d26bd43f3455bdf3fed7f2d45d7bc2f547322648..1b7dbb6a20458f62093176a2df5eff8a7f0d27e8 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_content/assessment_results.html +++ b/src/main/java/org/olat/ims/qti21/ui/_content/assessment_results.html @@ -1,6 +1,14 @@ -<div class="o_header_with_buttons"> +<div class="o_assessment_test_results"> +<a id="o_result_overview" title="$r.translateInAttribute("head.assessment.details")"></a> + +<div class="o_header_with_buttons o_qti_assessment_title"> #if($title) - <h3>$r.translate("head.assessment.details")</h3> + <h2> + $r.translate("head.assessment.details") + #if($userDisplayName) + <small>$r.translate("results.title.for", "$userDisplayName")</small> + #end + </h2> #end #if($print) <div class="o_button_group o_button_group_right"> @@ -20,103 +28,390 @@ </div> #end </div> + #if($r.visible("assessedIdentityInfos")) $r.render("assessedIdentityInfos") #end + #if($r.isNotNull($testSessionNotFound) && $testSessionNotFound) <div class="o_warning">$r.translate("assessment.test.session.reseted")</div> #end + +<div class="o_qti_metainfo o_block_large"> + #if(${testResults.hasPass()} && $testResults.metadataVisible) + #if(${testResults.getPass().booleanValue()}) + <h3 class="text-success">$r.translate("results.title.passed")</h3> + #elseif(!${testResults.getPass().booleanValue()}) + <h3 class="text-danger">$r.translate("results.title.failed")</h3> + #else + <h3>$r.translate("results.title.generic")</h3> + #end + #else + <h3>$r.translate("results.title.generic")</h3> + #end + #if($testResults.metadataVisible) -<div class="panel panel-default o_personal o_sel_results_details"> - <div class="panel-heading"> - <h4 class="panel-title"><i class="o_icon o_qtiassessment_icon"> </i> $r.translate("head.assessment.overview")</h4> - </div> - <table class="table"><tbody> - <tr> - <th>$r.translate("results.entry.time")</th> - <td>$r.formatDateAndTime($testResults.entryTime)</td> - </tr> - <tr> - <th>$r.translate("results.end.time")</th> - <td>$r.formatDateAndTime($testResults.endTime)</td> - </tr> - <tr> + <div class="row"> + <div class="o_qti_metainfo_listing #if(${testResults.hasScore()})col-xs-12 col-sm-7 col-md-8 col-lg-9 #end"> ## START left column + <div class="o_sel_results_details o_block_large"> + <table class="table table-condensed"><tbody> + <tr class="o_qti_run_durationinfo"> <th>$r.translate("results.duration")</th> - <td>$r.formatDurationInMillis($testResults.duration)</td> + <td class="o_sel_assessmenttest_duration"> + $r.formatDurationInMillis($testResults.duration) + <span class="hidden-xs hidden-sm text-muted small o_block_inline_left"> + $r.formatDateAndTime($testResults.entryTime) - $r.formatDateAndTime($testResults.endTime) + </span> + </td> </tr> - #if(${testResults.hasMaxScore()}) - <tr class="o_sel_assessmenttest_maxscore"> - <th>$r.translate("score.max")</th> - <td>$testResults.maxScore</td> + <tr class="o_qti_run_questioninfo"> + <th>$r.translate("question.progress.answered")</th> + <td> + <div> + <span title="$r.translateInAttribute("question.progress.answered")">$testResults.numberOfAnsweredQuestions</span> + $r.translate("results.of") <span title="$r.translateInAttribute("questions")">$testResults.numberOfQuestions</span> $r.translate("results.of.questions") + (${testResults.numberOfAnsweredQuestionsPercent}%) + </div> + </td> </tr> - #end #if(${testResults.hasScore()}) - <tr class="o_sel_assessmenttest_score"> + <tr class="o_qti_scoreinfo o_sel_assessmenttest_scores"> <th>$r.translate("results.score.yourscore")</th> - <td>$testResults.score</td> + <td> + <div> + #if ($testResults.hasMaxScore()) + #if ($testResults.maxScore == "-1.0") + $testResults.score $r.translate("results.points") ($r.translate("question.progress.noMaxScore")) + #else + <span title="$r.translateInAttribute("results.score.yourscore")" class="o_sel_assessmenttest_score">$testResults.score</span> + $r.translate("results.of") <span title="$r.translateInAttribute("score.max")" class="o_sel_assessmenttest_maxscore">$testResults.maxScore</span> $r.translate("results.of.points") + #end + #else + $testResults.score + #end + (${testResults.scorePercent}%) + </div> + </td> + </tr> + #end + #if ($testResults.cutValue) + <tr class="o_qti_cutinfo"> + <th>$r.translate("score.cut")</th> + <td> + $testResults.cutValue + </td> </tr> #end #if(${testResults.hasPass()}) - <tr class="o_state #if(${testResults.getPass().booleanValue()}) o_passed #elseif(!${testResults.getPass().booleanValue()}) o_failed #else o_unknown #end"> + <tr class="o_qti_stateinfo #if(${testResults.getPass().booleanValue()}) o_passed #elseif(!${testResults.getPass().booleanValue()}) o_failed #else o_unknown #end"> <th>$r.translate("passed.yourpassed")</th> <td> - #if(${testResults.getPass().booleanValue()}) - <i class="o_icon o_icon_passed"></i> - $r.translate("passed.yes") - #elseif(!${testResults.getPass().booleanValue()}) - <i class="o_icon o_icon_failed"></i> - $r.translate("passed.no") - #else - $r.translateWithPackage("org.olat.course.nodes.st", "passed.noinfo") - #end + #if(${testResults.getPass().booleanValue()}) + <i class="o_icon o_icon_passed"></i> + $r.translate("passed.yes") + #elseif(!${testResults.getPass().booleanValue()}) + <i class="o_icon o_icon_failed"></i> + $r.translate("passed.no") + #else + $r.translateWithPackage("org.olat.course.nodes.st", "passed.noinfo") + #end </td> </tr> #end #if($r.isNotNull($signatureUrl)) - <tr> + <tr class="o_qti_signature"> <th>$r.translate("digital.signature.download")</th> <td><a href="$signatureUrl" target="_blank"><i class="o_icon o_icon-fw o_icon_download"> </i> $r.translate("digital.signature.download.link")</a></td> </tr> #end + + #if ($testResults.numberOfSections == 1) + #set($itemResult = $itemResults.get(0)) + #if($r.isNotEmpty($itemResult.getSubResults())) + <tr class="o_qti_signature"> + <th>$r.translate("results.questions.overview")</th> + <td> + <div class="o_qti_section_sublisting"> + #foreach($subResults in $itemResult.getSubResults()) + #if(${subResults.isCorrect()}) + <i class="o_icon o_icon-lg o_icon_qti_summary_correct" title="$r.escapeHtml($subResults.title): $r.translateInAttribute("answer.correct")"> </i> + #elseif(${subResults.isEnded()}) + <i class="o_icon o_icon-lg o_icon_qti_summary_ended" title="$r.escapeHtml($subResults.title): $r.translateInAttribute("answer.false")"> </i> + #else + <i class="o_icon o_icon-lg o_icon_qti_summary_notAnswered" title="$r.escapeHtml($subResults.title): $r.translateInAttribute("answer.noanswer")"> </i> + #end + #end + </div> + </td> + </tr> + #end + #end </tbody></table> -</div> + + + + </div> + </div> ## END left column / o_qti_metainfo_listing + + #if(${testResults.hasScore()}) + <div class="o_qti_metainfo_visual col-xs-12 col-sm-5 col-md-4 col-lg-3"> ## START right column + <div class="o_block_centered_wrapper"><div class="o_block_centered_content"> + <div class="radial-progress radial-progress-lg #if(${testResults.hasPass()}) #if(${testResults.getPass().booleanValue()}) radial-progress-success #elseif(!${testResults.getPass().booleanValue()}) radial-progress-danger #end #end " id="o_performance_summary_visual" data-progress="0"> + <div class="circle"> + <div class="mask full"> + <div class="fill"></div> + </div> + <div class="mask half"> + <div class="fill"></div> + <div class="fill fix"></div> + </div> + <div class="shadow"></div> + </div> + <div class="inset"> + #if(${testResults.hasPass()}) + #if(${testResults.getPass().booleanValue()}) + <i class="bgIcon o_icon o_icon-fw o_icon_progress_success" title="$r.translateInAttribute("passed.yourpassed") $r.translateInAttribute("passed.yes")" > </i> + #elseif(!${testResults.getPass().booleanValue()}) + <i class="bgIcon o_icon o_icon-fw o_icon_progress_danger" title="$r.translateInAttribute("passed.yourpassed") $r.translateInAttribute("passed.no")" > </i> + #end + #end + + <div class="percentage"> + <div class="centeredWrapper"> + <div class="number"> + <span>${testResults.scorePercent}%</span> + </div> + + <div class="addon"> + <div class="o_score"> + $r.translate("table.header.score"): + <span title="$r.translateInAttribute("results.score.yourscore")" class="o_sel_assessmentitem_score text-muted xsmall">$testResults.score</span> + </div> + #if(${itemResult.hasMaxScore()}) + <div class="o_score_max o_small"> + $r.translate("results.of") <span title="$r.translateInAttribute("score.max")" class="o_sel_assessmentitem_maxscore text-muted xsmall">$testResults.maxScore</span> + </div> + #end + </div> + + </div> + </div> + </div> + </div> + </div></div> ## END o_block_centered_wrapper + </div> ## END right column / o_qti_metainfo_visual + + <script type="text/javascript"> + /* <![CDATA[ */ + setTimeout(function() { + jQuery("#o_performance_summary_visual").attr("data-progress","${testResults.scorePercent}"); + },100); + /* ]]> */ + </script> + #end + + </div> ## END row #end +</div> ## END o_qti_metainfo +#if (($r.isNotNull($testResults.numberOfSections) && $testResults.numberOfSections > 1) || !$options.isMetadata() ) +<div class="o_qti_sectionsummary row o_block_large"> #foreach($itemResult in $itemResults) - #if($itemResult.metadataVisible || $r.isNotNull($itemResult.questionItem) || ${itemResult.hasInteractions()}) - <div class="panel panel-default o_personal"> - <div class="panel-heading"> - <h5 class="panel-title"><i class="o_icon $itemResult.cssClass"> </i> $r.escapeHtml($itemResult.title)</h5> - </div> + #if(${itemResult.isSection()} && ${itemResult.metadataVisible}) + <div class="o_qti_section o_block_large_bottom col-xs-6 col-sm-4 col-md-3 col-lg-3"> + <h4>$r.escapeHtml($itemResult.title)</h4> + + #if(${itemResult.hasScore()}) + <div class="o_qti_section_visual"> + <div class="radial-progress radial-progress #if(${itemResult.hasPass()}) #if(${itemResult.getPass().booleanValue()}) radial-progress-success #elseif(!${itemResult.getPass().booleanValue()}) radial-progress-danger #end #end " id="$velocityCount" data-progress="0"> + <div class="circle"> + <div class="mask full"> + <div class="fill"></div> + </div> + <div class="mask half"> + <div class="fill"></div> + <div class="fill fix"></div> + </div> + <div class="shadow"></div> + </div> + <div class="inset"> + ## BG image for passed / failed image + #if(${itemResult.hasPass()}) + #if(${itemResult.getPass().booleanValue()}) + <i class="bgIcon o_icon o_icon-fw o_icon_progress_success" title="$r.translateInAttribute("passed.yourpassed") $r.translateInAttribute("passed.yes")" > </i> + #elseif(!${itemResult.getPass().booleanValue()}) + <i class="bgIcon o_icon o_icon-fw o_icon_progress_danger" title="$r.translateInAttribute("passed.yourpassed") $r.translateInAttribute("passed.no")" > </i> + #end + #end + <div class="percentage"> + <div class="centeredWrapper"> + <div class="number"> + <span>${itemResult.scorePercent}%</span> + </div> + <div class="addon"> + <div class="o_score"> + $r.translate("table.header.score"): + <span title="$r.translateInAttribute("results.score.yourscore")" class="o_sel_assessmentitem_score text-muted xsmall">$itemResult.score</span> + </div> + #if(${itemResult.hasMaxScore()}) + <div class="o_score_max"> + $r.translate("results.of") <span title="$r.translateInAttribute("score.max")" class="o_sel_assessmentitem_maxscore text-muted xsmall">$itemResult.maxScore</span> + </div> + #end + </div> + + </div> + </div> + </div> + </div> ## END of radial-progress + + ## Animate radial score progress via JS + <script type="text/javascript"> + /* <![CDATA[ */ + setTimeout(function() { + jQuery("#${velocityCount}").attr("data-progress","${itemResult.scorePercent}"); + },100); + /* ]]> */ + </script> + </div> ## END of o_performance_summary + #end + + #if($options.isQuestionSummary() || $options.isQuestions() || $options.isUserSolutions() || $options.isCorrectSolutions()) + <div class="o_qti_section_goto o_block_bottom o_small"> + <a href="#o_result_${velocityCount}" onclick="o_scrollToElement('#o_result_${velocityCount}');">$r.translate("results.goto.section") <i class="o_icon o_icon-fw o_icon_start"> </i></a> + </div> + #end + + ## The listing of items in the section, rendered as bullets + #if($r.isNotEmpty($itemResult.getSubResults())) + <div class="o_qti_section_sublisting"> + #foreach($subResults in $itemResult.getSubResults()) + #if(${subResults.isCorrect()}) + <i class="o_icon o_icon-lg o_icon_qti_summary_correct" title="$r.escapeHtml($subResults.title): $r.translateInAttribute("answer.correct")"> </i> + #elseif(${subResults.isEnded()}) + <i class="o_icon o_icon-lg o_icon_qti_summary_ended" title="$r.escapeHtml($subResults.title): $r.translateInAttribute("answer.false")"> </i> + #else + <i class="o_icon o_icon-lg o_icon_qti_summary_notAnswered" title="$r.escapeHtml($subResults.title): $r.translateInAttribute("answer.noanswer")"> </i> + #end + #end + </div> + #end + </div> + #end +#end ## END #foreach($itemResult in $itemResults) +</div> +#end ## END $testResults.numberOfSections > 1 + + +## 2nd iteration: List Section titles and Items +#if($options.isQuestionSummary() || $options.isQuestions() || $options.isUserSolutions() || $options.isCorrectSolutions()) +<div class="o_qti_sections o_block_large"> +#set($inItem = false) +#set($inSection = false) +#foreach($itemResult in $itemResults) + ## Title for section or header. Close divs of last iteration. Structure: o_qti_section contains one o_qti_items container which contains several o_qti_item + #if(${itemResult.isSection()}) + ## Cleanup of last iteration: close items and section container + #if ($inItem) + ## END last o_qti_items + </div> + #set($inItem = false) + #end + #if ($inSection) + ## END last o_qti_section + </div> + #if($options.isSectionSummary()) + <div class="o_qti_to_overview o_block_top"> + <a href="#o_result_overview" onclick="o_scrollToElement('#o_result_overview');" title="$r.translateInAttribute("results.goto.overview")"> + <i class="o_icon o_icon_back"></i> + $r.translate("results.goto.overview") + </a> + </div> + #end + #set($inSection = false) + #end + ## Start open section container + <div class="o_qti_section"> + #set($inSection = true) + ## Hide section title / metadata if there is only one section, redundant with test overview + #if ($r.isNotNull($testResults.numberOfSections) && $testResults.numberOfSections > 1) + <a id="o_result_${velocityCount}" title="$r.escapeHtml($itemResult.title)"></a> + <h3><i class="o_icon $itemResult.cssClass"> </i> $r.escapeHtml($itemResult.title) + #if($itemResult.metadataVisible) + <small> + #if(${itemResult.hasScore()}) + #if ($itemResult.hasMaxScore()) + #if ($itemResult.maxScore == "-1.0") + $itemResult.score $r.translate("results.points") ($r.translate("question.progress.noMaxScore")) + #else + <span title="$r.translateInAttribute("results.score.yourscore")">$itemResult.score</span> + $r.translate("results.of") <span title="$r.translateInAttribute("score.max")">$itemResult.maxScore</span> $r.translate("results.of.points") + #end + #else + $itemResult.score + #end + (${itemResult.scorePercent}%) + #end + </small> + #end + </h3> + #end + #else + ## this is an ITEM + #if (!$inItem) + <div class="o_qti_items"> + #end + <div class="o_qti_item panel panel-default"> + <div class="panel-heading"> + <h4 class="panel-title"> + <i class="o_icon $itemResult.cssClass"> </i> $r.escapeHtml($itemResult.title) + <small></small> + </h4> + </div> + #set($inItem = true) #if($itemResult.metadataVisible) <table class="table"><tbody> - <tr> - <th>$r.translate("results.entry.time")</th> - <td>$r.formatDateAndTime($itemResult.entryTime)</td> + <tr class="o_qti_item_id"> + <th>ID</th> + <td>$itemResult.itemIdentifier</td> </tr> - <tr> - <th>$r.translate("results.end.time")</th> - <td>$r.formatDateAndTime($itemResult.endTime)</td> - </tr> - <tr> - <th>$r.translate("results.duration")</th> - <td>$r.formatDurationInMillis($itemResult.duration)</td> - </tr> - <tr> + <tr class="o_sel_assessmentitem_status"> <th>$r.translate("results.session.status")</th> - <td>$itemResult.sessionStatus</td> - </tr> - - #if(${itemResult.hasMaxScore()}) - <tr class="o_sel_assessmentitem_maxscore"> - <th>$r.translate("score.max")</th> - <td>$itemResult.maxScore</td> + <td> + #if(${itemResult.hasPass()}) + #if(${itemResult.getPass().booleanValue()}) + <i class="bgIcon o_icon o_icon-fw o_icon_passed"> </i> + #elseif(!${itemResult.getPass().booleanValue()}) + <i class="bgIcon o_icon o_icon-fw o_icon_failed" > </i> + #end + #end + $itemResult.sessionStatus + </td> </tr> - #end #if(${itemResult.hasScore()}) <tr class="o_sel_assessmentitem_score"> <th>$r.translate("results.score.yourscore")</th> - <td>$itemResult.score</td> + <td> + <div class="col-xs-3 col-md-2" style='padding-left:0;'> + <span title="$r.translateInAttribute("results.score.yourscore")" class="o_sel_assessmentitem_score">$itemResult.score</span> + #if(${itemResult.hasMaxScore()}) + / <span title="$r.translateInAttribute("score.max")" class="o_sel_assessmentitem_maxscore">$itemResult.maxScore</span> + #end + </div> + <div class="col-xs-6 col-md-8"> + <div class="progress" style="width:100%;"> + <div class="progress-bar" role="progressbar" aria-valuenow="$itemResult.score" aria-valuemin="0" aria-valuemax="$itemResult.maxScore" style="width:${itemResult.scorePercent}%;"> + <span class="sr-only">${itemResult.scorePercent}%</span> + </div> + </div> + </div> + <div class="col-xs-1">${itemResult.scorePercent}%</div> + </td> + </tr> + #elseif(${itemResult.hasMaxScore()}) + <tr> + <th>$r.translate("score.max")</th> + <td><span class="o_sel_assessmentitem_maxscore">$itemResult.maxScore</span></td> </tr> #end #if(${itemResult.hasPass()}) @@ -136,39 +431,87 @@ </tr> #end </tbody></table> - #end - </div> - #end - - #if($r.isNotNull($itemResult.questionItem)) - <div class="o_block_bottom clearfix"><h5>$r.translate("question")</h5> - $r.render($itemResult.questionItem.name) + #end ## END #if($itemResult.metadataVisible) + + #if($r.isNotEmpty($itemResult.comment)) + <div class="o_sel_assessmentitem_comment o_qti_item_comment"> + <h4>$r.translate("results.comment")</h4> + $r.escapeHtml($itemResult.comment) </div> - #end + #end + + #if($options.isQuestions() || $options.isUserSolutions() || $options.isCorrectSolutions()) + <div class="panel-body"> + + #if($r.isNotNull($itemResult.questionItem)) + <div class="o_block_bottom clearfix"><h4>$r.translate("question")</h4> + $r.render($itemResult.questionItem.name) + </div> + #end + + #foreach($itemInteraction in $itemResult.interactionResults) + #if($r.isNotNull($itemInteraction.responseFormItem.name) || $r.isNotNull($itemInteraction.solutionFormItem.name)) + <div class="row #if(!$foreach.hasNext && !$r.isNotNull($itemResult.correctSolutionItem)) o_block_bottom #end"> + #if($r.isNotNull($itemInteraction.responseFormItem.name) && $r.isNotNull($itemInteraction.solutionFormItem.name)) + <div class="col-xs-6"><h4>$r.translate("response")</h4> + $r.render($itemInteraction.responseFormItem.name) + </div> + <div class="col-xs-6"><h4>$r.translate("solution")</h4> + $r.render($itemInteraction.solutionFormItem.name) + </div> + #elseif($r.isNotNull($itemInteraction.responseFormItem.name)) + <div class="col-xs-12"><h4>$r.translate("response")</h4> + $r.render($itemInteraction.responseFormItem.name) + </div> + #else + <div class="col-xs-12"><h4>$r.translate("solution")</h4> + $r.render($itemInteraction.solutionFormItem.name) + </div> + #end + </div> + #end + #end - #foreach($itemInteraction in $itemResult.interactionResults) - #if($r.isNotNull($itemInteraction.responseFormItem.name) || $r.isNotNull($itemInteraction.solutionFormItem.name)) - <div class="row #if(!$foreach.hasNext ) o_block_bottom #end"> - #if($r.isNotNull($itemInteraction.responseFormItem.name) && $r.isNotNull($itemInteraction.solutionFormItem.name)) - <div class="col-sm-6"><h5>$r.translate("response")</h5> - $r.render($itemInteraction.responseFormItem.name) - </div> - <div class="col-sm-6"><h5>$r.translate("solution")</h5> - $r.render($itemInteraction.solutionFormItem.name) - </div> - #elseif($r.isNotNull($itemInteraction.responseFormItem.name)) - <div class="col-sm-12"><h5>$r.translate("response")</h5> - $r.render($itemInteraction.responseFormItem.name) + #if($r.isNotNull($itemResult.correctSolutionItem)) + <div class="row o_block_bottom"> + #if(${itemResult.hasResponses()} && ${itemResult.hasSolutions()}) + <div class="col-sm-offset-6 col-sm-6"> + $r.render($itemResult.correctSolutionItem.name) </div> #else - <div class="col-sm-12"><h5>$r.translate("solution")</h5> - $r.render($itemInteraction.solutionFormItem.name) + <div class="col-sm-12"> + $r.render($itemResult.correctSolutionItem.name) </div> #end - </div> + </div> #end + + </div> ## END of panel-body + #end ##END #if($options.isQuestions() || $options.isUserSolutions() || $options.isCorrectSolutions()) + </div> ## END of o_qti_item #end +#end ## END foreach + +#if ($inItem) + ## END o_qti_items + </div> #end +#if ($inSection) + ## END last o_qti_section + </div> +#end +</div> ## END of o_qti_sections + +#if($options.isSectionSummary()) +<div class="o_qti_to_overview o_block_top"> + <a href="#o_result_overview" onclick="o_scrollToElement('#o_result_overview');" title="$r.translateInAttribute("results.goto.overview")"> + <i class="o_icon o_icon_back"></i> + $r.translate("results.goto.overview") + </a> +</div> +#end + +#end ## END of #if($options.isQuestionSummary() || $options.isQuestions() || $options.isUserSolutions() || $options.isCorrectSolutions()) #if($printCommand) <script type="text/javascript"> @@ -180,3 +523,4 @@ /* ]]> */ </script> #end +</div> ## END of o_assessment_test_results \ No newline at end of file diff --git a/src/main/java/org/olat/ims/qti21/ui/_content/at_run.html b/src/main/java/org/olat/ims/qti21/ui/_content/at_run.html index 0a6f8075ce00acdd3a9460bf1f22d0abe562f5be..fe2983defacf0a39caebd453142e0e56922c601e 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_content/at_run.html +++ b/src/main/java/org/olat/ims/qti21/ui/_content/at_run.html @@ -1,6 +1,6 @@ <div id="o_qti_run" class="row"> <div id="o_qti_run_title" class="o_header_with_buttons"> - <h3>$r.escapeHtml($title)</h3> + <h2>$r.escapeHtml($title)</h2> <div class="o_button_group o_button_group_right"> #set( $showClose = ${qtiWorksStatus.mayCloseTest()} && $r.available("closeTest") && $r.visible("closeTest") ) @@ -46,7 +46,7 @@ </script> #end - #if (!$qtiWorksStatus.isSurvey() && (($displayScoreProgress && $qtiWorksStatus.hasMaxScore()) || $displayQuestionProgress)) + #if (!$qtiWorksStatus.isSurvey() && (($displayScoreProgress && $qtiWorksStatus.hasMaxScore()) || $displayQuestionProgress) && !$r.visible("qtiResults")) <div id="o_qti_run_infos" class="clearfix"> #if (!$qtiWorksStatus.isSurvey() && $displayScoreProgress && $qtiWorksStatus.score) <div id="o_qti_scoreinfo"> diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties index eb62502297f3db6ca3ad77c96b26c6763e5a876e..ce0229688dc81390dae0fa1d9d6ead70a00e33f4 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_de.properties @@ -6,6 +6,9 @@ admin.title=QTI 2.1 Einstellungen anonym.not.allowed.descr=Anonyme Benutzer d\u00FCrfen diesen Test nicht durchf\u00FChren anonym.not.allowed.title=Anonyme Benutzer anonym.user=Anonym Benutzer +answer.correct=$org.olat.ims.qti.statistics.ui\:answer.correct +answer.false=$org.olat.ims.qti.statistics.ui\:answer.false +answer.noanswer=$org.olat.ims.qti.statistics.ui\:answer.noanswer assessment.comment.legend=Pers\u00F6nliche Notizen assessment.item.status.answered=Beantwortet assessment.item.status.finished=Erledigt @@ -108,6 +111,7 @@ interaction.order.drag.msg=Ziehen Sie die nicht verwendete Elemente von hier... interaction.order.drop.msg=Drop and order your selected items here... interaction.order.source=Quelle interaction.order.target=Ziel +item.comment=Kommentar kprim.minus=Falsch kprim.plus=Richtig math.extension=QtiWorks Math extension @@ -119,7 +123,7 @@ paint.erase.hint=Wollen Sie den Bild l\u00F6schen? passed.no=$org.olat.course.nodes.iq\:passed.no passed.yes=$org.olat.course.nodes.iq\:passed.yes passed.yourpassed=$org.olat.course.nodes.iq\:passed.yourpassed -pull=Ziehen +pull=Einziehen qti.form.allow.anonym=$org.olat.course.nodes.iq\:qti.form.allow.anonym qti.form.allow.anonym.hint=Anonyme Benutzer oder Gäste können den Test durchführen. Der Test kann auch als Lernressource zur Verfügung gestellt werden, ohne in einem Kurs angehängt zu sein. qti.form.attempts=$org.olat.course.nodes.iq\:qti.form.attempts @@ -138,6 +142,7 @@ qti.form.scoreprogress=$org.olat.course.nodes.iq\:qti.form.scoreprogress qti.form.setting.choose=Profil w\u00E4hlen... qti.form.setting.formative=Formativ (\u00DCbungtest) qti.form.setting.summative=Summativ (scharfe Pr\u00FCfung) +qti.form.showfeedbacks=Feedbacks anzeigen qti.form.summary=$org.olat.course.nodes.iq\:qti.form.summary qti.form.summary.help=$org.olat.course.nodes.iq\:qti.form.summary.help qti.form.summary.metadata=$org.olat.course.nodes.iq\:qti.form.summary.metadata @@ -147,6 +152,7 @@ qti.form.summary.questions.metadata=$org.olat.course.nodes.iq\:qti.form.summary. qti.form.summary.responses=$org.olat.course.nodes.iq\:qti.form.summary.responses qti.form.summary.solutions=$org.olat.course.nodes.iq\:qti.form.summary.solutions question=Frage +questions=Anzahl Fragen im Test question.progress.answered=Beantwortet question.progress.noMaxScore=$org.olat.modules.iq\:noMaxScore question.progress.score=$org.olat.modules.iq\:actualPoints @@ -156,6 +162,7 @@ reset.test.data.acknowledge=Ich verstehe, dass die Daten werden endg\u00FCltig g reset.test.data.text=Wollen Sie wirklich alle Daten von dem Test zur\u00FCcksetzen? Die Resultate von <strong>{0} Benutzern</strong> werden definitiv gel\u00F6scht. reset.test.data.text.ref=Sie k\u00F6nnen nicht alle Daten von dem Test weil noch an diesem Ressourcen "{0}" verbunden ist. reset.test.data.title=Daten von Test zur\u00FCcksetzen +results.comment=Kommentar / Beurteilung results.duration=Dauer results.empty=Es wurden keine Resultate gefunden, die angezeigt werden k\u00F6nnen. results.end.time=Enddatum @@ -167,6 +174,17 @@ results.session.status.initial=Nicht gestartet results.session.status.pendingResponseProcessing=$\:results.session.status.pendingSubmission results.session.status.pendingSubmission=Gesehen aber nicht geantwortet results.summary.title=$org.olat.course.nodes\:personal.title +results.title.failed=Sie haben den Test nicht bestanden! +results.title.generic=Dies sind Ihre Testresultate +results.title.passed=Sie haben den Test bestanden! +results.title.for=f\u00FCr {0} +results.of=von +results.of.questions=Fragen +results.points=Punkte +results.questions.overview=Fragen\u00FCbersicht +results.of.points=Punkten +results.goto.section=Zur Sektion springen +results.goto.overview=Zur\u00FCck zur Übersicht retrievetest.confirm.text=$org.olat.ims.qti\:retrievetest.confirm.text retrievetest.confirm.text.plural=$org.olat.ims.qti.statistics.ui\:retrievetest.confirm.text.plural retrievetest.confirm.title=$org.olat.ims.qti.statistics.ui\:retrievetest.confirm.title @@ -175,6 +193,7 @@ response=Antwort review.responses=Ihre Antworten \u00FCberpr\u00FCfen review.responses.desc=Sie k\u00F6nnen Ihre Antworten von einer Sektion oder von allen Fragen \u00FCberpr\u00FCfen. Unten finden Sie die entsprechende Liste. score.max=$org.olat.ims.qti\:score.max +score.cut=$org.olat.ims.qti\:score.cut serialize.error=Unerwarte Fehler w\u00E4hrend Speicherung von Datei settings.profile=Standardeinstellungen settings.choose.descr=Sie k\u00F6nnen die Standardeinstellung f\u00FCr summative oder formative Tests \u00FCbernehmen und anpassen oder Sie setzen die Optionen selbst. @@ -186,8 +205,15 @@ tab.options=Optionen tab.reset.data=Daten zur\u00FCcksetzen table.header.action=Aktion table.header.duration=Dauer -table.header.lastModified=Datum +table.header.lastModified=Letzte \u00C4nderung table.header.results=Resultat +table.header.terminationTime=Beendet am +table.header.corrected=Korrigiert +table.header.finalScore=Endg\u00FCltige Punkte +table.header.itemSessions=\# Fragen +table.header.manualScore=Manuell Punkte +table.header.responded=Beantwortet +table.header.score=Punkte terminated.msg=Der Test ist beendet. test.complete=Test abgeschlossen test.entry.page.text=Der Test hat bis {0} Teile. diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties index a092c45ae50eaa45cad3b0648b4ec553521f76c9..3b9745a9781390203323843f429313964befccc4 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_en.properties @@ -6,6 +6,9 @@ admin.title=QTI 2.1 settings anonym.not.allowed.descr=Anonym users are not allowed to play this test anonym.not.allowed.title=Anonym users anonym.user=Anonymous user +answer.correct=$org.olat.ims.qti.statistics.ui\:answer.correct +answer.false=$org.olat.ims.qti.statistics.ui\:answer.false +answer.noanswer=$org.olat.ims.qti.statistics.ui\:answer.noanswer assessment.comment.legend=Please use the following text box if you need to provide any additional information, comments or feedback during this test\: assessment.item.status.answered=Answered assessment.item.status.finished=Completed @@ -108,6 +111,7 @@ interaction.order.drag.msg=Drag unused items from here... interaction.order.drop.msg=Drop and order your selected items here... interaction.order.source=Source interaction.order.target=Target +item.comment=Comment kprim.minus=False kprim.plus=True math.extension=QtiWorks Math extension @@ -138,6 +142,7 @@ qti.form.scoreprogress=$org.olat.course.nodes.iq\:qti.form.scoreprogress qti.form.setting.choose=Choose a profile... qti.form.setting.formative=Formative (exercise test) qti.form.setting.summative=Summative (real test) +qti.form.showfeedbacks=Show feedbacks qti.form.summary=$org.olat.course.nodes.iq\:qti.form.summary qti.form.summary.help=$org.olat.course.nodes.iq\:qti.form.summary.help qti.form.summary.metadata=$org.olat.course.nodes.iq\:qti.form.summary.metadata @@ -147,6 +152,7 @@ qti.form.summary.questions.metadata=$org.olat.course.nodes.iq\:qti.form.summary. qti.form.summary.responses=$org.olat.course.nodes.iq\:qti.form.summary.responses qti.form.summary.solutions=$org.olat.course.nodes.iq\:qti.form.summary.solutions question=Question +questions=Number of questions in test question.progress.answered=Answered question.progress.noMaxScore=$org.olat.modules.iq\:noMaxScore question.progress.score=$org.olat.modules.iq\:actualPoints @@ -157,6 +163,7 @@ reset.test.data.text=Do you really want to reset the assessment data of test? Th reset.test.data.text.ref=You cannot delete all the data of this test because it's referenced by the following ressources "{0}". reset.test.data.title=Reset data of test response=Response +results.comment=Comment / assessment results.duration=Duration results.empty=No results found that could be displayed. results.end.time=End date @@ -168,6 +175,17 @@ results.session.status.initial=Not started results.session.status.pendingResponseProcessing=$\:results.session.status.pendingSubmission results.session.status.pendingSubmission=Seen but not answered results.summary.title=$org.olat.course.nodes\:personal.title +results.title.failed=Sorry, you have failed the test! +results.title.generic=This are your test results +results.title.passed=You have passed the test! +results.title.for=for {0} +results.of=of +results.of.questions=questions +results.points=points +results.of.points=points +results.questions.overview=Question overview +results.goto.section=go to section +results.goto.overview=go back to overview retrievetest.confirm.text=$org.olat.ims.qti\:retrievetest.confirm.text retrievetest.confirm.text.plural=$org.olat.ims.qti.statistics.ui\:retrievetest.confirm.text.plural retrievetest.confirm.title=$org.olat.ims.qti.statistics.ui\:retrievetest.confirm.title @@ -175,6 +193,7 @@ retrievetest.nothing.todo=$org.olat.ims.qti.statistics.ui\:retrievetest.nothing. review.responses=Review your responses review.responses.desc=You may review your responses to some (or all) questions. These are listed below. score.max=$org.olat.ims.qti\:score.max +score.cut=$org.olat.ims.qti\:score.cut serialize.error=An unexpected happens while saving the file. settings.profile=Standard settings settings.choose.descr=You can chose a default setting for summative or formative tests and adapt it afterward or you set the options by yourself. @@ -186,8 +205,15 @@ tab.options=Options tab.reset.data=Reset data table.header.action=Action table.header.duration=Duration -table.header.lastModified=Date +table.header.lastModified=Last modified table.header.results=Score +table.header.corrected=Corrected +table.header.finalScore=Final score +table.header.itemSessions=\# questions +table.header.manualScore=Manual score +table.header.responded=Responded +table.header.score=Score +table.header.terminationTime=Finished at terminated.msg=The test is finished. test.complete=Test complete test.entry.page.text=This test consists of up to {0} parts. diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_fr.properties index 4c5c6b7540e999ecc4738082ac5068e870b7149b..fd228fc3b2a9f74b1fd5b1b4051a84b36c4407f4 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Tue Apr 04 18:39:43 CEST 2017 +#Thu Jun 08 21:14:12 CEST 2017 actualPoints=$org.olat.modules.iq\:actualPoints admin.menu.title=QTI 2.1 admin.menu.title.alt=Configuration QTI 2.1 @@ -6,6 +6,9 @@ admin.title=Configuration QTI 2.1 anonym.not.allowed.descr=Les utilisateurs anonymes ne peuvent pas effectuer ce test. anonym.not.allowed.title=Utilisateurs anonymes anonym.user=Utilisateur anonyme +answer.correct=$org.olat.ims.qti.statistics.ui\:answer.correct +answer.false=$org.olat.ims.qti.statistics.ui\:answer.false +answer.noanswer=$org.olat.ims.qti.statistics.ui\:answer.noanswer assessment.comment.legend=Notes personelles assessment.item.mark=Ajouter un signet pour revoir cette question plus tard assessment.item.status.answered=R\u00E9pondu @@ -41,6 +44,7 @@ assessment.test.nextQuestion=Question suivante assessment.test.notReleased=$org.olat.ims.qti\:notReleased assessment.test.open=Ouvert assessment.test.questionMenu=Menu navigation du test +assessment.test.session.reseted=Les r\u00E9sultats ont certainement \u00E9t\u00E9 remis \u00E0 z\u00E9ro par un administrateur du cours. assessment.test.suspended=Le test a \u00E9t\u00E9 suspendu. assessment.testpart.config=Part du test attemptsleft=$org.olat.modules.iq\:attemptsleft @@ -107,6 +111,7 @@ interaction.order.drag.msg=Glissez les \u00E9l\u00E9ments inutilis\u00E9s depuis interaction.order.drop.msg=D\u00E9posez et ordonnez les \u00E9l\u00E9ments s\u00E9lectionn\u00E9s ici... interaction.order.source=Source interaction.order.target=But +item.comment=Commentaire kprim.minus=Faux kprim.plus=Vrai last.saved=Sauv\u00E9 pour la derni\u00E8re fois \u00E0\: @@ -138,6 +143,7 @@ qti.form.scoreprogress=$org.olat.course.nodes.iq\:qti.form.scoreprogress qti.form.setting.choose=Choisir un profile... qti.form.setting.formative=Formatif (exercice) qti.form.setting.summative=Normatif (test r\u00E9el) +qti.form.showfeedbacks=Montrer le retour d'informations qti.form.summary=$org.olat.course.nodes.iq\:qti.form.summary qti.form.summary.help=$org.olat.course.nodes.iq\:qti.form.summary.help qti.form.summary.metadata=$org.olat.course.nodes.iq\:qti.form.summary.metadata @@ -150,16 +156,24 @@ question=Question question.progress.answered=R\u00E9pondu question.progress.noMaxScore=$org.olat.modules.iq\:noMaxScore question.progress.score=$org.olat.modules.iq\:actualPoints +questions=Nombre de questions du test reset.data=R\u00E9initialiser les donn\u00E9es reset.test.data.acknowledge=Je comprends que les donn\u00E9es seront d\u00E9finitivement effac\u00E9es. reset.test.data.text=Voulez-vous vraiment mettre \u00E0 z\u00E9ro toutes les donn\u00E9es de ce test? Tous les r\u00E9sultats seront d\u00E9finitivement effac\u00E9s. reset.test.data.text.ref=Vous ne pouvez pas effacer les donn\u00E9es de ce test car il est utilis\u00E9 par le ou les cours suivants "{0}". reset.test.data.title=Mise \u00E0 z\u00E9ro des donn\u00E9es du test response=R\u00E9ponse +results.comment=Commentaire / \u00E9valuation results.duration=Dur\u00E9e results.empty=Pas de r\u00E9sultats qui puissent \u00EAtre affich\u00E9s. results.end.time=Date de fin results.entry.time=Date de d\u00E9but +results.goto.overview=Retour \u00E0 la vue d'ensemble +results.goto.section=Vers la section +results.of=de +results.of.points=points +results.of.questions=Questions +results.points=Points results.score.yourscore=$org.olat.course.nodes.iq\:score.yourscore results.session.status=Status results.session.status.final=R\u00E9pondu @@ -167,12 +181,16 @@ results.session.status.initial=Pas commenc\u00E9 results.session.status.pendingResponseProcessing=$\:results.session.status.pendingSubmission results.session.status.pendingSubmission=Vu mais pas r\u00E9pondu results.summary.title=$org.olat.course.nodes\:personal.title +results.title.failed=D\u00E9sol\u00E9, vous n'avez pas r\u00E9ussi le test. +results.title.generic=Ce sont les r\u00E9sultats de votre test. +results.title.passed=Vous avez r\u00E9ussi le test. retrievetest.confirm.text=$org.olat.ims.qti\:retrievetest.confirm.text retrievetest.confirm.text.plural=$org.olat.ims.qti.statistics.ui\:retrievetest.confirm.text.plural retrievetest.confirm.title=$org.olat.ims.qti.statistics.ui\:retrievetest.confirm.title retrievetest.nothing.todo=$org.olat.ims.qti.statistics.ui\:retrievetest.nothing.todo review.responses=Revoir vos r\u00E9ponses review.responses.desc=Vous pouvez passez en revue les r\u00E9ponses que vous avez faites \u00E0 toute ou partie des questions. Elles sont \u00E9num\u00E9r\u00E9es ci-dessous. +score.cut=$org.olat.ims.qti\:score.cut score.max=$org.olat.ims.qti\:score.max serialize.error=Une erreur inattendue s'est produite lors de la sauvegarde du fichier. settings.choose.descr=Vous pouvez s\u00E9lectionner une s\u00E9rie de configurations pour les tests somatifs ou normatifs et les adapter ensuite ou de s\u00E9lectionner les diff\u00E9rentes options par vous-m\u00EAme. @@ -184,9 +202,16 @@ suspend.test=$org.olat.modules.iq\:suspendAssess tab.options=Options tab.reset.data=Mise \u00E0 z\u00E9ro de donn\u00E9es table.header.action=Action +table.header.corrected=Corrig\u00E9 table.header.duration=Dur\u00E9e +table.header.finalScore=Points d\u00E9finitifs +table.header.itemSessions=\# questions table.header.lastModified=Date +table.header.manualScore=Points manuels +table.header.responded=R\u00E9pondu table.header.results=R\u00E9sultat +table.header.score=Points +table.header.terminationTime=Termin\u00E9 le terminated.msg=Le test est termin\u00E9 test.complete=Test clos test.entry.page.text=Le test a jusqu'\u00E0 {0} parties. diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_it.properties index 942901980a5f13e87bf0ede77a52c2e65ec17aec..89d3fdd96e0476a7ecfb7b08c80032893d8f1611 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_it.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_it.properties @@ -187,6 +187,12 @@ table.header.action=Azione table.header.duration=Durata table.header.lastModified=Data table.header.results=Punteggio +table.header.corrected=Corretto +table.header.finalScore=Punteggio finale +table.header.itemSessions=N. di domande +table.header.manualScore=Punteggio manuale +table.header.responded=Risposto +table.header.score=Punteggio terminated.msg=Il test \u00E8 terminato. test.complete=Test completato test.entry.page.text=Il test consiste di {0} sezioni. diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_pt_BR.properties index f18616f13dffa4970ee68d3f5975ed13e1cccd1b..5f6122c3735aa3fe3ec760e9eda89095e348bc2a 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_pt_BR.properties @@ -186,6 +186,12 @@ tab.reset.data=Redefinir dados table.header.action=A\u00E7\u00E3o table.header.duration=Dura\u00E7\u00E3o table.header.lastModified=Data +table.header.corrected=Corrigido +table.header.finalScore=Pontua\u00E7\u00E3o final +table.header.itemSessions=\# quest\u00F5es +table.header.manualScore=Pontua\u00E7\u00E3o manual +table.header.responded=Respondidos +table.header.score=Pontua\u00E7\u00E3o table.header.results=Pontua\u00E7\u00E3o terminated.msg=O teste foi conclu\u00EDdo. test.complete=Teste conclu\u00EDdo diff --git a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_zh_CN.properties index 4fbd927bdc1fb7beb332cc0681b46822f58381ae..3d213f0378a72d9528a937d77dad5ee636d1d19b 100644 --- a/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_zh_CN.properties +++ b/src/main/java/org/olat/ims/qti21/ui/_i18n/LocalStrings_zh_CN.properties @@ -186,6 +186,12 @@ table.header.action=\u52A8\u4F5C table.header.duration=\u6301\u7EED\u65F6\u95F4 table.header.lastModified=\u65E5\u671F table.header.results=\u5206\u6570 +table.header.corrected=\u66F4\u6B63 +table.header.finalScore=\u6700\u7EC8\u5206\u6570 +table.header.itemSessions=\#\u95EE\u9898 +table.header.manualScore=\u624B\u52A8\u5206\u6570 +table.header.responded=\u5DF2\u89E3\u7B54 +table.header.score=\u5206\u6570 terminated.msg=\u6D4B\u9A8C\u5DF2\u5B8C\u6210 test.complete=\u6D4B\u9A8C\u5B8C\u6210 test.entry.page.text=\u672C\u6D4B\u9A8C\u7531\u81F3\u591A{0}\u4E2A\u90E8\u5206\u7EC4\u6210 diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentItemCorrectionController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentItemCorrectionController.java index 87b3d8a27685811a4b022f7dd8f6c4fa6c196f11..2efc5c719599f0fb7d09db8d755030d6515c84d9 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentItemCorrectionController.java +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentItemCorrectionController.java @@ -41,6 +41,7 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.util.StringHelper; +import org.olat.core.util.Util; import org.olat.course.assessment.AssessmentHelper; import org.olat.fileresource.FileResourceManager; import org.olat.fileresource.types.ImsQTI21Resource; @@ -52,16 +53,16 @@ import org.olat.ims.qti21.AssessmentTestSession; import org.olat.ims.qti21.QTI21Service; import org.olat.ims.qti21.model.ParentPartItemRefs; import org.olat.ims.qti21.model.xml.QtiNodesExtractor; +import org.olat.ims.qti21.ui.AssessmentTestDisplayController; import org.olat.ims.qti21.ui.ResourcesMapper; import org.olat.ims.qti21.ui.components.InteractionResultFormItem; -import org.olat.modules.assessment.AssessmentEntry; -import org.olat.modules.assessment.AssessmentService; import org.olat.repository.RepositoryEntry; import org.olat.user.UserManager; import org.springframework.beans.factory.annotation.Autowired; import uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem; import uk.ac.ed.ph.jqtiplus.node.item.interaction.DrawingInteraction; +import uk.ac.ed.ph.jqtiplus.node.item.interaction.EndAttemptInteraction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.ExtendedTextInteraction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.Interaction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.UploadInteraction; @@ -105,13 +106,11 @@ public class IdentitiesAssessmentItemCorrectionController extends FormBasicContr private QTI21Service qtiService; @Autowired private UserManager userManager; - @Autowired - private AssessmentService assessmentService; public IdentitiesAssessmentItemCorrectionController(UserRequest ureq, WindowControl wControl, AssessmentTestCorrection testCorrections, AssessmentItemRef itemRef, RepositoryEntry testEntry, ResolvedAssessmentTest resolvedAssessmentTest) { - super(ureq, wControl, "users_interactions"); + super(ureq, wControl, "users_interactions", Util.createPackageTranslator(AssessmentTestDisplayController.class, ureq.getLocale())); FileResourceManager frm = FileResourceManager.getInstance(); File fUnzippedDirRoot = frm.unzipFileResource(testEntry.getOlatResource()); @@ -132,6 +131,10 @@ public class IdentitiesAssessmentItemCorrectionController extends FormBasicContr initForm(ureq); } + + protected void disableNext() { + nextQuestionButton.setEnabled(false); + } @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { @@ -141,8 +144,7 @@ public class IdentitiesAssessmentItemCorrectionController extends FormBasicContr List<AssessmentItemCorrection> corrections = testCorrections.getCorrections(itemRef); if(corrections != null) { for(AssessmentItemCorrection correction:corrections) { - AssessmentEntry assessmentEntry = testCorrections.getAssessmentEntry(correction.getAssessedIdentity()); - initFormItemResult(correction, assessmentEntry, layoutCont); + initFormItemResult(correction, layoutCont); } } } @@ -150,25 +152,29 @@ public class IdentitiesAssessmentItemCorrectionController extends FormBasicContr FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); formLayout.add(buttonsCont); buttonsCont.setRootForm(mainForm); + uifactory.addFormCancelButton("cancel", buttonsCont, ureq, getWindowControl()); uifactory.addFormSubmitButton("save", buttonsCont); nextQuestionButton = uifactory.addFormLink("save.next", buttonsCont, Link.BUTTON); - uifactory.addFormCancelButton("cancel", buttonsCont, ureq, getWindowControl()); } - private void initFormItemResult(AssessmentItemCorrection correction, AssessmentEntry assessmentEntry, FormLayoutContainer layoutCont) { + private void initFormItemResult(AssessmentItemCorrection correction, FormLayoutContainer layoutCont) { TestPlanNode node = correction.getItemNode(); TestPlanNodeKey testPlanNodeKey = node.getKey(); AssessmentItemSession itemSession = correction.getItemSession(); AssessmentTestSession testSession = correction.getTestSession(); TestSessionState testSessionState = correction.getTestSessionState(); + boolean manualScore = false; List<InteractionResultFormItem> responseItems = new ArrayList<>(interactions.size()); for(Interaction interaction:interactions) { + if(!(interaction instanceof EndAttemptInteraction)) { + responseItems.add(initFormExtendedTextInteraction(testPlanNodeKey, interaction, testSessionState, testSession, layoutCont)); + + } if(interaction instanceof UploadInteraction || interaction instanceof DrawingInteraction || interaction instanceof ExtendedTextInteraction) { - responseItems.add(initFormExtendedTextInteraction(testPlanNodeKey, interaction, testSessionState, testSession, layoutCont)); - + manualScore = true; File submissionDir = qtiService.getSubmissionDirectory(testSession); if(submissionDir != null) { submissionDirectoryMaps.put(testSession.getKey(), submissionDir); @@ -177,31 +183,36 @@ public class IdentitiesAssessmentItemCorrectionController extends FormBasicContr } String mScore = ""; - if(itemSession != null && itemSession.getManualScore() != null) { - mScore = AssessmentHelper.getRoundedScore(itemSession.getManualScore()); - } - String userComment = ""; - if(assessmentEntry != null && StringHelper.containsNonWhitespace(assessmentEntry.getComment())) { - userComment = assessmentEntry.getComment(); + String coachComment = ""; + if(itemSession != null) { + if(itemSession.getManualScore() != null) { + mScore = AssessmentHelper.getRoundedScore(itemSession.getManualScore()); + } + coachComment = itemSession.getCoachComment(); } String fullname = userManager.getUserDisplayName(correction.getAssessedIdentity()); - TextElement scoreEl = uifactory.addTextElement("scoreItem" + count++, "score", 6, mScore, layoutCont); - TextElement commentEl = uifactory.addTextAreaElement("commentItem" + count++, "comment", 2500, 4, 60, false, userComment, layoutCont); + TextElement scoreEl = null; + if(manualScore) { + scoreEl = uifactory.addTextElement("scoreItem" + count++, "score", 6, mScore, layoutCont); + } + TextElement commentEl = uifactory.addTextAreaElement("commentItem" + count++, "comment", 2500, 4, 60, false, coachComment, layoutCont); IdentityAssessmentItemWrapper wrapper = new IdentityAssessmentItemWrapper(fullname, assessmentItem, correction, responseItems, scoreEl, commentEl); - Double minScore = QtiNodesExtractor.extractMinScore(assessmentItem); - Double maxScore = QtiNodesExtractor.extractMaxScore(assessmentItem); - if(maxScore != null) { - if(minScore == null) { - minScore = 0.0d; + if(manualScore) { + Double minScore = QtiNodesExtractor.extractMinScore(assessmentItem); + Double maxScore = QtiNodesExtractor.extractMaxScore(assessmentItem); + if(maxScore != null) { + if(minScore == null) { + minScore = 0.0d; + } + + wrapper.setMinScore(AssessmentHelper.getRoundedScore(minScore)); + wrapper.setMaxScore(AssessmentHelper.getRoundedScore(maxScore)); + wrapper.setMinScoreVal(minScore); + wrapper.setMaxScoreVal(maxScore); + scoreEl.setExampleKey("correction.min.max.score", new String[]{ wrapper.getMinScore(), wrapper.getMaxScore() }); } - - wrapper.setMinScore(AssessmentHelper.getRoundedScore(minScore)); - wrapper.setMaxScore(AssessmentHelper.getRoundedScore(maxScore)); - wrapper.setMinScoreVal(minScore); - wrapper.setMaxScoreVal(maxScore); - scoreEl.setExampleKey("correction.min.max.score", new String[]{ wrapper.getMinScore(), wrapper.getMaxScore() }); } itemResults.add(wrapper); @@ -238,6 +249,8 @@ public class IdentitiesAssessmentItemCorrectionController extends FormBasicContr allOk &= validateItemResults(itemResult); } } + + flc.getFormItemComponent().contextPut("hasErrors", new Boolean(!allOk)); return allOk & super.validateFormLogic(ureq); } @@ -245,31 +258,32 @@ public class IdentitiesAssessmentItemCorrectionController extends FormBasicContr private boolean validateItemResults(IdentityAssessmentItemWrapper itemResult) { boolean allOk = true; - String scoreVal = itemResult.getScoreEl().getValue(); - itemResult.getScoreEl().clearError(); - if(StringHelper.containsNonWhitespace(scoreVal)) { - try { - double score = Double.parseDouble(scoreVal); - //check boundaries - - boolean boundariesOk = true; - if(itemResult.getMinScore() != null && score < itemResult.getMinScoreVal().doubleValue()) { - boundariesOk &= false; - } - if(itemResult.getMaxScore() != null && score > itemResult.getMaxScoreVal().doubleValue()) { - boundariesOk &= false; - } - - if(!boundariesOk) { - itemResult.getScoreEl() - .setErrorKey("correction.min.max.score", new String[]{ itemResult.getMinScore(), itemResult.getMaxScore() }); + if(itemResult.getScoreEl() != null) { + itemResult.getScoreEl().clearError(); + String scoreVal = itemResult.getScoreEl().getValue(); + if(StringHelper.containsNonWhitespace(scoreVal)) { + try { + double score = Double.parseDouble(scoreVal); + boolean boundariesOk = true; + if(itemResult.getMinScore() != null && score < itemResult.getMinScoreVal().doubleValue()) { + boundariesOk &= false; + } + if(itemResult.getMaxScore() != null && score > itemResult.getMaxScoreVal().doubleValue()) { + boundariesOk &= false; + } + + if(!boundariesOk) { + itemResult.getScoreEl() + .setErrorKey("correction.min.max.score", new String[]{ itemResult.getMinScore(), itemResult.getMaxScore() }); + } + allOk &= boundariesOk; + } catch(Exception e) { + itemResult.getScoreEl().setErrorKey("form.error.nointeger", null); + allOk &= false; } - allOk &= boundariesOk; - } catch(Exception e) { - itemResult.getScoreEl().setErrorKey("form.error.nointeger", null); - allOk &= false; } } + return allOk; } @@ -298,53 +312,62 @@ public class IdentitiesAssessmentItemCorrectionController extends FormBasicContr if(itemResults == null) return; for(IdentityAssessmentItemWrapper itemResult:itemResults) { - AssessmentItemCorrection itemCorrection = itemResult.getCorrection(); - TestSessionState testSessionState = itemCorrection.getTestSessionState(); - AssessmentTestSession candidateSession = itemCorrection.getTestSession(); - AssessmentSessionAuditLogger candidateAuditLogger = qtiService.getAssessmentSessionAuditLogger(candidateSession, false); + doSave(itemResult); + } + } + + private void doSave(IdentityAssessmentItemWrapper itemResult) { + AssessmentItemCorrection itemCorrection = itemResult.getCorrection(); + TestSessionState testSessionState = itemCorrection.getTestSessionState(); + AssessmentTestSession candidateSession = itemCorrection.getTestSession(); + AssessmentSessionAuditLogger candidateAuditLogger = qtiService.getAssessmentSessionAuditLogger(candidateSession, false); + + String scoreVal = null; + if(itemResult.getScoreEl() != null) { + scoreVal = itemResult.getScoreEl().getValue(); + } + String commentVal = null; + if(itemResult.getCommentEl() != null) { + commentVal = itemResult.getCommentEl().getValue(); + } + if(StringHelper.containsNonWhitespace(scoreVal) || commentVal != null) { + + String stringuifiedIdentifier = itemResult + .getTestPlanNodeKey().getIdentifier().toString(); + + ParentPartItemRefs parentParts = AssessmentTestHelper + .getParentSection(itemResult.getTestPlanNodeKey(), testSessionState, resolvedAssessmentTest); + AssessmentItemSession itemSession = qtiService + .getOrCreateAssessmentItemSession(candidateSession, parentParts, stringuifiedIdentifier); - String scoreVal = itemResult.getScoreEl().getValue(); if(StringHelper.containsNonWhitespace(scoreVal)) { BigDecimal mScore = new BigDecimal(scoreVal); - String stringuifiedIdentifier = itemResult - .getTestPlanNodeKey().getIdentifier().toString(); - - ParentPartItemRefs parentParts = AssessmentTestHelper - .getParentSection(itemResult.getTestPlanNodeKey(), testSessionState, resolvedAssessmentTest); - AssessmentItemSession itemSession = qtiService - .getOrCreateAssessmentItemSession(candidateSession, parentParts, stringuifiedIdentifier); itemSession.setManualScore(mScore); - itemSession = qtiService.updateAssessmentItemSession(itemSession); - itemCorrection.setItemSession(itemSession); - - candidateAuditLogger.logCorrection(candidateSession, itemSession, getIdentity()); - } - - String comment = itemResult.getCommentEl().getValue(); - AssessmentEntry assesssmentEntry = testCorrections.getAssessmentEntry(itemCorrection.getAssessedIdentity()); - if(assesssmentEntry != null) { - if(!comment.equals(assesssmentEntry.getComment())) { - assesssmentEntry.setComment(comment); - AssessmentEntry mergedEntry = assessmentService.updateAssessmentEntry(assesssmentEntry); - testCorrections.addAssessmentEntry(mergedEntry); - } } - - BigDecimal totalScore = null; - for(AssessmentItemCorrection corr:testCorrections.getCorrections(itemCorrection.getAssessedIdentity())) { - BigDecimal mScore = corr.getManualScore(); - if(totalScore == null) { - totalScore = mScore; - } else if(mScore != null) { - totalScore = totalScore.add(mScore); - } + if(commentVal != null) { + itemSession.setCoachComment(commentVal); } - candidateSession.setManualScore(totalScore); - candidateSession = qtiService.updateAssessmentTestSession(candidateSession); - itemCorrection.setTestSession(candidateSession); + itemSession = qtiService.updateAssessmentItemSession(itemSession); + itemCorrection.setItemSession(itemSession); - IOUtils.closeQuietly(candidateAuditLogger); + candidateAuditLogger.logCorrection(candidateSession, itemSession, getIdentity()); } + + BigDecimal totalScore = null; + for(AssessmentItemCorrection corr:testCorrections.getCorrections(itemCorrection.getAssessedIdentity())) { + BigDecimal mScore = corr.getManualScore(); + if(totalScore == null) { + totalScore = mScore; + } else if(mScore != null) { + totalScore = totalScore.add(mScore); + } + } + + candidateSession.setManualScore(totalScore); + candidateSession = qtiService.updateAssessmentTestSession(candidateSession); + itemCorrection.setTestSession(candidateSession); + + IOUtils.closeQuietly(candidateAuditLogger); } } \ No newline at end of file diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentTestCorrectionController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentTestCorrectionController.java index b5f11d5c842e061e98d82ad07973c1c8b4f334e1..4e50236254391b429a1f3e16d95b1c061bdd58ad 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentTestCorrectionController.java +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentTestCorrectionController.java @@ -27,7 +27,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; import org.olat.basesecurity.GroupRoles; import org.olat.core.gui.UserRequest; @@ -150,10 +149,7 @@ public class IdentitiesAssessmentTestCorrectionController extends BasicControlle } private List<AssessmentItemRef> calculateAssessmentItemToCorrect() { - List<AssessmentItemRef> itemRefList = resolvedAssessmentTest.getAssessmentItemRefs(); - return itemRefList.stream() - .filter(itemRef -> AssessmentTestHelper.needManualCorrection(itemRef, resolvedAssessmentTest)) - .collect(Collectors.toList()); + return resolvedAssessmentTest.getAssessmentItemRefs(); } private void updatePreviousNext() { @@ -189,6 +185,10 @@ public class IdentitiesAssessmentTestCorrectionController extends BasicControlle if(currentItemRef != null) { itemCorrectionCtrl = new IdentitiesAssessmentItemCorrectionController(ureq, getWindowControl(), testCorrections, currentItemRef, testEntry, resolvedAssessmentTest); + int index = itemRefs.indexOf(currentItemRef); + if(index + 1 == itemRefs.size()) { + itemCorrectionCtrl.disableNext(); + } listenTo(itemCorrectionCtrl); mainVC.put("itemCorrection", itemCorrectionCtrl.getInitialComponent()); } else if(itemCorrectionCtrl != null) { diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentTestOverviewController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentTestOverviewController.java index a375691cedbfb211240326355ef3594915d7bf61..332a857b633e5ada0f44b4d0a2b08aff72ae13cb 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentTestOverviewController.java +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/IdentitiesAssessmentTestOverviewController.java @@ -35,8 +35,10 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTable import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; +import org.olat.core.util.Util; import org.olat.course.assessment.ui.tool.AssessmentToolConstants; import org.olat.ims.qti21.AssessmentTestSession; +import org.olat.ims.qti21.ui.AssessmentTestDisplayController; import org.olat.ims.qti21.ui.assessment.IdentitiesAssessmentTestOverviewDataModel.IACols; import org.olat.modules.assessment.ui.event.CompleteAssessmentTestSessionEvent; import org.olat.user.UserManager; @@ -66,7 +68,7 @@ public class IdentitiesAssessmentTestOverviewController extends FormBasicControl public IdentitiesAssessmentTestOverviewController(UserRequest ureq, WindowControl wControl, AssessmentTestCorrection testCorrections) { - super(ureq, wControl, "overview_corrections"); + super(ureq, wControl, "overview_corrections", Util.createPackageTranslator(AssessmentTestDisplayController.class, ureq.getLocale())); setTranslator(userManager.getPropertyHandlerTranslator(getTranslator())); this.testCorrections = testCorrections; diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/IdentityAssessmentTestCorrectionController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/IdentityAssessmentTestCorrectionController.java index 481f4d3025b111e7cff04674c0d2b816f1b0c0d0..8b95f7f8660bbe1c0967db8bc6432f7829d8b304 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/IdentityAssessmentTestCorrectionController.java +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/IdentityAssessmentTestCorrectionController.java @@ -36,6 +36,7 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.util.StringHelper; +import org.olat.core.util.Util; import org.olat.course.assessment.AssessmentHelper; import org.olat.fileresource.FileResourceManager; import org.olat.fileresource.types.ImsQTI21Resource; @@ -47,6 +48,7 @@ import org.olat.ims.qti21.AssessmentTestSession; import org.olat.ims.qti21.QTI21Service; import org.olat.ims.qti21.model.ParentPartItemRefs; import org.olat.ims.qti21.model.xml.QtiNodesExtractor; +import org.olat.ims.qti21.ui.AssessmentTestDisplayController; import org.olat.ims.qti21.ui.CandidateSessionContext; import org.olat.ims.qti21.ui.ResourcesMapper; import org.olat.ims.qti21.ui.components.InteractionResultFormItem; @@ -58,6 +60,7 @@ import org.springframework.beans.factory.annotation.Autowired; import uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem; import uk.ac.ed.ph.jqtiplus.node.item.interaction.DrawingInteraction; +import uk.ac.ed.ph.jqtiplus.node.item.interaction.EndAttemptInteraction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.ExtendedTextInteraction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.Interaction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.UploadInteraction; @@ -96,7 +99,7 @@ public class IdentityAssessmentTestCorrectionController extends FormBasicControl private final ResolvedAssessmentTest resolvedAssessmentTest; private final Map<String,AssessmentItemSession> identifierToItemSession = new HashMap<>(); - private TextElement commentEl; + private TextElement testCommentEl; @Autowired private QTI21Service qtiService; @@ -107,7 +110,7 @@ public class IdentityAssessmentTestCorrectionController extends FormBasicControl public IdentityAssessmentTestCorrectionController(UserRequest ureq, WindowControl wControl, AssessmentTestSession session) { - super(ureq, wControl, "user_interactions"); + super(ureq, wControl, "user_interactions", Util.createPackageTranslator(AssessmentTestDisplayController.class, ureq.getLocale())); this.candidateSession = session; testEntry = session.getTestEntry(); @@ -166,13 +169,13 @@ public class IdentityAssessmentTestCorrectionController extends FormBasicControl if(assessmentEntry != null && StringHelper.containsNonWhitespace(assessmentEntry.getComment())) { comment = assessmentEntry.getComment(); } - commentEl = uifactory.addTextAreaElement("comment.user", "comment", 2500, 4, 72, true, comment, formLayout); + testCommentEl = uifactory.addTextAreaElement("comment.test", "comment.test", 2500, 4, 72, true, comment, formLayout); FormLayoutContainer buttonsCont = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); formLayout.add(buttonsCont); buttonsCont.setRootForm(mainForm); - uifactory.addFormSubmitButton("save", buttonsCont); uifactory.addFormCancelButton("cancel", buttonsCont, ureq, getWindowControl()); + uifactory.addFormSubmitButton("save", buttonsCont); } private void initFormItemResult(FormLayoutContainer layoutCont, TestPlanNode node, @@ -183,50 +186,61 @@ public class IdentityAssessmentTestCorrectionController extends FormBasicControl ResolvedAssessmentItem resolvedAssessmentItem = resolvedAssessmentTest.getResolvedAssessmentItem(itemRef); AssessmentItem assessmentItem = resolvedAssessmentItem.getRootNodeLookup().extractIfSuccessful(); + boolean manualScore = false; + List<Interaction> interactions = assessmentItem.getItemBody().findInteractions(); List<InteractionResultFormItem> responseItems = new ArrayList<>(); for(Interaction interaction:interactions) { + if(!(interaction instanceof EndAttemptInteraction)) { + responseItems.add(initFormExtendedTextInteraction(resolvedAssessmentItem, testPlanNodeKey, interaction, layoutCont)); + } if(interaction instanceof UploadInteraction || interaction instanceof DrawingInteraction || interaction instanceof ExtendedTextInteraction) { - responseItems.add(initFormExtendedTextInteraction(resolvedAssessmentItem, testPlanNodeKey, interaction, layoutCont)); + manualScore = true; } } if(responseItems.size() > 0) { String mScore = ""; + String comment = ""; String stringuifiedIdentifier = identifier.toString(); AssessmentItemSession itemSession = null; if(identifierToItemSession.containsKey(stringuifiedIdentifier)) { itemSession = identifierToItemSession.get(stringuifiedIdentifier); + comment = itemSession.getCoachComment(); if(itemSession.getManualScore() != null) { mScore = AssessmentHelper.getRoundedScore(itemSession.getManualScore()); } } ItemSessionState itemSessionState = testSessionState.getItemSessionStates().get(testPlanNodeKey); - AssessmentItemCorrection infos = new AssessmentItemCorrection(candidateSession.getIdentity(), candidateSession, testSessionState, itemSession, itemSessionState, itemRef, node); String fullname = userManager.getUserDisplayName(candidateSession.getIdentity()); - TextElement scoreEl = uifactory.addTextElement("scoreItem" + count++, "score", 6, mScore, layoutCont); - IdentityAssessmentItemWrapper wrapper = new IdentityAssessmentItemWrapper(fullname, assessmentItem, infos, responseItems, scoreEl, null); + TextElement scoreEl = null; + if(manualScore) { + scoreEl = uifactory.addTextElement("score_item_" + count++, "score", 6, mScore, layoutCont); + } + TextElement commentEl = uifactory.addTextAreaElement("comment_item_" + count++, "comment", 2500, 4, 72, true, comment, layoutCont); + IdentityAssessmentItemWrapper wrapper = new IdentityAssessmentItemWrapper(fullname, assessmentItem, infos, responseItems, scoreEl, commentEl); - Double minScore = QtiNodesExtractor.extractMinScore(assessmentItem); - Double maxScore = QtiNodesExtractor.extractMaxScore(assessmentItem); - if(maxScore != null) { - if(minScore == null) { - minScore = 0.0d; - } + if(manualScore) { + Double minScore = QtiNodesExtractor.extractMinScore(assessmentItem); + Double maxScore = QtiNodesExtractor.extractMaxScore(assessmentItem); + if(maxScore != null) { + if(minScore == null) { + minScore = 0.0d; + } - wrapper.setMinScore(AssessmentHelper.getRoundedScore(minScore)); - wrapper.setMaxScore(AssessmentHelper.getRoundedScore(maxScore)); - wrapper.setMinScoreVal(minScore); - wrapper.setMaxScoreVal(maxScore); - scoreEl.setExampleKey("correction.min.max.score", new String[]{ wrapper.getMinScore(), wrapper.getMaxScore() }); + wrapper.setMinScore(AssessmentHelper.getRoundedScore(minScore)); + wrapper.setMaxScore(AssessmentHelper.getRoundedScore(maxScore)); + wrapper.setMinScoreVal(minScore); + wrapper.setMaxScoreVal(maxScore); + scoreEl.setExampleKey("correction.min.max.score", new String[]{ wrapper.getMinScore(), wrapper.getMaxScore() }); + } } - itemResults.add(wrapper); } } @@ -259,64 +273,60 @@ public class IdentityAssessmentTestCorrectionController extends FormBasicControl if(itemResults != null) { for(IdentityAssessmentItemWrapper itemResult:itemResults) { - String scoreVal = itemResult.getScoreEl().getValue(); - itemResult.getScoreEl().clearError(); - try { - double score = Double.parseDouble(scoreVal); - //check boundaries - - boolean boundariesOk = true; - if(itemResult.getMinScore() != null && score < itemResult.getMinScoreVal().doubleValue()) { - boundariesOk &= false; - } - if(itemResult.getMaxScore() != null && score > itemResult.getMaxScoreVal().doubleValue()) { - boundariesOk &= false; - } - - if(!boundariesOk) { - itemResult.getScoreEl() - .setErrorKey("correction.min.max.score", new String[]{ itemResult.getMinScore(), itemResult.getMaxScore() }); - } - allOk &= boundariesOk; - } catch(Exception e) { - itemResult.getScoreEl().setErrorKey("form.error.nointeger", null); - allOk &= false; + if(itemResult.getScoreEl() != null) { + allOk &= validateScore(itemResult); } } } + flc.getFormItemComponent().contextPut("hasErrors", new Boolean(!allOk)); + return allOk & super.validateFormLogic(ureq); } + + private boolean validateScore(IdentityAssessmentItemWrapper itemResult) { + boolean allOk = true; + + String scoreVal = itemResult.getScoreEl().getValue(); + itemResult.getScoreEl().clearError(); + try { + double score = Double.parseDouble(scoreVal); + //check boundaries + + boolean boundariesOk = true; + if(itemResult.getMinScore() != null && score < itemResult.getMinScoreVal().doubleValue()) { + boundariesOk &= false; + } + if(itemResult.getMaxScore() != null && score > itemResult.getMaxScoreVal().doubleValue()) { + boundariesOk &= false; + } + + if(!boundariesOk) { + itemResult.getScoreEl() + .setErrorKey("correction.min.max.score", new String[]{ itemResult.getMinScore(), itemResult.getMaxScore() }); + } + allOk &= boundariesOk; + } catch(Exception e) { + itemResult.getScoreEl().setErrorKey("form.error.nointeger", null); + allOk &= false; + } + + return allOk; + } @Override protected void formOK(UserRequest ureq) { if(itemResults != null) { - AssessmentSessionAuditLogger candidateAuditLogger = qtiService.getAssessmentSessionAuditLogger(candidateSession, false); BigDecimal totalScore = new BigDecimal(0); for(IdentityAssessmentItemWrapper itemResult:itemResults) { - String scoreVal = itemResult.getScoreEl().getValue(); - if(StringHelper.containsNonWhitespace(scoreVal)) { - BigDecimal mScore = new BigDecimal(scoreVal); - String stringuifiedIdentifier = itemResult - .getTestPlanNodeKey().getIdentifier().toString(); - - ParentPartItemRefs parentParts = getParentSection(itemResult.getTestPlanNodeKey()); - AssessmentItemSession itemSession = qtiService - .getOrCreateAssessmentItemSession(candidateSession, parentParts, stringuifiedIdentifier); - itemSession.setManualScore(mScore); - itemSession = qtiService.updateAssessmentItemSession(itemSession); - totalScore = totalScore.add(mScore); - - candidateAuditLogger.logCorrection(candidateSession, itemSession, getIdentity()); - } + totalScore = doUpdateItemSession(itemResult, totalScore, candidateAuditLogger); } - candidateSession.setManualScore(totalScore); candidateSession = qtiService.updateAssessmentTestSession(candidateSession); - String comment = commentEl.getValue(); + String comment = testCommentEl.getValue(); if(assessmentEntry != null && !comment.equals(assessmentEntry.getComment())) { assessmentEntry = assessmentService.loadAssessmentEntry(candidateSession.getIdentity(), candidateSession.getRepositoryEntry(), candidateSession.getSubIdent()); assessmentEntry.setComment(comment); @@ -326,6 +336,40 @@ public class IdentityAssessmentTestCorrectionController extends FormBasicControl fireEvent(ureq, Event.DONE_EVENT); } + private BigDecimal doUpdateItemSession(IdentityAssessmentItemWrapper itemResult, BigDecimal totalScore, AssessmentSessionAuditLogger candidateAuditLogger) { + String scoreVal = null; + if(itemResult.getScoreEl() != null) { + scoreVal = itemResult.getScoreEl().getValue(); + } + String comment = null; + if(itemResult.getCommentEl() != null) { + comment = itemResult.getCommentEl().getValue(); + } + + if(StringHelper.containsNonWhitespace(scoreVal) || comment != null) { + String stringuifiedIdentifier = itemResult + .getTestPlanNodeKey().getIdentifier().toString(); + + ParentPartItemRefs parentParts = getParentSection(itemResult.getTestPlanNodeKey()); + AssessmentItemSession itemSession = qtiService + .getOrCreateAssessmentItemSession(candidateSession, parentParts, stringuifiedIdentifier); + + if(StringHelper.containsNonWhitespace(scoreVal)) { + BigDecimal mScore = new BigDecimal(scoreVal); + itemSession.setManualScore(mScore); + totalScore = totalScore.add(mScore); + } + if(comment != null) { + itemSession.setCoachComment(comment); + } + itemSession = qtiService.updateAssessmentItemSession(itemSession); + + candidateAuditLogger.logCorrection(candidateSession, itemSession, getIdentity()); + } + + return totalScore; + } + private ParentPartItemRefs getParentSection(TestPlanNodeKey itemKey) { return AssessmentTestHelper.getParentSection(itemKey, testSessionState, resolvedAssessmentTest); } diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/QTI21CorrectionToolController.java b/src/main/java/org/olat/ims/qti21/ui/assessment/QTI21CorrectionToolController.java index ffb23644736aae45f6957e12da23e93acf3d5bcb..d288a34f8f7ac2b13ca1c1d3a03b994a96e24934 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/QTI21CorrectionToolController.java +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/QTI21CorrectionToolController.java @@ -92,6 +92,7 @@ public class QTI21CorrectionToolController extends BasicController { CompleteAssessmentTestSessionEvent catse = (CompleteAssessmentTestSessionEvent)event; List<AssessmentTestSession> testSessionsToComplete = catse.getTestSessions(); doUpdateCourseNode(correctionCtrl.getTestCorrections(), testSessionsToComplete); + fireEvent(ureq, Event.CHANGED_EVENT); } cmc.deactivate(); cleanUp(); diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/_content/user_interactions.html b/src/main/java/org/olat/ims/qti21/ui/assessment/_content/user_interactions.html index b5bde79ac27cb00863e139bc243f62318cb1d8ad..96f2e462d95aa3ab875be2a99145b45f651c2ddf 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/_content/user_interactions.html +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/_content/user_interactions.html @@ -10,6 +10,7 @@ $r.render($responseFormItem.name) </div> #end + #if($r.isNotNull(${interactionWrapper.scoreEl})) <div class="form-group #if($f.hasError($item)) has-feedback has-error #end clearfix"> $r.render("${interactionWrapper.scoreEl.name}_LABEL", "$f.getItemId($item)", "col-sm-3") <div class="col-sm-9"> @@ -28,24 +29,47 @@ </div> #end </div> -#end - - <div class='form-group #if($f.hasError("comment.user")) has-feedback has-error #end clearfix'> - $r.render("comment.user_LABEL", "$f.getItemId($item)", "col-sm-3") + #end + <div class='form-group #if($f.hasError($item)) has-feedback has-error #end clearfix'> + $r.render("${interactionWrapper.commentEl.name}_LABEL", "$f.getItemId($item)", "col-sm-3") <div class="col-sm-9"> - $r.render("comment.user", "form") + $r.render($interactionWrapper.commentEl.name, "form") #if($f.hasError("comment.user")) <span class="o_icon o_icon_error form-control-feedback"></span> #end </div> + #if($f.hasError($interactionWrapper.commentEl.name)) + <div class="col-sm-offset-3 col-sm-9"> + $r.render("${interactionWrapper.commentEl.name}_ERROR") + </div> + #end + </div> +#end + <hr/> + <div class='form-group #if($f.hasError("comment.test")) has-feedback has-error #end clearfix'> + $r.render("comment.test_LABEL", "$f.getItemId($item)", "col-sm-3") + <div class="col-sm-9"> + $r.render("comment.test", "form") + #if($f.hasError("comment.test")) + <span class="o_icon o_icon_error form-control-feedback"></span> + #end + </div> #if($f.hasError("comment.user")) <div class="col-sm-offset-3 col-sm-9"> - $r.render("comment.user_ERROR") + $r.render("comment.test_ERROR") </div> #end </div> - - <div class="o_button_group"> - $r.render("buttons") + #if($r.isNotNull($hasErrors) && $hasErrors) + <div class='form-group has-error clearfix'> + <div class="col-sm-12"> + <div class="o_error">$r.translate("error.in.form")</div> + </div> + </div> + #end + <div class="form-group"> + <div class="col-sm-9 col-sm-offset-3"> + $r.render("buttons") + </div> </div> </fieldset> \ No newline at end of file diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/_content/users_interactions.html b/src/main/java/org/olat/ims/qti21/ui/assessment/_content/users_interactions.html index 3f758273d842b0bc16f62b113978baeb60a9889a..7f7abfa4469db02eaa8e8cdbb3d19088f141ab63 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/_content/users_interactions.html +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/_content/users_interactions.html @@ -14,6 +14,7 @@ </div> #end + #if($r.isNotNull(${interactionWrapper.scoreEl})) <div class="form-group #if($f.hasError($item)) has-feedback has-error #end clearfix"> $r.render("${interactionWrapper.scoreEl.name}_LABEL", "$f.getItemId($item)", "col-sm-3") <div class="col-sm-9"> @@ -32,6 +33,7 @@ </div> #end </div> + #end <div class="form-group #if($f.hasError($item)) has-feedback has-error #end clearfix"> $r.render("${interactionWrapper.commentEl.name}_LABEL", "$f.getItemId($item)", "col-sm-3") @@ -53,7 +55,16 @@ </div> #end - <div class="o_button_group"> - $r.render("buttons") + #if($r.isNotNull($hasErrors) && $hasErrors) + <div class='form-group has-error clearfix'> + <div class="col-sm-12"> + <div class="o_error">$r.translate("error.in.form")</div> + </div> + </div> + #end + <div class="form-group"> + <div class="col-sm-9 col-sm-offset-3"> + $r.render("buttons") + </div> </div> </fieldset> \ No newline at end of file diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_de.properties index 313269e87c0b01c4f59d2e932538970b8019bc53..7cec6550a48aa783fd28f7a74848afec09a18e96 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_de.properties @@ -1,9 +1,11 @@ #Tue Nov 15 16:25:36 CET 2016 assessed.identity=Benutzer comment=Kommentar +comment.test=Test Kommentar correction=Korrigieren correction.min.max.score=Punkte m\u00FCssen zwischen {0} und {1} sein. correction.test.title=Korrigieren +error.in.form=Die Änderungen können nicht gespeichert werden, da bei einer oder mehreren Fragen Fehler auftreten. Die detaillierte Fehlerbeschreibung befindet sich bei der betroffenen Frage. grade.no.items=Es gibt kein Resultat f\u00FCr diese Frage zu korrigieren. grade.nobody=Es gibt kein Resultat zu korrigieren. next.item=Zur n\u00E4chsten Frage @@ -13,11 +15,5 @@ previous.item=Zur\u00FCck zur letzte Frage save.next=Speichern und n\u00E4chste Frage save.tests=Als endg\u00FCltiges Resultat speichern score=Punkte -table.header.corrected=Korrigiert -table.header.finalScore=Endg\u00FCltige Punkte -table.header.itemSessions=\# Fragen -table.header.manualScore=Manuell Punkte -table.header.responded=Beantwortet -table.header.score=Punkte table.header.username=Benutzername warning.not.submitted=Antwort wurde nicht von Benutzer abgegeben diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_en.properties index 28b9616f4ca911e6f4a463eb91b5fff3bf6aa4f8..53a68c16c91b96c1fa0b9d295f04fbc571c7af6b 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_en.properties @@ -1,9 +1,11 @@ #Tue Aug 23 10:23:23 CEST 2016 assessed.identity=assessed user comment=Comment +comment.test=Test comment correction=Correction correction.min.max.score=Score need to be between {0} and {1}. correction.test.title=Grade +error.in.form=The changes cannot be saved, as there are errors in one or more question items. The detailed error description can be found by the corresponding question item. grade.no.items=There is no results to correct for this question. grade.nobody=There is no results to correct next.item=Next question @@ -13,12 +15,6 @@ previous.item=Previous question save.next=Save and next question save.tests=Save results as completed score=Score -table.header.corrected=Corrected -table.header.finalScore=Final score -table.header.itemSessions=\# questions -table.header.manualScore=Manual score -table.header.responded=Responded -table.header.score=Score table.header.username=Username warning.not.submitted=Answer was not submitted by the user diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_fr.properties index f47f3f7b43c794af77e961243b960a0c444f3868..afb9e376c1e823ac03094244e212872cf34cb546 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_fr.properties @@ -1,9 +1,11 @@ -#Tue Apr 04 18:39:59 CEST 2017 +#Thu Jun 08 21:15:43 CEST 2017 assessed.identity=Utilisateur comment=Commentaire +comment.test=Commentaire du test correction=Corriger correction.min.max.score=Le r\u00E9sultat doit \u00EAtre entre {0} et {1}. correction.test.title=Corriger +error.in.form=Les changements n'ont pas pu \u00EAtre sauv\u00E9 car ils y a encore des erreurs pour une ou plusieurs questions. Le d\u00E9tail des erreurs se trouvent aupr\u00E8s de la question correspondante. grade.no.items=Il n'y a pas de r\u00E9sultats \u00E0 corriger pour cette question. grade.nobody=Il n'y a pas de r\u00E9sultats \u00E0 corriger. next.item=Question suivante @@ -13,11 +15,5 @@ previous.item=Question pr\u00E9c\u00E9dente save.next=Sauver et question suivante save.tests=Sauver les r\u00E9sultats d\u00E9finitifs score=R\u00E9sultats -table.header.corrected=Corrig\u00E9 -table.header.finalScore=Points d\u00E9finitifs -table.header.itemSessions=\# questions -table.header.manualScore=Points manuels -table.header.responded=R\u00E9pondu -table.header.score=Points table.header.username=Nom d'utilisateur warning.not.submitted=La r\u00E9ponse n'a pas \u00E9t\u00E9 soumise par l'utilisateur diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_it.properties b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_it.properties index a10a8d286f42ed25737aaea97c1bca06ff3aca08..155ad913b9c86052ca3f0d458a6d9f58c4aefc58 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_it.properties +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_it.properties @@ -13,11 +13,5 @@ previous.item=Domanda precedente save.next=Salvare e domanda successiva save.tests=Salvare come completato score=Punteggio -table.header.corrected=Corretto -table.header.finalScore=Punteggio finale -table.header.itemSessions=N. di domande -table.header.manualScore=Punteggio manuale -table.header.responded=Risposto -table.header.score=Punteggio table.header.username=Nome utente warning.not.submitted=Non \u00E8 stata inviata risposta dall'utente diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_pt_BR.properties index 317a8ea1b7b537a78df0999e5cf9f57084cf1278..7b16464ab29b87451f6d5d7199fef4f23cf21b63 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_pt_BR.properties @@ -13,11 +13,5 @@ previous.item=Quest\u00E3o anterior save.next=Salvar e pr\u00F3xima pergunta save.tests=Salvar resultados como conclu\u00EDdos score=Pontua\u00E7\u00E3o -table.header.corrected=Corrigido -table.header.finalScore=Pontua\u00E7\u00E3o final -table.header.itemSessions=\# quest\u00F5es -table.header.manualScore=Pontua\u00E7\u00E3o manual -table.header.responded=Respondidos -table.header.score=Pontua\u00E7\u00E3o table.header.username=Usu\u00E1rio warning.not.submitted=A resposta n\u00E3o foi enviada pelo usu\u00E1rio diff --git a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_zh_CN.properties b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_zh_CN.properties index b4b063aa8e51aec52e1b298a5814a169fd7e46c1..422d5c4a926be7642f6c493cc55ea6d8a8edd887 100644 --- a/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_zh_CN.properties +++ b/src/main/java/org/olat/ims/qti21/ui/assessment/_i18n/LocalStrings_zh_CN.properties @@ -13,10 +13,4 @@ previous.item=\u524D\u4E00\u4E2A\u95EE\u9898 save.next=\u4FDD\u5B58\u540E\u5230\u4E0B\u4E00\u4E2A\u95EE\u9898 save.tests=\u4FDD\u5B58\u6210\u7EE9\uFF0C\u7ED3\u675F score=\u5206\u6570 -table.header.corrected=\u66F4\u6B63 -table.header.finalScore=\u6700\u7EC8\u5206\u6570 -table.header.itemSessions=\#\u95EE\u9898 -table.header.manualScore=\u624B\u52A8\u5206\u6570 -table.header.responded=\u5DF2\u89E3\u7B54 -table.header.score=\u5206\u6570 table.header.username=\u7528\u6237\u540D\u79F0 diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponent.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponent.java index 017781e1784d45091d619262411d9be94aa1c457..cb818c9beece90163883d49abaa2501b898ae748 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponent.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponent.java @@ -53,6 +53,8 @@ public abstract class AssessmentObjectComponent extends AbstractComponent implem private Context context; + private boolean hideFeedbacks = false; + private String mapperUri; private String submissionMapperUri; private URI assessmentObjectUri; @@ -94,6 +96,14 @@ public abstract class AssessmentObjectComponent extends AbstractComponent implem this.assessmentObjectUri = assessmentObjectUri; } + public boolean isHideFeedbacks() { + return hideFeedbacks; + } + + public void setHideFeedbacks(boolean hideFeedbacks) { + this.hideFeedbacks = hideFeedbacks; + } + public abstract String getResponseUniqueIdentifier(ItemSessionState itemSessionState, Interaction interaction); public abstract Interaction getInteractionOfResponseUniqueIdentifier(String responseUniqueId); @@ -184,7 +194,6 @@ public abstract class AssessmentObjectComponent extends AbstractComponent implem jsa.addRequiredStaticJsFile("js/jquery/maphilight/jquery.maphilight.js"); jsa.addRequiredStaticJsFile("js/jquery/ui/jquery-ui-1.11.4.custom.qti.min.js"); - jsa.addRequiredStaticJsFile("js/jquery/openolat/jquery.paint.js"); jsa.addRequiredStaticJsFile("js/jquery/qti/jquery.associate.js"); @@ -196,8 +205,10 @@ public abstract class AssessmentObjectComponent extends AbstractComponent implem jsa.addRequiredStaticJsFile("js/jquery/qti/jquery.slider.js"); jsa.addRequiredStaticJsFile("js/jquery/qti/jquery.order.js"); jsa.addRequiredStaticJsFile("js/jquery/qti/jquery.match.js"); + jsa.addRequiredStaticJsFile("js/jquery/qti/jquery.match_dnd.js"); jsa.addRequiredStaticJsFile("js/jquery/qti/jquery.gapMatch.js"); jsa.addRequiredStaticJsFile("js/jquery/qti/jquery.hotspot.js"); + } @Override diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java index 21922c48a9ef77e1d21beacedf99060ad05fd682..2042a5bf980285bec5f91a2f31a8e5319d02d5e3 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectComponentRenderer.java @@ -153,6 +153,7 @@ import uk.ac.ed.ph.jqtiplus.node.item.interaction.GraphicOrderInteraction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.HotspotInteraction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.HottextInteraction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.InlineChoiceInteraction; +import uk.ac.ed.ph.jqtiplus.node.item.interaction.Interaction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.MatchInteraction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.MediaInteraction; import uk.ac.ed.ph.jqtiplus.node.item.interaction.OrderInteraction; @@ -247,6 +248,8 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent protected void renderTestItemModalFeedback(AssessmentRenderer renderer, StringOutput sb, AssessmentObjectComponent component, ResolvedAssessmentItem resolvedAssessmentItem, ItemSessionState itemSessionState, URLBuilder ubu, Translator translator) { + if(component.isHideFeedbacks()) return; + List<ModalFeedback> modalFeedbacks = new ArrayList<>(); AssessmentItem assessmentItem = resolvedAssessmentItem.getRootNodeLookup().extractIfSuccessful(); for(ModalFeedback modalFeedback:assessmentItem.getModalFeedbacks()) { @@ -319,7 +322,7 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent * @param ubu * @param translator */ - protected void renderTestItemModalFeedback_feedbackModal(AssessmentRenderer renderer, StringOutput sb, ModalFeedback modalFeedback, + private void renderTestItemModalFeedback_feedbackModal(AssessmentRenderer renderer, StringOutput sb, ModalFeedback modalFeedback, AssessmentObjectComponent component, ResolvedAssessmentItem resolvedAssessmentItem, ItemSessionState itemSessionState, URLBuilder ubu, Translator translator) { sb.append("<div class='modalFeedback o_info clearfix"); @@ -367,7 +370,7 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent * @param ubu * @param translator */ - protected void renderTestItemModalFeedback_standard(AssessmentRenderer renderer, StringOutput sb, ModalFeedback modalFeedback, + private void renderTestItemModalFeedback_standard(AssessmentRenderer renderer, StringOutput sb, ModalFeedback modalFeedback, AssessmentObjectComponent component, ResolvedAssessmentItem resolvedAssessmentItem, ItemSessionState itemSessionState, URLBuilder ubu, Translator translator) { sb.append("<div class='modalFeedback o_info clearfix'>"); @@ -892,6 +895,10 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent private void renderEndAttemptInteraction(AssessmentRenderer renderer, StringOutput sb, EndAttemptInteraction interaction, ItemSessionState itemSessionState, AssessmentObjectComponent component, URLBuilder ubu, Translator translator) { + if(QTI21Constants.HINT_REQUEST_IDENTIFIER.equals(interaction.getResponseIdentifier()) + && component.isHideFeedbacks()) { + return;//don't show our hint's, they trigger feedbacks + } boolean ended = component.isItemSessionEnded(itemSessionState, renderer.isSolutionMode()); AssessmentObjectFormItem item = component.getQtiItem(); @@ -1010,6 +1017,8 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent interactionName = interaction.getQtiClassName(); if(matchInteraction.getResponseIdentifier().toString().startsWith("KPRIM_")) { interactionName += "_kprim"; + } else if(hasClass(matchInteraction, QTI21Constants.CSS_MATCH_DRAG_AND_DROP)) { + interactionName += "_dnd"; } break; } @@ -1026,6 +1035,13 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent return velocity_root + "/" + templateName + ".html"; } + private final boolean hasClass(Interaction interaction, String cssClass) { + if(interaction == null || cssClass == null) return false; + + List<String> cssClasses = interaction.getClassAttr(); + return cssClasses != null && cssClasses.size() > 0 && cssClasses.contains(cssClass); + } + /* <xsl:template match="qti:gap"> <xsl:variable name="gmi" select="ancestor::qti:gapMatchInteraction" as="element(qti:gapMatchInteraction)"/> @@ -1110,10 +1126,11 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent sb.append(" checked"); } sb.append(" />"); - FormJSHelper.appendFlexiFormDirtyOn(sb, component.getQtiItem().getRootForm(), "change click", guid); + sb.append("<label for='").append(guid).append("'>"); hottext.getInlineStatics().forEach((inline) -> renderInline(renderer, sb, component, resolvedAssessmentItem, itemSessionState, inline, ubu, translator)); - sb.append("</span>"); + FormJSHelper.appendFlexiFormDirtyOn(sb, component.getQtiItem().getRootForm(), "change click", guid); + sb.append("</label></span>"); } } @@ -1209,7 +1226,7 @@ public abstract class AssessmentObjectComponentRenderer extends DefaultComponent if(ended) { sb.append(" disabled"); } - if(StringHelper.containsNonWhitespace(interaction.getPlaceholderText())) { + if(!ended && StringHelper.containsNonWhitespace(interaction.getPlaceholderText())) { sb.append(" placeholder=\"").append(StringHelper.escapeHtml(interaction.getPlaceholderText())).append("\""); } if(isBadResponse(itemSessionState, interaction.getResponseIdentifier()) diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectVelocityRenderDecorator.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectVelocityRenderDecorator.java index 1be51d263f5c45414e1c50c21b90a7bd49350c32..05fdaed97ee277fc36b9a18c4521076c8ac39f93 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectVelocityRenderDecorator.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentObjectVelocityRenderDecorator.java @@ -512,6 +512,14 @@ public class AssessmentObjectVelocityRenderDecorator extends VelocityRenderDecor return new SliderOptions(discrete, reverse, min, max, step); } + public boolean hasCssClass(Interaction interaction, String cssClass) { + if(StringHelper.containsNonWhitespace(cssClass)) { + List<String> cssClasses = interaction.getClassAttr(); + return cssClasses != null && cssClasses.contains(cssClass); + } + return false; + } + public boolean isVisible(Choice choice, ItemSessionState iSessionState) { return AssessmentRenderFunctions.isVisible(choice, iSessionState); } diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponent.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponent.java index b6573d87e0dbfd6915503a270f5f5ce8b67a63a9..115abc04fdd4c81eb219662b25c6e685ae1ae5c4 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponent.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponent.java @@ -151,6 +151,10 @@ public class AssessmentTestComponent extends AssessmentObjectComponent { * @return */ public boolean willShowFeedbacks(TestPlanNode itemNode) { + if(isHideFeedbacks()) { + return false; + } + try { URI itemSystemId = itemNode.getItemSystemId(); ResolvedAssessmentItem resolvedAssessmentItem = getResolvedAssessmentTest() diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java index 7b582e7278b4fb68ecd23b1ec903ebffbe32360a..3022903920f9fcde02e33c5463aea05e359baa2c 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestComponentRenderer.java @@ -569,6 +569,8 @@ public class AssessmentTestComponentRenderer extends AssessmentObjectComponentRe private void renderTestFeebacks(AssessmentRenderer renderer, StringOutput sb, List<TestFeedback> testFeedbacks, AssessmentTestComponent component, TestFeedbackAccess access, URLBuilder ubu, Translator translator) { + if(component.isHideFeedbacks()) return; + for(TestFeedback testFeedback:testFeedbacks) { if(testFeedback.getTestFeedbackAccess() == access) { renderTestFeeback(renderer, sb, component, testFeedback, ubu, translator); @@ -578,6 +580,8 @@ public class AssessmentTestComponentRenderer extends AssessmentObjectComponentRe private void renderTestFeeback(AssessmentRenderer renderer, StringOutput sb, AssessmentTestComponent component, TestFeedback testFeedback, URLBuilder ubu, Translator translator) { + if(component.isHideFeedbacks()) return; + TestSessionState testSessionState = component.getTestSessionController().getTestSessionState(); if(testFeedbackVisible(testFeedback, testSessionState)) { sb.append("<div class='o_info clearfix'>"); diff --git a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestFormItem.java b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestFormItem.java index c48942869d0e8f0c7979093031c50d21a301eb71..73619c0acbc64da7dc477197a1321413bb0a8ed0 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestFormItem.java +++ b/src/main/java/org/olat/ims/qti21/ui/components/AssessmentTestFormItem.java @@ -85,6 +85,14 @@ public class AssessmentTestFormItem extends AssessmentObjectFormItem { public void setPersonalNotes(boolean personalNotes) { component.setPersonalNotes(personalNotes); } + + public boolean isHideFeedbacks() { + return component.isHideFeedbacks(); + } + + public void setHideFeedbacks(boolean hideFeedbacks) { + component.setHideFeedbacks(hideFeedbacks); + } public ResolvedAssessmentTest getResolvedAssessmentTest() { return component.getResolvedAssessmentTest(); diff --git a/src/main/java/org/olat/ims/qti21/ui/components/FeedbackResultComponent.java b/src/main/java/org/olat/ims/qti21/ui/components/FeedbackResultComponent.java new file mode 100644 index 0000000000000000000000000000000000000000..506def0757474e76b8e4d2f454677d87586184af --- /dev/null +++ b/src/main/java/org/olat/ims/qti21/ui/components/FeedbackResultComponent.java @@ -0,0 +1,130 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.ims.qti21.ui.components; + +import java.io.File; +import java.net.URI; +import java.nio.file.Path; + +import uk.ac.ed.ph.jqtiplus.node.item.interaction.Interaction; +import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem; +import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentTest; +import uk.ac.ed.ph.jqtiplus.running.TestSessionController; +import uk.ac.ed.ph.jqtiplus.state.ItemSessionState; + +/** + * + * Initial date: 24 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class FeedbackResultComponent extends AssessmentObjectComponent { + + private static final FeedbackResultComponentRenderer VELOCITY_RENDERER = new FeedbackResultComponentRenderer(); + + + private final FeedbackResultFormItem qtiItem; + + private TestSessionController testSessionController; + private ResolvedAssessmentTest resolvedAssessmentTest; + private final ResolvedAssessmentItem resolvedAssessmentItem; + + private ItemSessionState itemSessionState; + private boolean showSolution; + + public FeedbackResultComponent(String name, + ResolvedAssessmentItem resolvedAssessmentItem, FeedbackResultFormItem qtiItem) { + super(name); + this.qtiItem = qtiItem; + this.resolvedAssessmentItem = resolvedAssessmentItem; + } + + public boolean isShowSolution() { + return showSolution; + } + + public void setShowSolution(boolean showSolution) { + this.showSolution = showSolution; + } + + public ResolvedAssessmentTest getResolvedAssessmentTest() { + return resolvedAssessmentTest; + } + + public void setResolvedAssessmentTest(ResolvedAssessmentTest resolvedAssessmentTest) { + this.resolvedAssessmentTest = resolvedAssessmentTest; + } + + public TestSessionController getTestSessionController() { + return testSessionController; + } + + public void setTestSessionController(TestSessionController testSessionController) { + this.testSessionController = testSessionController; + } + + @Override + public String getResponseUniqueIdentifier(ItemSessionState state, Interaction i) { + return getDispatchID() + "_ffd"; + } + + @Override + public Interaction getInteractionOfResponseUniqueIdentifier(String responseUniqueId) { + return null; + } + + public ItemSessionState getItemSessionState() { + return itemSessionState; + } + + public void setItemSessionState(ItemSessionState itemSessionState) { + this.itemSessionState = itemSessionState; + } + + public ResolvedAssessmentItem getResolvedAssessmentItem() { + return resolvedAssessmentItem; + } + + @Override + public FeedbackResultFormItem getQtiItem() { + return qtiItem; + } + + @Override + public String relativePathTo(ResolvedAssessmentItem rAssessmentItem) { + URI itemUri = rAssessmentItem.getItemLookup().getSystemId(); + File itemFile = new File(itemUri); + URI testUri = resolvedAssessmentTest.getTestLookup().getSystemId(); + File testFile = new File(testUri); + Path relativePath = testFile.toPath().getParent().relativize(itemFile.toPath().getParent()); + String relativePathString = relativePath.toString(); + if(relativePathString.isEmpty()) { + return relativePathString; + } else if(relativePathString.endsWith("/")) { + return relativePathString; + } + return relativePathString.concat("/"); + } + + @Override + public FeedbackResultComponentRenderer getHTMLRendererSingleton() { + return VELOCITY_RENDERER; + } +} diff --git a/src/main/java/org/olat/ims/qti21/ui/components/FeedbackResultComponentRenderer.java b/src/main/java/org/olat/ims/qti21/ui/components/FeedbackResultComponentRenderer.java new file mode 100644 index 0000000000000000000000000000000000000000..073466d5eb2bb900d0055aff2c619e75fc605bbd --- /dev/null +++ b/src/main/java/org/olat/ims/qti21/ui/components/FeedbackResultComponentRenderer.java @@ -0,0 +1,109 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.ims.qti21.ui.components; + +import org.olat.core.gui.components.Component; +import org.olat.core.gui.render.RenderResult; +import org.olat.core.gui.render.Renderer; +import org.olat.core.gui.render.StringOutput; +import org.olat.core.gui.render.URLBuilder; +import org.olat.core.gui.translator.Translator; +import org.olat.core.util.StringHelper; +import org.olat.ims.qti21.QTI21Constants; + +import uk.ac.ed.ph.jqtiplus.attribute.Attribute; +import uk.ac.ed.ph.jqtiplus.node.content.variable.PrintedVariable; +import uk.ac.ed.ph.jqtiplus.node.item.AssessmentItem; +import uk.ac.ed.ph.jqtiplus.node.item.ModalFeedback; +import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem; +import uk.ac.ed.ph.jqtiplus.state.ItemSessionState; +import uk.ac.ed.ph.jqtiplus.types.Identifier; + +/** + * + * Initial date: 24 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class FeedbackResultComponentRenderer extends AssessmentObjectComponentRenderer { + + @Override + public void render(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, + Translator translator, RenderResult renderResult, String[] args) { + + FeedbackResultComponent cmp = (FeedbackResultComponent)source; + ResolvedAssessmentItem resolvedAssessmentItem = cmp.getResolvedAssessmentItem(); + + ItemSessionState itemSessionState = cmp.getItemSessionState(); + AssessmentRenderer assessmentRenderer = new AssessmentRenderer(renderer); + + AssessmentItem assessmentItem = resolvedAssessmentItem.getRootNodeLookup().extractIfSuccessful(); + for(ModalFeedback modalFeedback:assessmentItem.getModalFeedbacks()) { + Identifier outcomeIdentifier = modalFeedback.getOutcomeIdentifier(); + if(QTI21Constants.CORRECT_SOLUTION_IDENTIFIER.equals(outcomeIdentifier)) { + sb.append("<div class='modalFeedback'>"); + renderAssessmentItemCorrectSolutionModalFeedback(assessmentRenderer, sb, modalFeedback, + cmp, resolvedAssessmentItem, itemSessionState, ubu, translator); + sb.append("</div>"); + } + } + } + + /** + * A special rendering of "correct solution" feedback for the results report (without the open / close part). + * @param renderer + * @param sb + * @param modalFeedback + * @param component + * @param resolvedAssessmentItem + * @param itemSessionState + * @param ubu + * @param translator + */ + private void renderAssessmentItemCorrectSolutionModalFeedback(AssessmentRenderer renderer, StringOutput sb, ModalFeedback modalFeedback, + AssessmentObjectComponent component, ResolvedAssessmentItem resolvedAssessmentItem, ItemSessionState itemSessionState, + URLBuilder ubu, Translator translator) { + + sb.append("<div class='modalFeedback o_togglebox_wrapper clearfix'>"); + Attribute<?> title = modalFeedback.getAttributes().get("title"); + String feedbackTitle = null; + if(title != null && title.getValue() != null) { + feedbackTitle = title.getValue().toString(); + } + if(!StringHelper.containsNonWhitespace(feedbackTitle)) { + feedbackTitle = translator.translate("correct.solution"); + } + + sb.append("<h5>").append(StringHelper.escapeHtml(feedbackTitle)).append("</h5>"); + sb.append("<div id='modal-correct-solution'><div class='o_togglebox_content clearfix'>"); + + modalFeedback.getFlowStatics().forEach((flow) + -> renderFlow(renderer, sb, component, resolvedAssessmentItem, itemSessionState, flow, ubu, translator)); + + sb.append("</div></div></div>"); + } + + @Override + protected void renderPrintedVariable(AssessmentRenderer renderer, StringOutput sb, + AssessmentObjectComponent component, ResolvedAssessmentItem resolvedAssessmentItem, + ItemSessionState itemSessionState, PrintedVariable printedVar) { + // + } +} diff --git a/src/main/java/org/olat/ims/qti21/ui/components/FeedbackResultFormItem.java b/src/main/java/org/olat/ims/qti21/ui/components/FeedbackResultFormItem.java new file mode 100644 index 0000000000000000000000000000000000000000..29bfde5c8fa3c7bdff360fdc6eaa9769bafca40f --- /dev/null +++ b/src/main/java/org/olat/ims/qti21/ui/components/FeedbackResultFormItem.java @@ -0,0 +1,102 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.ims.qti21.ui.components; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.Component; + +import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentItem; +import uk.ac.ed.ph.jqtiplus.resolution.ResolvedAssessmentTest; +import uk.ac.ed.ph.jqtiplus.running.TestSessionController; +import uk.ac.ed.ph.jqtiplus.state.ItemSessionState; + +/** + * + * Initial date: 24 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class FeedbackResultFormItem extends AssessmentObjectFormItem { + + private final FeedbackResultComponent component; + + public FeedbackResultFormItem(String name, ResolvedAssessmentItem resolvedAssessmentItem) { + super(name, null); + component = new FeedbackResultComponent(name + "_cmp", resolvedAssessmentItem, this); + } + + public ResolvedAssessmentTest getResolvedAssessmentTest() { + return component.getResolvedAssessmentTest(); + } + + public void setResolvedAssessmentTest(ResolvedAssessmentTest resolvedAssessmentTest) { + component.setResolvedAssessmentTest(resolvedAssessmentTest); + } + + public TestSessionController getTestSessionController() { + return component.getTestSessionController(); + } + + public void setTestSessionController(TestSessionController testSessionController) { + component.setTestSessionController(testSessionController); + } + + public ItemSessionState getItemSessionState() { + return component.getItemSessionState(); + } + + public void setItemSessionState(ItemSessionState itemSessionState) { + component.setItemSessionState(itemSessionState); + } + + public boolean isShowSolution() { + return component.isShowSolution(); + } + + public void setShowSolution(boolean showSolution) { + component.setShowSolution(showSolution); + } + + @Override + public FeedbackResultComponent getComponent() { + return component; + } + + + @Override + protected Component getFormItemComponent() { + return component; + } + + @Override + protected void rootFormAvailable() { + // + } + + @Override + public void evalFormRequest(UserRequest ureq) { + // + } + + @Override + public void reset() { + // + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/ims/qti21/ui/components/_content/choiceInteraction.html b/src/main/java/org/olat/ims/qti21/ui/components/_content/choiceInteraction.html index 2541ac8de1eef675ee8c2d2a9ef7f579b6879627..3da9353a7059b6c29cfd80e36c00d9002a2e64db 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/_content/choiceInteraction.html +++ b/src/main/java/org/olat/ims/qti21/ui/components/_content/choiceInteraction.html @@ -60,14 +60,14 @@ #foreach($simpleChoice in $visibleOrderedChoices) <tr class="choiceinteraction"> #if($r.classContains($interaction,"choiceright")) - <td class="choiceInteraction">$r.renderFlowStatics($simpleChoice.getFlowStatics())</td> + <td class="choiceInteraction"><label for="oo_$r.toString($simpleChoice.identifier)">$r.renderFlowStatics($simpleChoice.getFlowStatics())</label></td> #end <td class="control"> <input id="oo_$r.toString($simpleChoice.identifier)" name="qtiworks_response_${responseIdentifier}" value="$r.toString($simpleChoice.identifier)" #if($r.isSingleChoice($interaction)) type="radio" #else type="checkbox" #end #if($r.isItemSessionEnded()) disabled #end #if($r.valueContains($r.getResponseValue($interaction.responseIdentifier), $simpleChoice.identifier)) checked #end /> $r.appendFlexiFormDirtyForCheckbox("oo_$r.toString($simpleChoice.identifier)") </td> #if(!$r.classContains($interaction,"choiceright")) - <td class="choiceInteraction">$r.renderFlowStatics($simpleChoice.getFlowStatics())</td> + <td class="choiceInteraction"><label for="oo_$r.toString($simpleChoice.identifier)">$r.renderFlowStatics($simpleChoice.getFlowStatics())</label></td> #end </tr> #end diff --git a/src/main/java/org/olat/ims/qti21/ui/components/_content/matchInteraction_dnd.html b/src/main/java/org/olat/ims/qti21/ui/components/_content/matchInteraction_dnd.html new file mode 100644 index 0000000000000000000000000000000000000000..e7bdb9da110604fe6b36a7dfc1f0b87c7edd3dcd --- /dev/null +++ b/src/main/java/org/olat/ims/qti21/ui/components/_content/matchInteraction_dnd.html @@ -0,0 +1,94 @@ +#set($responseIdentifier = $r.responseUniqueId($interaction)) +#set($responseValue = $r.getResponseValue($interaction.responseIdentifier)) +#set($orderedSet1 = $r.getVisibleOrderedChoices($interaction,0)) +#set($orderedSet2 = $r.getVisibleOrderedChoices($interaction,1)) + +<input name="qtiworks_presented_${responseIdentifier}" type="hidden" value="1"/> +<div class="$localName"> + #if($interaction.getPrompt()) + <div class="prompt">$r.renderPrompt($interaction.getPrompt())</div> + #end + + #if($r.isInvalidResponse($interaction.responseIdentifier)) + <div class="o_error badResponse">$r.translate("error.as.directed")</div> + #end + + <div id="qti_container_${responseIdentifier}" class="clearfix"> + #if($r.hasCssClass($interaction, "source-top")) + + <ul class="list-unstyled o_match_dnd_sources source-top clearfix"> + #foreach($choice in $orderedSet1) + #set($choiceIdentifier = $r.toString($choice.identifier)) + <li class="o_match_dnd_source" data-qti-id="${choiceIdentifier}" data-qti-match-max="${choice.matchMax}">$r.renderFlowStatics($choice.getFlowStatics())</li> + #end + </ul> + <ul class="list-unstyled o_match_dnd_targets target-bottom clearfix"> + #foreach($choice in $orderedSet2) + #set($choiceIdentifier = $r.toString($choice.identifier)) + <li class="o_match_dnd_target" data-qti-match-max="${choice.matchMax}">$r.renderFlowStatics($choice.getFlowStatics()) + <ul class="o_match_dnd_target_drop_zone list-unstyled clearfix" data-qti-id="${choiceIdentifier}" data-qti-match-max="${choice.matchMax}"></ul> + </li> + #end + </ul> + #elseif($r.hasCssClass($interaction, "source-right")) + + <ul class="list-unstyled o_match_dnd_targets target-right"> + #foreach($choice in $orderedSet2) + #set($choiceIdentifier = $r.toString($choice.identifier)) + <li class="o_match_dnd_target" data-qti-match-max="${choice.matchMax}">$r.renderFlowStatics($choice.getFlowStatics()) + <ul class="o_match_dnd_target_drop_zone list-unstyled" data-qti-id="${choiceIdentifier}" data-qti-match-max="${choice.matchMax}"></ul> + </li> + #end + </ul> + <ul class="list-unstyled o_match_dnd_sources source-left"> + #foreach($choice in $orderedSet1) + #set($choiceIdentifier = $r.toString($choice.identifier)) + <li class="o_match_dnd_source" data-qti-id="${choiceIdentifier}" data-qti-match-max="${choice.matchMax}">$r.renderFlowStatics($choice.getFlowStatics())</li> + #end + </ul> + #elseif($r.hasCssClass($interaction, "source-bottom")) + + <ul class="list-unstyled o_match_dnd_targets target-top clearfix"> + #foreach($choice in $orderedSet2) + #set($choiceIdentifier = $r.toString($choice.identifier)) + <li class="o_match_dnd_target" data-qti-match-max="${choice.matchMax}">$r.renderFlowStatics($choice.getFlowStatics()) + <ul class="o_match_dnd_target_drop_zone list-unstyled clearfix" data-qti-id="${choiceIdentifier}" data-qti-match-max="${choice.matchMax}"></ul> + </li> + #end + </ul> + <ul class="list-unstyled o_match_dnd_sources source-bottom clearfix"> + #foreach($choice in $orderedSet1) + #set($choiceIdentifier = $r.toString($choice.identifier)) + <li class="o_match_dnd_source" data-qti-id="${choiceIdentifier}" data-qti-match-max="${choice.matchMax}">$r.renderFlowStatics($choice.getFlowStatics())</li> + #end + </ul> + #else + + <ul class="list-unstyled o_match_dnd_sources source-left"> + #foreach($choice in $orderedSet1) + #set($choiceIdentifier = $r.toString($choice.identifier)) + <li class="o_match_dnd_source" data-qti-id="${choiceIdentifier}" data-qti-match-max="${choice.matchMax}">$r.renderFlowStatics($choice.getFlowStatics())</li> + #end + </ul> + <ul class="list-unstyled o_match_dnd_targets target-right"> + #foreach($choice in $orderedSet2) + #set($choiceIdentifier = $r.toString($choice.identifier)) + <li class="o_match_dnd_target" data-qti-match-max="${choice.matchMax}">$r.renderFlowStatics($choice.getFlowStatics()) + <ul class="o_match_dnd_target_drop_zone list-unstyled" data-qti-id="${choiceIdentifier}" data-qti-match-max="${choice.matchMax}"></ul> + </li> + #end + </ul> + #end + </div> + <script type='text/javascript'> + jQuery(function() { + jQuery('#qti_container_${responseIdentifier}').matchInteractionDnd({ + responseIdentifier: '$responseIdentifier', + formDispatchFieldId: '$r.formDispatchFieldId', + maxAssociations: $interaction.maxAssociations, + responseValue: '$r.toString($responseValue,",")', + opened: $r.isItemSessionOpen() + }); + }); + </script> +</div> diff --git a/src/main/java/org/olat/ims/qti21/ui/components/_content/textEntryInteraction.html b/src/main/java/org/olat/ims/qti21/ui/components/_content/textEntryInteraction.html index 58daf9e34a18463ed0e179601c62b73cbf054e4f..bef16236cb78ba7dea624d3451dcb099ce731650 100644 --- a/src/main/java/org/olat/ims/qti21/ui/components/_content/textEntryInteraction.html +++ b/src/main/java/org/olat/ims/qti21/ui/components/_content/textEntryInteraction.html @@ -8,7 +8,7 @@ #set($checkJavaScript = $r.checkJavaScript($responseDeclaration,$interaction.patternmask)) <input name="qtiworks_presented_${responseIdentifier}" type="hidden" value="1"/> <span class="$localName"> - <input id="od_${responseIdentifier}" type="text" name="qtiworks_response_${responseIdentifier}" #if($responseInputString && !$responseInputString.isEmpty()) value="$r.escapeHtml($responseInputString)" #else value="" #end #if(!$r.isItemSessionEnded()) $r.placeholder($interaction) #end #if($r.isItemSessionEnded()) disabled #end #if($isBadResponse) class='badResponse' #end #if($interaction.expectedLength) size='$interaction.expectedLength' #end #if($checks && $checks.size() > 0) onchange='$checkJavaScript' #end autocomplete="off"/> + <input id="od_${responseIdentifier}" type="text" name="qtiworks_response_${responseIdentifier}" #if($responseInputString && !$responseInputString.isEmpty()) value="$r.escapeHtml($responseInputString)" #else value="" #end #if(!$r.isItemSessionEnded()) $r.placeholder($interaction) #end #if($r.isItemSessionEnded()) disabled #end #if($isBadResponse) class='badResponse' #end #if($interaction.expectedLength) size='$interaction.expectedLength' #end #if($checks && $checks.size() > 0) onchange='$checkJavaScript' #end autocomplete="off" required="required"/> #if($isBadResponse) <span class="badResponse"> #if($responseDeclaration.cardinality.toQtiString() == "record") diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java index 2f7eb71329ffdd7b5e9f245f66b95acd40110248..05d5eae1279a8763c527ead495f0d56f91119fef 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentItemEditorController.java @@ -127,6 +127,7 @@ public class AssessmentItemEditorController extends BasicController { mainVC = createVelocityContainer("assessment_item_editor"); mainVC.contextPut("restrictedEdit", restrictedEdit); tabbedPane = new TabbedPane("itemTabs", getLocale()); + tabbedPane.setElementCssClass("o_sel_assessment_item_config"); tabbedPane.addListener(this); mainVC.put("tabbedpane", tabbedPane); @@ -166,6 +167,7 @@ public class AssessmentItemEditorController extends BasicController { mainVC = createVelocityContainer("assessment_item_editor"); mainVC.contextPut("restrictedEdit", restrictedEdit); tabbedPane = new TabbedPane("itemTabs", getLocale()); + tabbedPane.setElementCssClass("o_sel_assessment_item_config"); tabbedPane.addListener(this); mainVC.put("tabbedpane", tabbedPane); @@ -205,6 +207,7 @@ public class AssessmentItemEditorController extends BasicController { case numerical: itemBuilder = initFIBEditors(ureq, type, item); break; case kprim: itemBuilder = initKPrimChoiceEditors(ureq, item); break; case match: itemBuilder = initMatchChoiceEditors(ureq, item); break; + case matchdraganddrop: itemBuilder = initMatchDragAndDropEditors(ureq, item); break; case hotspot: itemBuilder = initHotspotEditors(ureq, item); break; case essay: itemBuilder = initEssayEditors(ureq, item); break; case upload: itemBuilder = initUploadEditors(ureq, item); break; @@ -298,6 +301,23 @@ public class AssessmentItemEditorController extends BasicController { return matchItemBuilder; } + private AssessmentItemBuilder initMatchDragAndDropEditors(UserRequest ureq, AssessmentItem item) { + MatchAssessmentItemBuilder matchItemBuilder = new MatchAssessmentItemBuilder(item, qtiService.qtiSerializer()); + itemEditor = new MatchEditorController(ureq, getWindowControl(), matchItemBuilder, + rootDirectory, rootContainer, itemFile, restrictedEdit); + listenTo(itemEditor); + scoreEditor = new MatchScoreController(ureq, getWindowControl(), matchItemBuilder, itemRef, restrictedEdit); + listenTo(scoreEditor); + feedbackEditor = new FeedbackEditorController(ureq, getWindowControl(), matchItemBuilder, + rootDirectory, rootContainer, itemFile, restrictedEdit); + listenTo(feedbackEditor); + + tabbedPane.addTab(translate("form.match"), itemEditor); + tabbedPane.addTab(translate("form.score"), scoreEditor); + tabbedPane.addTab(translate("form.feedback"), feedbackEditor); + return matchItemBuilder; + } + private AssessmentItemBuilder initFIBEditors(UserRequest ureq, QTI21QuestionType preferedType, AssessmentItem item) { FIBAssessmentItemBuilder fibItemBuilder = new FIBAssessmentItemBuilder(item, qtiService.qtiSerializer()); itemEditor = new FIBEditorController(ureq, getWindowControl(), preferedType, fibItemBuilder, diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java index 374d8b744b3fecd9413a631546d5447f1f67da4c..2b706a4e3dd39863a9c7c66c182b0a90d531e134 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/AssessmentTestComposerController.java @@ -150,8 +150,10 @@ public class AssessmentTestComposerController extends MainLayoutBasicController private MenuTree menuTree; private Dropdown exportItemTools, addItemTools, changeItemTools; - private Link newTestPartLink, newSectionLink, newSingleChoiceLink, newMultipleChoiceLink, newKPrimLink, newMatchLink, - newFIBLink, newNumericalLink, newHotspotLink, newHottextLink, newEssayLink, newUploadLink, newDrawingLink; + private Link newTestPartLink, newSectionLink, newSingleChoiceLink, newMultipleChoiceLink, + newKPrimLink, newMatchLink, newMatchDragAndDropLink, + newFIBLink, newNumericalLink, newHotspotLink, newHottextLink, + newEssayLink, newUploadLink, newDrawingLink; private Link importFromPoolLink, importFromTableLink, exportToPoolLink, exportToDocxLink; private Link reloadInCacheLink, deleteLink, copyLink; private final TooledStackedPanel toolbar; @@ -261,6 +263,9 @@ public class AssessmentTestComposerController extends MainLayoutBasicController newMatchLink = LinkFactory.createToolLink("new.match", translate("new.match"), this, "o_mi_qtimatch"); newMatchLink.setDomReplacementWrapperRequired(false); addItemTools.addComponent(newMatchLink); + newMatchDragAndDropLink = LinkFactory.createToolLink("new.matchdraganddrop", translate("new.matchdraganddrop"), this, "o_mi_qtimatch_draganddrop"); + newMatchDragAndDropLink.setDomReplacementWrapperRequired(false); + addItemTools.addComponent(newMatchDragAndDropLink); newFIBLink = LinkFactory.createToolLink("new.fib", translate("new.fib"), this, "o_mi_qtifib"); newFIBLink.setDomReplacementWrapperRequired(false); @@ -474,7 +479,9 @@ public class AssessmentTestComposerController extends MainLayoutBasicController } else if(newKPrimLink == source) { doNewAssessmentItem(ureq, menuTree.getSelectedNode(), new KPrimAssessmentItemBuilder(translate("new.kprim"), translate("new.answer"), qtiService.qtiSerializer())); } else if(newMatchLink == source) { - doNewAssessmentItem(ureq, menuTree.getSelectedNode(), new MatchAssessmentItemBuilder(translate("new.match"), qtiService.qtiSerializer())); + doNewAssessmentItem(ureq, menuTree.getSelectedNode(), new MatchAssessmentItemBuilder(translate("new.match"), QTI21Constants.CSS_MATCH_MATRIX, qtiService.qtiSerializer())); + } else if(newMatchDragAndDropLink == source) { + doNewAssessmentItem(ureq, menuTree.getSelectedNode(), new MatchAssessmentItemBuilder(translate("new.matchdraganddrop"), QTI21Constants.CSS_MATCH_DRAG_AND_DROP, qtiService.qtiSerializer())); } else if(newFIBLink == source) { doNewAssessmentItem(ureq, menuTree.getSelectedNode(), new FIBAssessmentItemBuilder(translate("new.fib"), EntryType.text, qtiService.qtiSerializer())); } else if(newNumericalLink == source) { diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/FeedbackEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/FeedbackEditorController.java index 9be07617eaffcfbc363d3002f67220bffbf6fa3e..c3523cad7a370d6f46379b921faccd57f1099d59 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/FeedbackEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/FeedbackEditorController.java @@ -72,6 +72,7 @@ public class FeedbackEditorController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { setFormContextHelp("Test editor QTI 2.1 in detail#details_testeditor_feedback"); + formLayout.setElementCssClass("o_sel_assessment_item_feedbacks"); String relativePath = rootDirectory.toPath().relativize(itemFile.toPath().getParent()).toString(); VFSContainer itemContainer = (VFSContainer)rootContainer.resolve(relativePath); @@ -82,12 +83,14 @@ public class FeedbackEditorController extends FormBasicController { hintTitleEl = uifactory.addTextElement("hintTitle", "form.imd.hint.title", -1, hintTitle, formLayout); hintTitleEl.setUserObject(hint); hintTitleEl.setEnabled(!restrictedEdit); + hintTitleEl.setElementCssClass("o_sel_assessment_item_hint_title"); String hintText = hint == null ? "" : hint.getText(); hintTextEl = uifactory.addRichTextElementForQTI21("hintText", "form.imd.hint.text", hintText, 8, -1, itemContainer, formLayout, ureq.getUserSession(), getWindowControl()); hintTextEl.setEnabled(!restrictedEdit); hintTextEl.setHelpTextKey("feedback.hint.help", null); hintTextEl.setHelpUrlForManualPage("Test editor QTI 2.1 in detail#details_testeditor_feedback"); + hintTextEl.setElementCssClass("o_sel_assessment_item_hint"); RichTextConfiguration hintConfig = hintTextEl.getEditorConfiguration(); hintConfig.setFileBrowserUploadRelPath("media");// set upload dir to the media dir } @@ -98,12 +101,14 @@ public class FeedbackEditorController extends FormBasicController { feedbackCorrectSolutionTitleEl = uifactory.addTextElement("correctSolutionTitle", "form.imd.correct.solution.title", -1, correctSolutionTitle, formLayout); feedbackCorrectSolutionTitleEl.setUserObject(correctSolutionFeedback); feedbackCorrectSolutionTitleEl.setEnabled(!restrictedEdit); + feedbackCorrectSolutionTitleEl.setElementCssClass("o_sel_assessment_item_correct_solution_title"); String correctSolutionText = correctSolutionFeedback == null ? "" : correctSolutionFeedback.getText(); feedbackCorrectSolutionTextEl = uifactory.addRichTextElementForQTI21("correctSolutionText", "form.imd.correct.solution.text", correctSolutionText, 8, -1, itemContainer, formLayout, ureq.getUserSession(), getWindowControl()); feedbackCorrectSolutionTextEl.setEnabled(!restrictedEdit); feedbackCorrectSolutionTextEl.setHelpTextKey("feedback.correctsolution.help", null); feedbackCorrectSolutionTextEl.setHelpUrlForManualPage("Test editor QTI 2.1 in detail#details_testeditor_feedback"); + feedbackCorrectSolutionTextEl.setElementCssClass("o_sel_assessment_item_correct_solution"); RichTextConfiguration richTextConfig2 = feedbackCorrectSolutionTextEl.getEditorConfiguration(); richTextConfig2.setFileBrowserUploadRelPath("media");// set upload dir to the media dir } @@ -114,12 +119,14 @@ public class FeedbackEditorController extends FormBasicController { feedbackCorrectTitleEl = uifactory.addTextElement("correctTitle", "form.imd.correct.title", -1, correctTitle, formLayout); feedbackCorrectTitleEl.setUserObject(correctFeedback); feedbackCorrectTitleEl.setEnabled(!restrictedEdit); + feedbackCorrectTitleEl.setElementCssClass("o_sel_assessment_item_correct_feedback_title"); String correctText = correctFeedback == null ? "" : correctFeedback.getText(); feedbackCorrectTextEl = uifactory.addRichTextElementForQTI21("correctText", "form.imd.correct.text", correctText, 8, -1, itemContainer, formLayout, ureq.getUserSession(), getWindowControl()); feedbackCorrectTextEl.setEnabled(!restrictedEdit); feedbackCorrectTextEl.setHelpTextKey("feedback.correct.help", null); feedbackCorrectTextEl.setHelpUrlForManualPage("Test editor QTI 2.1 in detail#details_testeditor_feedback"); + feedbackCorrectTextEl.setElementCssClass("o_sel_assessment_item_correct_feedback"); RichTextConfiguration richTextConfig = feedbackCorrectTextEl.getEditorConfiguration(); richTextConfig.setFileBrowserUploadRelPath("media");// set upload dir to the media dir } @@ -131,12 +138,14 @@ public class FeedbackEditorController extends FormBasicController { feedbackIncorrectTitleEl = uifactory.addTextElement("incorrectTitle", "form.imd.incorrect.title", -1, incorrectTitle, formLayout); feedbackIncorrectTitleEl.setUserObject(incorrectFeedback); feedbackIncorrectTitleEl.setEnabled(!restrictedEdit); + feedbackIncorrectTitleEl.setElementCssClass("o_sel_assessment_item_incorrect_feedback_title"); String incorrectText = incorrectFeedback == null ? "" : incorrectFeedback.getText(); feedbackIncorrectTextEl = uifactory.addRichTextElementForQTI21("incorrectText", "form.imd.incorrect.text", incorrectText, 8, -1, itemContainer, formLayout, ureq.getUserSession(), getWindowControl()); feedbackIncorrectTextEl.setEnabled(!restrictedEdit); feedbackIncorrectTextEl.setHelpTextKey("feedback.incorrect.help", null); feedbackIncorrectTextEl.setHelpUrlForManualPage("Test editor QTI 2.1 in detail#details_testeditor_feedback"); + feedbackIncorrectTextEl.setElementCssClass("o_sel_assessment_item_incorrect_feedback"); RichTextConfiguration richTextConfig2 = feedbackIncorrectTextEl.getEditorConfiguration(); richTextConfig2.setFileBrowserUploadRelPath("media");// set upload dir to the media dir } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/MinimalScoreController.java b/src/main/java/org/olat/ims/qti21/ui/editor/MinimalScoreController.java index a1039fb5c1920e3f58df03e044ac423d259f1e8d..d35e6e5d3c614b13f0d7abb4ad17d4d4196d4a21 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/MinimalScoreController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/MinimalScoreController.java @@ -62,12 +62,13 @@ public class MinimalScoreController extends AssessmentItemRefEditorController { setFormContextHelp(contextHelpUrl); super.initForm(formLayout, listener, ureq); minScoreEl = uifactory.addTextElement("min.score", "min.score", 8, "0.0", formLayout); + minScoreEl.setElementCssClass("o_sel_assessment_item_min_score"); minScoreEl.setEnabled(false); - minScoreEl.setEnabled(!restrictedEdit); ScoreBuilder maxScore = itemBuilder.getMaxScoreBuilder(); String maxValue = maxScore == null ? "" : (maxScore.getScore() == null ? "" : maxScore.getScore().toString()); maxScoreEl = uifactory.addTextElement("max.score", "max.score", 8, maxValue, formLayout); + maxScoreEl.setElementCssClass("o_sel_assessment_item_max_score"); maxScoreEl.setEnabled(!restrictedEdit); // Submit Button diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/UnkownItemEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/UnkownItemEditorController.java index e211ca351a1e5977b4554f9764b4605f76de0419..5f4acc3d8b04c4322b23753e698ce4ce4f312f48 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/UnkownItemEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/UnkownItemEditorController.java @@ -120,13 +120,12 @@ public class UnkownItemEditorController extends FormBasicController { itemSessionControllerSettings.setMaxAttempts(10); /* Create controller and wire up notification recorder */ - final ItemSessionController itemSessionController = new ItemSessionController(qtiService.jqtiExtensionManager(), + final ItemSessionController sessionController = new ItemSessionController(qtiService.jqtiExtensionManager(), itemSessionControllerSettings, itemProcessingMap, itemSessionState); - itemSessionController.addNotificationListener(new NotificationRecorder(NotificationLevel.ERROR)); - - - itemSessionController.initialize(new Date()); - return itemSessionController; + sessionController.addNotificationListener(new NotificationRecorder(NotificationLevel.ERROR)); + + sessionController.initialize(new Date()); + return sessionController; } @Override diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties index 2f623c0b61ad86d638c825fa1f4eeb13abd57a8b..852f4f03d8e5642256c9100069e40a08db4d768b 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_de.properties @@ -80,6 +80,13 @@ form.imd.incorrect.title=Titel form.imd.layout=$org.olat.ims.qti.editor\:form.imd.layout form.imd.layout.horizontal=$org.olat.ims.qti.editor\:form.imd.layout.horizontal form.imd.layout.vertical=$org.olat.ims.qti.editor\:form.imd.layout.vertical +form.imd.layout.left=Links +form.imd.layout.top=Oben +form.imd.layout.right=Rechts +form.imd.layout.bottom=Unten +form.imd.layout.match.targets=Drop-Kategorien +form.imd.layout.match.targets.short=Kategorien +form.imd.layout.match.sources=Begriffe form.imd.limittries=$org.olat.ims.qti.editor\:form.imd.limittries form.imd.match.single.multiple=Typ form.imd.match.single.choice=Single choice @@ -144,6 +151,7 @@ new.hottext.start=Das ist ein new.hottext.text=Hottext new.kprim=Kprim new.match=Matrix +new.matchdraganddrop=Drag and Drop new.mc=Multiple Choice new.rectangle=Viereck new.sc=Single Choice diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties index 743292fb2f82c61e7ffdc389a2949a6cdf718d4e..399a6fa24f6f6176f42d5e3b0ae0bd099ab9a5ee 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_en.properties @@ -80,6 +80,13 @@ form.imd.incorrect.title=Title form.imd.layout=$org.olat.ims.qti.editor\:form.imd.layout form.imd.layout.horizontal=$org.olat.ims.qti.editor\:form.imd.layout.horizontal form.imd.layout.vertical=$org.olat.ims.qti.editor\:form.imd.layout.vertical +form.imd.layout.left=Left +form.imd.layout.top=Top +form.imd.layout.right=Right +form.imd.layout.bottom=Bottom +form.imd.layout.match.targets=Drop-Categories +form.imd.layout.match.targets.short=Categories +form.imd.layout.match.sources=Items form.imd.limittries=$org.olat.ims.qti.editor\:form.imd.limittries form.imd.match.single.multiple=Type form.imd.match.single.choice=Single choice @@ -144,6 +151,7 @@ new.hottext.start=This is a hot new.hottext.text=text new.kprim=Kprim new.match=Match +new.matchdraganddrop=Drag and Drop new.mc=Multiple choice new.rectangle=Rectangle new.sc=Single choice diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties index 4de9c4ab88e0ae1be3d9fdb895fc0fc3aadea8f0..8b10c5c87c4a94b1bd4281e7b0371aad44da8f3b 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/ims/qti21/ui/editor/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Fri Apr 28 11:30:05 CEST 2017 +#Thu Jun 08 21:39:03 CEST 2017 add.match.column=Ajouter une colonne add.match.row=Ajouter une ligne answers=R\u00E9ponses @@ -27,6 +27,10 @@ essay.max.strings=Nombre de mots max. essay.min.strings=Nombre de mots min. essay.rows=Hauteur (nombre de lignes) export.qpool.successful=$org.olat.ims.qti.editor\:export.qpool.successful +feedback.correct.help=Retour d'informations si toutes les r\u00E9ponses sont correctes\: le retour d'informations n'appara\u00EEt que si toute les r\u00E9ponses sont correctes. +feedback.correctsolution.help=Solution correcte\: la solution est montr\u00E9e automatiquement si la r\u00E9ponse est fausse. +feedback.hint.help=Conseil\: un bouton appara\u00EEt pour montr\u00E9 le conseil tant que la r\u00E9ponse n'a pas \u00E9t\u00E9 soumise. +feedback.incorrect.help=Feedback pour les r\u00E9ponses incorrects\: le feedback appara\u00EEt d\u00E8s qu'une r\u00E9ponse est fausse. Par exemple dans un text \u00E0 trous qui consiste en cinquante trous et qu'une seule r\u00E9ponse est fausse. fib.alternative=Alternatives fib.alternative.help=Les diff\u00E9rentes alternatives sont s\u00E9par\u00E9es par une virgule. fib.caseSensitive=Sensible aux majuscules / minuscules @@ -42,6 +46,7 @@ fib.tolerance.mode.exact=Exact fib.tolerance.mode.exact.help=La solution doit \u00EAtre exactement celle entr\u00E9e sous "Solution". fib.tolerance.mode.relative=Relatif fib.tolerance.mode.relative.example=Pourcentage, par example 15 ou 99.0 +fib.tolerance.mode.relative.help=Le solution est accept\u00E9 entre la limite inf\u00E9rieure et sup\u00E9rieure. La limite peut \u00EAtre un nombre relatif exprim\u00E9 en pour cent, exemple, la solution est 20, limite inf\u00E9rieure 10, limite sup\u00E9rieure 10 → toutes les r\u00E9ponses entre 18 et 22 sont correctes. La limite inf\u00E9rieure signifie moins 10% (20-2) and la limite sup\u00E9rieur plus 10% (20+2). fib.tolerance.up=Limite sup\u00E9rieur file=Fichier form.choice=Choix @@ -73,7 +78,14 @@ form.imd.hint.title=Titre form.imd.incorrect.text=Feedback lors de r\u00E9ponses incorrectes form.imd.incorrect.title=Titre form.imd.layout=$org.olat.ims.qti.editor\:form.imd.layout +form.imd.layout.bottom=En bas form.imd.layout.horizontal=$org.olat.ims.qti.editor\:form.imd.layout.horizontal +form.imd.layout.left=Gauche +form.imd.layout.match.sources=Objet +form.imd.layout.match.targets=Cat\u00E9gories +form.imd.layout.match.targets.short=Cat\u00E9gories +form.imd.layout.right=Droite +form.imd.layout.top=En haut form.imd.layout.vertical=$org.olat.ims.qti.editor\:form.imd.layout.vertical form.imd.limittries=$org.olat.ims.qti.editor\:form.imd.limittries form.imd.match.multiple.choice=Multiple choice @@ -139,6 +151,7 @@ new.hottext.start=C'est un hot new.hottext.text=texte new.kprim=Kprim new.match=Match +new.matchdraganddrop=Drag and Drop new.mc=Choix multiples new.rectangle=Rectangle new.sc=Choix simple diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/AssessmentItemRefEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/AssessmentItemRefEditorController.java index 177c8d3e529f78f129792934c4d3fb15feef96d3..10d4fbc9c214ed831a44e5b2033ec7330525a658 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/AssessmentItemRefEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/AssessmentItemRefEditorController.java @@ -58,6 +58,7 @@ public abstract class AssessmentItemRefEditorController extends FormBasicControl @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + formLayout.setElementCssClass("o_sel_assessment_item_options"); if(assessmentItemRef == null) return; Integer maxAttempts = null; diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/ChoiceScoreController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/ChoiceScoreController.java index ec557e064ed13b27333aa30bc628e59a57e62cc1..ac1f8b799c9e8324e2eb92b4342ce8aff449edb9 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/ChoiceScoreController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/ChoiceScoreController.java @@ -89,12 +89,13 @@ public class ChoiceScoreController extends AssessmentItemRefEditorController imp super.initForm(formLayout, listener, ureq); minScoreEl = uifactory.addTextElement("min.score", "min.score", 8, "0.0", formLayout); + minScoreEl.setElementCssClass("o_sel_assessment_item_min_score"); minScoreEl.setEnabled(false); - minScoreEl.setEnabled(!restrictedEdit); ScoreBuilder maxScore = itemBuilder.getMaxScoreBuilder(); String maxValue = maxScore == null ? "" : (maxScore.getScore() == null ? "" : maxScore.getScore().toString()); maxScoreEl = uifactory.addTextElement("max.score", "max.score", 8, maxValue, formLayout); + maxScoreEl.setElementCssClass("o_sel_assessment_item_max_score"); maxScoreEl.setEnabled(!restrictedEdit); String[] modeValues = new String[]{ diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/DrawingEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/DrawingEditorController.java index 05f0d469622cd98360dd0ffc60142357fb81da5a..6aebdca607b75b9468419be06fe17257843a4693 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/DrawingEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/DrawingEditorController.java @@ -103,6 +103,7 @@ public class DrawingEditorController extends FormBasicController { setFormContextHelp("Test editor QTI 2.1 in detail#details_testeditor_fragetypen_drawing"); titleEl = uifactory.addTextElement("title", "form.imd.title", -1, itemBuilder.getTitle(), formLayout); + titleEl.setElementCssClass("o_sel_assessment_item_title"); titleEl.setMandatory(true); String relativePath = rootDirectory.toPath().relativize(itemFile.toPath().getParent()).toString(); @@ -111,6 +112,7 @@ public class DrawingEditorController extends FormBasicController { String description = itemBuilder.getQuestion(); textEl = uifactory.addRichTextElementForQTI21("desc", "form.imd.descr", description, 12, -1, itemContainer, formLayout, ureq.getUserSession(), getWindowControl()); + textEl.setElementCssClass("o_sel_assessment_item_question"); initialBackgroundImage = getCurrentBackground(); backgroundEl = uifactory.addFileElement(getWindowControl(), "form.imd.background", "form.imd.background", formLayout); @@ -127,6 +129,7 @@ public class DrawingEditorController extends FormBasicController { // Submit Button FormLayoutContainer buttonsContainer = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); buttonsContainer.setRootForm(mainForm); + buttonsContainer.setElementCssClass("o_sel_lob_save"); formLayout.add(buttonsContainer); uifactory.addFormSubmitButton("submit", buttonsContainer); } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/EssayEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/EssayEditorController.java index 931426962b277835b44389e45818a3c553ab834a..4360e4ba5ac2055f38000dd3813f5628d83e0f23 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/EssayEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/EssayEditorController.java @@ -74,6 +74,7 @@ public class EssayEditorController extends FormBasicController { setFormContextHelp("Test editor QTI 2.1 in detail#details_testeditor_fragetypen_freetext"); titleEl = uifactory.addTextElement("title", "form.imd.title", -1, itemBuilder.getTitle(), formLayout); + titleEl.setElementCssClass("o_sel_assessment_item_title"); titleEl.setMandatory(true); String relativePath = rootDirectory.toPath().relativize(itemFile.toPath().getParent()).toString(); @@ -82,6 +83,7 @@ public class EssayEditorController extends FormBasicController { String description = itemBuilder.getQuestion(); textEl = uifactory.addRichTextElementForQTI21("desc", "form.imd.descr", description, 12, -1, itemContainer, formLayout, ureq.getUserSession(), getWindowControl()); + textEl.setElementCssClass("o_sel_assessment_item_question"); String placeholder = itemBuilder.getPlaceholder(); placeholderEl = uifactory.addTextElement("placeholder", "fib.placeholder", 256, placeholder, formLayout); @@ -106,6 +108,7 @@ public class EssayEditorController extends FormBasicController { // Submit Button FormLayoutContainer buttonsContainer = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); buttonsContainer.setRootForm(mainForm); + buttonsContainer.setElementCssClass("o_sel_lob_save"); formLayout.add(buttonsContainer); uifactory.addFormSubmitButton("submit", buttonsContainer); } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java index 9468ada76a214d2cd79079c3b4edd9fc29b7faf2..8be0c78c4660a11ab88a502109d020a1be1b09fe 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBEditorController.java @@ -19,8 +19,10 @@ */ package org.olat.ims.qti21.ui.editor.interactions; +import java.io.ByteArrayInputStream; import java.io.File; +import org.cyberneko.html.parsers.SAXParser; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; @@ -34,6 +36,7 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.generic.closablewrapper.CloseableModalController; +import org.olat.core.gui.control.winmgr.JSCommand; import org.olat.core.util.StringHelper; import org.olat.core.util.Util; import org.olat.core.util.vfs.VFSContainer; @@ -44,6 +47,9 @@ import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.Numeri import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.TextEntry; import org.olat.ims.qti21.ui.editor.AssessmentTestEditorController; import org.olat.ims.qti21.ui.editor.events.AssessmentItemEvent; +import org.xml.sax.Attributes; +import org.xml.sax.InputSource; +import org.xml.sax.helpers.DefaultHandler; /** * @@ -84,6 +90,7 @@ public class FIBEditorController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { titleEl = uifactory.addTextElement("title", "form.imd.title", -1, itemBuilder.getTitle(), formLayout); + titleEl.setElementCssClass("o_sel_assessment_item_title"); titleEl.setMandatory(true); String relativePath = rootDirectory.toPath().relativize(itemFile.toPath().getParent()).toString(); @@ -132,9 +139,20 @@ public class FIBEditorController extends FormBasicController { @Override protected void event(UserRequest ureq, Controller source, Event event) { if(textEntrySettingsCtrl == source) { + if(event == Event.DONE_EVENT) { + String solution = textEntrySettingsCtrl.getSolution(); + String responseIdentifier = textEntrySettingsCtrl.getResponseIdentifier().toString(); + feedbackToTextElement(responseIdentifier, solution); + } cmc.deactivate(); cleanUp(); } else if(numericalEntrySettingsCtrl == source) { + if(event == Event.DONE_EVENT) { + Double val = numericalEntrySettingsCtrl.getSolution(); + String solution = val == null ? "" : Double.toString(val); + String responseIdentifier = numericalEntrySettingsCtrl.getResponseIdentifier().toString(); + feedbackToTextElement(responseIdentifier, solution); + } cmc.deactivate(); cleanUp(); } else if(cmc == source) { @@ -143,6 +161,11 @@ public class FIBEditorController extends FormBasicController { super.event(ureq, source, event); } + private void feedbackToTextElement(String responseIdentifier, String solution) { + JSCommand jsc = new JSCommand("try { tinymce.activeEditor.execCommand('qtiUpdateTextEntry', false, {\"responseIdentifier\":\"" + responseIdentifier + "\", \"data-qti-solution\": \"" + solution + "\"}); } catch(e){if(window.console) console.log(e) }"); + getWindowControl().getWindowBackOffice().sendCommandTo(jsc); + } + private void cleanUp() { removeAsListenerAndDispose(numericalEntrySettingsCtrl); removeAsListenerAndDispose(textEntrySettingsCtrl); @@ -160,7 +183,14 @@ public class FIBEditorController extends FormBasicController { String responseIdentifier = ureq.getParameter("responseIdentifier"); String selectedText = ureq.getParameter("selectedText"); String type = ureq.getParameter("gapType"); - doGapEntry(ureq, responseIdentifier, selectedText, type); + String newEntry = ureq.getParameter("newEntry"); + String emptySolution = ureq.getParameter("emptySolution"); + doGapEntry(ureq, responseIdentifier, selectedText, emptySolution, type, "true".equals(newEntry)); + } else if("copy-gapentry".equals(cmd)) { + String responseIdentifier = ureq.getParameter("responseIdentifier"); + String selectedText = ureq.getParameter("selectedText"); + String type = ureq.getParameter("gapType"); + doCopyGapEntry(responseIdentifier, selectedText, type); } } super.formInnerEvent(ureq, source, event); @@ -188,52 +218,37 @@ public class FIBEditorController extends FormBasicController { itemBuilder.setTitle(titleEl.getValue()); //set the question with the text entries String questionText = textEl.getRawValue(); + extractSolution(questionText); itemBuilder.setQuestion(questionText); fireEvent(ureq, new AssessmentItemEvent(AssessmentItemEvent.ASSESSMENT_ITEM_CHANGED, itemBuilder.getAssessmentItem(), QTI21QuestionType.fib)); + + itemBuilder.extractQuestions(); + itemBuilder.extractEntriesSettingsFromResponseDeclaration(); + String question = itemBuilder.getQuestion(); + textEl.setValue(question); } @Override protected void propagateDirtinessToContainer(FormItem fiSrc, FormEvent event) { // } + + private void doCopyGapEntry(String responseIdentifier, String selectedText, String type) { + AbstractEntry interaction = itemBuilder.getEntry(responseIdentifier); + if(interaction == null) { + createEntry(responseIdentifier, selectedText, type, true); + } + } - private void doGapEntry(UserRequest ureq, String responseIdentifier, String selectedText, String type) { + private void doGapEntry(UserRequest ureq, String responseIdentifier, String selectedText, String emptySolution, String type, boolean newEntry) { if(textEntrySettingsCtrl != null || numericalEntrySettingsCtrl != null) return; AbstractEntry interaction = itemBuilder.getEntry(responseIdentifier); if(interaction == null) { - if("string".equalsIgnoreCase(type)) { - TextEntry textInteraction = itemBuilder.createTextEntry(responseIdentifier); - if(StringHelper.containsNonWhitespace(selectedText)) { - String[] alternatives = selectedText.split(","); - for(String alternative:alternatives) { - if(StringHelper.containsNonWhitespace(alternative)) { - alternative = alternative.trim(); - if(textInteraction.getSolution() == null) { - textInteraction.setSolution(alternative); - } else { - textInteraction.addAlternative(alternative, textInteraction.getScore()); - } - } - } - if(alternatives.length > 0) { - textInteraction.setSolution(alternatives[0]); - } - } - interaction = textInteraction; - } else if("float".equalsIgnoreCase(type)) { - NumericalEntry numericalInteraction = itemBuilder.createNumericalEntry(responseIdentifier); - if(StringHelper.containsNonWhitespace(selectedText)) { - try { - Double val = Double.parseDouble(selectedText.trim()); - numericalInteraction.setSolution(val); - } catch (NumberFormatException e) { - // - } - } - interaction = numericalInteraction; - } + interaction = createEntry(responseIdentifier, selectedText, type, newEntry); + } else if(StringHelper.containsNonWhitespace(selectedText)) { + updateSolution(interaction, selectedText, emptySolution); } if(interaction instanceof TextEntry) { @@ -252,4 +267,108 @@ public class FIBEditorController extends FormBasicController { listenTo(cmc); } } + + private AbstractEntry createEntry(String responseIdentifier, String selectedText, String type, boolean newEntry) { + AbstractEntry interaction = null; + if("string".equalsIgnoreCase(type)) { + TextEntry textInteraction = itemBuilder.createTextEntry(responseIdentifier); + if(StringHelper.containsNonWhitespace(selectedText)) { + String[] alternatives = selectedText.split(","); + for(String alternative:alternatives) { + if(StringHelper.containsNonWhitespace(alternative)) { + alternative = alternative.trim(); + if(textInteraction.getSolution() == null) { + textInteraction.setSolution(alternative); + } else { + textInteraction.addAlternative(alternative, textInteraction.getScore()); + } + } + } + if(alternatives.length > 0) { + String solution = alternatives[0]; + if(newEntry && "gap".equals(solution)) { + solution = ""; + } + textInteraction.setSolution(solution); + } + } + interaction = textInteraction; + } else if("float".equalsIgnoreCase(type)) { + NumericalEntry numericalInteraction = itemBuilder.createNumericalEntry(responseIdentifier); + if(newEntry && "gap".equals(selectedText)) { + //skip it, it's a placeholder + } else if(StringHelper.containsNonWhitespace(selectedText)) { + try { + Double val = Double.parseDouble(selectedText.trim()); + numericalInteraction.setSolution(val); + } catch (NumberFormatException e) { + // + } + } + interaction = numericalInteraction; + } + return interaction; + } + + private void extractSolution(String content) { + try { + SAXParser parser = new SAXParser(); + parser.setProperty("http://cyberneko.org/html/properties/names/elems", "lower"); + parser.setFeature("http://cyberneko.org/html/features/balance-tags/document-fragment", true); + parser.setProperty("http://cyberneko.org/html/properties/default-encoding", "UTF-8"); + parser.setContentHandler(new SolutionExtractorHandler()); + parser.parse(new InputSource(new ByteArrayInputStream(content.getBytes()))); + } catch (Exception e) { + logError("", e); + } + } + + private void updateSolution(AbstractEntry entry, String solution, String solutionEmpty) { + if(entry == null) { + //problem + } else if(entry instanceof TextEntry) { + if("true".equals(solutionEmpty)) { + ((TextEntry)entry).setSolution(""); + } else { + ((TextEntry)entry).setSolution(solution); + } + } else if(entry instanceof NumericalEntry) { + try { + double val = Double.parseDouble(solution); + ((NumericalEntry)entry).setSolution(val); + } catch (NumberFormatException e) { + logError("", e); + } + } + } + + private class SolutionExtractorHandler extends DefaultHandler { + + @Override + public void startElement(String uri, String localName, String qName, Attributes attributes) { + if("textentryinteraction".equals(localName)) { + localName = qName = "textEntryInteraction"; + + String solution = null; + String solutionEmpty = null; + String responseIdentifier = null; + for(int i=0; i<attributes.getLength(); i++) { + String name = attributes.getLocalName(i); + if("data-qti-solution".equals(name)) { + solution = attributes.getValue(i); + } else if("data-qti-solution-empty".equals(name)) { + solutionEmpty = attributes.getValue(i); + } else if("responseIdentifier".equalsIgnoreCase(name)) { + responseIdentifier = attributes.getValue(i); + } + } + + if(StringHelper.containsNonWhitespace(responseIdentifier) + && (StringHelper.containsNonWhitespace(solution) || StringHelper.containsNonWhitespace(solutionEmpty))) { + AbstractEntry entry = itemBuilder.getTextEntry(responseIdentifier); + updateSolution(entry, solution, solutionEmpty); + } + } + } + } } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBNumericalEntrySettingsController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBNumericalEntrySettingsController.java index 40dc04165ba2f073147458d1e4c0c34bca8b2625..b6a7acd33a7f0a6238919446c71569a0f8b47766 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBNumericalEntrySettingsController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBNumericalEntrySettingsController.java @@ -36,6 +36,7 @@ import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.Numeri import org.olat.ims.qti21.ui.editor.AssessmentTestEditorController; import uk.ac.ed.ph.jqtiplus.node.expression.operator.ToleranceMode; +import uk.ac.ed.ph.jqtiplus.types.Identifier; /** * @@ -64,6 +65,14 @@ public class FIBNumericalEntrySettingsController extends FormBasicController { this.restrictedEdit = restrictedEdit; initForm(ureq); } + + public Identifier getResponseIdentifier() { + return interaction.getResponseIdentifier(); + } + + public Double getSolution() { + return interaction.getSolution(); + } @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { @@ -71,6 +80,10 @@ public class FIBNumericalEntrySettingsController extends FormBasicController { String solString = solution == null ? "" : solution.toString(); solutionEl = uifactory.addTextElement("fib.solution", "fib.solution", 256, solString, formLayout); solutionEl.setEnabled(!restrictedEdit); + if(!restrictedEdit && !StringHelper.containsNonWhitespace(solString)) { + solutionEl.setFocus(true); + } + String placeholder = interaction.getPlaceholder(); placeholderEl = uifactory.addTextElement("fib.placeholder", "fib.placeholder", 256, placeholder, formLayout); placeholderEl.setEnabled(!restrictedEdit); diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java index 46b441687d0244fdef3bd30aab773a5cc4810cfe..e6082f0235c71d041337e90920921e5e9f6aaf96 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/FIBTextEntrySettingsController.java @@ -33,6 +33,8 @@ import org.olat.core.util.Util; import org.olat.ims.qti21.model.xml.interactions.FIBAssessmentItemBuilder.TextEntry; import org.olat.ims.qti21.ui.editor.AssessmentTestEditorController; +import uk.ac.ed.ph.jqtiplus.types.Identifier; + /** * * Initial date: 24.02.2016<br> @@ -65,6 +67,10 @@ public class FIBTextEntrySettingsController extends FormBasicController { String solution = interaction.getSolution(); solutionEl = uifactory.addTextElement("fib.solution", "fib.solution", 256, solution, formLayout); solutionEl.setEnabled(!restrictedEdit); + if(!StringHelper.containsNonWhitespace(solution)) { + solutionEl.setFocus(true); + } + String placeholder = interaction.getPlaceholder(); placeholderEl = uifactory.addTextElement("fib.placeholder", "fib.placeholder", 256, placeholder, formLayout); placeholderEl.setEnabled(!restrictedEdit); @@ -94,6 +100,14 @@ public class FIBTextEntrySettingsController extends FormBasicController { } uifactory.addFormCancelButton("cancel", buttonsContainer, ureq, getWindowControl()); } + + public String getSolution() { + return interaction.getSolution(); + } + + public Identifier getResponseIdentifier() { + return interaction.getResponseIdentifier(); + } @Override protected void doDispose() { diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java index 656076fac839aa943b795eb4b192a691a0084ebb..a23e11da1f277f51f6e9f6cedb469e3f19db3969 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HotspotEditorController.java @@ -126,6 +126,7 @@ public class HotspotEditorController extends FormBasicController { setFormContextHelp("Test editor QTI 2.1 in detail#details_testeditor_fragetypen_hotspot"); titleEl = uifactory.addTextElement("title", "form.imd.title", -1, itemBuilder.getTitle(), formLayout); + titleEl.setElementCssClass("o_sel_assessment_item_title"); titleEl.setMandatory(true); String relativePath = rootDirectory.toPath().relativize(itemFile.toPath().getParent()).toString(); diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HottextEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HottextEditorController.java index 25c8535b460569a051596d9c140bb3d4e8587e28..cd0d1651978aeb5b565e4ef1bb53e40708cc45dd 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HottextEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/HottextEditorController.java @@ -77,7 +77,9 @@ public class HottextEditorController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + setFormContextHelp("Test editor QTI 2.1 in detail#details_testeditor_fragetypen_hot"); titleEl = uifactory.addTextElement("title", "form.imd.title", -1, itemBuilder.getTitle(), formLayout); + titleEl.setElementCssClass("o_sel_assessment_item_title"); titleEl.setMandatory(true); String relativePath = rootDirectory.toPath().relativize(itemFile.toPath().getParent()).toString(); diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/KPrimEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/KPrimEditorController.java index f972dbb0612e2179214119f6462f1246dcde7278..d075f236618d93f3245f662c0d9d667dcf0e59bf 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/KPrimEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/KPrimEditorController.java @@ -95,6 +95,7 @@ public class KPrimEditorController extends FormBasicController { formLayout.add("metadata", metadata); titleEl = uifactory.addTextElement("title", "form.imd.title", -1, itemBuilder.getTitle(), metadata); + titleEl.setElementCssClass("o_sel_assessment_item_title"); titleEl.setMandatory(true); String description = itemBuilder.getQuestion(); @@ -141,6 +142,7 @@ public class KPrimEditorController extends FormBasicController { // Submit Button FormLayoutContainer buttonsContainer = FormLayoutContainer.createDefaultFormLayout("buttons", getTranslator()); + buttonsContainer.setElementCssClass("o_sel_choices_save"); buttonsContainer.setRootForm(mainForm); formLayout.add(buttonsContainer); formLayout.add("buttons", buttonsContainer); diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/LobFeedbackEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/LobFeedbackEditorController.java index a18235dda08319a41598a29e4d0b6f2a9ad927b0..27800c8e87ebaa2a71cbddf86db4e9d449b25092 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/LobFeedbackEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/LobFeedbackEditorController.java @@ -75,7 +75,7 @@ public class LobFeedbackEditorController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { setFormContextHelp("Test editor QTI 2.1 in detail#details_testeditor_feedback"); - + formLayout.setElementCssClass("o_sel_assessment_item_feedbacks"); String relativePath = rootDirectory.toPath().relativize(itemFile.toPath().getParent()).toString(); VFSContainer itemContainer = (VFSContainer)rootContainer.resolve(relativePath); @@ -84,11 +84,13 @@ public class LobFeedbackEditorController extends FormBasicController { ModalFeedbackBuilder hint = itemBuilder.getHint(); String hintTitle = hint == null ? "" : hint.getTitle(); hintTitleEl = uifactory.addTextElement("hintTitle", "form.imd.hint.title", -1, hintTitle, formLayout); + hintTitleEl.setElementCssClass("o_sel_assessment_item_hint_title"); hintTitleEl.setUserObject(hint); hintTitleEl.setEnabled(!restrictedEdit); String hintText = hint == null ? "" : hint.getText(); hintTextEl = uifactory.addRichTextElementForQTI21("hintText", "form.imd.hint.text", hintText, 8, -1, itemContainer, formLayout, ureq.getUserSession(), getWindowControl()); + hintTextEl.setElementCssClass("o_sel_assessment_item_hint"); hintTextEl.setEnabled(!restrictedEdit); hintTextEl.setHelpTextKey("feedback.hint.help", null); hintTextEl.setHelpUrlForManualPage("Test editor QTI 2.1 in detail#details_testeditor_feedback"); @@ -102,12 +104,14 @@ public class LobFeedbackEditorController extends FormBasicController { feedbackCorrectSolutionTitleEl = uifactory.addTextElement("correctSolutionTitle", "form.imd.correct.solution.title", -1, correctSolutionTitle, formLayout); feedbackCorrectSolutionTitleEl.setUserObject(correctSolutionFeedback); feedbackCorrectSolutionTitleEl.setEnabled(!restrictedEdit); + feedbackCorrectSolutionTitleEl.setElementCssClass("o_sel_assessment_item_correct_solution_title"); String correctSolutionText = correctSolutionFeedback == null ? "" : correctSolutionFeedback.getText(); feedbackCorrectSolutionTextEl = uifactory.addRichTextElementForQTI21("correctSolutionText", "form.imd.correct.solution.text.word", correctSolutionText, 8, -1, itemContainer, formLayout, ureq.getUserSession(), getWindowControl()); feedbackCorrectSolutionTextEl.setEnabled(!restrictedEdit); feedbackCorrectSolutionTextEl.setHelpTextKey("feedback.correctsolution.help", null); feedbackCorrectSolutionTextEl.setHelpUrlForManualPage("Test editor QTI 2.1 in detail#details_testeditor_feedback"); + feedbackCorrectSolutionTextEl.setElementCssClass("o_sel_assessment_item_correct_solution"); RichTextConfiguration richTextConfig2 = feedbackCorrectSolutionTextEl.getEditorConfiguration(); richTextConfig2.setFileBrowserUploadRelPath("media");// set upload dir to the media dir } @@ -118,10 +122,12 @@ public class LobFeedbackEditorController extends FormBasicController { feedbackTitleEl = uifactory.addTextElement("answeredTitle", "form.imd.answered.title", -1, correctTitle, formLayout); feedbackTitleEl.setUserObject(answeredFeedback); feedbackTitleEl.setEnabled(!restrictedEdit); + feedbackTitleEl.setElementCssClass("o_sel_assessment_item_answered_feedback_title"); String correctText = answeredFeedback == null ? "" : answeredFeedback.getText(); feedbackTextEl = uifactory.addRichTextElementForQTI21("answeredText", "form.imd.answered.text", correctText, 8, -1, itemContainer, formLayout, ureq.getUserSession(), getWindowControl()); feedbackTextEl.setEnabled(!restrictedEdit); + feedbackTextEl.setElementCssClass("o_sel_assessment_item_answered_feedback"); RichTextConfiguration richTextConfig = feedbackTextEl.getEditorConfiguration(); richTextConfig.setFileBrowserUploadRelPath("media");// set upload dir to the media dir } @@ -132,10 +138,12 @@ public class LobFeedbackEditorController extends FormBasicController { feedbackEmptyTitleEl = uifactory.addTextElement("emptyTitle", "form.imd.empty.title", -1, emptyTitle, formLayout); feedbackEmptyTitleEl.setUserObject(emptyFeedback); feedbackEmptyTitleEl.setEnabled(!restrictedEdit); + feedbackEmptyTitleEl.setElementCssClass("o_sel_assessment_item_empty_feedback_title"); String emptyText = emptyFeedback == null ? "" : emptyFeedback.getText(); feedbackEmptyTextEl = uifactory.addRichTextElementForQTI21("emptyText", "form.imd.empty.text", emptyText, 8, -1, itemContainer, formLayout, ureq.getUserSession(), getWindowControl()); feedbackEmptyTextEl.setEnabled(!restrictedEdit); + feedbackEmptyTextEl.setElementCssClass("o_sel_assessment_item_empty_feedback"); RichTextConfiguration emptyTextConfig = feedbackEmptyTextEl.getEditorConfiguration(); emptyTextConfig.setFileBrowserUploadRelPath("media");// set upload dir to the media dir } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java index 677027b9e9ea6bffddfdd7fb8212b3ccb5732d04..71221c85dc4da95d5a8bb6cf7ab68f0ad351ecf4 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchEditorController.java @@ -43,6 +43,7 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.WindowControl; import org.olat.core.util.Util; import org.olat.core.util.vfs.VFSContainer; +import org.olat.ims.qti21.QTI21Constants; import org.olat.ims.qti21.model.QTI21QuestionType; import org.olat.ims.qti21.model.xml.interactions.MatchAssessmentItemBuilder; import org.olat.ims.qti21.ui.editor.AssessmentTestEditorController; @@ -62,12 +63,16 @@ public class MatchEditorController extends FormBasicController { private static final String[] yesnoKeys = new String[]{ "y", "n"}; private static final String[] singleMultiKeys = new String[]{ "single", "multi"}; + private static final String[] layoutKeys = new String[] { + QTI21Constants.CSS_MATCH_SOURCE_LEFT, QTI21Constants.CSS_MATCH_SOURCE_TOP, + QTI21Constants.CSS_MATCH_SOURCE_RIGHT, QTI21Constants.CSS_MATCH_SOURCE_BOTTOM + }; private TextElement titleEl; private RichTextElement textEl; private FormLayoutContainer answersCont; private FormLink addColumnButton, addRowButton; - private SingleSelection shuffleEl, singleMultiEl; + private SingleSelection shuffleEl, singleMultiEl, layoutEl; private int count = 0; private VFSContainer itemContainer; @@ -78,6 +83,17 @@ public class MatchEditorController extends FormBasicController { private final List<MatchWrapper> targetWrappers = new ArrayList<>(); private final Map<String,List<String>> temporaryAssociations = new HashMap<>(); + /** + * + * @param ureq The user request + * @param wControl The parent window control + * @param itemBuilder The assessment item builder for match (matrix or drag and drop) + * @param rootDirectory The directory for images... + * @param rootContainer The directory for images... + * @param itemFile The assessment item file + * @param matrix + * @param restrictedEdit + */ public MatchEditorController(UserRequest ureq, WindowControl wControl, MatchAssessmentItemBuilder itemBuilder, File rootDirectory, VFSContainer rootContainer, File itemFile, boolean restrictedEdit) { super(ureq, wControl, "simple_choices_editor"); @@ -94,12 +110,17 @@ public class MatchEditorController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { FormLayoutContainer metadata = FormLayoutContainer.createDefaultFormLayout("metadata", getTranslator()); - metadata.setFormContextHelp("Test editor QTI 2.1 in detail#details_testeditor_fragetypen_match"); + if (itemBuilder.getQuestionType() == QTI21QuestionType.matchdraganddrop) { + metadata.setFormContextHelp("Test editor QTI 2.1 in detail#details_testeditor_fragetypen_draganddrop"); + } else { + metadata.setFormContextHelp("Test editor QTI 2.1 in detail#details_testeditor_fragetypen_match"); + } metadata.setRootForm(mainForm); formLayout.add(metadata); formLayout.add("metadata", metadata); titleEl = uifactory.addTextElement("title", "form.imd.title", -1, itemBuilder.getTitle(), metadata); + titleEl.setElementCssClass("o_sel_assessment_item_title"); titleEl.setMandatory(true); String description = itemBuilder.getQuestion(); @@ -119,6 +140,7 @@ public class MatchEditorController extends FormBasicController { //single choice / multiple choice String[] singleMultiValues = new String[]{ translate("form.imd.match.single.choice"), translate("form.imd.match.multiple.choice") }; singleMultiEl = uifactory.addRadiosHorizontal("singleMulti", "form.imd.match.single.multiple", metadata, singleMultiKeys, singleMultiValues); + singleMultiEl.setElementCssClass("o_sel_match_single"); singleMultiEl.setEnabled(!restrictedEdit); singleMultiEl.addActionListener(FormEvent.ONCHANGE); if (itemBuilder.isMultipleChoice()) { @@ -126,11 +148,32 @@ public class MatchEditorController extends FormBasicController { } else { singleMultiEl.select(singleMultiKeys[0], true); } + + if(itemBuilder.getQuestionType() == QTI21QuestionType.matchdraganddrop) { + String[] layoutValues = new String[]{ + translate("form.imd.layout.left"), translate("form.imd.layout.top"), + translate("form.imd.layout.right"), translate("form.imd.layout.bottom") + }; + layoutEl = uifactory.addRadiosHorizontal("layout", "form.imd.layout", metadata, layoutKeys, layoutValues); + layoutEl.setElementCssClass("o_sel_match_layout"); + layoutEl.setEnabled(!restrictedEdit); + boolean found = false; + for(String layoutKey:layoutKeys) { + if(itemBuilder.hasMatchInteractionClass(layoutKey)) { + layoutEl.select(layoutKey, true); + found = true; + } + } + if(!found) { + layoutEl.select(layoutKeys[0], true); + } + } //responses String page = velocity_root + "/match_choices.html"; answersCont = FormLayoutContainer.createCustomFormLayout("answers", getTranslator(), page); answersCont.setRootForm(mainForm); + answersCont.contextPut("showHeaders", (itemBuilder.getQuestionType() == QTI21QuestionType.matchdraganddrop)); formLayout.add(answersCont); formLayout.add("answers", answersCont); @@ -159,8 +202,10 @@ public class MatchEditorController extends FormBasicController { uifactory.addFormSubmitButton("submit", answersCont); if(!restrictedEdit) { addColumnButton = uifactory.addFormLink("add.match.column", answersCont, Link.BUTTON); + addColumnButton.setElementCssClass("o_sel_match_add_column"); addColumnButton.setIconLeftCSS("o_icon o_icon_add"); addRowButton = uifactory.addFormLink("add.match.row", answersCont, Link.BUTTON); + addRowButton.setElementCssClass("o_sel_match_add_row"); addRowButton.setIconLeftCSS("o_icon o_icon_add"); } } @@ -234,6 +279,14 @@ public class MatchEditorController extends FormBasicController { } } + if(layoutEl != null) { + layoutEl.clearError(); + if(!layoutEl.isOneSelected()) { + layoutEl.setErrorKey("form.legende.mandatory", null); + allOk &= false; + } + } + return allOk & super.validateFormLogic(ureq); } @@ -277,6 +330,13 @@ public class MatchEditorController extends FormBasicController { itemBuilder.setShuffle(shuffleEl.isOneSelected() && shuffleEl.isSelected(0)); } + //layout + if(!restrictedEdit && layoutEl != null) { + itemBuilder.removeMatchInteractionClass(layoutKeys); + String cssClass = layoutEl.getSelectedKey(); + itemBuilder.addMatchInteractionClass(cssClass); + } + //update for(MatchWrapper sourceWrapper:sourceWrappers) { SimpleAssociableChoice choice = sourceWrapper.getSimpleChoice(); diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchScoreController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchScoreController.java index 12020dcf15f753c4527c58e4fb17e543d15b8853..41645f6dc62ca1216313fdc53e09f3cab056ed0d 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchScoreController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MatchScoreController.java @@ -88,12 +88,13 @@ public class MatchScoreController extends AssessmentItemRefEditorController impl setFormContextHelp("Test editor QTI 2.1 in detail#details_testeditor_score"); minScoreEl = uifactory.addTextElement("min.score", "min.score", 8, "0.0", formLayout); + minScoreEl.setElementCssClass("o_sel_assessment_item_min_score"); minScoreEl.setEnabled(false); - minScoreEl.setEnabled(!restrictedEdit); ScoreBuilder maxScore = itemBuilder.getMaxScoreBuilder(); String maxValue = maxScore == null ? "" : (maxScore.getScore() == null ? "" : maxScore.getScore().toString()); maxScoreEl = uifactory.addTextElement("max.score", "max.score", 8, maxValue, formLayout); + maxScoreEl.setElementCssClass("o_sel_assessment_item_max_score"); maxScoreEl.setEnabled(!restrictedEdit); String[] modeValues = new String[]{ @@ -255,21 +256,15 @@ public class MatchScoreController extends AssessmentItemRefEditorController impl public static class MatchWrapper { private final Identifier choiceIdentifier; - private final SimpleAssociableChoice choice; - private String summary; + private SimpleAssociableChoice choice; public MatchWrapper(Identifier choiceIdentifier, SimpleAssociableChoice choice) { this.choiceIdentifier = choiceIdentifier; this.choice = choice; - if(choice != null) { - summary = new AssessmentHtmlBuilder().flowStaticString(choice.getFlowStatics()); - } else { - summary = ""; - } } public String getSummary() { - return summary; + return new AssessmentHtmlBuilder().flowStaticString(choice.getFlowStatics()); } public Identifier getChoiceIdentifier() { diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MultipleChoiceEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MultipleChoiceEditorController.java index 2954cf194d428d8f2b1c7c435de5cd57e7398db0..b75d66233975705df11c738d69467451e3e25f80 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MultipleChoiceEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/MultipleChoiceEditorController.java @@ -100,6 +100,7 @@ public class MultipleChoiceEditorController extends FormBasicController { formLayout.add("metadata", metadata); titleEl = uifactory.addTextElement("title", "form.imd.title", -1, itemBuilder.getTitle(), metadata); + titleEl.setElementCssClass("o_sel_assessment_item_title"); titleEl.setMandatory(true); String description = itemBuilder.getQuestion(); @@ -157,6 +158,7 @@ public class MultipleChoiceEditorController extends FormBasicController { // Submit Button FormLayoutContainer buttonsContainer = FormLayoutContainer.createDefaultFormLayout_2_10("buttons", getTranslator()); + buttonsContainer.setElementCssClass("o_sel_choices_save"); buttonsContainer.setRootForm(mainForm); formLayout.add(buttonsContainer); formLayout.add("buttons", buttonsContainer); diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/SingleChoiceEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/SingleChoiceEditorController.java index e558c32bb10245cbe1e769679663d6d7d305dfa5..0679b526a19c62b73eecbb8c796029a3b4472ba6 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/SingleChoiceEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/SingleChoiceEditorController.java @@ -97,6 +97,7 @@ public class SingleChoiceEditorController extends FormBasicController { formLayout.add("metadata", metadata); titleEl = uifactory.addTextElement("title", "form.imd.title", -1, itemBuilder.getTitle(), metadata); + titleEl.setElementCssClass("o_sel_assessment_item_title"); titleEl.setMandatory(true); String description = itemBuilder.getQuestion(); @@ -154,6 +155,7 @@ public class SingleChoiceEditorController extends FormBasicController { // Submit Button FormLayoutContainer buttonsContainer = FormLayoutContainer.createDefaultFormLayout_2_10("buttons", getTranslator()); buttonsContainer.setRootForm(mainForm); + buttonsContainer.setElementCssClass("o_sel_choices_save"); formLayout.add(buttonsContainer); formLayout.add("buttons", buttonsContainer); uifactory.addFormSubmitButton("submit", buttonsContainer); diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/UploadEditorController.java b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/UploadEditorController.java index b94385647ec98b936d8e4cf6ab0dea3991b53e63..2f169273b7d0ad435db1a7150d88a9f2589cd680 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/UploadEditorController.java +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/UploadEditorController.java @@ -71,6 +71,7 @@ public class UploadEditorController extends FormBasicController { setFormContextHelp("Test editor QTI 2.1 in detail#details_testeditor_fragetypen_fileupload"); titleEl = uifactory.addTextElement("title", "form.imd.title", -1, itemBuilder.getTitle(), formLayout); + titleEl.setElementCssClass("o_sel_assessment_item_title"); titleEl.setMandatory(true); String relativePath = rootDirectory.toPath().relativize(itemFile.toPath().getParent()).toString(); @@ -79,10 +80,12 @@ public class UploadEditorController extends FormBasicController { String description = itemBuilder.getQuestion(); textEl = uifactory.addRichTextElementForQTI21("desc", "form.imd.descr", description, 16, -1, itemContainer, formLayout, ureq.getUserSession(), getWindowControl()); + textEl.setElementCssClass("o_sel_assessment_item_question"); // Submit Button FormLayoutContainer buttonsContainer = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); buttonsContainer.setRootForm(mainForm); + buttonsContainer.setElementCssClass("o_sel_lob_save"); formLayout.add(buttonsContainer); uifactory.addFormSubmitButton("submit", buttonsContainer); } diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/choices_score.html b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/choices_score.html index 69ac6be1581b417291ed9ae1a91787239ee3f966..ecf086035635891291be759cba4bc05db0a7ec1c 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/choices_score.html +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/choices_score.html @@ -1,4 +1,4 @@ -<table class="table"> +<table class="table o_sel_choices_scores"> <thead><tr> <th>$r.translate("form.score.answer.correct")</th> <th>$r.translate("form.score.answer.summary")</th> diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/kprim_choices.html b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/kprim_choices.html index c4a4385900efa3fb17ecd360db732bdf5bb38376..27ffc45b9488d03c1ad9d769d935b1f68ffac7f1 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/kprim_choices.html +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/kprim_choices.html @@ -6,7 +6,7 @@ </div> #foreach($choice in $choices) -<div class="form-group #if($f.hasError($item)) has-feedback has-error #end clearfix"> +<div class="form-group #if($f.hasError($item)) has-feedback has-error #end clearfix o_sel_choice_${foreach.index}"> <div class="col-sm-1"> #if($r.available(${choice.getUp().getComponent().getComponentName()}) && $r.visible(${choice.getUp().getComponent().getComponentName()})) <div>$r.render(${choice.getUp().getComponent().getComponentName()})</div> diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/match_choices.html b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/match_choices.html index 957c6364e8a9928051dac8568562f479bed3f378..7814dfc5684130514168aca12e45e26886c20897 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/match_choices.html +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/match_choices.html @@ -2,10 +2,20 @@ <table id="qti_container_${responseIdentifier}" class="table"> <thead> + #if($r.isNotNull($showHeaders) && $showHeaders) <tr> - <th></th> + <th style="border: none;"></th> + <th style="border: none;" colspan="${targetChoices.size()}">$r.translate("form.imd.layout.match.targets")</th> + </tr> + #end + <tr> + <th style="border-top: none;"> + #if($r.isNotNull($showHeaders) && $showHeaders) + $r.translate("form.imd.layout.match.sources") + #end + </th> #foreach($targetChoice in $targetChoices) - <th>$r.render(${targetChoice.getText()}) + <th class="o_sel_match_target_${foreach.index}" style="border-top: none;">$r.render(${targetChoice.getText()}) #if($f.hasError($item)) <span class="o_icon o_icon_error form-control-feedback"></span> #end #if(!$restrictedEdit) <div class="pull-right">$r.render(${targetChoice.getDeleteButton()})</div> #end</th> @@ -16,16 +26,17 @@ #foreach($sourceChoice in $sourceChoices) #set($set1Identifier = $sourceChoice.getIdentifierString()) <tr> - <th>$r.render(${sourceChoice.getText()}) + <th class="o_sel_match_source_${foreach.index}">$r.render(${sourceChoice.getText()}) #if($f.hasError($item)) <span class="o_icon o_icon_error form-control-feedback"></span> #end #if(!$restrictedEdit) <div class="pull-right">$r.render(${sourceChoice.getDeleteButton()})</div> #end </th> + #set($sourceIndex = ${foreach.index}) #foreach($targetChoice in $targetChoices) #set($set2Identifier = $targetChoice.getIdentifierString()) #set($responseValue = $set1Identifier + " " + $set2Identifier) - <td> + <td class="o_sel_match_${sourceIndex}_${foreach.index}"> <input id="oo_${set1Identifier}_${set2Identifier}" type="checkbox" name="qtiworks_response_${responseIdentifier}" value="${responseValue}" #if(${sourceChoice.isCorrect(${targetChoice.getIdentifier()})}) checked #end #if($restrictedEdit) disabled #end/> $f.appendFlexiFormDirtyForCheckbox("oo_${set1Identifier}_${set2Identifier}") #if(${sourceChoice.isErrorSingleChoice()}) @@ -52,7 +63,7 @@ jQuery(function() { #end #if($r.available("add.match.row") || $r.available("add.match.column") || $r.available("submit")) -<div class="o_button_group"> +<div class="o_button_group o_sel_match_save"> #if($r.available("submit")) $r.render("submit") #end diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/match_score.html b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/match_score.html index 4d67d571d586908fadd31d8a29df863d9772bf95..03cbbdb6b0d328e09e845e4878cfcf6b69ed792c 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/match_score.html +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/match_score.html @@ -11,8 +11,9 @@ #foreach($sourceChoice in $sourceChoices) <tr> <th>${sourceChoice.getSummary()}</th> + #set($sourceIndex = ${foreach.index}) #foreach($targetChoice in $targetChoices) - <td> + <td class="o_sel_match_${sourceIndex}_${foreach.index}"> #set($scoreWrapper = $r.get("${sourceChoice.getChoiceIdentifier().toString()}-${targetChoice.getChoiceIdentifier().toString()}")) $r.render("${sourceChoice.getChoiceIdentifier().toString()}-${targetChoice.getChoiceIdentifier().toString()}") #if(${scoreWrapper.isCorrect()}) diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/multiple_choices.html b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/multiple_choices.html index e051500d16433a8e5a5ae46285739cc8b4e3b235..18358d4d08a9bc733d51fcab12058217d381b6a3 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/multiple_choices.html +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/multiple_choices.html @@ -4,13 +4,13 @@ <div class="col-sm-10"><strong>$r.translate("answers")</strong></div> </div> #foreach($choice in $choices) -<div class="form-group #if($f.hasError($item)) has-feedback has-error #end clearfix"> +<div class="form-group #if($f.hasError($item)) has-feedback has-error #end clearfix o_sel_choice_${foreach.index}"> <div class="col-sm-1"> #if($r.available(${choice.getRemove().getComponent().getComponentName()}) && $r.visible(${choice.getRemove().getComponent().getComponentName()})) <div>$r.render(${choice.getRemove().getComponent().getComponentName()})</div> #end #if($r.available(${choice.getAdd().getComponent().getComponentName()}) && $r.visible(${choice.getAdd().getComponent().getComponentName()})) - <div>$r.render(${choice.getAdd().getComponent().getComponentName()})</div> + <div class="o_sel_add_choice_${foreach.count}">$r.render(${choice.getAdd().getComponent().getComponentName()})</div> #end #if($r.available(${choice.getUp().getComponent().getComponentName()}) && $r.visible(${choice.getUp().getComponent().getComponentName()})) <div>$r.render(${choice.getUp().getComponent().getComponentName()})</div> diff --git a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/simple_choices.html b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/simple_choices.html index 38961fd6dc5fae23f2d3d3779430b67885042931..975341a7eb29537558fc04c5ceb9686d182f5ec8 100644 --- a/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/simple_choices.html +++ b/src/main/java/org/olat/ims/qti21/ui/editor/interactions/_content/simple_choices.html @@ -5,13 +5,13 @@ </div> #foreach($choice in $choices) -<div class="form-group #if($f.hasError($item)) has-feedback has-error #end clearfix"> +<div class="form-group #if($f.hasError($item)) has-feedback has-error #end clearfix o_sel_choice_${foreach.index}"> <div class="col-sm-1"> #if($r.available(${choice.getRemove().getComponent().getComponentName()}) && $r.visible(${choice.getRemove().getComponent().getComponentName()})) <div>$r.render(${choice.getRemove().getComponent().getComponentName()})</div> #end #if($r.available(${choice.getAdd().getComponent().getComponentName()}) && $r.visible(${choice.getAdd().getComponent().getComponentName()})) - <div>$r.render(${choice.getAdd().getComponent().getComponentName()})</div> + <div class="o_sel_add_choice_${foreach.count}">$r.render(${choice.getAdd().getComponent().getComponentName()})</div> #end #if($r.available(${choice.getUp().getComponent().getComponentName()}) && $r.visible(${choice.getUp().getComponent().getComponentName()})) <div>$r.render(${choice.getUp().getComponent().getComponentName()})</div> diff --git a/src/main/java/org/olat/ims/qti21/ui/statistics/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/ims/qti21/ui/statistics/_i18n/LocalStrings_fr.properties index 76b36fa4ac3ce48c472aca274993539d4d9c84e3..5eb8ecaf5949d4ffe52f720ed656d8bb79cbaa11 100644 --- a/src/main/java/org/olat/ims/qti21/ui/statistics/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/ims/qti21/ui/statistics/_i18n/LocalStrings_fr.properties @@ -1,8 +1,11 @@ -#Sat Aug 27 17:11:43 CEST 2016 +#Thu Jun 08 20:30:02 CEST 2017 answer.correct=$org.olat.ims.qti.statistics.ui\:answer.correct answer.false=$org.olat.ims.qti.statistics.ui\:answer.false answer.noanswer=$org.olat.ims.qti.statistics.ui\:answer.noanswer answer.points=$org.olat.ims.qti.statistics.ui\:answer.points +associateInteraction=Associate +chart.answer.averageScoreQuestions.y=$org.olat.ims.qti.statistics.ui\:chart.answer.averageScoreQuestions.y +chart.averagescore.peritem=$org.olat.ims.qti.statistics.ui\:chart.averagescore.peritem chart.cutscore=$org.olat.ims.qti.statistics.ui\:chart.cutscore chart.duration.histogramm=$org.olat.ims.qti.statistics.ui\:chart.duration.histogramm chart.duration.histogramm.legend=$org.olat.ims.qti.statistics.ui\:chart.duration.histogramm.legend @@ -12,8 +15,11 @@ chart.percent.participants=$org.olat.ims.qti.statistics.ui\:chart.percent.partic chart.percent.participants.num=$org.olat.ims.qti.statistics.ui\:chart.percent.participants.num chart.points=$org.olat.ims.qti.statistics.ui\:chart.points chart.responses=$org.olat.ims.qti.statistics.ui\:chart.responses +chart.rightanswers.peritem=$org.olat.ims.qti.statistics.ui\:chart.rightanswers.peritem chart.score.histogramm=$org.olat.ims.qti.statistics.ui\:chart.score.histogramm download.raw.data=$org.olat.ims.qti.statistics.ui\:download.raw.data +drawingInteraction=$org.olat.ims.qti21.ui.editor\:new.drawing +extendedTextInteraction=$org.olat.ims.qti21.ui.editor\:new.essay fib.wrong.answer=$org.olat.ims.qti.statistics.ui\:fib.wrong.answer fig.averagedur=$org.olat.ims.qti.statistics.ui\:fig.averagedur fig.averagescore=$org.olat.ims.qti.statistics.ui\:fig.averagescore @@ -33,22 +39,19 @@ fig.surveyId=$org.olat.ims.qti.statistics.ui\:fig.surveyId fig.testId=$org.olat.ims.qti.statistics.ui\:fig.testId fig.title=$org.olat.ims.qti.statistics.ui\:fig.title fig.wronganswers=$org.olat.ims.qti.statistics.ui\:fig.wronganswers -menu.title=$org.olat.ims.qti.statistics.ui\:menu.title -section=$org.olat.ims.qti.statistics.ui\:section -stats.unsupported.interaction={0} n'est pas support\u00E9. -user.not.answer=$org.olat.ims.qti.statistics.ui\:user.not.answer -associateInteraction=Associate gapMatchInteraction=Gap match -inlineChoiceInteraction=Inline choice -sliderInteraction=Slider -selectPointInteraction=Select point -graphicOrderInteraction=Graphic order graphicAssociateInteraction=Graphic associate graphicGapMatchInteraction=Graphic gap match -positionObjectInteraction=Position object -mediaInteraction=Media +graphicOrderInteraction=Graphic order hotspotInteraction=$org.olat.ims.qti21.ui.editor\:new.hotspot -drawingInteraction=$org.olat.ims.qti21.ui.editor\:new.drawing -uploadInteraction=$org.olat.ims.qti21.ui.editor\:new.upload -extendedTextInteraction=$org.olat.ims.qti21.ui.editor\:new.essay hottextInteraction=Hottext +inlineChoiceInteraction=Inline choice +mediaInteraction=Media +menu.title=$org.olat.ims.qti.statistics.ui\:menu.title +positionObjectInteraction=Position object +section=$org.olat.ims.qti.statistics.ui\:section +selectPointInteraction=Select point +sliderInteraction=Slider +stats.unsupported.interaction={0} n'est pas support\u00E9. +uploadInteraction=$org.olat.ims.qti21.ui.editor\:new.upload +user.not.answer=$org.olat.ims.qti.statistics.ui\:user.not.answer diff --git a/src/main/java/org/olat/modules/_spring/modulesContext.xml b/src/main/java/org/olat/modules/_spring/modulesContext.xml index 95912a023bbfd51e832c1b8ab54855f59ff81bd6..9807652f7dd896d9f0ea42aa885bd100b26d04bb 100644 --- a/src/main/java/org/olat/modules/_spring/modulesContext.xml +++ b/src/main/java/org/olat/modules/_spring/modulesContext.xml @@ -42,6 +42,26 @@ </property> </bean> + <!-- card2brain admin. panel --> + <bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints"> + <property name="order" value="8248" /> + <property name="actionController"> + <bean class="org.olat.core.gui.control.creator.AutoCreator" scope="prototype"> + <property name="className" value="org.olat.modules.card2brain.ui.Card2BrainAdminController"/> + </bean> + </property> + <property name="navigationKey" value="gotomeeting" /> + <property name="i18nActionKey" value="admin.menu.title"/> + <property name="i18nDescriptionKey" value="admin.menu.title.alt"/> + <property name="translationPackage" value="org.olat.modules.card2brain.ui"/> + <property name="parentTreeNodeIdentifier" value="externalToolsParent" /> + <property name="extensionPoints"> + <list> + <value>org.olat.admin.SystemAdminMainController</value> + </list> + </property> + </bean> + <!-- Goto admin. panel --> <bean class="org.olat.core.extensions.action.GenericActionExtension" init-method="initExtensionPoints"> <property name="order" value="8218" /> diff --git a/src/main/java/org/olat/modules/assessment/AssessmentEntry.java b/src/main/java/org/olat/modules/assessment/AssessmentEntry.java index 623f0c6157fcd2b48474cdbc3deb573f1ee9272f..9370b4bcf31aeb62bf091f74b5cf84f8d241bcf1 100644 --- a/src/main/java/org/olat/modules/assessment/AssessmentEntry.java +++ b/src/main/java/org/olat/modules/assessment/AssessmentEntry.java @@ -48,12 +48,8 @@ public interface AssessmentEntry extends AssessmentEntryLight { public void setAttempts(Integer attempts); - public BigDecimal getScore(); - public void setScore(BigDecimal score); - public Boolean getPassed(); - public void setPassed(Boolean passed); public Boolean getUserVisibility(); @@ -79,6 +75,10 @@ public interface AssessmentEntry extends AssessmentEntryLight { public String getComment(); public void setComment(String comment); + + public int getNumberOfAssessmentDocuments(); + + public void setNumberOfAssessmentDocuments(int numOfDocuments); public String getCoachComment(); diff --git a/src/main/java/org/olat/modules/assessment/model/AssessmentEntryImpl.java b/src/main/java/org/olat/modules/assessment/model/AssessmentEntryImpl.java index c6fc98f1005b0a5c1e20b3c6e840b8cc69348016..ad69459e5be157e630a71b18b73598c267f14c84 100644 --- a/src/main/java/org/olat/modules/assessment/model/AssessmentEntryImpl.java +++ b/src/main/java/org/olat/modules/assessment/model/AssessmentEntryImpl.java @@ -91,6 +91,8 @@ public class AssessmentEntryImpl implements Persistable, ModifiedInfo, CreateInf @Column(name="a_completion", nullable=true, insertable=true, updatable=true) private Double completion; + @Column(name="a_num_assessment_docs", nullable=true, insertable=true, updatable=true) + private int numberOfAssessmentDocuments; @Column(name="a_comment", nullable=true, insertable=true, updatable=true) private String comment; @Column(name="a_coach_comment", nullable=true, insertable=true, updatable=true) @@ -247,6 +249,16 @@ public class AssessmentEntryImpl implements Persistable, ModifiedInfo, CreateInf public void setComment(String comment) { this.comment = comment; } + + @Override + public int getNumberOfAssessmentDocuments() { + return numberOfAssessmentDocuments; + } + + @Override + public void setNumberOfAssessmentDocuments(int numOfDocuments) { + numberOfAssessmentDocuments = numOfDocuments; + } @Override public String getCoachComment() { diff --git a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityElementRow.java b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityElementRow.java index 1bb88bb2bcd617d4ec8e6be936366bfb351ab705..603127f241ee8f3a289ea418deb131713766bbbf 100644 --- a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityElementRow.java +++ b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityElementRow.java @@ -42,27 +42,31 @@ public class AssessedIdentityElementRow extends UserPropertiesRow { private final Boolean userVisibility; private final BigDecimal score; private final Boolean passed; - private final Date creationDate; + private final Date initialCourseLaunchDate; private final Date lastModified; + private final int numOfAssessmentDocs; private final AssessmentEntryStatus status; - public AssessedIdentityElementRow(Identity identity, AssessmentEntry entry, List<UserPropertyHandler> userPropertyHandlers, Locale locale) { + public AssessedIdentityElementRow(Identity identity, AssessmentEntry entry, Date initialCourseLaunchDate, + List<UserPropertyHandler> userPropertyHandlers, Locale locale) { super(identity, userPropertyHandlers, locale); + this.initialCourseLaunchDate = initialCourseLaunchDate; if(entry != null) { attempts = entry.getAttempts(); score = entry.getScore(); passed = entry.getPassed(); - userVisibility = entry.getUserVisibility(); - creationDate = entry.getCreationDate(); + userVisibility = entry.getUserVisibility(); lastModified = entry.getLastModified(); status = entry.getAssessmentStatus(); + numOfAssessmentDocs = entry.getNumberOfAssessmentDocuments(); } else { attempts = null; score = null; passed = null; userVisibility = null; - creationDate = lastModified = null; + lastModified = null; status = null; + numOfAssessmentDocs = 0; } } @@ -78,14 +82,19 @@ public class AssessedIdentityElementRow extends UserPropertiesRow { return passed; } - public Date getCreationDate() { - return creationDate; + public Date getInitialCourseLaunchDate() { + return initialCourseLaunchDate; } + public Date getLastModified() { return lastModified; } + public int getNumOfAssessmentDocs() { + return numOfAssessmentDocs; + } + public AssessmentEntryStatus getAssessmentStatus() { return status; } diff --git a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java index 4a3fdd7419f74ffe435976adb2eacd014d463473..f20d7030d75bd18ac6163ff5b58fcc56f3f08ada 100644 --- a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java +++ b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListController.java @@ -21,6 +21,7 @@ package org.olat.modules.assessment.ui; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -59,6 +60,7 @@ import org.olat.core.util.Util; import org.olat.course.assessment.AssessmentModule; import org.olat.course.assessment.AssessmentToolManager; import org.olat.course.assessment.bulk.PassedCellRenderer; +import org.olat.course.assessment.manager.UserCourseInformationsManager; import org.olat.course.assessment.model.SearchAssessedIdentityParams; import org.olat.course.assessment.ui.tool.AssessedIdentityListProvider; import org.olat.course.assessment.ui.tool.AssessmentStatusCellRenderer; @@ -110,6 +112,8 @@ public class AssessedIdentityListController extends FormBasicController implemen @Autowired private BusinessGroupService businessGroupService; @Autowired + private UserCourseInformationsManager userInfosMgr; + @Autowired private AssessmentToolManager assessmentToolManager; @Autowired private RepositoryHandlerFactory repositoryHandlerFactory; @@ -251,10 +255,13 @@ public class AssessedIdentityListController extends FormBasicController implemen assessmentEntries.stream().filter((entry) -> entry.getIdentity() != null) .forEach((entry) -> entryMap.put(entry.getIdentity().getKey(), entry)); + Map<Long,Date> initialLaunchDates = userInfosMgr.getInitialLaunchDates(testEntry.getOlatResource()); + List<AssessedIdentityElementRow> rows = new ArrayList<>(assessedIdentities.size()); for(Identity assessedIdentity:assessedIdentities) { AssessmentEntry entry = entryMap.get(assessedIdentity.getKey()); - rows.add(new AssessedIdentityElementRow(assessedIdentity, entry, userPropertyHandlers, getLocale())); + Date initialLaunchDate = initialLaunchDates.get(assessedIdentity.getKey()); + rows.add(new AssessedIdentityElementRow(assessedIdentity, entry, initialLaunchDate, userPropertyHandlers, getLocale())); } usersTableModel.setObjects(rows); diff --git a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListTableModel.java b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListTableModel.java index b21b83ca7eb7a83e25b66d140b0a435e40fcce9d..2c264bb907d5a72def7e5e14c6b39cf07a9c6e44 100644 --- a/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListTableModel.java +++ b/src/main/java/org/olat/modules/assessment/ui/AssessedIdentityListTableModel.java @@ -136,7 +136,7 @@ public class AssessedIdentityListTableModel extends DefaultFlexiTableDataModel<A } return certificateMap.get(row.getIdentityKey()); } - case initialLaunchDate: return row.getCreationDate(); + case initialLaunchDate: return row.getInitialCourseLaunchDate(); case lastScoreUpdate: return row.getLastModified(); } } diff --git a/src/main/java/org/olat/modules/card2brain/Card2BrainManager.java b/src/main/java/org/olat/modules/card2brain/Card2BrainManager.java new file mode 100644 index 0000000000000000000000000000000000000000..246cba6173d5bfa15f08aad17109f997f9961940 --- /dev/null +++ b/src/main/java/org/olat/modules/card2brain/Card2BrainManager.java @@ -0,0 +1,49 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.card2brain; + +import org.olat.modules.card2brain.manager.Card2BrainVerificationResult; + +/** + * + * Initial date: 20.04.2017<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public interface Card2BrainManager { + + /** + * Check if a set of flashcards exists on card2brain. + * @param alias the alias of the set of flashcards. + * @return true if the set of flashcards exists. + */ + public boolean checkSetOfFlashcards(String alias); + + /** + * Verify if the key and the secret of the enterprise login are valid. + * + * @param url the url of the verification service + * @param key the key + * @param secret the secret + * @return Card2BrainVerificationResult the result of the verification + */ + public Card2BrainVerificationResult checkEnterpriseLogin(String url, String key, String secret); + +} diff --git a/src/main/java/org/olat/modules/card2brain/Card2BrainModule.java b/src/main/java/org/olat/modules/card2brain/Card2BrainModule.java new file mode 100644 index 0000000000000000000000000000000000000000..22d438f537c35512036c3fde142916ec9d7edf02 --- /dev/null +++ b/src/main/java/org/olat/modules/card2brain/Card2BrainModule.java @@ -0,0 +1,188 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.card2brain; + +import org.olat.core.configuration.AbstractSpringModule; +import org.olat.core.configuration.ConfigOnOff; +import org.olat.core.util.StringHelper; +import org.olat.core.util.coordinate.CoordinatorManager; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +/** + * + * Initial date: 07.04.2017<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +@Service +public class Card2BrainModule extends AbstractSpringModule implements ConfigOnOff { + + public static final String CARD2BRAIN_ENABLED = "card2brain.enabled"; + public static final String CARD2BRAIN_ENTERPRISE_LOGIN_ENABLED = "card2brain.enterpriseLoginEnabled"; + public static final String CARD2BRAIN_PRIVATE_LOGIN_ENABLED = "card2brain.privateLoginEnabled"; + public static final String CARD2BRAIN_ENTERPRISE_KEY = "card2brain.enterpriseKey"; + public static final String CARD2BRAIN_ENTERPRISE_SECRET= "card2brain.enterpriseSecret"; + public static final String CARD2BRAIN_BASE_URL = "card2brain.baseUrl"; + public static final String CARD2BRAIN_PEEK_VIEW_URL = "card2brain.peekViewUrl"; + public static final String CARD2BRAIN_VERIFY_LTI_URL = "card2brain.verifyLtiUrl"; + + @Value("${card2brain.enabled:false}") + private boolean enabled; + @Value("${card2brain.enterpriseLoginEnalbled:false}") + private boolean enterpriseLoginEnabled; + @Value("${card2brain.privateLoginEnalbled:false}") + private boolean privateLoginEnabled; + private String enterpriseKey; + private String enterpriseSecret; + @Value("${card2brain.baseUrl:null}") + private String baseUrl; + @Value("${card2brain.peekViewUrl:null}") + private String peekViewUrl; + @Value("${card2brain.verifyLtiUrl:null}") + private String verifyLtiUrl; + + @Autowired + public Card2BrainModule(CoordinatorManager coordinatorManager) { + super(coordinatorManager); + } + + @Override + public void init() { + String enabledObj = getStringPropertyValue(CARD2BRAIN_ENABLED, true); + if(StringHelper.containsNonWhitespace(enabledObj)) { + enabled = "true".equals(enabledObj); + } + + String enterpriseLoginEnabledObj = getStringPropertyValue(CARD2BRAIN_ENTERPRISE_LOGIN_ENABLED, true); + if(StringHelper.containsNonWhitespace(enterpriseLoginEnabledObj)) { + enterpriseLoginEnabled = "true".equals(enterpriseLoginEnabledObj); + } + + String privateLoginEnabledObj = getStringPropertyValue(CARD2BRAIN_PRIVATE_LOGIN_ENABLED, true); + if(StringHelper.containsNonWhitespace(privateLoginEnabledObj)) { + privateLoginEnabled = "true".equals(privateLoginEnabledObj); + } + + String enterpriseKeyObj = getStringPropertyValue(CARD2BRAIN_ENTERPRISE_KEY, true); + if(StringHelper.containsNonWhitespace(enterpriseKeyObj)) { + enterpriseKey = enterpriseKeyObj; + } + + String enterpriseSecretObj = getStringPropertyValue(CARD2BRAIN_ENTERPRISE_SECRET, true); + if(StringHelper.containsNonWhitespace(enterpriseSecretObj)) { + enterpriseSecret = enterpriseSecretObj; + } + + String baseUrlObj = getStringPropertyValue(CARD2BRAIN_BASE_URL, true); + if(StringHelper.containsNonWhitespace(baseUrlObj)) { + baseUrl = baseUrlObj; + } + + String peekViewUrlObj = getStringPropertyValue(CARD2BRAIN_PEEK_VIEW_URL, true); + if(StringHelper.containsNonWhitespace(peekViewUrlObj)) { + peekViewUrl = peekViewUrlObj; + } + + String verifyLtiUrlObj = getStringPropertyValue(CARD2BRAIN_VERIFY_LTI_URL, true); + if(StringHelper.containsNonWhitespace(verifyLtiUrlObj)) { + verifyLtiUrl = verifyLtiUrlObj; + } + } + + @Override + protected void initFromChangedProperties() { + init(); + } + + @Override + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(boolean enabled) { + this.enabled = enabled; + setStringProperty(CARD2BRAIN_ENABLED, Boolean.toString(enabled), true); + } + + public boolean isEnterpriseLoginEnabled() { + return enterpriseLoginEnabled; + } + + public void setEnterpriseLoginEnabled(boolean enterpriseLoginEnalbled) { + this.enterpriseLoginEnabled = enterpriseLoginEnalbled; + setStringProperty(CARD2BRAIN_ENTERPRISE_LOGIN_ENABLED, Boolean.toString(enterpriseLoginEnalbled), true); + } + + public boolean isPrivateLoginEnabled() { + return privateLoginEnabled; + } + + public void setPrivateLoginEnabled(boolean privateLoginEnalbled) { + this.privateLoginEnabled = privateLoginEnalbled; + setStringProperty(CARD2BRAIN_PRIVATE_LOGIN_ENABLED, Boolean.toString(privateLoginEnalbled), true); + } + + public String getEnterpriseKey() { + return enterpriseKey; + } + + public void setEnterpriseKey(String enterpriseKey) { + this.enterpriseKey = enterpriseKey; + setStringProperty(CARD2BRAIN_ENTERPRISE_KEY, enterpriseKey, true); + } + + public String getEnterpriseSecret() { + return enterpriseSecret; + } + + public void setEnterpriseSecret(String enterpriseSecret) { + this.enterpriseSecret = enterpriseSecret; + setStringProperty(CARD2BRAIN_ENTERPRISE_SECRET, enterpriseSecret, true); + } + + public String getBaseUrl() { + return baseUrl; + } + + public void setBaseUrl(String baseUrl) { + this.baseUrl = baseUrl; + setStringProperty(CARD2BRAIN_BASE_URL, baseUrl, true); + } + + public String getPeekViewUrl() { + return peekViewUrl; + } + + public void setPeekViewUrl(String peekViewUrl) { + this.peekViewUrl = peekViewUrl; + setStringProperty(CARD2BRAIN_PEEK_VIEW_URL, peekViewUrl, true); + } + + public String getVerifyLtiUrl() { + return verifyLtiUrl; + } + + public void setVerifyLtiUrl(String verifyLtiUrl) { + this.verifyLtiUrl = verifyLtiUrl; + setStringProperty(CARD2BRAIN_VERIFY_LTI_URL, verifyLtiUrl, true); + } +} diff --git a/src/main/java/org/olat/modules/card2brain/manager/Card2BrainManagerImpl.java b/src/main/java/org/olat/modules/card2brain/manager/Card2BrainManagerImpl.java new file mode 100644 index 0000000000000000000000000000000000000000..42a1c3b6367dec904c5bf24240be77329de7246f --- /dev/null +++ b/src/main/java/org/olat/modules/card2brain/manager/Card2BrainManagerImpl.java @@ -0,0 +1,117 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.card2brain.manager; + +import java.util.Map; + +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +import org.codehaus.jackson.JsonParseException; +import org.codehaus.jackson.map.ObjectMapper; +import org.olat.core.logging.OLog; +import org.olat.core.logging.Tracing; +import org.olat.ims.lti.LTIManager; +import org.olat.modules.card2brain.Card2BrainManager; +import org.olat.modules.card2brain.Card2BrainModule; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + * + * Initial date: 20.04.2017<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +@Service +public class Card2BrainManagerImpl implements Card2BrainManager { + + private static final OLog log = Tracing.createLoggerFor(Card2BrainManagerImpl.class); + + @Autowired + private Card2BrainModule card2brainModule; + + @Autowired + private LTIManager ltiManager; + + ObjectMapper mapper; + + public Card2BrainManagerImpl() { + mapper = new ObjectMapper(); + } + + @Override + public boolean checkSetOfFlashcards(String alias) { + boolean setOfFlashcardExists = false; + + String url = String.format(card2brainModule.getPeekViewUrl(), alias); + HttpGet request = new HttpGet(url); + + try(CloseableHttpClient httpclient = HttpClients.createDefault(); + CloseableHttpResponse response = httpclient.execute(request);) { + setOfFlashcardExists = isSetOfFlashcardExisting(response); + } catch(Exception e) { + log.error("", e); + } + + log.info(new StringBuilder("Check card2brain set of flaschcards (").append(url).append("): ").append(setOfFlashcardExists).toString()); + return setOfFlashcardExists; + } + + /** + * evaluates if a set of flashcards is existing according to a http response + * @param response the http response + * @return true if it is existing + */ + protected boolean isSetOfFlashcardExisting(HttpResponse response) { + boolean isSetOfFlashcardExisting = false; + // The response of a non existent set of flashcards returns with an empty body + try { + if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK && EntityUtils.toByteArray(response.getEntity()).length > 0) { + isSetOfFlashcardExisting = true; + } + } catch (Exception e) { + // nothing to do: isSetOfFlashcardExisting is false. + } + return isSetOfFlashcardExisting; + } + + @Override + public Card2BrainVerificationResult checkEnterpriseLogin(String url, String key, String secret) { + Card2BrainVerificationResult card2BrainValidationResult = null; + + try { + Map<String,String> signedPros = ltiManager.sign(null, url, key, secret); + String content = ltiManager.post(signedPros, url); + card2BrainValidationResult = mapper.readValue(content, Card2BrainVerificationResult.class); + } catch (JsonParseException jsonParseException) { + // ignore and return null + } catch (Exception e) { + log.error("", e); + } + + return card2BrainValidationResult; + } + +} diff --git a/src/main/java/org/olat/modules/card2brain/manager/Card2BrainVerificationResult.java b/src/main/java/org/olat/modules/card2brain/manager/Card2BrainVerificationResult.java new file mode 100644 index 0000000000000000000000000000000000000000..b84791668fa72f91f2b83b433e20418071ffd89d --- /dev/null +++ b/src/main/java/org/olat/modules/card2brain/manager/Card2BrainVerificationResult.java @@ -0,0 +1,59 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.card2brain.manager; + +/** + * Data object to encapsulate a result of a verification. + * + * Initial date: 09.05.2017<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class Card2BrainVerificationResult { + + private boolean success; + private String message; + + public Card2BrainVerificationResult(boolean valid, String message) { + this.success = valid; + this.message = message; + } + + public Card2BrainVerificationResult() { + // nothing to do + } + + public boolean isSuccess() { + return success; + } + + public void setSuccess(boolean valid) { + this.success = valid; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + +} diff --git a/src/main/java/org/olat/modules/card2brain/ui/Card2BrainAdminController.java b/src/main/java/org/olat/modules/card2brain/ui/Card2BrainAdminController.java new file mode 100644 index 0000000000000000000000000000000000000000..4aefd9a33e3db855f77b12453f7d9f960635f30e --- /dev/null +++ b/src/main/java/org/olat/modules/card2brain/ui/Card2BrainAdminController.java @@ -0,0 +1,233 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.card2brain.ui; + +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItem; +import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.FormLink; +import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; +import org.olat.core.gui.components.form.flexible.elements.TextElement; +import org.olat.core.gui.components.form.flexible.impl.FormBasicController; +import org.olat.core.gui.components.form.flexible.impl.FormEvent; +import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.util.StringHelper; +import org.olat.modules.card2brain.Card2BrainManager; +import org.olat.modules.card2brain.Card2BrainModule; +import org.olat.modules.card2brain.manager.Card2BrainVerificationResult; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 07.04.2017<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +public class Card2BrainAdminController extends FormBasicController { + + private static final String[] enabledKeys = new String[]{"on"}; + private static final String FORM_MISSING_MANDATORY = "form.legende.mandatory"; + + private MultipleSelectionElement enabledEl; + private MultipleSelectionElement enterpriseLoginEnabledEl; + private MultipleSelectionElement privateLoginEnabledEl; + private TextElement enterpriseKeyEl; + private TextElement enterpriseSecretEl; + private FormLink checkLoginButton; + private TextElement baseUrlEl; + private TextElement peekViewUrlEl; + private TextElement verifyLtiUrlEl; + + @Autowired + private Card2BrainModule card2BrainModule; + @Autowired + private Card2BrainManager card2BrainManager; + + public Card2BrainAdminController(UserRequest ureq, WindowControl wControl) { + super(ureq, wControl); + initForm(ureq); + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + setFormTitle("admin.title"); + setFormContextHelp("KnowledgeTransfer#_card2brain_config"); + + setFormDescription("admin.description"); + + String[] enableValues = new String[]{ translate("on") }; + enabledEl = uifactory.addCheckboxesHorizontal("admin.enabled", formLayout, enabledKeys, enableValues); + if (card2BrainModule.isEnabled()) { + enabledEl.select(enabledKeys[0], true); + } + + uifactory.addSpacerElement("Spacer", formLayout, false); + + enterpriseLoginEnabledEl = uifactory.addCheckboxesHorizontal("admin.enterpriseLoginEnabled", formLayout, enabledKeys, enableValues); + if (card2BrainModule.isEnterpriseLoginEnabled()) { + enterpriseLoginEnabledEl.select(enabledKeys[0], true); + } + enterpriseLoginEnabledEl.setHelpTextKey("admin.enterpriseLoginHelpText", null); + enterpriseLoginEnabledEl.setHelpUrl(translate("admin.enterpriseLoginHelpUrl")); + enterpriseLoginEnabledEl.addActionListener(FormEvent.ONCHANGE); + + String enterpriseKey = card2BrainModule.getEnterpriseKey(); + enterpriseKeyEl = uifactory.addTextElement("admin.enterpriseKey", "admin.enterpriseKey", 128, enterpriseKey, formLayout); + enterpriseKeyEl.setMandatory(true); + + String enterpriseSecret = card2BrainModule.getEnterpriseSecret(); + enterpriseSecretEl = uifactory.addTextElement("admin.enterpriseSecret", "admin.enterpriseSecret", 128, enterpriseSecret, formLayout); + enterpriseSecretEl.setMandatory(true); + + checkLoginButton = uifactory.addFormLink("admin.verifyKeySecret.button", formLayout, "btn btn-default"); + + uifactory.addSpacerElement("Spacer", formLayout, false); + + privateLoginEnabledEl = uifactory.addCheckboxesHorizontal("admin.privateLoginEnabled", formLayout, enabledKeys, enableValues); + if (card2BrainModule.isPrivateLoginEnabled()) { + privateLoginEnabledEl.select(enabledKeys[0], true); + } + privateLoginEnabledEl.setHelpTextKey("admin.privateLoginHelpText", null); + privateLoginEnabledEl.addActionListener(FormEvent.ONCHANGE); + + uifactory.addSpacerElement("Spacer", formLayout, false); + uifactory.addStaticTextElement("admin.expertSettings", null, formLayout); + + String baseUrl = card2BrainModule.getBaseUrl(); + baseUrlEl = uifactory.addTextElement("admin.baseUrl", "admin.baseUrl", 128, baseUrl, formLayout); + baseUrlEl.setMandatory(true); + baseUrlEl.setHelpTextKey("admin.baseUrlHelpText", null); + + String peekViewUrl = card2BrainModule.getPeekViewUrl(); + peekViewUrlEl = uifactory.addTextElement("admin.peekViewUrl", "admin.peekViewUrl", 128, peekViewUrl, formLayout); + peekViewUrlEl.setMandatory(true); + peekViewUrlEl.setHelpTextKey("admin.peekViewUrlHelpText", null); + + String verifyLtiUrl = card2BrainModule.getVerifyLtiUrl(); + verifyLtiUrlEl = uifactory.addTextElement("admin.verifyKeySecret.url", "admin.verifyKeySecret.url", 128, verifyLtiUrl, formLayout); + verifyLtiUrlEl.setMandatory(true); + + FormLayoutContainer buttonLayout = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); + formLayout.add("buttons", buttonLayout); + uifactory.addFormSubmitButton("save", buttonLayout); + + showHideEnterpriseLoginFields(); + } + + @Override + protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { + if (enterpriseLoginEnabledEl == source) { + showHideEnterpriseLoginFields(); + } else if (checkLoginButton == source) { + checkKeySecret(); + } + super.formInnerEvent(ureq, source, event); + } + + @Override + protected void formOK(UserRequest ureq) { + boolean enabled = enabledEl.isAtLeastSelected(1); + card2BrainModule.setEnabled(enabled); + + boolean enterpriseLoginEnabled = enterpriseLoginEnabledEl.isAtLeastSelected(1); + card2BrainModule.setEnterpriseLoginEnabled(enterpriseLoginEnabled); + + boolean privateLoginEnabled = privateLoginEnabledEl.isAtLeastSelected(1); + card2BrainModule.setPrivateLoginEnabled(privateLoginEnabled); + + String enterpriseKey = enterpriseKeyEl.getValue(); + card2BrainModule.setEnterpriseKey(enterpriseKey); + + String enterpriseSecret = enterpriseSecretEl.getValue(); + card2BrainModule.setEnterpriseSecret(enterpriseSecret); + + String baseUrl = baseUrlEl.getValue(); + card2BrainModule.setBaseUrl(baseUrl); + + String peekViewUrl = peekViewUrlEl.getValue(); + card2BrainModule.setPeekViewUrl(peekViewUrl); + + String verifyLtiUrl = verifyLtiUrlEl.getValue(); + card2BrainModule.setVerifyLtiUrl(verifyLtiUrl); + } + + @Override + protected boolean validateFormLogic(UserRequest ureq) { + boolean allOk = true; + + //validate only if the module is enabled + if(card2BrainModule.isEnabled()) { + if (isEnterpriseLoginEnabled()) { + allOk &= validateIsMandatory(enterpriseKeyEl); + allOk &= validateIsMandatory(enterpriseSecretEl); + } + allOk &= validateIsMandatory(baseUrlEl); + allOk &= validateIsMandatory(peekViewUrlEl); + allOk &= validateIsMandatory(verifyLtiUrlEl); + } + + return allOk & super.validateFormLogic(ureq); + } + + private boolean validateIsMandatory(TextElement textElement) { + boolean allOk = true; + + if (!StringHelper.containsNonWhitespace(textElement.getValue())) { + textElement.setErrorKey(FORM_MISSING_MANDATORY, null); + allOk &= false; + } + + return allOk; + } + + private void showHideEnterpriseLoginFields() { + enterpriseKeyEl.setVisible(isEnterpriseLoginEnabled()); + enterpriseSecretEl.setVisible(isEnterpriseLoginEnabled()); + checkLoginButton.setVisible(isEnterpriseLoginEnabled()); + } + + private boolean isEnterpriseLoginEnabled() { + return enterpriseLoginEnabledEl.isAtLeastSelected(1); + } + + private void checkKeySecret() { + String verifyLtiUrl = verifyLtiUrlEl.getValue(); + String key = enterpriseKeyEl.getValue(); + String secret = enterpriseSecretEl.getValue(); + + Card2BrainVerificationResult verification = + card2BrainManager.checkEnterpriseLogin(verifyLtiUrl, key, secret); + if(verification == null) { + showError("admin.verifyKeySecret.unavaible"); + } else if (verification.isSuccess()) { + showInfo("admin.verifyKeySecret.valid"); + } else { + showError("admin.verifyKeySecret.invalid", verification.getMessage()); + } + } + + @Override + protected void doDispose() { + // + } + +} diff --git a/src/main/java/org/olat/modules/card2brain/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/card2brain/ui/_i18n/LocalStrings_de.properties new file mode 100644 index 0000000000000000000000000000000000000000..9fce9fa634e6100e1dccc82f0a669e7cabae216b --- /dev/null +++ b/src/main/java/org/olat/modules/card2brain/ui/_i18n/LocalStrings_de.properties @@ -0,0 +1,24 @@ +#Wed Apr 19 14:49:46 CEST 2017 +admin.baseUrl=URL LTI Ressource +admin.baseUrlHelpText=Als Platzhalter f\u00FCr das Alias der Lernkartei ist '%s' zu verwenden. +admin.description=card2brain ist die Multi-Channel-Application zum systematischen Lernen in allen Wissensgebieten. Auf card2brain.ch kannst du Lernkarten erstellen und nach dem bekannten F\u00FCnf-F\u00E4cher-Prinzip von Sebastian Leitner lernen. Weitere Informationen sind auf der <a href\="http\://card2brain.ch" target\=_blank>Webseite</a> von card2brain zu finden. +admin.enabled=Modul "card2brain" +admin.enterpriseKey=API Key +admin.enterpriseLoginEnabled=Enterprise Login +admin.enterpriseLoginHelpText=F\u00FCr das Enterprise Login wird ein card2brain "Corporate" Abo ben\u00F6tigt. +admin.enterpriseLoginHelpUrl=https\://card2brain.ch/register/index?licence\=multiple&lang\=de +admin.enterpriseSecret=API Secret +admin.expertSettings=Experteneinstellungen +admin.menu.title=card2brain +admin.menu.title.alt=card2brain +admin.peekViewUrl=URL der Vorschau +admin.peekViewUrlHelpText=Als Platzhalter f\u00FCr das Alias der Lernkartei ist '%s' zu verwenden. +admin.privateLoginEnabled=Private Login +admin.privateLoginHelpText=Login Angaben auf dem Kursbaustein einblenden. +admin.title=Konfiguration +admin.verifyKeySecret.button=Key/Secret \u00FCberpr\u00FCfen +admin.verifyKeySecret.invalid=Der Key und das Secret sind nicht g\u00FCltig. Anwort vom card2brain-Server: {0} +admin.verifyKeySecret.unavaible=Die Pr\u00FCfung konnte nicht durchgef\u00FChrt werden. +admin.verifyKeySecret.url=URL LTI Key/Secret Verifizierung +admin.verifyKeySecret.valid=Der Key und das Secret sind g\u00FCltig. + diff --git a/src/main/java/org/olat/modules/card2brain/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/card2brain/ui/_i18n/LocalStrings_en.properties new file mode 100644 index 0000000000000000000000000000000000000000..a4f8019801df06dd49c977f45de3f5ac21ba55d8 --- /dev/null +++ b/src/main/java/org/olat/modules/card2brain/ui/_i18n/LocalStrings_en.properties @@ -0,0 +1,23 @@ +#Wed Apr 19 14:49:09 CEST 2017 +admin.baseUrl=URL LTI resource +admin.baseUrlHelpText=Use '%s' as a placeholder for the alias of the flashcards. +admin.description=card2brain is the multi-channel application for methodical learning in all fields of study. On card2brain, you can create flashcards and study them according to Sebastian Leitner's well-known system of five compartments. Further information is available on the <a href\="http\://card2brain.ch" target\=_blank>website</a> of card2brain. +admin.enabled=Module "card2brain" +admin.enterpriseKey=API Key +admin.enterpriseLoginEnabled=Enterprise Login +admin.enterpriseLoginHelpText=To use the Enterprise Login a card2brain "Corporate" subscription is needed. +admin.enterpriseLoginHelpUrl=https\://card2brain.ch/register/index?licence\=multiple&lang\=en +admin.enterpriseSecret=API Secret +admin.expertSettings=Expert settings +admin.menu.title=card2brain +admin.menu.title.alt=card2brain +admin.peekViewUrl=URL peek view +admin.peekViewUrlHelpText=Use '%s' as a placeholder for the alias of the flashcards. +admin.privateLoginEnabled=Private Login +admin.privateLoginHelpText=Show the login fields in the course element. +admin.title=Configuration +admin.verifyKeySecret.button=Verify Key/Secret +admin.verifyKeySecret.invalid=Key and Secret are invalid. Response from card2brain server: {0} +admin.verifyKeySecret.unavaible=The verification was not executed correctly. +admin.verifyKeySecret.url=URL LTI Key/Secret verification +admin.verifyKeySecret.valid=Key and Secret are valid. diff --git a/src/main/java/org/olat/modules/co/ContactFormController.java b/src/main/java/org/olat/modules/co/ContactFormController.java index 18353f54cdf2d7862d44b0c3ffb87e6a1706e9a6..07b0b9dc5917f5d61c925ba82cc5581e115f89b8 100644 --- a/src/main/java/org/olat/modules/co/ContactFormController.java +++ b/src/main/java/org/olat/modules/co/ContactFormController.java @@ -40,7 +40,6 @@ import org.olat.core.gui.control.generic.modal.DialogBoxController; import org.olat.core.gui.control.generic.modal.DialogBoxUIFactory; import org.olat.core.id.Identity; import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; -import org.olat.core.util.StringHelper; import org.olat.core.util.mail.ContactList; import org.olat.core.util.mail.ContactMessage; import org.olat.core.util.mail.MailBundle; @@ -50,7 +49,6 @@ import org.olat.core.util.mail.MailHelper; import org.olat.core.util.mail.MailLoggingAction; import org.olat.core.util.mail.MailManager; import org.olat.core.util.mail.MailerResult; -import org.olat.user.UserManager; import org.springframework.beans.factory.annotation.Autowired; /** @@ -99,8 +97,6 @@ public class ContactFormController extends BasicController { @Autowired private MailManager mailService; - @Autowired - private UserManager userManager; /** * @@ -242,7 +238,7 @@ public class ContactFormController extends BasicController { ThreadLocalUserActivityLogger.log(MailLoggingAction.MAIL_SENT, getClass()); fireEvent(ureq, Event.DONE_EVENT); } else { - showError(result); + showError(ureq, result); fireEvent(ureq, Event.FAILED_EVENT); } } @@ -253,26 +249,18 @@ public class ContactFormController extends BasicController { cntctForm.setDisplayOnly(true); } - private void showError(MailerResult result) { + private void showError(UserRequest ureq, MailerResult result) { + StringBuilder errors = new StringBuilder(1024); + StringBuilder warnings = new StringBuilder(1024); + MailHelper.appendErrorsAndWarnings(result, errors, warnings, ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); + StringBuilder error = new StringBuilder(1024); error.append(translate("error.msg.send.nok")); - if(result != null && (result.getFailedIdentites().size() > 0 || result.getInvalidAddresses().size() > 0)) { - error.append("<br />"); - - StringBuilder ids = new StringBuilder(1024); - for(Identity identity:result.getFailedIdentites()) { - if(ids.length() > 0) ids.append(", "); - - String fullname = userManager.getUserDisplayName(identity); - if(StringHelper.containsNonWhitespace(fullname)) { - ids.append(fullname); - } - } - for(String invalidAddress:result.getInvalidAddresses()) { - if(ids.length() > 0) ids.append(", "); - ids.append(invalidAddress); - } - error.append(translate("error.msg.send.invalid.rcps", new String[]{ ids.toString() })); + if(errors.length() > 0) { + error.append("<br>").append(errors); + } + if(warnings.length() > 0) { + warnings.append("<br>").append(warnings); } getWindowControl().setError(error.toString()); } diff --git a/src/main/java/org/olat/modules/coach/ui/UserSearchForm.java b/src/main/java/org/olat/modules/coach/ui/UserSearchForm.java index 48ee55b99d76cd73c570cacdb8fbc84f2f42eadb..ddc051132d6f6a20292a749010ed16e2c8bb94e9 100644 --- a/src/main/java/org/olat/modules/coach/ui/UserSearchForm.java +++ b/src/main/java/org/olat/modules/coach/ui/UserSearchForm.java @@ -60,7 +60,7 @@ public class UserSearchForm extends FormBasicController { private TextElement login; private MultipleSelectionElement statusEl; private List<UserPropertyHandler> userPropertyHandlers; - private Map <String,FormItem>propFormItems; + private final Map<String,FormItem> propFormItems = new HashMap<>(); @Autowired private UserManager userManager; @@ -87,8 +87,7 @@ public class UserSearchForm extends FormBasicController { login.setVisible(adminProps); userPropertyHandlers = userManager.getUserPropertyHandlersFor(PROPS_IDENTIFIER, adminProps); - - propFormItems = new HashMap<String,FormItem>(); + for (UserPropertyHandler userPropertyHandler : userPropertyHandlers) { if (userPropertyHandler != null) { FormItem fi = userPropertyHandler.addFormItem(getLocale(), null, getClass().getCanonicalName(), false, formLayout); @@ -116,12 +115,16 @@ public class UserSearchForm extends FormBasicController { } public Map<String,String> getSearchProperties() { - Map<String, String> userPropertiesSearch = new HashMap<String, String>(); + Map<String, String> userPropertiesSearch = new HashMap<>(); for (UserPropertyHandler userPropertyHandler : userPropertyHandlers) { if (userPropertyHandler != null) { FormItem ui = propFormItems.get(userPropertyHandler.getName()); String uiValue = userPropertyHandler.getStringValue(ui); - if (StringHelper.containsNonWhitespace(uiValue) && !uiValue.equals("-")) { + if(userPropertyHandler.getName().startsWith("genericCheckboxProperty")) { + if(!"false".equals(uiValue)) { + userPropertiesSearch.put(userPropertyHandler.getName(), uiValue); + } + } else if (StringHelper.containsNonWhitespace(uiValue) && !uiValue.equals("-")) { userPropertiesSearch.put(userPropertyHandler.getName(), uiValue); } } diff --git a/src/main/java/org/olat/modules/glossary/_static/register_sample.png b/src/main/java/org/olat/modules/glossary/_static/register_sample.png deleted file mode 100644 index 8406e61a0f22d8cbf0945a8b12d233140668d9d1..0000000000000000000000000000000000000000 Binary files a/src/main/java/org/olat/modules/glossary/_static/register_sample.png and /dev/null differ diff --git a/src/main/java/org/olat/modules/portfolio/ui/AssignmentEditController.java b/src/main/java/org/olat/modules/portfolio/ui/AssignmentEditController.java index fceeadc5e3a875fbf177ff908b0827ba943024a7..d0cf22d857ec1d1cb6ef64b8781e7a841eae67da 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/AssignmentEditController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/AssignmentEditController.java @@ -352,6 +352,12 @@ public class AssignmentEditController extends FormBasicController { protected boolean validateFormLogic(UserRequest ureq) { boolean allOk = true; + titleEl.clearError(); + if(!StringHelper.containsNonWhitespace(titleEl.getValue())) { + titleEl.setErrorKey("form.legende.mandatory", null); + allOk &= false; + } + if(sectionsEl != null) { sectionsEl.clearError(); if(!sectionsEl.isOneSelected()) { diff --git a/src/main/java/org/olat/modules/portfolio/ui/MediaCenterController.java b/src/main/java/org/olat/modules/portfolio/ui/MediaCenterController.java index f718424a5ee60af89e33a6d8802050473de6cd58..010a2364a01f6605f1ecaf3d92efb27e01e731f0 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/MediaCenterController.java +++ b/src/main/java/org/olat/modules/portfolio/ui/MediaCenterController.java @@ -599,8 +599,7 @@ public class MediaCenterController extends FormBasicController detailsCtrl = new MediaDetailsController(ureq, swControl, stackPanel, media); listenTo(detailsCtrl); - String displayName = StringHelper.escapeHtml(media.getTitle()); - stackPanel.pushController(displayName, detailsCtrl); + stackPanel.pushController(media.getTitle(), detailsCtrl); return detailsCtrl; } diff --git a/src/main/java/org/olat/modules/portfolio/ui/_content/page_meta.html b/src/main/java/org/olat/modules/portfolio/ui/_content/page_meta.html index 0a2d12ff2a69d66f70350ca893776845b611cba5..8fcb16f9e30beaa2ba1dd398e8215ddd27f332f3 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/_content/page_meta.html +++ b/src/main/java/org/olat/modules/portfolio/ui/_content/page_meta.html @@ -1,25 +1,28 @@ <div class="o_page_lead #if($imageAlign == "background") o_block_imagebg" style="background-image: url('$mapperThumbnailUrl/${imageName}');" #else " #end> <h2>$r.escapeHtml($pageTitle) <small>$r.translate("binder.by",$owners)</small></h2> - <div class="o_portfolio_page_meta"> - #if($r.isNotEmpty(pageCategories)) - <span class="o_portfolio_categories text-muted o_small"> - <strong>$r.translate("meta.categories")</strong> <i class="o_icon o_icon_tags"> </i> - #foreach($category in $pageCategories) - #if(${foreach.count} > 1), #end - $category - #end - </span> - #end - + <div class="o_portfolio_page_meta"> #if($r.isNotNull($lastPublicationDate)) - <span class="o_portfolio_publication_date text-muted o_small">#if($r.isNotEmpty(pageCategories)), #end + <span class="o_portfolio_publication_date text-muted o_small"> $r.translate("meta.last.publication", $r.formatDateAndTime($lastPublicationDate)) + , </span> #end - <span class="o_portfolio_last_modified text-muted o_small">#if($r.isNotEmpty(pageCategories) || $r.isNotNull($lastPublicationDate)), #end + <span class="o_portfolio_last_modified text-muted o_small"> $r.translate("meta.last.modified", $r.formatDateAndTime($lastModified)) </span> + + #if($r.isNotEmpty($pageCategories)) + <span class="o_portfolio_categories text-muted o_small"> + <i class="o_icon o_icon_tags" title="$r.translateInAttribute("categories")"> </i> + #foreach($category in $pageCategories) + <span class="tag label label-info"> + $category + </span> + #end + </span> + #end + </div> #if($r.available("poster") || $r.isNotEmpty($pageSummary)) <div class="o_page_summary clearfix"> diff --git a/src/main/java/org/olat/modules/portfolio/ui/_content/portfolio_element_row.html b/src/main/java/org/olat/modules/portfolio/ui/_content/portfolio_element_row.html index f0ceb307ed70329c359714588eae410b45ced39e..74c604bada41082fd29c7c5f07ab565daa0bbad5 100644 --- a/src/main/java/org/olat/modules/portfolio/ui/_content/portfolio_element_row.html +++ b/src/main/java/org/olat/modules/portfolio/ui/_content/portfolio_element_row.html @@ -47,11 +47,12 @@ #if($r.isNotEmpty($row.sectionCategories)) <div class="o_portfolio_page_meta text-muted o_small"> - $r.translate("meta.section.categories") <i class="o_icon o_icon_tags"> </i> + <span class="o_portfolio_categories"> + <i class="o_icon o_icon_tags" title="$r.translateInAttribute("categories")"> </i> #foreach($category in $row.sectionCategories) - #if(${foreach.count} > 1), #end - <a class="o_pf_tag" href="javascript:${f.ffXHREvent("tag_select","$category")}">$category</a> + <a class="tag label label-info" href="javascript:${f.ffXHREvent("tag_select","$category")}">$category</a> #end + </span> </div> #end </div> @@ -125,27 +126,25 @@ <div class="o_portfolio_page_meta_wrapper"> #if($r.isNotNull($row.assignment)) <i class="o_icon o_icon_assignment o_icon-fw"> </i> <strong>$r.translate("meta.assignment", $row.assignmentTitle)</strong> - #end - #if($r.isNotEmpty($row.pageCategories)) - <span class="o_portfolio_page_meta text-muted o_small"> - #if($r.isNotNull($row.assignment)), #end - <strong>$r.translate("meta.categories")</strong> <i class="o_icon o_icon_tags"> </i> - #foreach($category in $row.pageCategories) - #if(${foreach.count} > 1), #end - <a class="o_pf_tag" href="javascript:${f.ffXHREvent("tag_select","$category")}">$category</a> - #end - </span> + #if($r.isNotNull($row.lastPublicationDate)), #end #end #if($r.isNotNull($row.lastPublicationDate)) <span class="o_portfolio_page_meta text-muted o_small"> - #if($r.isNotNull($row.assignment) || $r.isNotEmpty($row.pageCategories)), #end $r.translate("meta.last.publication", $r.formatDateAndTime($row.lastPublicationDate)) + , </span> #end <span class="o_portfolio_page_meta text-muted o_small"> - #if($r.isNotNull($row.assignment) || $r.isNotNull($row.lastPublicationDate) or $r.isNotEmpty($row.pageCategories)), #end $r.translate("meta.last.modified", $r.formatDateAndTime($row.lastModified)) </span> + #if($r.isNotEmpty($row.pageCategories)) + <span class="o_portfolio_categories text-muted o_small"> + <i class="o_icon o_icon_tags" title="$r.translateInAttribute("categories")"> </i> + #foreach($category in $row.pageCategories) + <a class="tag label label-info" href="javascript:${f.ffXHREvent("tag_select","$category")}">$category</a> + #end + </span> + #end #if($r.isNotNull(${r.row.getMetaBinderAndSectionTitles()})) <div class="o_portfolio_page_meta text-muted o_small"> $r.translate("meta.binder.section.titles", ${row.getMetaBinderAndSectionTitles()}) diff --git a/src/main/java/org/olat/modules/qpool/QuestionType.java b/src/main/java/org/olat/modules/qpool/QuestionType.java index 250fa0e394c85be22d74bb22c993a6b18521fb35..24ed4ad3b84b160b31c287391b702a0face9e377 100644 --- a/src/main/java/org/olat/modules/qpool/QuestionType.java +++ b/src/main/java/org/olat/modules/qpool/QuestionType.java @@ -37,6 +37,7 @@ public enum QuestionType { UPLOAD, DRAWING, MATCH, + MATCHDRAGANDDROP, HOTTEXT, UNKOWN diff --git a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties index e60350c0e4f4bc152a245f05f0d5cb5ea6c40ef3..74d992edd8596d840c43949be32fef15b374ee0c 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties @@ -79,6 +79,7 @@ item.type.hotspot=Hotspot item.type.hottext=Hottext item.type.kprim=KPrim item.type.match=Matrix +item.type.matchdraganddrop=Drag and Drop item.type.mc=Multiple-Choice item.type.numerical=Numerische Eingabe item.type.sc=Single-Choice diff --git a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_en.properties index ca3790e607c66d7d9cfb7384cdb205aeb0d80b82..21584441c10f70ff9e7645b30962d5a227dfb833 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_en.properties @@ -79,6 +79,7 @@ item.type.hotspot=Hotspot item.type.hottext=Hottext item.type.kprim=KPrim item.type.match=Match +item.type.matchdraganddrop=Drag and Drop item.type.mc=Multiple-Choice item.type.numerical=Numerical input item.type.sc=Single-Choice diff --git a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties index f399b33c5ab5c8f94875d7aba41dd61dacda2642..0ea5c52bd40ce19d07dc6c995a5a206fcedbd8ac 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Fri Apr 28 11:01:21 CEST 2017 +#Thu Jun 08 20:30:16 CEST 2017 add=+ add.to.list=Ajouter \u00E0 la liste applications=Utilisations @@ -79,6 +79,7 @@ item.type.hotspot=Hotspot item.type.hottext=Hottext item.type.kprim=KPrim item.type.match=Match +item.type.matchdraganddrop=Drag and Drop item.type.mc=Choix multiple item.type.numerical=Entr\u00E9e num\u00E9rique item.type.sc=Choix unique diff --git a/src/main/java/org/olat/modules/video/VideoManager.java b/src/main/java/org/olat/modules/video/VideoManager.java index 1dd9cf67315221ce2fcaccad31fabc39e40e87f7..70b8124218b89b76c0c2f51b83603291fb6e9f11 100644 --- a/src/main/java/org/olat/modules/video/VideoManager.java +++ b/src/main/java/org/olat/modules/video/VideoManager.java @@ -335,7 +335,7 @@ public interface VideoManager { * @param chapters the chapters * @param olatResource the video resource */ - public abstract void loadChapters(List<VideoChapterTableRow> chapters, OLATResource olatResource); + public abstract List<VideoChapterTableRow> loadChapters(OLATResource olatResource); /** * Save chapters. diff --git a/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java b/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java index f1eef0261850380e38a3913239955299edb8a1d5..57cc11737d5d1ba84c0515a6bd1000f585f685d2 100644 --- a/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java +++ b/src/main/java/org/olat/modules/video/manager/VideoManagerImpl.java @@ -33,6 +33,7 @@ import java.math.RoundingMode; import java.nio.channels.FileChannel; import java.text.DecimalFormat; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -859,8 +860,8 @@ public class VideoManagerImpl implements VideoManager { * @param List<VideoChapterTableRow> chapters the chapters * @param OLATResource videoResource the video resource */ - public void loadChapters(List<VideoChapterTableRow> chapters, OLATResource videoResource) { - chapters.clear(); + public List<VideoChapterTableRow> loadChapters(OLATResource videoResource) { + List<VideoChapterTableRow> chapters = new ArrayList<>(); displayDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); vttDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); @@ -896,6 +897,7 @@ public class VideoManagerImpl implements VideoManager { log.error("Unable to load WEBVTT File for resource::" + videoResource,e); } } + return chapters; } @Override diff --git a/src/main/java/org/olat/modules/video/ui/ChapterEditController.java b/src/main/java/org/olat/modules/video/ui/ChapterEditController.java index e9a0f5e56bae4fd9987b8a30163cad538eb4df3b..6b960a8bf8d6f62985d1d4bd1b6bfe6d6477d322 100644 --- a/src/main/java/org/olat/modules/video/ui/ChapterEditController.java +++ b/src/main/java/org/olat/modules/video/ui/ChapterEditController.java @@ -33,8 +33,6 @@ import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; -import org.olat.core.logging.OLog; -import org.olat.core.logging.Tracing; /** * The Class ChapterEditController. @@ -44,8 +42,6 @@ import org.olat.core.logging.Tracing; */ public class ChapterEditController extends FormBasicController { - private static final OLog log = Tracing.createLoggerFor(ChapterEditController.class); - private String time; private String chapter; private boolean chapterExists; @@ -100,8 +96,8 @@ public class ChapterEditController extends FormBasicController { FormLayoutContainer buttonGroupLayout = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); formLayout.add(buttonGroupLayout); - uifactory.addFormSubmitButton("submit", "video.chapter." + (chapterExists ? "edit" : "add"), buttonGroupLayout); uifactory.addFormCancelButton("cancel", buttonGroupLayout, ureq, getWindowControl()); + uifactory.addFormSubmitButton("submit", "video.chapter." + (chapterExists ? "edit" : "add"), buttonGroupLayout); } /** @@ -164,7 +160,7 @@ public class ChapterEditController extends FormBasicController { } else if (timeAlreadyExists()) { beginEl.setErrorKey("chapter.error.already.exists", null); } else { - this.fireEvent(ureq, Event.DONE_EVENT); + fireEvent(ureq, Event.DONE_EVENT); } } @@ -190,22 +186,16 @@ public class ChapterEditController extends FormBasicController { */ private boolean setTextElementValuesAndCheckFormat (){ boolean incorrectTimeFormat = false; - String time = beginEl.getValue(); + String beginTime = beginEl.getValue(); String chapterTitle = chapterTitleEl.getValue(); try { - videoChapterTableRow.setBegin(displayDateFormat.parse(time)); + videoChapterTableRow.setBegin(displayDateFormat.parse(beginTime)); videoChapterTableRow.setChapterName(chapterTitle); - videoChapterTableRow.setIntervals(time); + videoChapterTableRow.setIntervals(beginTime); } catch (ParseException e) { - log.error("The content of the TextElement cannot be parsed as a Date", e); + logError("The content of the TextElement cannot be parsed as a Date", e); incorrectTimeFormat = true; } return incorrectTimeFormat; } - - - - - - -} +} \ No newline at end of file diff --git a/src/main/java/org/olat/modules/video/ui/VideoAdminErrorController.java b/src/main/java/org/olat/modules/video/ui/VideoAdminErrorController.java index d0f69e2ea26a08b712b5ac318a76b92bf895a45f..720981ca28e01c6cd7ea35033a9de9c8e3baac4a 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoAdminErrorController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoAdminErrorController.java @@ -67,7 +67,6 @@ public class VideoAdminErrorController extends FormBasicController { private TranscodingQueueTableModel tableModel; private FlexiTableElement tableEl; - private FormItemContainer formLayout; private FormLink refreshButton; private CloseableModalController closeableModalController; private HomePageDisplayController homePageDisplayController; @@ -107,11 +106,9 @@ public class VideoAdminErrorController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - this.formLayout = formLayout; setFormTitle("number.transcodings"); setFormDescription("number.transcodings"); setFormContextHelp("Portfolio template: Administration and editing#configuration"); - initTable(); } @@ -162,18 +159,18 @@ public class VideoAdminErrorController extends FormBasicController { } tableModel.setObjects(rows); - if (formLayout.hasFormComponent(tableEl)){ - formLayout.remove(tableEl); + if (flc.hasFormComponent(tableEl)){ + flc.remove(tableEl); } - if (formLayout.hasFormComponent(refreshButton)){ - formLayout.remove(refreshButton); + if (flc.hasFormComponent(refreshButton)){ + flc.remove(refreshButton); } - tableEl = uifactory.addTableElement(getWindowControl(), "queue", tableModel, getTranslator(), formLayout); + tableEl = uifactory.addTableElement(getWindowControl(), "queue", tableModel, getTranslator(), flc); tableEl.setCustomizeColumns(false); tableEl.setNumOfRowsEnabled(false); - refreshButton = uifactory.addFormLink("button.refresh", formLayout,Link.BUTTON); + refreshButton = uifactory.addFormLink("button.refresh", flc, Link.BUTTON); refreshButton.setIconLeftCSS("o_icon o_icon_refresh o_icon-fw"); } diff --git a/src/main/java/org/olat/modules/video/ui/VideoAdminListController.java b/src/main/java/org/olat/modules/video/ui/VideoAdminListController.java index 2de3edb35ede911ca2b1e9ee589b9245a443d289..fb65db0f6bfbddb089d36931d1e532f6d24ab029 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoAdminListController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoAdminListController.java @@ -68,7 +68,6 @@ public class VideoAdminListController extends FormBasicController { private TranscodingQueueTableModel tableModel; private FlexiTableElement tableEl; - private FormItemContainer formLayout; private FormLink refreshButton; private CloseableModalController closeableModalController; private HomePageDisplayController homePageDisplayController; @@ -106,7 +105,6 @@ public class VideoAdminListController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - this.formLayout = formLayout; setFormTitle("number.transcodings"); setFormDescription("number.transcodings"); setFormContextHelp("Portfolio template: Administration and editing#configuration"); @@ -148,18 +146,18 @@ public class VideoAdminListController extends FormBasicController { } tableModel.setObjects(rows); - if (formLayout.hasFormComponent(tableEl)){ - formLayout.remove(tableEl); + if (flc.hasFormComponent(tableEl)){ + flc.remove(tableEl); } - if (formLayout.hasFormComponent(refreshButton)){ - formLayout.remove(refreshButton); + if (flc.hasFormComponent(refreshButton)){ + flc.remove(refreshButton); } - tableEl = uifactory.addTableElement(getWindowControl(), "queue", tableModel, getTranslator(), formLayout); + tableEl = uifactory.addTableElement(getWindowControl(), "queue", tableModel, getTranslator(), flc); tableEl.setCustomizeColumns(false); tableEl.setNumOfRowsEnabled(false); - refreshButton = uifactory.addFormLink("button.refresh", formLayout,Link.BUTTON); + refreshButton = uifactory.addFormLink("button.refresh", flc, Link.BUTTON); refreshButton.setIconLeftCSS("o_icon o_icon_refresh o_icon-fw"); } diff --git a/src/main/java/org/olat/modules/video/ui/VideoAdminTranscodingController.java b/src/main/java/org/olat/modules/video/ui/VideoAdminTranscodingController.java index 01bcb59318095f071e22045be45727a862594f74..5f9a698500b08a785c41e900c5c050a072dd1796 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoAdminTranscodingController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoAdminTranscodingController.java @@ -163,7 +163,7 @@ public class VideoAdminTranscodingController extends FormBasicController { if(source == transcodingTable) { if(event instanceof SelectionEvent) { SelectionEvent se = (SelectionEvent)event; - TranscodingRow currentObject = (TranscodingRow) tableModel.getObject(se.getIndex()); + TranscodingRow currentObject = tableModel.getObject(se.getIndex()); if ("quality.delete".equals(se.getCommand())){ queueDeleteTranscoding(currentObject); showInfo("delete.transcodings"); diff --git a/src/main/java/org/olat/modules/video/ui/VideoChapterEditController.java b/src/main/java/org/olat/modules/video/ui/VideoChapterEditController.java index 4e2a733e588383ae19cb8f18f1e2113756bb2ce7..2895768360fc426a3a5fa1b8607dff42a3d648fd 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoChapterEditController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoChapterEditController.java @@ -20,7 +20,6 @@ package org.olat.modules.video.ui; import java.text.SimpleDateFormat; -import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; @@ -28,7 +27,6 @@ import java.util.List; import java.util.TimeZone; import org.olat.core.gui.UserRequest; -import org.olat.core.gui.components.Component; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.FlexiTableElement; @@ -41,7 +39,6 @@ import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTable import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModelFactory; import org.olat.core.gui.components.form.flexible.impl.elements.table.SelectionEvent; import org.olat.core.gui.components.link.Link; -import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; @@ -61,14 +58,13 @@ import org.springframework.beans.factory.annotation.Autowired; public class VideoChapterEditController extends FormBasicController { private RepositoryEntry entry; - private VelocityContainer mainVC; private VideoChapterTableModel tableModel; private VideoDisplayController videoDisplayCtr; private FlexiTableElement chapterTable; private static final SimpleDateFormat displayDateFormat = new SimpleDateFormat("HH:mm:ss"); - private List<VideoChapterTableRow> chapters; + private final List<VideoChapterTableRow> chapters; @Autowired private VideoManager videoManager; @@ -83,25 +79,27 @@ public class VideoChapterEditController extends FormBasicController { public VideoChapterEditController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry) { super(ureq, wControl, "video_chapter"); displayDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); - chapters = new ArrayList<>(); this.entry = entry; + chapters = videoManager.loadChapters(entry.getOlatResource()); initForm(ureq); - videoManager.loadChapters(chapters, entry.getOlatResource()); loadTableModel(); } @Override protected void doDispose() { - + // } - @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - + //video preview videoDisplayCtr = new VideoDisplayController(ureq, getWindowControl(), entry, false, false, false, false, null, false, false, null, false); listenTo(videoDisplayCtr); - videoDisplayCtr.reloadVideo(ureq); + videoDisplayCtr.reloadVideo(ureq, null); + if(formLayout instanceof FormLayoutContainer) { + FormLayoutContainer layoutCont = (FormLayoutContainer)formLayout; + layoutCont.getFormItemComponent().put("video", videoDisplayCtr.getInitialComponent()); + } FlexiTableColumnModel chapterTableModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); chapterTableModel.addFlexiColumnModel(new DefaultFlexiColumnModel(ChapterTableCols.chapterName)); @@ -117,9 +115,6 @@ public class VideoChapterEditController extends FormBasicController { FormLayoutContainer buttonGroupLayout = FormLayoutContainer.createButtonLayout("buttons", getTranslator()); formLayout.add(buttonGroupLayout); addChapterEl = uifactory.addFormLink("video.chapter.add", buttonGroupLayout, Link.BUTTON); - - mainVC = ((FormLayoutContainer) formLayout).getFormItemComponent(); - mainVC.put("video", videoDisplayCtr.getInitialComponent()); } private void loadTableModel() { @@ -127,24 +122,23 @@ public class VideoChapterEditController extends FormBasicController { chapterTable.reset(true, true, true); } - private void doDelete (UserRequest ureq, Object toRemove) { + private void doDelete(UserRequest ureq, VideoChapterTableRow toRemove) { if (chapters != null){ chapters.remove(toRemove); organizeChapters(); tableModel.setObjects(chapters); } chapterTable.reset(true, true, true); - saveChapters(ureq); + saveChapters(ureq, toRemove.getBegin()); } @Override public void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { - if(source == chapterTable) { if(event instanceof SelectionEvent) { SelectionEvent se = (SelectionEvent)event; se.getIndex(); - Object currentObject = tableModel.getObject(se.getIndex()); + VideoChapterTableRow currentObject = tableModel.getObject(se.getIndex()); if ("delete".equals(se.getCommand())){ doDelete(ureq, currentObject); } else if ("edit".equals(se.getCommand())){ @@ -152,7 +146,6 @@ public class VideoChapterEditController extends FormBasicController { doOpenCallout(ureq, vctr, true); } } - } else if (addChapterEl == source) { long currentLong = currentTimeCode != null ? (long) Float.parseFloat(currentTimeCode) * 1000 : 0; Date currentDate = new Date(currentLong); @@ -160,14 +153,12 @@ public class VideoChapterEditController extends FormBasicController { displayDateFormat.format(currentDate), currentDate, currentDate); doOpenCallout(ureq, vctr, false); } - } - + @Override - public void event(UserRequest ureq, Component source, Event event) { - super.event(ureq, source, event); + protected void propagateDirtinessToContainer(FormItem fiSrc, FormEvent event) { + //avoid reload of html template, to prevent videoreload } - @Override public void event(UserRequest ureq, Controller source, Event event) { @@ -181,17 +172,16 @@ public class VideoChapterEditController extends FormBasicController { } else if (source == chapterEditCtr){ if (event == Event.DONE_EVENT) { doAddOrUpdateChapter(ureq, chapterEditCtr.getVideoChapterTableRow()); - videoDisplayCtr.reloadVideo(ureq); } cmc.deactivate(); - cleanUpCMC(); + cleanUp(); } else if (source == cmc) { - cleanUpCMC(); + cleanUp(); } super.event(ureq, source, event); } - private void cleanUpCMC(){ + private void cleanUp(){ removeAsListenerAndDispose(cmc); removeAsListenerAndDispose(chapterEditCtr); cmc = null; @@ -203,13 +193,15 @@ public class VideoChapterEditController extends FormBasicController { // only formInnerEvent() } - private void saveChapters(UserRequest ureq) { + private void saveChapters(UserRequest ureq, Date time) { videoManager.saveChapters(chapters, entry.getOlatResource()); - videoDisplayCtr.reloadVideo(ureq); - }; - + + long timeInSeconds = time.getTime() / 1000l; + videoDisplayCtr.reloadVideo(ureq, timeInSeconds); + } private void doOpenCallout(UserRequest ureq, VideoChapterTableRow videoChapterTableRow, boolean chapterExists) { + if(chapterEditCtr != null) return; chapterEditCtr = new ChapterEditController(ureq, getWindowControl(), videoChapterTableRow, chapterExists, chapters, duration); @@ -218,15 +210,9 @@ public class VideoChapterEditController extends FormBasicController { cmc = new CloseableModalController(getWindowControl(), translate("close"), chapterEditCtr.getInitialComponent(), true, translate("video.chapter." + (chapterExists ? "edit" : "new"))); listenTo(cmc); - cmc.activate(); } - @Override - protected void propagateDirtinessToContainer(FormItem fiSrc, FormEvent event) { - //avoid reload of html template, to prevent videoreload - } - private void doAddOrUpdateChapter(UserRequest ureq, VideoChapterTableRow row){ //only add if object does not yet exist if (!chapters.contains(row)){ @@ -241,7 +227,8 @@ public class VideoChapterEditController extends FormBasicController { }); organizeChapters(); loadTableModel(); - saveChapters(ureq); + saveChapters(ureq, row.getBegin()); + addToHistory(ureq, this); } private void organizeChapters () { @@ -265,5 +252,4 @@ public class VideoChapterEditController extends FormBasicController { } } } - -} +} \ No newline at end of file diff --git a/src/main/java/org/olat/modules/video/ui/VideoDisplayController.java b/src/main/java/org/olat/modules/video/ui/VideoDisplayController.java index 0025401847d66dacc837b11271da1e128c996b4a..576165b9ca5b5a16286b8e49e2a56930a6b9e4b9 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoDisplayController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoDisplayController.java @@ -29,6 +29,7 @@ import org.olat.core.commons.services.commentAndRating.CommentAndRatingSecurityC import org.olat.core.commons.services.commentAndRating.ReadOnlyCommentsSecurityCallback; import org.olat.core.commons.services.commentAndRating.ui.UserCommentsAndRatingsController; import org.olat.core.commons.services.image.Size; +import org.olat.core.dispatcher.impl.StaticMediaDispatcher; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.htmlheader.jscss.JSAndCSSComponent; @@ -36,8 +37,7 @@ import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; -import org.olat.core.gui.render.Renderer; -import org.olat.core.gui.render.StringOutput; +import org.olat.core.helpers.Settings; import org.olat.core.util.CodeHelper; import org.olat.core.util.Formatter; import org.olat.core.util.StringHelper; @@ -76,7 +76,6 @@ public class VideoDisplayController extends BasicController { // User preferred resolution, stored in GUI prefs private Integer userPreferredResolution = null; - private final boolean readOnly; private RepositoryEntry entry; private String descriptionText; private String mediaRepoBaseUrl; @@ -95,7 +94,6 @@ public class VideoDisplayController extends BasicController { boolean customDescription, boolean autoWidth, String descriptionText, boolean readOnly) { super(ureq, wControl); this.entry = entry; - this.readOnly = readOnly; this.descriptionText = (customDescription ? this.descriptionText = descriptionText : null); mainVC = createVelocityContainer("video_run"); @@ -106,14 +104,7 @@ public class VideoDisplayController extends BasicController { if(mediaContainer != null) { mediaRepoBaseUrl = registerMapper(ureq, new VFSContainerMapper(mediaContainer.getParentContainer())); } - - // load mediaelementjs player and sourcechooser plugin - StringOutput sb = new StringOutput(50); - Renderer.renderStaticURI(sb, "movie/mediaelementjs/mediaelementplayer.min.css"); - String[] cssPath = new String[] {sb.toString()}; - String[] jsCodePath= new String[] { "movie/mediaelementjs/mediaelement-and-player.min.js", "movie/mediaelementjs/features/oo-mep-feature-sourcechooser.js" }; - JSAndCSSComponent mediaelementjs = new JSAndCSSComponent("mediaelementjs", jsCodePath ,cssPath); - mainVC.put("mediaelementjs", mediaelementjs); + initMediaElementJs(); VFSLeaf video = videoManager.getMasterVideoFile(entry.getOlatResource()); if(video != null) { @@ -153,17 +144,54 @@ public class VideoDisplayController extends BasicController { loadVideo(ureq, video); } } + + private void initMediaElementJs() { + // load mediaelementjs player, speed and sourcechooser pluginss + String[] cssPath; + String[] jsCodePath; + if(Settings.isDebuging()) { + cssPath = new String[] { + StaticMediaDispatcher.getStaticURI("movie/mediaelementjs/features/source-chooser/source-chooser.css"), + StaticMediaDispatcher.getStaticURI("movie/mediaelementjs/features/speed/speed.css"), + StaticMediaDispatcher.getStaticURI("movie/mediaelementjs/mediaelementplayer.css") + }; + jsCodePath = new String[] { + "movie/mediaelementjs/mediaelement-and-player.js", + "movie/mediaelementjs/features/source-chooser/source-chooser.js", + "movie/mediaelementjs/features/speed/speed.js" + }; + } else { + cssPath = new String[] { + StaticMediaDispatcher.getStaticURI("movie/mediaelementjs/features/source-chooser/source-chooser.css"), + StaticMediaDispatcher.getStaticURI("movie/mediaelementjs/features/speed/speed.css"), + StaticMediaDispatcher.getStaticURI("movie/mediaelementjs/mediaelementplayer.min.css") + }; + jsCodePath = new String[] { + "movie/mediaelementjs/mediaelement-and-player.min.js", + "movie/mediaelementjs/features/source-chooser/source-chooser.min.js", + "movie/mediaelementjs/features/speed/speed.min.js" + }; + } + + JSAndCSSComponent mediaelementjs = new JSAndCSSComponent("mediaelementjs", jsCodePath ,cssPath); + mainVC.put("mediaelementjs", mediaelementjs); + } /** * Reload the video, e.g. when new captions or transcoded versions are available * @param ureq + * @param currentTime The start time in seconds (optional) */ - protected void reloadVideo(UserRequest ureq) { + protected void reloadVideo(UserRequest ureq, Long currentTime) { //load video as VFSLeaf VFSLeaf video = videoManager.getMasterVideoFile(entry.getOlatResource()); loadVideo(ureq, video); mainVC.contextPut("addForceReload", "?t=" + CodeHelper.getRAMUniqueID()); + if(currentTime != null) { + System.out.println("current"); + mainVC.contextPut("currentTimeAt", currentTime.toString()); + } } /** diff --git a/src/main/java/org/olat/modules/video/ui/VideoQualityTableFormController.java b/src/main/java/org/olat/modules/video/ui/VideoQualityTableFormController.java index fcfd220e18fc2aa2caa5e566eadd3d3b753b723c..6c7f50e9594455775c058ba5db014fb5bbb80e93 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoQualityTableFormController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoQualityTableFormController.java @@ -66,7 +66,6 @@ public class VideoQualityTableFormController extends FormBasicController { private CloseableModalController cmc; private VelocityContainer previewVC; private OLATResource videoResource; - private FormItemContainer formLayout; private FormLink refreshbtn; private int count = 0; @@ -86,8 +85,6 @@ public class VideoQualityTableFormController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - this.formLayout = formLayout; - FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(QualityTableCols.resolution)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel(QualityTableCols.dimension)); @@ -97,8 +94,7 @@ public class VideoQualityTableFormController extends FormBasicController { tableModel = new VideoQualityTableModel(columnsModel, getTranslator()); - initTable(); - + initTable(); } private void initTable(){ @@ -161,21 +157,19 @@ public class VideoQualityTableFormController extends FormBasicController { rows.sort(new VideoComparator()); tableModel.setObjects(rows); - if (formLayout.hasFormComponent(tableEl)){ - formLayout.remove(tableEl); + if (flc.hasFormComponent(tableEl)){ + flc.remove(tableEl); } - if (formLayout.hasFormComponent(refreshbtn)){ - formLayout.remove(refreshbtn); + if (flc.hasFormComponent(refreshbtn)){ + flc.remove(refreshbtn); } - tableEl = uifactory.addTableElement(getWindowControl(), "qualityTable", tableModel, getTranslator(), formLayout); + tableEl = uifactory.addTableElement(getWindowControl(), "qualityTable", tableModel, getTranslator(), flc); tableEl.setCustomizeColumns(false); tableEl.setNumOfRowsEnabled(false); - - refreshbtn = uifactory.addFormLink("button.refresh", formLayout, Link.BUTTON); + refreshbtn = uifactory.addFormLink("button.refresh", flc, Link.BUTTON); refreshbtn.setIconLeftCSS("o_icon o_icon_refresh o_icon-fw"); - } @Override diff --git a/src/main/java/org/olat/modules/video/ui/VideoRuntimeController.java b/src/main/java/org/olat/modules/video/ui/VideoRuntimeController.java index 6924794bb8780d4151ce00cd42f2b1c4a2dd7810..7c274b5d5c11e42c0e6217507d7447ec3bed32eb 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoRuntimeController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoRuntimeController.java @@ -19,6 +19,8 @@ */ package org.olat.modules.video.ui; +import java.util.List; + import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.dropdown.Dropdown; @@ -29,6 +31,11 @@ import org.olat.core.gui.components.stack.PopEvent; import org.olat.core.gui.components.stack.RootEvent; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.control.generic.dtabs.Activateable2; +import org.olat.core.id.OLATResourceable; +import org.olat.core.id.context.ContextEntry; +import org.olat.core.id.context.StateEntry; +import org.olat.core.util.resource.OresHelper; import org.olat.repository.RepositoryEntry; import org.olat.repository.model.RepositoryEntrySecurity; import org.olat.repository.ui.RepositoryEntryRuntimeController; @@ -70,17 +77,30 @@ public class VideoRuntimeController extends RepositoryEntryRuntimeController { } } + @Override + public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { + entries = removeRepositoryEntry(entries); + if(entries != null && entries.size() > 0) { + String type = entries.get(0).getOLATResourceable().getResourceableTypeName(); + if("settings".equalsIgnoreCase(type)) { + entries = entries.subList(1, entries.size()); + doSettings(ureq).activate(ureq, entries, null); + } + } + super.activate(ureq, entries, state); + } + @Override protected void event(UserRequest ureq, Component source, Event event) { if(settingsLink == source){ - doSettingsconfig(ureq); + doSettings(ureq); } else if (source == changeVideoLink) { doReplaceVideo(ureq); } else { if (event instanceof RootEvent || event instanceof PopEvent) { // reload the video, maybe some new transcoded files available VideoDisplayController videoDisplayCtr = (VideoDisplayController)getRuntimeController(); - videoDisplayCtr.reloadVideo(ureq); + videoDisplayCtr.reloadVideo(ureq, null); } // maybe something else needs to be done super.event(ureq, source, event); @@ -95,15 +115,17 @@ public class VideoRuntimeController extends RepositoryEntryRuntimeController { setActiveTool(changeVideoLink); } - private void doSettingsconfig(UserRequest ureq) { - if (settingsCtr != null) { - removeAsListenerAndDispose(settingsCtr); - } + private Activateable2 doSettings(UserRequest ureq) { + removeAsListenerAndDispose(settingsCtr); + RepositoryEntry entry = getRepositoryEntry(); - VideoSettingsController configCtrl = new VideoSettingsController(ureq, getWindowControl(), entry); + OLATResourceable ores = OresHelper.createOLATResourceableType("settings"); + WindowControl swControl = addToHistory(ureq, ores, null); + VideoSettingsController configCtrl = new VideoSettingsController(ureq, swControl, entry); listenTo(configCtrl); settingsCtr = pushController(ureq, translate("tab.video.settings"), configCtrl); setActiveTool(settingsLink); + return settingsCtr; } private void doRefreshVideoPosterIfEntryAdmin() { @@ -112,5 +134,4 @@ public class VideoRuntimeController extends RepositoryEntryRuntimeController { videoDisplayCtr.reloadVideoPoster(); } } - } \ No newline at end of file diff --git a/src/main/java/org/olat/modules/video/ui/VideoSettingsController.java b/src/main/java/org/olat/modules/video/ui/VideoSettingsController.java index 9d79066dec741c444e8f83b0be09fdece775b454..178743c0a3758517d8973d9cd27b5817af4e252c 100644 --- a/src/main/java/org/olat/modules/video/ui/VideoSettingsController.java +++ b/src/main/java/org/olat/modules/video/ui/VideoSettingsController.java @@ -19,6 +19,8 @@ */ package org.olat.modules.video.ui; +import java.util.List; + import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.link.Link; @@ -30,6 +32,11 @@ import org.olat.core.gui.components.velocity.VelocityContainer; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.control.controller.BasicController; +import org.olat.core.gui.control.generic.dtabs.Activateable2; +import org.olat.core.id.OLATResourceable; +import org.olat.core.id.context.ContextEntry; +import org.olat.core.id.context.StateEntry; +import org.olat.core.util.resource.OresHelper; import org.olat.repository.RepositoryEntry; /** @@ -37,7 +44,7 @@ import org.olat.repository.RepositoryEntry; * @author dfurrer, dirk.furrer@frentix.com, http://www.frentix.com * */ -public class VideoSettingsController extends BasicController { +public class VideoSettingsController extends BasicController implements Activateable2 { private RepositoryEntry entry; @@ -52,8 +59,6 @@ public class VideoSettingsController extends BasicController { private final VelocityContainer mainVC; private final SegmentViewComponent segmentView; - - public VideoSettingsController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry ) { super(ureq, wControl); @@ -74,9 +79,35 @@ public class VideoSettingsController extends BasicController { //segmentView.addSegment(qualityConfig, false); doOpenMetaDataConfig(ureq); - putInitialPanel(mainVC); + } + + @Override + protected void doDispose() { + // + } + @Override + public void activate(UserRequest ureq, List<ContextEntry> entries, StateEntry state) { + if(entries == null || entries.isEmpty()) return; + + String type = entries.get(0).getOLATResourceable().getResourceableTypeName(); + if("metadata".equalsIgnoreCase(type)) { + doOpenMetaDataConfig(ureq); + segmentView.select(metaDataLink); + } else if("poster".equalsIgnoreCase(type)) { + doOpenPosterConfig(ureq); + segmentView.select(posterEditLink); + } else if("tracks".equalsIgnoreCase(type)) { + doOpenTrackConfig(ureq); + segmentView.select(trackEditLink); + } else if("quality".equalsIgnoreCase(type)) { + doOpenQualityConfig(ureq); + segmentView.select(qualityConfig); + } else if("chapters".equalsIgnoreCase(type)) { + doOpenChapterConfig(ureq); + segmentView.select(chapterEditLink); + } } @Override @@ -101,51 +132,61 @@ public class VideoSettingsController extends BasicController { } } - @Override - protected void doDispose() { - // TODO Auto-generated method stub - - } - private void doOpenMetaDataConfig(UserRequest ureq) { if(metaDataController == null) { - metaDataController = new VideoMetaDataEditFormController(ureq, getWindowControl(), entry); + OLATResourceable ores = OresHelper.createOLATResourceableType("metadata"); + WindowControl swControl = addToHistory(ureq, ores, null); + metaDataController = new VideoMetaDataEditFormController(ureq, swControl, entry); listenTo(metaDataController); + } else { + addToHistory(ureq, metaDataController); } mainVC.put("segmentCmp", metaDataController.getInitialComponent()); } private void doOpenPosterConfig(UserRequest ureq) { if(posterEditController == null) { - posterEditController = new VideoPosterEditController(ureq, getWindowControl(), entry.getOlatResource()); + OLATResourceable ores = OresHelper.createOLATResourceableType("poster"); + WindowControl swControl = addToHistory(ureq, ores, null); + posterEditController = new VideoPosterEditController(ureq, swControl, entry.getOlatResource()); listenTo(posterEditController); + } else { + addToHistory(ureq, posterEditController); } mainVC.put("segmentCmp", posterEditController.getInitialComponent()); } private void doOpenTrackConfig(UserRequest ureq) { if(trackEditController == null) { - trackEditController = new VideoTrackEditController(ureq, getWindowControl(), entry.getOlatResource()); + OLATResourceable ores = OresHelper.createOLATResourceableType("tracks"); + WindowControl swControl = addToHistory(ureq, ores, null); + trackEditController = new VideoTrackEditController(ureq, swControl, entry.getOlatResource()); listenTo(trackEditController); + } else { + addToHistory(ureq, trackEditController); } mainVC.put("segmentCmp", trackEditController.getInitialComponent()); } private void doOpenQualityConfig(UserRequest ureq) { - if(qualityEditController != null) { - removeAsListenerAndDispose(qualityEditController); - } - qualityEditController = new VideoQualityTableFormController(ureq, getWindowControl(), entry); + removeAsListenerAndDispose(qualityEditController); + + OLATResourceable ores = OresHelper.createOLATResourceableType("quality"); + WindowControl swControl = addToHistory(ureq, ores, null); + qualityEditController = new VideoQualityTableFormController(ureq, swControl, entry); listenTo(qualityEditController); mainVC.put("segmentCmp", qualityEditController.getInitialComponent()); } private void doOpenChapterConfig(UserRequest ureq){ if (chapterEditController == null){ - chapterEditController = new VideoChapterEditController(ureq, getWindowControl(), entry); + OLATResourceable ores = OresHelper.createOLATResourceableType("chapters"); + WindowControl swControl = addToHistory(ureq, ores, null); + chapterEditController = new VideoChapterEditController(ureq, swControl, entry); listenTo(chapterEditController); + } else { + addToHistory(ureq, chapterEditController); } mainVC.put("segmentCmp", chapterEditController.getInitialComponent()); } - -} +} \ No newline at end of file diff --git a/src/main/java/org/olat/modules/video/ui/_content/video_preview.html b/src/main/java/org/olat/modules/video/ui/_content/video_preview.html index b8877c63640d06e506947ca28e62ea27f68dff1f..81f73bfb20f84df355fe947237378dcd93a2a7e6 100644 --- a/src/main/java/org/olat/modules/video/ui/_content/video_preview.html +++ b/src/main/java/org/olat/modules/video/ui/_content/video_preview.html @@ -4,7 +4,7 @@ <source type="video/mp4" src="$mediaUrl/$filename" /> </video> - <script defer="defer" type="text/javascript"> + <script type="text/javascript"> // <![CDATA[ ## using jQuery var mediaElementBaseUrl = BPlayer._mediaElementBaseUrl(); diff --git a/src/main/java/org/olat/modules/video/ui/_content/video_run.html b/src/main/java/org/olat/modules/video/ui/_content/video_run.html index 80c5ddf9402fcb65bb2ffd04c3e1aa693ed27630..911a97f515d7f1a925bbe47ed5949e5c3ca52304 100644 --- a/src/main/java/org/olat/modules/video/ui/_content/video_run.html +++ b/src/main/java/org/olat/modules/video/ui/_content/video_run.html @@ -17,12 +17,12 @@ #end #if($hasChapters) - <track kind="chapters" src="$masterUrl/chapters.vtt$!addForceReload" /> + <track kind="chapters" src="$masterUrl/chapters.vtt$!addForceReload" srclang="en" /> #end </video> - <script defer="defer" type="text/javascript"> + <script type="text/javascript"> // <![CDATA[ ## using jQuery var mediaElementBaseUrl = BPlayer._mediaElementBaseUrl(); @@ -32,16 +32,14 @@ ## Configuration for flash fallback ## Set mode:'shim' to force flash usage pluginPath: mediaElementBaseUrl, - flashName: 'flashmediaelement.swf', - silverlightName: 'silverlightmediaelement.xap', - plugins: ['flash','silverlight'], + stretching: 'responsive', ## Enabled features - should be same order as in player.js. ## Special here is tracks and sourcechooser which are not available in player.js features: ['playpause','current','volume','progress','duration','tracks' #if($useSourceChooser),'sourcechooser'#end ,'speed','fullscreen'], ## Callback to communicate with the server - success: function (mediaElement, domObject) { + success: function (mediaElement, domObject, player) { ## listen to play events, fired when movie is finished mediaElement.addEventListener('play', function(e) { @@ -71,7 +69,15 @@ ## ## Preselect the preferred source #if($useSourceChooser) - jQuery(jQuery('.mejs-sourcechooser-selector input')[$preferredResolution]).prop("checked", true).trigger("click"); + jQuery(jQuery('.mejs__source-chooser-selector input')[$preferredResolution]).prop("checked", true).trigger("click"); + #end + + #if($r.isNotNull($currentTimeAt)) + player.play(); + mediaElement.addEventListener('loadedmetadata', function(e) { + player.setCurrentTime(${currentTimeAt}); + player.pause(); + }, false); #end } }); diff --git a/src/main/java/org/olat/modules/webFeed/FeedPreviewSecurityCallback.java b/src/main/java/org/olat/modules/webFeed/FeedPreviewSecurityCallback.java index dedca12c423140242c7622e593b6d702edcea5b0..356b5fb7070a6f23fb5d5ecbc502744a49034a1d 100644 --- a/src/main/java/org/olat/modules/webFeed/FeedPreviewSecurityCallback.java +++ b/src/main/java/org/olat/modules/webFeed/FeedPreviewSecurityCallback.java @@ -19,6 +19,8 @@ */ package org.olat.modules.webFeed; +import org.olat.core.commons.services.notifications.SubscriptionContext; + /** * The feed preview security callback. Only reading permitted. * @@ -79,4 +81,14 @@ public class FeedPreviewSecurityCallback implements FeedSecurityCallback { public boolean mayViewAllDrafts() { return false; } + + @Override + public SubscriptionContext getSubscriptionContext() { + return null; + } + + @Override + public void setSubscriptionContext(SubscriptionContext subsContext) { + // + } } diff --git a/src/main/java/org/olat/modules/webFeed/FeedReadOnlySecurityCallback.java b/src/main/java/org/olat/modules/webFeed/FeedReadOnlySecurityCallback.java index dcdae063a6aa3c3697f6cad1f939cd3adc5fd2ca..cd7e5a079ecfd9587dba5d334747381a2ae54060 100644 --- a/src/main/java/org/olat/modules/webFeed/FeedReadOnlySecurityCallback.java +++ b/src/main/java/org/olat/modules/webFeed/FeedReadOnlySecurityCallback.java @@ -19,6 +19,8 @@ */ package org.olat.modules.webFeed; +import org.olat.core.commons.services.notifications.SubscriptionContext; + /** * * Initial date: 7 déc. 2016<br> @@ -61,4 +63,14 @@ public class FeedReadOnlySecurityCallback implements FeedSecurityCallback { public boolean mayViewAllDrafts() { return false; } + + @Override + public SubscriptionContext getSubscriptionContext() { + return null; + } + + @Override + public void setSubscriptionContext(SubscriptionContext subsContext) { + // + } } diff --git a/src/main/java/org/olat/modules/webFeed/FeedResourceSecurityCallback.java b/src/main/java/org/olat/modules/webFeed/FeedResourceSecurityCallback.java index 1edfaf60b04b6ab7f40e8460fd58ffdbc98499f7..dce9cc2844174410279fb3c8e296fca6bab54120 100644 --- a/src/main/java/org/olat/modules/webFeed/FeedResourceSecurityCallback.java +++ b/src/main/java/org/olat/modules/webFeed/FeedResourceSecurityCallback.java @@ -19,6 +19,8 @@ */ package org.olat.modules.webFeed; +import org.olat.core.commons.services.notifications.SubscriptionContext; + /** * Feed resource security callback. * @@ -30,6 +32,8 @@ package org.olat.modules.webFeed; public class FeedResourceSecurityCallback implements FeedSecurityCallback { private boolean isAdmin, isOwner; + + private SubscriptionContext subsContext; public FeedResourceSecurityCallback(boolean isAdmin, boolean isOwner) { this.isAdmin = isAdmin; @@ -81,4 +85,14 @@ public class FeedResourceSecurityCallback implements FeedSecurityCallback { public boolean mayViewAllDrafts() { return isAdmin || isOwner; } + + @Override + public SubscriptionContext getSubscriptionContext() { + return subsContext; + } + + @Override + public void setSubscriptionContext(SubscriptionContext subsContext) { + this.subsContext = subsContext; + } } diff --git a/src/main/java/org/olat/modules/webFeed/FeedSecurityCallback.java b/src/main/java/org/olat/modules/webFeed/FeedSecurityCallback.java index e68358c009fb81466a86a01a563c7aa88d567d82..65fa3da66bab944a660bd6d8b9e9a126c3253fca 100644 --- a/src/main/java/org/olat/modules/webFeed/FeedSecurityCallback.java +++ b/src/main/java/org/olat/modules/webFeed/FeedSecurityCallback.java @@ -19,6 +19,8 @@ */ package org.olat.modules.webFeed; +import org.olat.core.commons.services.notifications.SubscriptionContext; + /** * The interface defines permission levels for the access to a feed. * @@ -62,4 +64,11 @@ public interface FeedSecurityCallback { * @return If the user can view all drafts */ boolean mayViewAllDrafts(); + + /** + * @return Handle subscriptions + */ + public SubscriptionContext getSubscriptionContext(); + + public void setSubscriptionContext(SubscriptionContext subsContext); } diff --git a/src/main/java/org/olat/modules/webFeed/RSSFeed.java b/src/main/java/org/olat/modules/webFeed/RSSFeed.java index 51f1a38ccd6e8c241f35ff6fff91f58cc1b161a0..c8a780fb4d08265acb1719ac01d4b497a0aae7dd 100644 --- a/src/main/java/org/olat/modules/webFeed/RSSFeed.java +++ b/src/main/java/org/olat/modules/webFeed/RSSFeed.java @@ -29,15 +29,15 @@ import org.olat.modules.webFeed.models.Enclosure; import org.olat.modules.webFeed.models.Feed; import org.olat.modules.webFeed.models.Item; -import com.sun.syndication.feed.synd.SyndContent; -import com.sun.syndication.feed.synd.SyndContentImpl; -import com.sun.syndication.feed.synd.SyndEnclosure; -import com.sun.syndication.feed.synd.SyndEnclosureImpl; -import com.sun.syndication.feed.synd.SyndEntry; -import com.sun.syndication.feed.synd.SyndEntryImpl; -import com.sun.syndication.feed.synd.SyndFeedImpl; -import com.sun.syndication.feed.synd.SyndImage; -import com.sun.syndication.feed.synd.SyndImageImpl; +import com.rometools.rome.feed.synd.SyndContent; +import com.rometools.rome.feed.synd.SyndContentImpl; +import com.rometools.rome.feed.synd.SyndEnclosure; +import com.rometools.rome.feed.synd.SyndEnclosureImpl; +import com.rometools.rome.feed.synd.SyndEntry; +import com.rometools.rome.feed.synd.SyndEntryImpl; +import com.rometools.rome.feed.synd.SyndFeedImpl; +import com.rometools.rome.feed.synd.SyndImage; +import com.rometools.rome.feed.synd.SyndImageImpl; /** * Creates a podcast feed (syndication feed) from a podcast resource. diff --git a/src/main/java/org/olat/modules/webFeed/SyndFeedMediaResource.java b/src/main/java/org/olat/modules/webFeed/SyndFeedMediaResource.java index 08d9000d6c13b28cf16f5e7c30d662385302567b..b31db92507c56d358f2517288e5ca2a4985df88f 100644 --- a/src/main/java/org/olat/modules/webFeed/SyndFeedMediaResource.java +++ b/src/main/java/org/olat/modules/webFeed/SyndFeedMediaResource.java @@ -29,9 +29,9 @@ import javax.servlet.http.HttpServletResponse; import org.olat.commons.servlets.RSSServlet; import org.olat.core.gui.media.MediaResource; -import com.sun.syndication.feed.synd.SyndFeed; -import com.sun.syndication.io.FeedException; -import com.sun.syndication.io.SyndFeedOutput; +import com.rometools.rome.feed.synd.SyndFeed; +import com.rometools.rome.io.FeedException; +import com.rometools.rome.io.SyndFeedOutput; /** * The media resource for synd feeds. Used for dispatching. diff --git a/src/main/java/org/olat/modules/webFeed/managers/BlogNotificationsHandler.java b/src/main/java/org/olat/modules/webFeed/managers/BlogNotificationsHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..eaed9e650a5ff7a0eb535df117b134d5f57840aa --- /dev/null +++ b/src/main/java/org/olat/modules/webFeed/managers/BlogNotificationsHandler.java @@ -0,0 +1,52 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.webFeed.managers; + +import org.olat.core.gui.translator.Translator; +import org.olat.fileresource.types.BlogFileResource; +import org.springframework.stereotype.Service; +/** +* +* Initial date: 27.04.2017<br> +* @author Fabian Kiefer, fabian.kiefer@frentix.com, http://www.frentix.com +* +*/ +@Service +public class BlogNotificationsHandler extends FeedNotificationsHandler { + + private static final String NOTIFICATIONS_HEADER_BLOG = "notifications.header.blog"; + private static final String CSS_CLASS_ICON_BLOG = "o_blog_icon"; + + + @Override + protected String getCssClassIcon() { + return CSS_CLASS_ICON_BLOG; + } + + @Override + protected String getHeader(Translator translator, String title) { + return translator.translate(NOTIFICATIONS_HEADER_BLOG, new String[]{ title }); + } + + @Override + public String getType() { + return BlogFileResource.TYPE_NAME;// FileResource.BLOG + } +} diff --git a/src/main/java/org/olat/modules/webFeed/managers/FeedManagerImpl.java b/src/main/java/org/olat/modules/webFeed/managers/FeedManagerImpl.java index 5e8e9fc389687ade3bfbe6d05d623b042d05f553..19f363c374cf136318b0fea76b48755588ed0e54 100644 --- a/src/main/java/org/olat/modules/webFeed/managers/FeedManagerImpl.java +++ b/src/main/java/org/olat/modules/webFeed/managers/FeedManagerImpl.java @@ -83,15 +83,15 @@ import org.olat.repository.RepositoryManager; import org.olat.resource.OLATResource; import org.olat.resource.OLATResourceManager; -import com.sun.syndication.feed.synd.SyndContent; -import com.sun.syndication.feed.synd.SyndEnclosure; -import com.sun.syndication.feed.synd.SyndEntry; -import com.sun.syndication.feed.synd.SyndFeed; -import com.sun.syndication.feed.synd.SyndImage; -import com.sun.syndication.io.FeedException; -import com.sun.syndication.io.ParsingFeedException; -import com.sun.syndication.io.SyndFeedInput; -import com.sun.syndication.io.XmlReader; +import com.rometools.rome.feed.synd.SyndContent; +import com.rometools.rome.feed.synd.SyndEnclosure; +import com.rometools.rome.feed.synd.SyndEntry; +import com.rometools.rome.feed.synd.SyndFeed; +import com.rometools.rome.feed.synd.SyndImage; +import com.rometools.rome.io.FeedException; +import com.rometools.rome.io.ParsingFeedException; +import com.rometools.rome.io.SyndFeedInput; +import com.rometools.rome.io.XmlReader; import com.thoughtworks.xstream.XStream; /** diff --git a/src/main/java/org/olat/modules/webFeed/managers/FeedNotificationsHandler.java b/src/main/java/org/olat/modules/webFeed/managers/FeedNotificationsHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..708c7b11394de7143d87050f1383e4701c1be234 --- /dev/null +++ b/src/main/java/org/olat/modules/webFeed/managers/FeedNotificationsHandler.java @@ -0,0 +1,180 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.webFeed.managers; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +import org.olat.core.commons.services.notifications.NotificationsHandler; +import org.olat.core.commons.services.notifications.NotificationsManager; +import org.olat.core.commons.services.notifications.Publisher; +import org.olat.core.commons.services.notifications.Subscriber; +import org.olat.core.commons.services.notifications.SubscriptionInfo; +import org.olat.core.commons.services.notifications.model.SubscriptionListItem; +import org.olat.core.commons.services.notifications.model.TitleItem; +import org.olat.core.gui.translator.Translator; +import org.olat.core.gui.util.CSSHelper; +import org.olat.core.id.OLATResourceable; +import org.olat.core.id.context.BusinessControlFactory; +import org.olat.core.logging.OLog; +import org.olat.core.logging.Tracing; +import org.olat.core.util.StringHelper; +import org.olat.core.util.Util; +import org.olat.core.util.resource.OresHelper; +import org.olat.modules.webFeed.models.Feed; +import org.olat.modules.webFeed.models.Item; +import org.olat.modules.webFeed.ui.FeedMainController; +import org.olat.repository.RepositoryEntry; +import org.olat.repository.RepositoryManager; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 6 juin 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public abstract class FeedNotificationsHandler implements NotificationsHandler { + + private static final OLog log = Tracing.createLoggerFor(FeedNotificationsHandler.class); + + private static final String NOTIFICATIONS_HEADER_COURSE = "notifications.header.course"; + protected static final String NOTIFICATIONS_HEADER = "notifications.header"; + + @Autowired + private FeedManager feedManager; + @Autowired + private RepositoryManager repoManager; + @Autowired + private NotificationsManager notificationsManager; + + @Override + public SubscriptionInfo createSubscriptionInfo(Subscriber subscriber, Locale locale, Date compareDate) { + SubscriptionInfo si = null; + Publisher p = subscriber.getPublisher(); + Date latestNews = p.getLatestNewsDate(); + + try { + final Translator translator = Util.createPackageTranslator(FeedMainController.class, locale); + if (notificationsManager.isPublisherValid(p) && compareDate.before(latestNews)) { + String title; + try { + RepositoryEntry re = repoManager.lookupRepositoryEntry( + OresHelper.createOLATResourceableInstance(p.getResName(), p.getResId()), false); + String displayName = re.getDisplayname(); + if("CourseModule".equals(p.getResName())) { + if (re.getRepositoryEntryStatus().isClosed() || re.getRepositoryEntryStatus().isUnpublished()) { + return notificationsManager.getNoSubscriptionInfo(); + } else { + title = translator.translate(NOTIFICATIONS_HEADER_COURSE, new String[]{displayName}); + } + } else { + title = getHeader(translator, displayName); + } + } catch (Exception e) { + log.error("Unknown Exception", e); + return notificationsManager.getNoSubscriptionInfo(); + } + + OLATResourceable feedOres = OresHelper.createOLATResourceableInstance(p.getType(), new Long(p.getData())); + Feed feed = feedManager.getFeed(feedOres); + List<Item> listItems = feedManager.loadItems(feed); + List<SubscriptionListItem> items = new ArrayList<>(); + for (Item item : listItems) { + if (!item.isDraft()) { + appendSubscriptionItem(item, p, compareDate, translator, items); + } + } + si = new SubscriptionInfo(subscriber.getKey(), p.getType(), new TitleItem(title, getCssClassIcon()), items); + } + } catch (Exception e) { + log.error("Unknown Exception", e); + si = notificationsManager.getNoSubscriptionInfo(); + } + return si; + } + + private void appendSubscriptionItem(Item item, Publisher p, Date compareDate, Translator translator, List<SubscriptionListItem> items) { + String title = item.getTitle(); + String author = item.getAuthor(); + String businessPath = p.getBusinessPath(); + String urlToSend = BusinessControlFactory.getInstance() + .getURLFromBusinessPathString(businessPath); + String iconCssClass = item.extraCSSClass(); + Date publishDate = item.getPublishDate(); + if(publishDate != null) { + if(compareDate.before(publishDate)) { + String desc = translator.translate("notifications.entry.published", new String[] { title, author }); + items.add(new SubscriptionListItem(desc, urlToSend, businessPath, publishDate, iconCssClass)); + } + + if(item.getModifierKey() > 0) { + Date modDate = item.getLastModified(); + if(compareDate.before(modDate)) { + String desc; + String modifier = item.getModifier(); + if(StringHelper.containsNonWhitespace(modifier)) { + desc = translator.translate("notifications.entry.modified", new String[] { title, modifier }); + } else { + desc = translator.translate("notifications.entry.modified", new String[] { title, "???" }); + } + items.add(new SubscriptionListItem(desc, urlToSend, businessPath, modDate, iconCssClass)); + } + } + } + } + + protected abstract String getCssClassIcon(); + + protected abstract String getHeader(Translator translator, String title); + + @Override + public String createTitleInfo(Subscriber subscriber, Locale locale) { + Translator translator = Util.createPackageTranslator(FeedMainController.class, locale); + TitleItem title = getTitleItem(subscriber.getPublisher(), translator); + return title.getInfoContent("text/plain"); + } + + protected TitleItem getTitleItem(Publisher p, Translator translator) { + String title; + try { + String displayName = repoManager.lookupDisplayNameByOLATResourceableId(p.getResId()); + title = getHeader(translator, displayName); + } catch (Exception e) { + log.error("", e); + checkPublisher(p); + title = translator.translate(NOTIFICATIONS_HEADER); + } + return new TitleItem(title, CSSHelper.CSS_CLASS_FILETYPE_FOLDER); + } + + protected void checkPublisher(Publisher p) { + try { + RepositoryEntry entry = repoManager.lookupRepositoryEntry(OresHelper.createOLATResourceableInstance(p.getResName(), p.getResId()), false); + if (entry == null) { + notificationsManager.deactivate(p); + } + } catch (Exception e) { + log.error("", e); + } + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/modules/webFeed/managers/PodcastNotificationsHandler.java b/src/main/java/org/olat/modules/webFeed/managers/PodcastNotificationsHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..347b31ad14d8781f04c20fe8b93a260b92db9754 --- /dev/null +++ b/src/main/java/org/olat/modules/webFeed/managers/PodcastNotificationsHandler.java @@ -0,0 +1,51 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.webFeed.managers; + +import org.olat.core.gui.translator.Translator; +import org.olat.fileresource.types.PodcastFileResource; +import org.springframework.stereotype.Service; +/** +* +* Initial date: 11.05.2017<br> +* @author Fabian Kiefer, fabian.kiefer@frentix.com, http://www.frentix.com +* +*/ +@Service +public class PodcastNotificationsHandler extends FeedNotificationsHandler { + + private static final String NOTIFICATIONS_HEADER_PODCAST = "notifications.header.podcast"; + private static final String CSS_CLASS_ICON_PODCAST = "o_podcast_icon"; + + @Override + protected String getCssClassIcon() { + return CSS_CLASS_ICON_PODCAST; + } + + @Override + protected String getHeader(Translator translator, String displayName) { + return translator.translate(NOTIFICATIONS_HEADER_PODCAST, new String[]{ displayName }); + } + + @Override + public String getType() { + return PodcastFileResource.TYPE_NAME;// FileResource.PODCAST + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/modules/webFeed/search/document/FeedItemDocument.java b/src/main/java/org/olat/modules/webFeed/search/document/FeedItemDocument.java index d485d34c5855238a90fab44401094fe9a26f3cc5..8ea24c641a6f164fc5282bbc7ce8309d8efb86d2 100644 --- a/src/main/java/org/olat/modules/webFeed/search/document/FeedItemDocument.java +++ b/src/main/java/org/olat/modules/webFeed/search/document/FeedItemDocument.java @@ -34,6 +34,8 @@ import org.olat.search.service.SearchResourceContext; * @author gwassmann */ public class FeedItemDocument extends OlatDocument { + + private static final long serialVersionUID = -3074986648480909133L; private static Filter tagsFilter = FilterFactory.getHtmlTagsFilter(); public FeedItemDocument(Item item, SearchResourceContext searchResourceContext) { diff --git a/src/main/java/org/olat/modules/webFeed/search/document/FeedNodeDocument.java b/src/main/java/org/olat/modules/webFeed/search/document/FeedNodeDocument.java index bc9285e2a06e95a786a99b42628bae2d79e9aba9..6cfa02d0477ba40d3be4de7048abad3e3cc5a016 100644 --- a/src/main/java/org/olat/modules/webFeed/search/document/FeedNodeDocument.java +++ b/src/main/java/org/olat/modules/webFeed/search/document/FeedNodeDocument.java @@ -33,6 +33,8 @@ import org.olat.search.service.SearchResourceContext; */ public class FeedNodeDocument extends OlatDocument { + private static final long serialVersionUID = 5585883273458311252L; + public FeedNodeDocument(Feed feed, SearchResourceContext searchResourceContext) { super(); setTitle(feed.getTitle()); diff --git a/src/main/java/org/olat/modules/webFeed/ui/FeedMainController.java b/src/main/java/org/olat/modules/webFeed/ui/FeedMainController.java index b3f2d231afa8bc08405da90ef58969cbf50d4897..453097dc10a709c6ffefcd09a16e822adc5e67dc 100644 --- a/src/main/java/org/olat/modules/webFeed/ui/FeedMainController.java +++ b/src/main/java/org/olat/modules/webFeed/ui/FeedMainController.java @@ -21,6 +21,9 @@ package org.olat.modules.webFeed.ui; import java.util.List; +import org.olat.core.commons.services.notifications.PublisherData; +import org.olat.core.commons.services.notifications.SubscriptionContext; +import org.olat.core.commons.services.notifications.ui.ContextualSubscriptionController; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.Component; import org.olat.core.gui.components.form.flexible.elements.FileElement; @@ -73,8 +76,12 @@ public class FeedMainController extends BasicController implements Activateable2 private DisplayFeedUrlController displayUrlCtr; private FeedUIFactory uiFactory; private FeedSecurityCallback callback; + private ContextualSubscriptionController cSubscriptionCtrl; + // needed for comparison private String oldFeedUrl; + private SubscriptionContext subsContext; + private OLATResourceable ores; @Autowired private UserManager userManager; @@ -109,6 +116,10 @@ public class FeedMainController extends BasicController implements Activateable2 super(ureq, wControl); this.uiFactory = uiFactory; this.callback = callback; + this.ores = ores; + + subsContext = callback.getSubscriptionContext(); + setTranslator(uiFactory.getTranslator()); feed = feedManager.getFeed(ores); if(feed == null) { @@ -151,7 +162,15 @@ public class FeedMainController extends BasicController implements Activateable2 vcInfo = uiFactory.createInfoVelocityContainer(this); vcInfo.contextPut("feed", feed); vcInfo.contextPut("helper", helper); - + + if (subsContext != null) { + String businessPath = wControl.getBusinessControl().getAsString(); + PublisherData data = new PublisherData(ores.getResourceableTypeName(), ores.getResourceableId().toString(), businessPath); + cSubscriptionCtrl = new ContextualSubscriptionController(ureq, getWindowControl(), subsContext, data); + listenTo(cSubscriptionCtrl); + vcInfo.put("subscription", cSubscriptionCtrl.getInitialComponent()); + } + vcRightCol = uiFactory.createRightColumnVelocityContainer(this); vcMain.put("rightColumn", vcRightCol); diff --git a/src/main/java/org/olat/modules/webFeed/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/webFeed/ui/_i18n/LocalStrings_de.properties index 63d869d8610718099c151aa7906e118b9cdccef8..1967ccd576fe2106f41fe17a0eab0ac25a29551e 100644 --- a/src/main/java/org/olat/modules/webFeed/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/webFeed/ui/_i18n/LocalStrings_de.properties @@ -36,3 +36,9 @@ feed.item.is.being.edited.by = Der Eintrag wird bereits von {0} bearbeitet. feed.is.being.edited.by = Die Beschreibung wird bereits von {0} bearbeitet. feed.link.more=weiterlesen feed.error=Aufgrund eines unerwarteten Fehlers konnte der Feed leider nicht dargestellt werden. +notifications.header=Neue Blog Eintr\u00E4ge +notifications.header.blog=Neue Eintr\u00E4ge im Blog "{0}" +notifications.header.podcast=Neue Eintr\u00E4ge im Podcast "{0}" +notifications.header.course=Neue Eintr\u00E4ge im Kurs "{0}" +notifications.entry.published=Der Post "{0}" wurde von "{1}" publiziert. +notifications.entry.modified=Der Post "{0}" wurde von "{1}" ge\u00E4ndert. diff --git a/src/main/java/org/olat/modules/webFeed/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/webFeed/ui/_i18n/LocalStrings_en.properties index 2ba3567ab58a7c04721f3c2a963e835e9de923b6..876eb58ce6bffb6cef0f6dcaaa9d9d616103b4f9 100644 --- a/src/main/java/org/olat/modules/webFeed/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/webFeed/ui/_i18n/LocalStrings_en.properties @@ -37,3 +37,9 @@ feed.startpage=Main screen feed.title.label=Title feed.url.is.personal.warning=This URL is private and must not be passed on to third parties. feed.url.label=Feed URL\: +notifications.header=New blog entries +notifications.header.blog=New entries in blog "{0}" +notifications.header.podcast=New entries in podcast "{0}" +notifications.header.course=New entries in course "{0}" +notifications.entry.published=The post "{0}" was published by {1}. +notifications.entry.modified=The post "{0}" was modified by {1}. diff --git a/src/main/java/org/olat/modules/webFeed/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/webFeed/ui/_i18n/LocalStrings_fr.properties index c7f5325f30f4be63b12b8cf7cadbcf621647addf..d64258df71e698a5e5891b49c9d482db93ead455 100644 --- a/src/main/java/org/olat/modules/webFeed/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/modules/webFeed/ui/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Sun Dec 14 10:40:16 CET 2014 +#Thu Jun 08 21:21:38 CEST 2017 ULLimitExceeded=$org.olat.core.commons.modules.bc\:ULLimitExceeded feed.author=Auteur feed.error=Malheureusement, il s'est produit une erreur inattendue et le flux ne pourra pas \u00EAtre pr\u00E9sent\u00E9. @@ -37,3 +37,9 @@ feed.startpage=Page de d\u00E9part feed.title.label=Titre feed.url.is.personal.warning=Cette URL est priv\u00E9e et ne doit pas \u00EAtre communiqu\u00E9 \u00E0 de tierces personnes. feed.url.label=Feed URL\: +notifications.entry.modified=La contribution "{0}" a \u00E9t\u00E9 modifi\u00E9e par {1} +notifications.entry.published=La contribution "{0}" a \u00E9t\u00E9 publi\u00E9e par {1}. +notifications.header=Nouvelles contributions du blog +notifications.header.blog=Nouvelles contributions dans le blog "{0}" +notifications.header.course=Nouvelles contributions dans le cours "{0}" +notifications.header.podcast=Nouvelles contributions dans le podcast "{0}" diff --git a/src/main/java/org/olat/modules/webFeed/ui/blog/BlogPostFormController.java b/src/main/java/org/olat/modules/webFeed/ui/blog/BlogPostFormController.java index 0d16873253f3da271954995b8e47e9fa312838ea..317349c5fbd2418192140257d377ac4ea62549b2 100644 --- a/src/main/java/org/olat/modules/webFeed/ui/blog/BlogPostFormController.java +++ b/src/main/java/org/olat/modules/webFeed/ui/blog/BlogPostFormController.java @@ -22,6 +22,7 @@ package org.olat.modules.webFeed.ui.blog; import java.util.Calendar; import java.util.Date; +import org.olat.core.commons.services.notifications.NotificationsManager; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; @@ -38,12 +39,15 @@ import org.olat.core.gui.control.Controller; import org.olat.core.gui.control.Event; import org.olat.core.gui.control.WindowControl; import org.olat.core.gui.translator.Translator; +import org.olat.core.id.OLATResourceable; import org.olat.core.util.vfs.Quota; import org.olat.core.util.vfs.VFSContainer; import org.olat.core.util.vfs.callbacks.FullAccessWithQuotaCallback; +import org.olat.fileresource.types.BlogFileResource; import org.olat.modules.webFeed.managers.FeedManager; import org.olat.modules.webFeed.models.Feed; import org.olat.modules.webFeed.models.Item; +import org.springframework.beans.factory.annotation.Autowired; /** * Form controller for blog posts. @@ -56,6 +60,8 @@ import org.olat.modules.webFeed.models.Item; public class BlogPostFormController extends FormBasicController { private Item post; + private OLATResourceable feedOres; + private VFSContainer baseDir; private TextElement title; @@ -64,6 +70,9 @@ public class BlogPostFormController extends FormBasicController { private FormLink draftLink; private boolean currentlyDraft; + + @Autowired + private NotificationsManager notificationManager; /** * @param ureq @@ -72,6 +81,7 @@ public class BlogPostFormController extends FormBasicController { public BlogPostFormController(UserRequest ureq, WindowControl control, Item post, Feed blog, Translator translator) { super(ureq, control); this.post = post; + this.feedOres = blog; this.currentlyDraft = post.isDraft(); this.baseDir = FeedManager.getInstance().getItemContainer(post, blog); if(baseDir.getLocalSecurityCallback() == null) { @@ -99,12 +109,12 @@ public class BlogPostFormController extends FormBasicController { setValues(); if(!currentlyDraft || post.getModifierKey() > 0) { post.setModifierKey(ureq.getIdentity().getKey()); - //fxdiff BAKS-18 } else if(currentlyDraft && !ureq.getIdentity().getKey().equals(post.getAuthorKey())) { post.setModifierKey(ureq.getIdentity().getKey()); } post.setDraft(false); fireEvent(ureq, Event.CHANGED_EVENT); + notificationManager.markPublisherNews(BlogFileResource.TYPE_NAME, feedOres.getResourceableId().toString(), null, false); } /** @@ -136,12 +146,11 @@ public class BlogPostFormController extends FormBasicController { setValues(); if(!currentlyDraft || post.getModifierKey() > 0) { post.setModifierKey(ureq.getIdentity().getKey()); - //fxdiff BAKS-18 } else if(currentlyDraft && !ureq.getIdentity().getKey().equals(post.getAuthorKey())) { post.setModifierKey(ureq.getIdentity().getKey()); } post.setDraft(true); - this.fireEvent(ureq, Event.CHANGED_EVENT); + fireEvent(ureq, Event.CHANGED_EVENT); } } diff --git a/src/main/java/org/olat/modules/webFeed/ui/blog/_content/info.html b/src/main/java/org/olat/modules/webFeed/ui/blog/_content/info.html index b2fde24778eafbfd9689d2e5b408620d1366c644..c38ba3ded1d0d8b504a9dfec10d39e3565731dfc 100644 --- a/src/main/java/org/olat/modules/webFeed/ui/blog/_content/info.html +++ b/src/main/java/org/olat/modules/webFeed/ui/blog/_content/info.html @@ -24,7 +24,12 @@ <i class="o_icon o_icon-fw o_icon_rss"></i> $r.translate("blog.subscribe.to.this.feed") </a> - </div> - #end + #if ($r.available("subscription")) + <div class="pull-right"> + $r.render("subscription") + </div> + #end + </div> + #end </div> </div> \ No newline at end of file diff --git a/src/main/java/org/olat/modules/webFeed/ui/podcast/EpisodeFormController.java b/src/main/java/org/olat/modules/webFeed/ui/podcast/EpisodeFormController.java index ccb04522550caeb49718ae10b32f794e04f79b14..bece2bb9564e982733b3fe23fe0a6a1ee12ab941 100644 --- a/src/main/java/org/olat/modules/webFeed/ui/podcast/EpisodeFormController.java +++ b/src/main/java/org/olat/modules/webFeed/ui/podcast/EpisodeFormController.java @@ -23,6 +23,7 @@ import java.io.File; import java.util.Date; import org.olat.core.commons.services.image.Size; +import org.olat.core.commons.services.notifications.NotificationsManager; import org.olat.core.commons.services.video.MovieService; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; @@ -49,6 +50,7 @@ import org.olat.core.util.vfs.Quota; import org.olat.core.util.vfs.VFSContainer; import org.olat.core.util.vfs.VFSLeaf; import org.olat.core.util.vfs.callbacks.FullAccessWithQuotaCallback; +import org.olat.fileresource.types.PodcastFileResource; import org.olat.modules.webFeed.managers.FeedManager; import org.olat.modules.webFeed.models.Feed; import org.olat.modules.webFeed.models.Item; @@ -82,6 +84,8 @@ public class EpisodeFormController extends FormBasicController { @Autowired private MovieService movieService; + @Autowired + private NotificationsManager notificationsManager; /** * @param ureq @@ -124,7 +128,6 @@ public class EpisodeFormController extends FormBasicController { // Set episode as published (no draft feature for podcast) episode.setDraft(false); - //fxdiff FXOLAT-118: size for video podcast String width = widthEl.getValue(); if(StringHelper.containsNonWhitespace(width)) { try { @@ -143,7 +146,8 @@ public class EpisodeFormController extends FormBasicController { } } - this.fireEvent(ureq, Event.CHANGED_EVENT); + fireEvent(ureq, Event.CHANGED_EVENT); + notificationsManager.markPublisherNews(PodcastFileResource.TYPE_NAME, podcast.getResourceableId().toString(), null, false); } /** diff --git a/src/main/java/org/olat/modules/webFeed/ui/podcast/_content/info.html b/src/main/java/org/olat/modules/webFeed/ui/podcast/_content/info.html index 6ea3535d5d60988d404f7bc1838d196505f5bfe3..cdf8cc789991e857e523d15820205e5783e7e6e1 100644 --- a/src/main/java/org/olat/modules/webFeed/ui/podcast/_content/info.html +++ b/src/main/java/org/olat/modules/webFeed/ui/podcast/_content/info.html @@ -36,6 +36,11 @@ $r.translate("podcast.subscribe.feed") </a> </div> + #if ($r.available("subscription")) + <div class="pull-right"> + $r.render("subscription") + </div> + #end #end </div> </div> \ No newline at end of file diff --git a/src/main/java/org/olat/registration/PwChangeController.java b/src/main/java/org/olat/registration/PwChangeController.java index 4a31a73003eded8c01dd1439b018e26a6eed3b4f..5b10fd76a14db962f71eb427f5d0a274b3d7050d 100644 --- a/src/main/java/org/olat/registration/PwChangeController.java +++ b/src/main/java/org/olat/registration/PwChangeController.java @@ -267,10 +267,19 @@ public class PwChangeController extends BasicController { } myContent.contextPut("pwKey", tk.getRegistrationKey()); StringBuilder body = new StringBuilder(); - body.append(userTrans.translate("pwchange.intro", new String[] { identity.getName() })) + body.append("<style>") + .append(".o_footer {background: #FAFAFA; border: 1px solid #eee; border-radius: 5px; padding: 1em; margin: 1em;}") + .append(".o_body {background: #FAFAFA; padding: 1em; margin: 1em;}") + .append("</style>") + .append("<div class='o_body'>") + .append(userTrans.translate("pwchange.headline")) + .append(userTrans.translate("pwchange.intro", new String[] { identity.getName() })) .append(userTrans.translate("pwchange.body", new String[] { serverpath, tk.getRegistrationKey(), I18nManager.getInstance().getLocaleKey(ureq.getLocale()) })) - .append(SEPARATOR) - .append(userTrans.translate("reg.wherefrom", new String[] { serverpath, today, ip })); + .append(userTrans.translate("pwchange.body.alt", new String[] { serverpath, tk.getRegistrationKey(), I18nManager.getInstance().getLocaleKey(ureq.getLocale()) })) + .append("</div>") + .append("<div class='o_footer'>") + .append(userTrans.translate("reg.wherefrom", new String[] { serverpath, today, ip })) + .append("</div>"); MailBundle bundle = new MailBundle(); bundle.setToId(identity); diff --git a/src/main/java/org/olat/registration/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/registration/_i18n/LocalStrings_de.properties index ab83331134be1b02afe4b9a5eafe288f6e48791f..aa4b5efd27a0f2bbd4918370f3811e1a7fb7d5a1 100644 --- a/src/main/java/org/olat/registration/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/registration/_i18n/LocalStrings_de.properties @@ -65,7 +65,9 @@ pw.change.confirm.token=SMS Authentifizierungscode pw.change.sms=SMS Authentifizierung starten pw.change.sms.descr=Sie haben eine Mobile Telefonnummer in OpenOLAT hinterlegt. Sie k\u00F6nnen sich daher \u00FCber SMS authentifizieren. W\u00E4hlen Sie den untenstehenden Button, um die SMS-Authentifizierung zu starten\: pw.change.sms.title=SMS Authentifizierung -pwchange.body=\u00DCber den Link {0}/dmz/pwchange/index.html?key\={1}&language\={2} \nk\u00F6nnen Sie Ihr OpenOLAT-Passwort neu setzen und sich anschlie\u00DFend unter {0}/dmz/1%3A1%3Aomain_loging%3A1%3A0%3Acid%3Alogin/?lp\=OLAT einloggen. \n\nIhr OpenOLAT-Team \n +pwchange.headline=<p><b>Schl\u00FCssel f\u00FCr neues OpenOLAT-Passwort</b></p> +pwchange.body=<p>Klicken Sie <a href='{0}/dmz/pwchange/index.html?key\={1}&language\={2}'>hier um Ihr OpenOLAT Passwort neu zu setzen</a>. \nAnschließend k\u00F6nnen Sie sich bei <a href='{0}/dmz/1%3A1%3Aomain_loging%3A1%3A0%3Acid%3Alogin/?lp\=OLAT'>OpenOLAT anmelden</a>.</p> +pwchange.body.alt=<p>Falls Ihr Emailprogramm HTML nicht nterst\u00FCtzt, kopieren Sie den folgenden Link in Ihren Webbrowser: </br><a href='{0}/dmz/pwchange/index.html?key\={1}&language\={2}'>{0}/dmz/pwchange/index.html?key\={1}&language\={2}</a><p> pwchange.homelink=Klicken Sie hier um sich anzumelden pwchange.intro=Sie oder eine andere Person haben f\u00FCr den OpenOLAT-Benutzeraccount {0} ein neues Passwort angefordert.\n\n pwchange.subject=Schl\u00FCssel f\u00FCr neues OpenOLAT-Passwort diff --git a/src/main/java/org/olat/registration/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/registration/_i18n/LocalStrings_en.properties index 8ad185fbc44d1f83d6300394fee94f6970d0a370..9341031d1510187929b1d7607fb36a7418405793 100644 --- a/src/main/java/org/olat/registration/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/registration/_i18n/LocalStrings_en.properties @@ -65,7 +65,9 @@ pw.change.confirm.token=SMS authentication code pw.change.sms=Start authentication by SMS pw.change.sms.descr=You have enter a mobile telecom number in OpenOLAT. You can authenticate you by SMS. Choose the button below to start the authentication by SMS\: pw.change.sms.title=Authentication by SMS -pwchange.body=Please use the link {0}/dmz/pwchange/index.html?key\={1}&language\={2} \r\nto change your OpenOLAT password. \r\n\r\nYour OpenOLAT team +pwchange.headline=<p><b>Key for new OpenOLAT password</b></p> +pwchange.body=<p>Please click <a href='{0}/dmz/pwchange/index.html?key\={1}&language\={2}'>here to reset your OpenOLAT password</a>. \nAfterwards you may <a href='{0}/dmz/1%3A1%3Aomain_loging%3A1%3A0%3Acid%3Alogin/?lp\=OLAT'>sign in OpenOLAT</a>.</p> +pwchange.body.alt=<p>In case your mail program does not support HTML, copy this link to you webbrowser: </br><a href='{0}/dmz/pwchange/index.html?key\={1}&language\={2}'>{0}/dmz/pwchange/index.html?key\={1}&language\={2}</a></p> pwchange.homelink=Please click here to log on pwchange.intro=You have (or somebody else has) asked for a new password regarding the OpenOLAT user account {0}. pwchange.subject=Key to a new OpenOLAT password diff --git a/src/main/java/org/olat/registration/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/registration/_i18n/LocalStrings_fr.properties index c7878889f44feb395d94fa364f925b0378161af1..5024b54d55a09bb163b92350b945afebac8ab23c 100644 --- a/src/main/java/org/olat/registration/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/registration/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Tue Apr 04 18:43:37 CEST 2017 +#Thu Jun 08 21:32:29 CEST 2017 admin.enableRegistration=Activer l'auto-enregistrement admin.enableRegistration.on=on admin.enableRegistrationLink=Activer l'auto-enregistrement depuis une page externe. @@ -66,6 +66,7 @@ pw.change.sms=D\u00E9marrer l'authentification par SMS pw.change.sms.descr=Vous avez entrer un num\u00E9ro de t\u00E9l\u00E9phone portable dans OpenOLAT. vous pouvez vous authentifier par SMS. Veuillez choisir le bouton ci-dessous pour d\u00E9marrer l'authentification par SMS. pw.change.sms.title=Authentification par SMS pwchange.body=Gr\u00E2ce au lien {0}/dmz/pwchange/index.html?key\={1}&language\={2} \r\nvous pouvez modifier votre mot de passe.\r\n\r\nVotre \u00E9quipe OpenOLAT +pwchange.headline=<p><b>Cl\u00E9 pour un nouveau mot de passe</b></p> pwchange.homelink=Cliquer ici pour se connecter pwchange.intro=Vous (ou une autre personne) avez demand\u00E9 un nouveau mot de passe pour le compte d'utilisateur OpenOLAT {0}. pwchange.subject=Cl\u00E9 pour un nouveau mot de passe OpenOLAT diff --git a/src/main/java/org/olat/repository/RepositoryService.java b/src/main/java/org/olat/repository/RepositoryService.java index 7127e34b27b3d351aa0703856941759ebe5f2ef9..1b05a1d072b26a7e6ed40bcd8e790d5189041a60 100644 --- a/src/main/java/org/olat/repository/RepositoryService.java +++ b/src/main/java/org/olat/repository/RepositoryService.java @@ -227,6 +227,15 @@ public interface RepositoryService { */ public List<Identity> getMembers(RepositoryEntryRef re, String... roles); + /** + * Get the + * @param re + * @param followBusinessGroups + * @param roles + * @return + */ + public List<Identity> getMembers(List<? extends RepositoryEntryRef> re, RepositoryEntryRelationType relationType, String... roles); + /** * Return all the identities the specified role linked to a repository * entry. diff --git a/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties index 8d7f87d6003c9462a8716d2db0b4dbd60d4fff29..6b98813ae1005e84cf532ff04ca7458ddea62921 100644 --- a/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/repository/_i18n/LocalStrings_de.properties @@ -163,6 +163,16 @@ cmd.import.ressource.desc=W\u00E4hlen Sie eine Lernressource f\u00FCr den Import comments=Kommentar confirmation.no.toolHelp=Aktion abbrechen. confirmation.yes.toolHelp=Lernressource l\u00F6schen. +contact.attachment=$org.olat.modules.co\:contact.attachment +contact.attachment.maxsize=$org.olat.modules.co\:contact.attachment.maxsize +contact.body=$org.olat.modules.co\:contact.body +contact.cp.from=$org.olat.modules.co\:contact.cp.from +contact.from=$org.olat.modules.co\:contact.from +contact.to=$org.olat.modules.co\:contact.to +contact.to.owner=Alle Kursbesitzer +contact.to.coach=Alle Betreuer +contact.to.participant=Alle Teilnehmer +contact.subject=$org.olat.modules.co\:contact.subject copy.suffix=(Kopie) course.config.changed.text=Sie m\u00F6chten die Kurseinstellungen \u00E4ndern. Wenn Sie 'Ja' klicken, m\u00FCssen {0} Personen im Kurs den Kurs neu starten. Bei 'Nein' werden die \u00C4nderungen verworfen. Wollen Sie fortfahren? course.config.changed.title=\u00C4nderung der Einstellungen @@ -273,6 +283,7 @@ edit.lifecycle=Semester editieren edit.member=$org.olat.group.ui.main\:edit.member edit.member.groups=$org.olat.group.ui.main\:edit.member.groups error.atleastone=$org.olat.course.member\:error.atleastone +error.contact.to.empty=Es wurde kein Empf\u00E4nger gefunden. error.course.alreadylocked=Dieser Kurs wird im Moment von {0} editiert und ist daher gesperrt. error.createcopy=Beim Kopieren des Objektes ist ein Fehler aufgetreten. Die Aktion wurde abgebrochen. error.download=Beim Download des Objektes ist ein Fehler aufgetreten. Die Aktion wurde abgebrochen. @@ -332,6 +343,7 @@ managed.resource.intro=Dieser Kurs wurde von einem externen Werkzeug erstellt. E menu.repository.admin=Repository menu.repository.admin.alt=$\:menu.repository.admin message.entry.selected=Die Lernressource "{0}" vom Typ "{1}" wurde erfolgreich zugeordnet. +msg.send.ok=$org.olat.modules.co\:msg.send.ok msg.warnusers=(Im Moment wird diese Ressource von {0} Benutzer(n) verwendet) my.course.comment.enabled=Kommentar in "Kurs" my.course.rating.enabled=Beurteilung in "Kurs" @@ -360,6 +372,8 @@ new.test.intro=Neuen Test erstellen. new.wiki=Wiki erstellen new.wiki.intro=Neues Wiki erstellen no.lifecycle=Keine Einschr\u00E4nkung +no.catalog.entries=Diese Resource wurde noch nicht im Katalog registriert. \r\n\r\n Verwenden Sie den "In Katalog einf\u00FCgen" Button in der Toolbar, um die Resource auf einer bestimmten Katalog-Ebenen hinzuzuf\u00FCgen. Der Katalog erlaubt es dem Benutzer je nach Zugriffskonfiguration nach bestimmten Eintr\u00E4gen zu suchen. Sie k\u00F6nnen die Resource auf mehreren Katalog-Ebenen hinzuf\u00FCgen. +info.catalog.entries=Verwenden Sie den "In Katalog einf\u00FCgen" Button in der Toolbar, um die Resource auf einer bestimmten Katalog-Ebenen hinzuzuf\u00FCgen. Der Katalog erlaubt es dem Benutzer je nach Zugriffskonfiguration nach bestimmten Eintr\u00E4gen zu suchen. Sie k\u00F6nnen die Resource auf mehreren Katalog-Ebenen hinzuf\u00FCgen. nomembers=XXX No members notification.mail.added.body=*** Das ist eine automatisch generierte Nachricht. Bitte antworten Sie nicht auf diese Nachricht *** \n\nSie wurden von {0} {1} ({2}) in einen Kurs eingeladen\: \n\nKursname\: $coursename\nBeschreibung\: $coursedescription\n\nBei Fragen kontaktieren Sie bitte {0} {1} ({2}). notification.mail.added.subject=Kurs $coursename @@ -598,6 +612,7 @@ tools.new.header=Herstellen tools.new.podcast=Podcast tools.new.portfolio=Portfoliovorlage tools.new.wiki=Wiki +tools.send.mail=E-Mail versenden tools.restore=Wiederherstellen user.notfound=Folgende Benutzer wurden nicht gefunden\: {0} warn.config.reference.no.access=Beachten Sie bitte, dass die Konfiguration "Referenzierung m\u00F6glich" erst aktiv wird wenn der Zugriff auch f\u00FCr Autoren freigegeben wurde. diff --git a/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties index 2d52836b4d9e1056955f04358d2e1c0dcac78575..a35e1a54d8748bfca30d2ae74aa489c39be7c38c 100644 --- a/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/repository/_i18n/LocalStrings_en.properties @@ -159,6 +159,16 @@ cmd.import.ressource.desc=Choose a learning resource to import\:<ul><li>OpenOLAT comments=Comments confirmation.no.toolHelp=Cancel action. confirmation.yes.toolHelp=Delete learning resource. +contact.attachment=$org.olat.modules.co\:contact.attachment +contact.attachment.maxsize=$org.olat.modules.co\:contact.attachment.maxsize +contact.body=$org.olat.modules.co\:contact.body +contact.cp.from=$org.olat.modules.co\:contact.cp.from +contact.from=$org.olat.modules.co\:contact.from +contact.to=$org.olat.modules.co\:contact.to +contact.to.owner=All course owners +contact.to.coach=All coaches +contact.to.participant=All participants +contact.subject=$org.olat.modules.co\:contact.subject copy.suffix=(copy) course.config.changed.text=You want to modify your course settings. When clicking on 'Yes' {0} participants will have to restart this course. When clicking on 'No' all modifications will be discarded. Do you wish to proceed? course.config.changed.title=Modification of settings @@ -269,6 +279,7 @@ edit.lifecycle=Edit semester edit.member=$org.olat.group.ui.main\:edit.member edit.member.groups=$org.olat.group.ui.main\:edit.member.groups error.atleastone=$org.olat.course.member\:error.atleastone +error.contact.to.empty=No recipient can be found. error.course.alreadylocked=This course is currently edited by {0} and therefore locked. error.createcopy=An error occurred while trying to copy the object. Action canceled. error.download=An error occurred while trying to download the object. Action canceled. @@ -330,6 +341,7 @@ menu.repository.admin.alt=$\:menu.repository.admin message.entry.selected=Learning resource "{0}" with type "{1}" allocated successfully. month=Month msg.warnusers=(There are {0} users currently using this resource) +msg.send.ok=$org.olat.modules.co\:msg.send.ok my.course.comment.enabled=Comments in "Course" my.course.rating.enabled=Rating in "Course" my.course.search.enabled=Search in "Course" @@ -357,6 +369,8 @@ new.test.intro=Create new test new.wiki=Create wiki new.wiki.intro=Create new wiki no.lifecycle=No limitation +no.catalog.entries=This resource has not been added to the catalog yet. \r\n\r\n Use the "Add to catalog" button in the toolbar above to add the resource to a specific level in the catalog. The catalog allows users to browse for available resources depending on th resource access configuration. You can add the resource to multiple catalog levels. +info.catalog.entries=Use the "Add to catalog" button in the toolbar above to add the resource to a specific level in the catalog. The catalog allows users to browse for available resources depending on th resource access configuration. You can add the resource to multiple catalog levels. nomembers=XXX No members notification.mail.added.body=*** This is an automatically generated message. Please do not answer to this message *** \r\n\r\nYou have been added by {0} {1} ({2}) to a course\:\r\n\r\nCourse name\: $coursename\r\nDescription\: $coursedescription\r\n\r\nIf you have questions regarding this action, please contact {0} {1} ({2}). notification.mail.added.subject=Course $coursename @@ -595,6 +609,7 @@ tools.new.header=Create tools.new.podcast=Podcast tools.new.portfolio=Portfolio template tools.new.wiki=Wiki +tools.send.mail=Send E-mail tools.restore=Restore user.notfound=The following users have not been found\: {0} warn.config.reference.no.access=Please note that the configuration "Can be referenced" is activated only after access to this resource is granted to other authors as well. diff --git a/src/main/java/org/olat/repository/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/repository/_i18n/LocalStrings_fr.properties index cd5143d8e18963ad15829627c4f20d0eab3dcb87..61ccf1edf081b57c8e199762b661c1eb5edf6f6d 100644 --- a/src/main/java/org/olat/repository/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/repository/_i18n/LocalStrings_fr.properties @@ -1,4 +1,4 @@ -#Tue Apr 04 18:44:02 CEST 2017 +#Thu Jun 08 21:34:52 CEST 2017 BinderTemplate=Mod\u00E8le de portfolio 2.0 CourseModule=Cours EPStructuredMapTemplate=Mod\u00E8le de portfolio @@ -159,6 +159,16 @@ cmd.import.ressource.desc=Choisissez une ressource didactique \u00E0 importer\:< comments=Commentaires confirmation.no.toolHelp=Annuler l'op\u00E9ration confirmation.yes.toolHelp=Supprimer la ressource +contact.attachment=$org.olat.modules.co\:contact.attachment +contact.attachment.maxsize=$org.olat.modules.co\:contact.attachment.maxsize +contact.body=$org.olat.modules.co\:contact.body +contact.cp.from=$org.olat.modules.co\:contact.cp.from +contact.from=$org.olat.modules.co\:contact.from +contact.subject=$org.olat.modules.co\:contact.subject +contact.to=$org.olat.modules.co\:contact.to +contact.to.coach=Tous les coachs +contact.to.owner=Tous les propri\u00E9taires de cours +contact.to.participant=Tous les participants copy.suffix=(copie) course.config.changed.text=Vous voulez modifier les r\u00E9glages du cours. Si vous cliquez 'oui' les personnes utilisant le cours doivent red\u00E9marrer le cours. Si vous cliquez sur 'non', les modifications ne sont pas retenues. Voulez-vous continuer? course.config.changed.title=Modification des r\u00E9glages @@ -269,6 +279,7 @@ edit.lifecycle=Editer le semestre edit.member=$org.olat.group.ui.main\:edit.member edit.member.groups=$org.olat.group.ui.main\:edit.member.groups error.atleastone=$org.olat.course.member\:error.atleastone +error.contact.to.empty=Aucun destinataire n'a pu \u00EAtre trouv\u00E9. error.course.alreadylocked=Ce cours est \u00E9dit\u00E9 en ce moment par {0} et est ainsi bloqu\u00E9. error.createcopy=Une erreur s'est produite lors de la copie de l'objet. L'op\u00E9ration a \u00E9t\u00E9 annul\u00E9e. error.download=Une erreur s'est produite lors du t\u00E9l\u00E9chargement de l'objet. L'op\u00E9ration a \u00E9t\u00E9 annul\u00E9e. @@ -329,6 +340,7 @@ menu.repository.admin=Ressources didactiques menu.repository.admin.alt=$\:menu.repository.admin message.entry.selected=La ressource didactique {0} du type {1} a \u00E9t\u00E9 class\u00E9 avec succ\u00E8s. month=Mois +msg.send.ok=$org.olat.modules.co\:msg.send.ok msg.warnusers=(Cette ressource est actuellement utilis\u00E9e par {0} utilisateurs) my.course.comment.enabled=Commentaires dans "Mes cours" my.course.rating.enabled=Evaluations dans "Cours" @@ -596,6 +608,7 @@ tools.new.podcast=Podcast tools.new.portfolio=Mod\u00E8le de portfolio tools.new.wiki=Wiki tools.restore=Restaurer +tools.send.mail=Envoyez un courriel user.notfound=Les utilisateurs suivants n'ont pas \u00E9t\u00E9 trouv\u00E9\: {0} warn.config.reference.no.access=Veuillez faire attention \u00E0 ce que la "possibilit\u00E9 de r\u00E9f\u00E9rencier" est seulement active si l'acc\u00E8s a aussi \u00E9t\u00E9 permis aux auteurs. warn.entry.meantimedeleted=L'entr\u00E9e a entre-temps \u00E9t\u00E9 supprim\u00E9e par un autre utilisateur. diff --git a/src/main/java/org/olat/repository/controllers/ReferencableEntriesSearchController.java b/src/main/java/org/olat/repository/controllers/ReferencableEntriesSearchController.java index 9477d15198e92f4802eaa6e7089ce6e022512e43..72c1c9e2cbb626071618800279002dc1621b4682 100644 --- a/src/main/java/org/olat/repository/controllers/ReferencableEntriesSearchController.java +++ b/src/main/java/org/olat/repository/controllers/ReferencableEntriesSearchController.java @@ -156,6 +156,7 @@ public class ReferencableEntriesSearchController extends BasicController { if(creatorTypes.size() == 1) { Link createButton = LinkFactory.createButtonSmall("cmd.create.ressource", mainVC, this); createButton.setElementCssClass("o_sel_repo_popup_create_resource"); + createButton.setSuppressDirtyFormWarning(true); RepositoryHandler handler = repositoryHandlerFactory.getRepositoryHandler(creatorTypes.get(0)); createButton.setUserObject(handler); createRessourceCmp = createButton; diff --git a/src/main/java/org/olat/repository/handlers/BlogHandler.java b/src/main/java/org/olat/repository/handlers/BlogHandler.java index a50c3db3a6e3b021cc6e088b43aae7a039985ce3..0d58899d9e6a67210cd3102412ba7e68be5b0b0c 100644 --- a/src/main/java/org/olat/repository/handlers/BlogHandler.java +++ b/src/main/java/org/olat/repository/handlers/BlogHandler.java @@ -24,6 +24,7 @@ import java.util.Locale; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.DBFactory; +import org.olat.core.commons.services.notifications.SubscriptionContext; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.stack.TooledStackedPanel; import org.olat.core.gui.control.Controller; @@ -169,6 +170,8 @@ public class BlogHandler implements RepositoryHandler { boolean isAdmin = ureq.getUserSession().getRoles().isOLATAdmin(); boolean isOwner = RepositoryManager.getInstance().isOwnerOfRepositoryEntry(ureq.getIdentity(), re); final FeedSecurityCallback callback = new FeedResourceSecurityCallback(isAdmin, isOwner); + SubscriptionContext subsContext = new SubscriptionContext(re.getOlatResource(), re.getSoftkey()); + callback.setSubscriptionContext(subsContext); return new FeedRuntimeController(ureq, wControl, re, reSecurity, new RuntimeControllerCreator() { @Override diff --git a/src/main/java/org/olat/repository/handlers/CourseHandler.java b/src/main/java/org/olat/repository/handlers/CourseHandler.java index 2e709e22f90105f34917bcd1cb021ab4c2eed888..d7ccb17b5572bf0672a1fbafde412f989e9f1d9e 100644 --- a/src/main/java/org/olat/repository/handlers/CourseHandler.java +++ b/src/main/java/org/olat/repository/handlers/CourseHandler.java @@ -82,6 +82,7 @@ import org.olat.course.PersistingCourseImpl; import org.olat.course.Structure; import org.olat.course.assessment.AssessmentMode; import org.olat.course.config.CourseConfig; +import org.olat.course.editor.CourseAccessAndProperties; import org.olat.course.export.CourseEnvironmentMapper; import org.olat.course.groupsandrights.CourseGroupManager; import org.olat.course.groupsandrights.PersistingCourseGroupManager; @@ -537,12 +538,16 @@ public class CourseHandler implements RepositoryHandler { final CourseCreationHelper ccHelper = new CourseCreationHelper(ureq.getLocale(), repoEntry, courseConfig , course); StepRunnerCallback finishCallback = new StepRunnerCallback() { public Step execute(UserRequest uureq, WindowControl control, StepsRunContext runContext) { + // retrieve access and properties + CourseAccessAndProperties accessAndProps = (CourseAccessAndProperties) runContext.get("accessAndProperties"); + courseConfig.setAccessAndProperties(accessAndProps); + // here goes the code which reads out the wizards data from the runContext and then does some wizardry ccHelper.finalizeWorkflow(uureq); control.setInfo(CourseCreationMailHelper.getSuccessMessageString(uureq)); // send notification mail final MailerResult mr = CourseCreationMailHelper.sentNotificationMail(uureq, ccHelper.getConfiguration()); - MailHelper.printErrorsAndWarnings(mr, control, uureq.getLocale()); + MailHelper.printErrorsAndWarnings(mr, control, uureq.getUserSession().getRoles().isOLATAdmin(), uureq.getLocale()); return StepsMainRunController.DONE_MODIFIED; } }; diff --git a/src/main/java/org/olat/repository/handlers/PodcastHandler.java b/src/main/java/org/olat/repository/handlers/PodcastHandler.java index 8feec9aa4fdd196b2a543f53313b1dac9049377e..f78a84a31146ab51af51cc172560224ba7e44a28 100644 --- a/src/main/java/org/olat/repository/handlers/PodcastHandler.java +++ b/src/main/java/org/olat/repository/handlers/PodcastHandler.java @@ -24,6 +24,7 @@ import java.util.Locale; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.DBFactory; +import org.olat.core.commons.services.notifications.SubscriptionContext; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.stack.TooledStackedPanel; import org.olat.core.gui.control.Controller; @@ -163,6 +164,8 @@ public class PodcastHandler implements RepositoryHandler { boolean isAdmin = ureq.getUserSession().getRoles().isOLATAdmin(); boolean isOwner = reSecurity.isOwner(); final FeedSecurityCallback callback = new FeedResourceSecurityCallback(isAdmin, isOwner); + SubscriptionContext subsContext = new SubscriptionContext(re.getOlatResource(), re.getSoftkey()); + callback.setSubscriptionContext(subsContext); return new FeedRuntimeController(ureq, wControl, re, reSecurity, new RuntimeControllerCreator() { @Override diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java b/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java index 81def30930e5286b2c0273cc5277744f9e42ca03..bf4d203dda9ad1ef4dcbd1bec981a93e7ef9d294 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java +++ b/src/main/java/org/olat/repository/manager/RepositoryEntryRelationDAO.java @@ -28,6 +28,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.stream.Collectors; import javax.persistence.EntityManager; import javax.persistence.TypedQuery; @@ -420,6 +421,12 @@ public class RepositoryEntryRelationDAO { } public List<Identity> getMembers(RepositoryEntryRef re, RepositoryEntryRelationType type, String... roles) { + return getMembers(Collections.singletonList(re), type, roles); + } + + public List<Identity> getMembers(List<? extends RepositoryEntryRef> res, RepositoryEntryRelationType type, String... roles) { + if(res == null || res.isEmpty()) return Collections.emptyList(); + List<String> roleList = GroupRoles.toList(roles); String def; @@ -436,14 +443,15 @@ public class RepositoryEntryRelationDAO { .append(" inner join baseGroup.members as memberships") .append(" inner join memberships.identity as ident") .append(" inner join fetch ident.user as identUser") - .append(" where v.key=:repoKey"); + .append(" where v.key in (:repoKeys)"); if(roleList.size() > 0) { sb.append(" and memberships.role in (:roles)"); } - + + List<Long> repoKeys = res.stream().map(re -> re.getKey()).collect(Collectors.toList()); TypedQuery<Identity> query = dbInstance.getCurrentEntityManager() .createQuery(sb.toString(), Identity.class) - .setParameter("repoKey", re.getKey()); + .setParameter("repoKeys", repoKeys); if(roleList.size() > 0) { query.setParameter("roles", roleList); } diff --git a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java index 2e055156233eb2927dedd6ca0caa0e1f076611ea..7d7f103f5c5cd84fdf846d4d4123bb202fce5cbb 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java +++ b/src/main/java/org/olat/repository/manager/RepositoryServiceImpl.java @@ -616,6 +616,11 @@ public class RepositoryServiceImpl implements RepositoryService { return reToGroupDao.getMembers(re, RepositoryEntryRelationType.defaultGroup, roles); } + @Override + public List<Identity> getMembers(List<? extends RepositoryEntryRef> res, RepositoryEntryRelationType relationType, String... roles) { + return reToGroupDao.getMembers(res, relationType, roles); + } + @Override public List<Identity> getIdentitiesWithRole(String role) { return reToGroupDao.getIdentitiesWithRole(role); diff --git a/src/main/java/org/olat/repository/ui/_content/web_content.html b/src/main/java/org/olat/repository/ui/_content/web_content.html index e32edcaece36f43a50d65f2a8b77b256856b5869..41eb5a635bb83923005a86d968898cf7e7912379 100644 --- a/src/main/java/org/olat/repository/ui/_content/web_content.html +++ b/src/main/java/org/olat/repository/ui/_content/web_content.html @@ -1,9 +1,10 @@ <h2><i class="o_icon $cssClass"> </i> $r.escapeHtml($displayName)</h2> +<div class="o_web_content"> #if($image) <img src="$mediaUrl/$filename" /> #elseif($movie) <p><span id="olatFlashMovieViewer1" class="olatFlashMovieViewer" style="display:block;border:solid 1px #000; width:${width}px; height:${height}px;"> - <script defer="defer" type="text/javascript"> + <script type="text/javascript"> // <![CDATA[ BPlayer.insertPlayer('$mediaUrl/$filename','olatFlashMovieViewer1',$width,$height,0,0,'video',undefined,false,true,false); // ]]> @@ -11,4 +12,5 @@ </span></p> #elseif($r.available("content")) <div class="o_content clearfix">$r.render("content")</div> -#end \ No newline at end of file +#end +</div> \ No newline at end of file diff --git a/src/main/java/org/olat/repository/ui/author/AuthorListController.java b/src/main/java/org/olat/repository/ui/author/AuthorListController.java index 5e0daeefb841c3974874bfa1f06abdb6f7ee6d47..8eeaa33c80a706714d72aa6e736542e6d1779b21 100644 --- a/src/main/java/org/olat/repository/ui/author/AuthorListController.java +++ b/src/main/java/org/olat/repository/ui/author/AuthorListController.java @@ -126,6 +126,7 @@ public class AuthorListController extends FormBasicController implements Activat private ToolsController toolsCtrl; protected CloseableModalController cmc; + private SendMailController sendMailCtrl; private StepsMainRunController wizardCtrl; private AuthorSearchController searchCtrl; private UserSearchController userSearchCtr; @@ -142,7 +143,7 @@ public class AuthorListController extends FormBasicController implements Activat private Link importLink; private Dropdown createDropdown; - private FormLink addOwnersButton, deleteButton, copyButton; + private FormLink sendMailButton, addOwnersButton, deleteButton, copyButton; private LockResult lockResult; private final AtomicInteger counter = new AtomicInteger(); @@ -330,6 +331,7 @@ public class AuthorListController extends FormBasicController implements Activat protected void initBatchButtons(FormItemContainer formLayout) { if(hasAuthorRight) { + sendMailButton = uifactory.addFormLink("tools.send.mail", formLayout, Link.BUTTON); addOwnersButton = uifactory.addFormLink("tools.add.owners", formLayout, Link.BUTTON); copyButton = uifactory.addFormLink("details.copy", formLayout, Link.BUTTON); deleteButton = uifactory.addFormLink("details.delete", formLayout, Link.BUTTON); @@ -477,6 +479,9 @@ public class AuthorListController extends FormBasicController implements Activat } cmc.deactivate(); cleanUp(); + } else if(sendMailCtrl == source) { + cmc.deactivate(); + cleanUp(); } else if(toolsCtrl == source) { if(event == Event.DONE_EVENT) { toolsCalloutCtrl.deactivate(); @@ -515,6 +520,7 @@ public class AuthorListController extends FormBasicController implements Activat removeAsListenerAndDispose(confirmDeleteCtrl); removeAsListenerAndDispose(toolsCalloutCtrl); removeAsListenerAndDispose(userSearchCtr); + removeAsListenerAndDispose(sendMailCtrl); removeAsListenerAndDispose(createCtrl); removeAsListenerAndDispose(importCtrl); removeAsListenerAndDispose(wizardCtrl); @@ -524,6 +530,7 @@ public class AuthorListController extends FormBasicController implements Activat confirmDeleteCtrl = null; toolsCalloutCtrl = null; userSearchCtr = null; + sendMailCtrl = null; createCtrl = null; importCtrl = null; wizardCtrl = null; @@ -546,6 +553,13 @@ public class AuthorListController extends FormBasicController implements Activat } else { showWarning("bulk.update.nothing.selected"); } + } else if(sendMailButton == source) { + List<AuthoringEntryRow> rows = getMultiSelectedRows(); + if(!rows.isEmpty()) { + doSendMail(ureq, rows); + } else { + showWarning("bulk.update.nothing.selected"); + } } else if(copyButton == source) { List<AuthoringEntryRow> rows = getMultiSelectedRows(); if(!rows.isEmpty()) { @@ -731,6 +745,20 @@ public class AuthorListController extends FormBasicController implements Activat return rows; } + private void doSendMail(UserRequest ureq, List<AuthoringEntryRow> rows) { + if(sendMailCtrl != null) return; + + removeAsListenerAndDispose(userSearchCtr); + sendMailCtrl = new SendMailController(ureq, getWindowControl(), rows); + listenTo(sendMailCtrl); + + String title = translate("tools.send.mail"); + cmc = new CloseableModalController(getWindowControl(), translate("close"), sendMailCtrl.getInitialComponent(), + true, title); + listenTo(cmc); + cmc.activate(); + } + private void doAddOwners(UserRequest ureq, List<AuthoringEntryRow> rows) { if(userSearchCtr != null) return; diff --git a/src/main/java/org/olat/repository/ui/author/CatalogSettingsController.java b/src/main/java/org/olat/repository/ui/author/CatalogSettingsController.java index fa051cb5a532b8da234fb641f1ca6a6886f14dbb..4dba85ee674d26895e3912ec109b50be4efbc023 100644 --- a/src/main/java/org/olat/repository/ui/author/CatalogSettingsController.java +++ b/src/main/java/org/olat/repository/ui/author/CatalogSettingsController.java @@ -29,6 +29,7 @@ import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.FlexiTableElement; import org.olat.core.gui.components.form.flexible.impl.FormBasicController; import org.olat.core.gui.components.form.flexible.impl.FormEvent; +import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.DefaultFlexiTableDataModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; @@ -62,12 +63,13 @@ public class CatalogSettingsController extends FormBasicController { private FlexiTableElement tableEl; private CategoriesListModel model; private TooledStackedPanel stackPanel; + private FormLayoutContainer catalog; private CloseableModalController cmc; private Controller catalogAdddController; private RepositoryEntry entry; - + @Autowired private CatalogManager catalogManager; @@ -91,6 +93,11 @@ public class CatalogSettingsController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + String catalogPage = velocity_root + "/catalog_info.html"; + catalog = FormLayoutContainer.createCustomFormLayout("info", getTranslator(), catalogPage); + catalog.setRootForm(mainForm); + formLayout.add(catalog); + FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("catalog.path", 0)); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("remove", translate("remove"), "remove")); @@ -99,6 +106,13 @@ public class CatalogSettingsController extends FormBasicController { model = new CategoriesListModel(catalogEntries, columnsModel); tableEl = uifactory.addTableElement(getWindowControl(), "table", model, 200, true, getTranslator(), formLayout); tableEl.setCustomizeColumns(false); + tableEl.setVisible(true); + if (catalogEntries.size() == 0) { + catalog.contextPut("hasContent", false); + tableEl.setEmtpyTableMessageKey("no.catalog.entries"); + } else { + catalog.contextPut("hasContent", true); + } } @Override @@ -186,6 +200,12 @@ public class CatalogSettingsController extends FormBasicController { private void updateTable() { List<CatalogEntry> catalogEntries = catalogManager.getCatalogCategoriesFor(entry); model.setObjects(catalogEntries); + if (catalogEntries.size() == 0) { + catalog.contextPut("hasContent", false); + tableEl.setEmtpyTableMessageKey("no.catalog.entries"); + } else { + catalog.contextPut("hasContent", true); + } tableEl.reset(); } diff --git a/src/main/java/org/olat/repository/ui/author/RepositoryEditDescriptionController.java b/src/main/java/org/olat/repository/ui/author/RepositoryEditDescriptionController.java index 71d18dce49447fddb256e4895bb22417b2d8efba..b0151aef83dd6f35f89f2762326acc5adfd706c7 100644 --- a/src/main/java/org/olat/repository/ui/author/RepositoryEditDescriptionController.java +++ b/src/main/java/org/olat/repository/ui/author/RepositoryEditDescriptionController.java @@ -102,7 +102,7 @@ public class RepositoryEditDescriptionController extends FormBasicController { private SingleSelection dateTypesEl, publicDatesEl; private DateChooser startDateEl, endDateEl; private FormSubmit submit; - private FormLayoutContainer descCont, privateDatesCont; + private FormLayoutContainer privateDatesCont; private static final String[] dateKeys = new String[]{ "none", "private", "public"}; @@ -125,7 +125,7 @@ public class RepositoryEditDescriptionController extends FormBasicController { * @param sourceEntry */ public RepositoryEditDescriptionController(UserRequest ureq, WindowControl wControl, RepositoryEntry entry) { - super(ureq, wControl, "bgrep"); + super(ureq, wControl); setBasePackage(RepositoryService.class); this.repositoryEntry = entry; repoEntryType = repositoryEntry.getOlatResource().getResourceableTypeName(); @@ -138,27 +138,24 @@ public class RepositoryEditDescriptionController extends FormBasicController { @Override protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { - - descCont = FormLayoutContainer.createDefaultFormLayout("desc", getTranslator()); - descCont.setFormContextHelp("Info Page: Add Meta Data"); - descCont.setRootForm(mainForm); - formLayout.add("desc", descCont); + setFormContextHelp("Info Page: Add Meta Data"); + formLayout.setElementCssClass("o_sel_edit_repositoryentry"); String id = repositoryEntry.getResourceableId() == null ? "-" : repositoryEntry.getResourceableId().toString(); - uifactory.addStaticTextElement("cif.id", id, descCont); + uifactory.addStaticTextElement("cif.id", id, formLayout); String externalId = repositoryEntry.getExternalId(); if(StringHelper.containsNonWhitespace(externalId)) { - uifactory.addStaticTextElement("cif.externalid", externalId, descCont); + uifactory.addStaticTextElement("cif.externalid", externalId, formLayout); } String extRef = repositoryEntry.getExternalRef(); if(StringHelper.containsNonWhitespace(repositoryEntry.getManagedFlagsString())) { if(StringHelper.containsNonWhitespace(extRef)) { - uifactory.addStaticTextElement("cif.externalref", extRef, descCont); + uifactory.addStaticTextElement("cif.externalref", extRef, formLayout); } } else { - externalRef = uifactory.addTextElement("cif.externalref", "cif.externalref", 100, extRef, descCont); + externalRef = uifactory.addTextElement("cif.externalref", "cif.externalref", 100, extRef, formLayout); externalRef.setHelpText(translate("cif.externalref.hover")); externalRef.setHelpUrlForManualPage("Info Page#_identification"); externalRef.setDisplaySize(30); @@ -169,7 +166,7 @@ public class RepositoryEditDescriptionController extends FormBasicController { initalAuthor = userManager.getUserDisplayName(initalAuthor); } initalAuthor = StringHelper.escapeHtml(initalAuthor); - uifactory.addStaticTextElement("cif.initialAuthor", initalAuthor, descCont); + uifactory.addStaticTextElement("cif.initialAuthor", initalAuthor, formLayout); // Add resource type String typeName = null; OLATResource res = repositoryEntry.getOlatResource(); @@ -183,23 +180,23 @@ public class RepositoryEditDescriptionController extends FormBasicController { } else { typeDisplay = translate("cif.type.na"); } - uifactory.addStaticTextElement("cif.type", typeDisplay, descCont); + uifactory.addStaticTextElement("cif.type", typeDisplay, formLayout); - uifactory.addSpacerElement("spacer1", descCont, false); + uifactory.addSpacerElement("spacer1", formLayout, false); - displayName = uifactory.addTextElement("cif.displayname", "cif.displayname", 100, repositoryEntry.getDisplayname(), descCont); + displayName = uifactory.addTextElement("cif.displayname", "cif.displayname", 100, repositoryEntry.getDisplayname(), formLayout); displayName.setDisplaySize(30); displayName.setMandatory(true); displayName.setEnabled(!RepositoryEntryManagedFlag.isManaged(repositoryEntry, RepositoryEntryManagedFlag.title)); - authors = uifactory.addTextElement("cif.authors", "cif.authors", 255, repositoryEntry.getAuthors(), descCont); + authors = uifactory.addTextElement("cif.authors", "cif.authors", 255, repositoryEntry.getAuthors(), formLayout); authors.setDisplaySize(60); authors.setVisible(false); - language = uifactory.addTextElement("cif.mainLanguage", "cif.mainLanguage", 16, repositoryEntry.getMainLanguage(), descCont); + language = uifactory.addTextElement("cif.mainLanguage", "cif.mainLanguage", 16, repositoryEntry.getMainLanguage(), formLayout); language.setVisible(false); - location = uifactory.addTextElement("cif.location", "cif.location", 255, repositoryEntry.getLocation(), descCont); + location = uifactory.addTextElement("cif.location", "cif.location", 255, repositoryEntry.getLocation(), formLayout); location.setEnabled(!RepositoryEntryManagedFlag.isManaged(repositoryEntry, RepositoryEntryManagedFlag.location)); location.setVisible(false); @@ -212,11 +209,11 @@ public class RepositoryEditDescriptionController extends FormBasicController { String desc = (repositoryEntry.getDescription() != null ? repositoryEntry.getDescription() : " "); description = uifactory.addRichTextElementForStringData("cif.description", "cif.description", - desc, 10, -1, false, mediaContainer, null, descCont, ureq.getUserSession(), getWindowControl()); + desc, 10, -1, false, mediaContainer, null, formLayout, ureq.getUserSession(), getWindowControl()); description.setEnabled(!RepositoryEntryManagedFlag.isManaged(repositoryEntry, RepositoryEntryManagedFlag.description)); description.getEditorConfiguration().setFileBrowserUploadRelPath("media"); - uifactory.addSpacerElement("spacer2", descCont, false); + uifactory.addSpacerElement("spacer2", formLayout, false); if(CourseModule.getCourseTypeName().equals(repoEntryType)) { String[] dateValues = new String[] { @@ -224,7 +221,7 @@ public class RepositoryEditDescriptionController extends FormBasicController { translate("cif.dates.private"), translate("cif.dates.public") }; - dateTypesEl = uifactory.addRadiosVertical("cif.dates", descCont, dateKeys, dateValues); + dateTypesEl = uifactory.addRadiosVertical("cif.dates", formLayout, dateKeys, dateValues); dateTypesEl.setElementCssClass("o_sel_repo_lifecycle_type"); if(repositoryEntry.getLifecycle() == null) { dateTypesEl.select("none", true); @@ -265,14 +262,14 @@ public class RepositoryEditDescriptionController extends FormBasicController { } publicValues[count++] = sb.toString(); } - publicDatesEl = uifactory.addDropdownSingleselect("cif.public.dates", descCont, publicKeys, publicValues, null); + publicDatesEl = uifactory.addDropdownSingleselect("cif.public.dates", formLayout, publicKeys, publicValues, null); publicDatesEl.setVisible(false); String privateDatePage = velocity_root + "/cycle_dates.html"; privateDatesCont = FormLayoutContainer.createCustomFormLayout("private.date", getTranslator(), privateDatePage); privateDatesCont.setRootForm(mainForm); privateDatesCont.setLabel("cif.private.dates", null); - descCont.add("private.date", privateDatesCont); + formLayout.add("private.date", privateDatesCont); startDateEl = uifactory.addDateChooser("date.start", "cif.date.start", null, privateDatesCont); startDateEl.setElementCssClass("o_sel_repo_lifecycle_validfrom"); @@ -298,22 +295,22 @@ public class RepositoryEditDescriptionController extends FormBasicController { } updateDatesVisibility(); - uifactory.addSpacerElement("spacer3", descCont, false); + uifactory.addSpacerElement("spacer3", formLayout, false); - expenditureOfWork = uifactory.addTextElement("cif.expenditureOfWork", "cif.expenditureOfWork", 100, repositoryEntry.getExpenditureOfWork(), descCont); + expenditureOfWork = uifactory.addTextElement("cif.expenditureOfWork", "cif.expenditureOfWork", 100, repositoryEntry.getExpenditureOfWork(), formLayout); expenditureOfWork.setExampleKey("details.expenditureOfWork.example", null); expenditureOfWork.setVisible(false); String obj = (repositoryEntry.getObjectives() != null ? repositoryEntry.getObjectives() : " "); objectives = uifactory.addRichTextElementForStringData("cif.objectives", "cif.objectives", - obj, 10, -1, false, mediaContainer, null, descCont, ureq.getUserSession(), getWindowControl()); + obj, 10, -1, false, mediaContainer, null, formLayout, ureq.getUserSession(), getWindowControl()); objectives.setEnabled(!RepositoryEntryManagedFlag.isManaged(repositoryEntry, RepositoryEntryManagedFlag.objectives)); objectives.getEditorConfiguration().setFileBrowserUploadRelPath("media"); objectives.setVisible(false); String req = (repositoryEntry.getRequirements() != null ? repositoryEntry.getRequirements() : " "); requirements = uifactory.addRichTextElementForStringData("cif.requirements", "cif.requirements", - req, 10, -1, false, mediaContainer, null, descCont, ureq.getUserSession(), getWindowControl()); + req, 10, -1, false, mediaContainer, null, formLayout, ureq.getUserSession(), getWindowControl()); requirements.setEnabled(!RepositoryEntryManagedFlag.isManaged(repositoryEntry, RepositoryEntryManagedFlag.requirements)); requirements.getEditorConfiguration().setFileBrowserUploadRelPath("media"); requirements.setMaxLength(2000); @@ -321,19 +318,19 @@ public class RepositoryEditDescriptionController extends FormBasicController { String cred = (repositoryEntry.getCredits() != null ? repositoryEntry.getCredits() : " "); credits = uifactory.addRichTextElementForStringData("cif.credits", "cif.credits", - cred, 10, -1, false, mediaContainer, null, descCont, ureq.getUserSession(), getWindowControl()); + cred, 10, -1, false, mediaContainer, null, formLayout, ureq.getUserSession(), getWindowControl()); credits.setEnabled(!RepositoryEntryManagedFlag.isManaged(repositoryEntry, RepositoryEntryManagedFlag.credits)); credits.getEditorConfiguration().setFileBrowserUploadRelPath("media"); credits.setMaxLength(2000); credits.setVisible(false); - uifactory.addSpacerElement("spacer4", descCont, false); + uifactory.addSpacerElement("spacer4", formLayout, false); } //boolean managed = RepositoryEntryManagedFlag.isManaged(repositoryEntry, RepositoryEntryManagedFlag.details); VFSLeaf img = repositoryManager.getImage(repositoryEntry); - fileUpload = uifactory.addFileElement(getWindowControl(), "rentry.pic", "rentry.pic", descCont); + fileUpload = uifactory.addFileElement(getWindowControl(), "rentry.pic", "rentry.pic", formLayout); fileUpload.setExampleKey("rentry.pic.example", new String[] {RepositoryManager.PICTURE_WIDTH + "x" + (RepositoryManager.PICTURE_HEIGHT)}); fileUpload.setMaxUploadSizeKB(picUploadlimitKB, null, null); fileUpload.setPreview(ureq.getUserSession(), true); @@ -347,7 +344,7 @@ public class RepositoryEditDescriptionController extends FormBasicController { fileUpload.limitToMimeType(imageMimeTypes, "cif.error.mimetype", new String[]{ imageMimeTypes.toString()} ); VFSLeaf movie = repositoryService.getIntroductionMovie(repositoryEntry); - movieUpload = uifactory.addFileElement(getWindowControl(), "rentry.movie", "rentry.movie", descCont); + movieUpload = uifactory.addFileElement(getWindowControl(), "rentry.movie", "rentry.movie", formLayout); movieUpload.setExampleKey("rentry.movie.example", new String[] {"3:2"}); movieUpload.setMaxUploadSizeKB(movieUploadlimitKB, null, null); movieUpload.setPreview(ureq.getUserSession(), true); @@ -381,7 +378,6 @@ public class RepositoryEditDescriptionController extends FormBasicController { privateDatesCont.setVisible(true); } } - descCont.setDirty(true); } @Override @@ -608,4 +604,4 @@ public class RepositoryEditDescriptionController extends FormBasicController { public RepositoryEntry getRepositoryEntry() { return repositoryEntry; } -} \ No newline at end of file +} diff --git a/src/main/java/org/olat/repository/ui/author/RepositoryMembersController.java b/src/main/java/org/olat/repository/ui/author/RepositoryMembersController.java index 2a4d75a895e9a4ffd5c26d257146b2eadffada8c..3a1d9b7b2bccb10dc43483c819da2715f7ff0a2e 100644 --- a/src/main/java/org/olat/repository/ui/author/RepositoryMembersController.java +++ b/src/main/java/org/olat/repository/ui/author/RepositoryMembersController.java @@ -187,6 +187,6 @@ public class RepositoryMembersController extends AbstractMemberListController { List<BusinessGroupMembershipChange> allModifications = changes.generateBusinessGroupMembershipChange(members); MailPackage bgMailing = new MailPackage(template, result, getWindowControl().getBusinessControl().getAsString(), template != null); businessGroupService.updateMemberships(getIdentity(), allModifications, bgMailing); - MailHelper.printErrorsAndWarnings(result, getWindowControl(), getLocale()); + MailHelper.printErrorsAndWarnings(result, getWindowControl(), ureq.getUserSession().getRoles().isOLATAdmin(), getLocale()); } } diff --git a/src/main/java/org/olat/repository/ui/author/SendMailController.java b/src/main/java/org/olat/repository/ui/author/SendMailController.java new file mode 100644 index 0000000000000000000000000000000000000000..568791016d6569802f8e797a490e604aff379892 --- /dev/null +++ b/src/main/java/org/olat/repository/ui/author/SendMailController.java @@ -0,0 +1,347 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.repository.ui.author; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +import org.olat.basesecurity.GroupRoles; +import org.olat.core.commons.modules.bc.FileUploadController; +import org.olat.core.gui.UserRequest; +import org.olat.core.gui.components.form.flexible.FormItem; +import org.olat.core.gui.components.form.flexible.FormItemContainer; +import org.olat.core.gui.components.form.flexible.elements.FileElement; +import org.olat.core.gui.components.form.flexible.elements.FormLink; +import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; +import org.olat.core.gui.components.form.flexible.elements.RichTextElement; +import org.olat.core.gui.components.form.flexible.elements.TextElement; +import org.olat.core.gui.components.form.flexible.impl.FormBasicController; +import org.olat.core.gui.components.form.flexible.impl.FormEvent; +import org.olat.core.gui.components.form.flexible.impl.FormLayoutContainer; +import org.olat.core.gui.components.link.Link; +import org.olat.core.gui.control.Controller; +import org.olat.core.gui.control.Event; +import org.olat.core.gui.control.WindowControl; +import org.olat.core.gui.util.CSSHelper; +import org.olat.core.id.Identity; +import org.olat.core.logging.activity.ThreadLocalUserActivityLogger; +import org.olat.core.util.FileUtils; +import org.olat.core.util.StringHelper; +import org.olat.core.util.Util; +import org.olat.core.util.mail.ContactList; +import org.olat.core.util.mail.MailBundle; +import org.olat.core.util.mail.MailContext; +import org.olat.core.util.mail.MailContextImpl; +import org.olat.core.util.mail.MailLoggingAction; +import org.olat.core.util.mail.MailManager; +import org.olat.core.util.mail.MailModule; +import org.olat.core.util.mail.MailerResult; +import org.olat.repository.RepositoryEntryRef; +import org.olat.repository.RepositoryEntryRelationType; +import org.olat.repository.RepositoryService; +import org.olat.user.UserManager; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 27 avr. 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class SendMailController extends FormBasicController { + + private static final String[] onKeys = new String[]{ "on" }; + private static final String[] contactKeys = new String[]{ GroupRoles.owner.name(), GroupRoles.coach.name(), GroupRoles.participant.name() }; + + private RichTextElement bodyEl; + private FileElement attachmentEl; + private TextElement subjectEl; + private MultipleSelectionElement contactEl, copyFromEl; + private FormLayoutContainer uploadCont; + + private int counter = 0; + private long attachmentSize = 0l; + private File attachementTempDir; + private final int contactAttachmentMaxSizeInMb; + private List<Attachment> attachments = new ArrayList<>(); + private final List<? extends RepositoryEntryRef> repoEntries; + + @Autowired + private UserManager userManager; + @Autowired + private MailManager mailService; + @Autowired + private MailModule mailModule; + @Autowired + private RepositoryService repositoryService; + + public SendMailController(UserRequest ureq, WindowControl wControl, List<? extends RepositoryEntryRef> repoEntries) { + super(ureq, wControl); + setTranslator(Util.createPackageTranslator(RepositoryService.class, getLocale(), getTranslator())); + this.repoEntries = repoEntries; + this.contactAttachmentMaxSizeInMb = mailModule.getMaxSizeForAttachement(); + initForm(ureq); + } + + @Override + protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { + String fullName = userManager.getUserDisplayName(getIdentity()); + if(StringHelper.containsNonWhitespace(fullName)) { + fullName = "[" + fullName + "]"; + } + TextElement fromEl = uifactory.addTextElement("from", "contact.from", 255, fullName, formLayout); + fromEl.setEnabled(false); + + String[] contactValues = new String[] { + translate("contact.to.owner"), + translate("contact.to.coach"), + translate("contact.to.participant"), + }; + contactEl = uifactory.addCheckboxesVertical("to", "contact.to", formLayout, contactKeys, contactValues, 1); + + subjectEl = uifactory.addTextElement("subject", "contact.subject", 255, "", formLayout); + subjectEl.setDisplaySize(255); + subjectEl.setMandatory(true); + bodyEl = uifactory.addRichTextElementForStringDataMinimalistic("body", "contact.body", "", 15, 8, formLayout, getWindowControl()); + bodyEl.setMandatory(true); + + attachmentEl = uifactory.addFileElement(getWindowControl(), "file_upload_1", "contact.attachment", formLayout); + attachmentEl.addActionListener(FormEvent.ONCHANGE); + attachmentEl.setExampleKey("contact.attachment.maxsize", new String[]{ Integer.toString(contactAttachmentMaxSizeInMb) }); + + String attachmentPage = velocity_root + "/attachments.html"; + uploadCont = FormLayoutContainer.createCustomFormLayout("file_upload_inner", getTranslator(), attachmentPage); + uploadCont.setRootForm(mainForm); + uploadCont.setVisible(false); + uploadCont.contextPut("attachments", attachments); + formLayout.add(uploadCont); + + copyFromEl = uifactory.addCheckboxesHorizontal("copy.from", "contact.cp.from", formLayout, onKeys, new String[] { "" }); + + FormLayoutContainer buttonGroupLayout = FormLayoutContainer.createButtonLayout("buttonGroupLayout", getTranslator()); + formLayout.add(buttonGroupLayout); + uifactory.addFormCancelButton("cancel", buttonGroupLayout, ureq, getWindowControl()); + uifactory.addFormSubmitButton("tools.send.mail", buttonGroupLayout); + } + + @Override + protected void doDispose() { + if(attachementTempDir != null && attachementTempDir.exists()) { + FileUtils.deleteDirsAndFiles(attachementTempDir, true, true); + } + } + + @Override + protected boolean validateFormLogic(UserRequest ureq) { + boolean allOk = true; + + subjectEl.clearError(); + if(!StringHelper.containsNonWhitespace(subjectEl.getValue())) { + subjectEl.setErrorKey("form.legende.mandatory", null); + allOk &= false; + } + + bodyEl.clearError(); + if(!StringHelper.containsNonWhitespace(bodyEl.getValue())) { + bodyEl.setErrorKey("form.legende.mandatory", null); + allOk &= false; + } + + contactEl.clearError(); + if(contactEl.getSelectedKeys().isEmpty()) { + contactEl.setErrorKey("form.legende.mandatory", null); + allOk &= false; + } + + return allOk & super.validateFormLogic(ureq); + } + + private File[] getAttachments() { + File[] atttachmentArr = new File[attachments.size()]; + for(int i=attachments.size(); i-->0; ) { + atttachmentArr[i] = attachments.get(i).getFile(); + } + return atttachmentArr; + } + + @Override + protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { + if(source == attachmentEl) { + doUploadAttachement(); + } if(source instanceof FormLink) { + FormLink link = (FormLink)source; + String cmd = link.getCmd(); + if("delete".equals(cmd)) { + Attachment attachment = (Attachment)link.getUserObject(); + doDeleteAttachment(attachment); + } + } + super.formInnerEvent(ureq, source, event); + } + + private void doDeleteAttachment(Attachment attachment) { + attachmentSize -= attachment.getFile().length(); + attachment.getFile().delete(); + attachments.remove(attachment); + uploadCont.setVisible(attachments.size() > 0); + uploadCont.setDirty(true); + } + + private void doUploadAttachement() { + if(attachementTempDir == null) { + attachementTempDir = FileUtils.createTempDir("attachements", null, null); + } + + long size = attachmentEl.getUploadSize(); + String filename = attachmentEl.getUploadFileName(); + if(size + attachmentSize > (contactAttachmentMaxSizeInMb * 1024 * 1024)) { + showWarning("contact.attachment,maxsize", Integer.toString(contactAttachmentMaxSizeInMb)); + attachmentEl.reset(); + } else { + File attachment = attachmentEl.moveUploadFileTo(attachementTempDir); + attachmentEl.reset(); + if(attachment == null) { + logError("Could not move contact-form attachment to " + attachementTempDir.getAbsolutePath(), null); + setTranslator(Util.createPackageTranslator(FileUploadController.class, getLocale(), getTranslator())); + showError("FileMoveCopyFailed",""); + } else { + attachmentSize += size; + FormLink removeFile = uifactory.addFormLink("delete_" + (++counter), "delete", "delete", null, uploadCont, Link.LINK); + removeFile.setIconLeftCSS("o_icon o_icon-fw o_icon_delete"); + String css = CSSHelper.createFiletypeIconCssClassFor(filename); + Attachment wrapper = new Attachment(attachment, attachment.getName(), css, removeFile); + removeFile.setUserObject(wrapper); + attachments.add(wrapper); + uploadCont.setVisible(true); + } + } + } + + private void handleAddressException(boolean success) { + StringBuilder error = new StringBuilder(); + if (success) { + error.append(translate("error.msg.send.partially.nok")) + .append("<br />") + .append(translate("error.msg.send.invalid.rcps")); + } else { + error.append(translate("error.msg.send.nok")) + .append("<br />") + .append(translate("error.msg.send.553")); + } + getWindowControl().setError(error.toString()); + } + + @Override + protected void formOK(UserRequest ureq) { + ContactList contactList = new ContactList(""); + Collection<String> roleList = contactEl.getSelectedKeys(); + String[] roles = roleList.toArray(new String[roleList.size()]); + List<Identity> identities = repositoryService.getMembers(repoEntries, RepositoryEntryRelationType.both, roles); + if(identities.isEmpty()) { + showWarning("error.contact.to.empty"); + } else { + Set<Identity> deduplicates = new HashSet<>(identities); + contactList.addAllIdentites(deduplicates); + + boolean success = false; + try { + File[] attachmentArr = getAttachments(); + MailContext context = null; + if(repoEntries.size() == 1) { + context = new MailContextImpl("[RepositoryEntry:" + repoEntries.get(0).getKey() + "]"); + } + MailBundle bundle = new MailBundle(); + bundle.setContext(context); + bundle.setFromId(getIdentity()); + bundle.setContactLists(Collections.singletonList(contactList)); + bundle.setContent(subjectEl.getValue(), bodyEl.getValue(), attachmentArr); + MailerResult result = mailService.sendMessage(bundle); + if(copyFromEl.isAtLeastSelected(1)) { + MailBundle ccBundle = new MailBundle(); + ccBundle.setContext(context); + ccBundle.setFromId(getIdentity()); + ccBundle.setCc(getIdentity()); + ccBundle.setContent(subjectEl.getValue(), bodyEl.getValue(), attachmentArr); + MailerResult ccResult = mailService.sendMessage(ccBundle); + result.append(ccResult); + } + success = result.isSuccessful(); + } catch (Exception e) { + //error in recipient email address(es) + handleAddressException(success); + } + + if (success) { + showInfo("msg.send.ok"); + // do logging + ThreadLocalUserActivityLogger.log(MailLoggingAction.MAIL_SENT, getClass()); + fireEvent(ureq, Event.DONE_EVENT); + } else { + showInfo("error.msg.send.nok"); + fireEvent(ureq, Event.FAILED_EVENT); + } + } + } + + @Override + protected void formCancelled(UserRequest ureq) { + fireEvent(ureq, Event.CANCELLED_EVENT); + } + + public static class Attachment { + + private final File file; + private final String filename; + private final String cssClass; + private final FormLink deleteLink; + + public Attachment(File file, String filename, String cssClass, FormLink deleteLink) { + this.file = file; + this.filename = filename; + this.cssClass = cssClass; + this.deleteLink = deleteLink; + } + + public File getFile() { + return file; + } + + public String getCssClass() { + return cssClass; + } + + public String getFilename() { + return filename; + } + + public FormLink getDeleteLink() { + return deleteLink; + } + + public String getDeleteComponentName() { + return deleteLink.getComponent().getComponentName(); + } + } +} \ No newline at end of file diff --git a/src/main/java/org/olat/repository/ui/author/_content/attachments.html b/src/main/java/org/olat/repository/ui/author/_content/attachments.html new file mode 100644 index 0000000000000000000000000000000000000000..3ae6db278f2b54d25c792a37a62fdba5ed7ba7ec --- /dev/null +++ b/src/main/java/org/olat/repository/ui/author/_content/attachments.html @@ -0,0 +1,6 @@ +<ul class="list-unstyled"> + #foreach ($attachment in $attachments) + <li><i class="o_icon o_icon-fw $attachment.cssClass"> </i> $attachment.filename $r.render(${attachment.getDeleteComponentName()})</li> + #end +</ul> + diff --git a/src/main/java/org/olat/repository/ui/author/_content/catalog_info.html b/src/main/java/org/olat/repository/ui/author/_content/catalog_info.html new file mode 100644 index 0000000000000000000000000000000000000000..1838f2ea6ff3ddb49b909629489cc771cd822cb5 --- /dev/null +++ b/src/main/java/org/olat/repository/ui/author/_content/catalog_info.html @@ -0,0 +1,5 @@ +#if ($hasContent) +<div class="o_info"> +$r.translate("info.catalog.entries") +</div> +#end \ No newline at end of file diff --git a/src/main/java/org/olat/repository/ui/author/_content/entries.html b/src/main/java/org/olat/repository/ui/author/_content/entries.html index 06b129dcb081910c85b9b1910ce185605eb53733..9bd02f0ce2a8e565dd5d9fb1da8e5db4951f2619 100644 --- a/src/main/java/org/olat/repository/ui/author/_content/entries.html +++ b/src/main/java/org/olat/repository/ui/author/_content/entries.html @@ -3,6 +3,9 @@ #end $r.render("table") <div class="o_button_group clearfix"> + #if($r.available("tools.send.mail")) + $r.render("tools.send.mail") + #end #if($r.available("tools.add.owners")) $r.render("tools.add.owners") #end diff --git a/src/main/java/org/olat/repository/ui/author/wizard/UnpublishResourceCallback.java b/src/main/java/org/olat/repository/ui/author/wizard/UnpublishResourceCallback.java index 4f3e301cb60a592a3526f4de15fb16d7a41f9ddb..09b580a1524dd0b4582087fd3e223625cda8f5ec 100644 --- a/src/main/java/org/olat/repository/ui/author/wizard/UnpublishResourceCallback.java +++ b/src/main/java/org/olat/repository/ui/author/wizard/UnpublishResourceCallback.java @@ -102,7 +102,7 @@ public class UnpublishResourceCallback implements StepRunnerCallback { StringBuilder errorMessage = new StringBuilder(); StringBuilder warningMessage = new StringBuilder(); - MailHelper.appendErrorsAndWarnings(result, errorMessage, warningMessage, ureq.getLocale()); + MailHelper.appendErrorsAndWarnings(result, errorMessage, warningMessage, ureq.getUserSession().getRoles().isOLATAdmin(), ureq.getLocale()); if (warningMessage.length() > 0) { wControl.setWarning(warningMessage.toString()); } diff --git a/src/main/java/org/olat/restapi/_spring/restApiContext.xml b/src/main/java/org/olat/restapi/_spring/restApiContext.xml index 8cb6330d16e1a75b4b6175146c37d93a1555ec07..7836d4a86a0f8cf52ffb7866fd78eadddf75c6df 100644 --- a/src/main/java/org/olat/restapi/_spring/restApiContext.xml +++ b/src/main/java/org/olat/restapi/_spring/restApiContext.xml @@ -23,6 +23,7 @@ <value>org.olat.restapi.repository.CatalogWebService</value> <value>org.olat.restapi.repository.RepositoryEntriesResource</value> <value>org.olat.restapi.repository.RepositoryEntryLifecycleWebService</value> + <value>org.olat.restapi.repository.SharedFolderWebService</value> <value>org.olat.restapi.repository.course.CourseWebService</value> <value>org.olat.restapi.repository.course.CoursesWebService</value> <value>org.olat.restapi.repository.course.CoursesInfosWebService</value> diff --git a/src/main/java/org/olat/restapi/api/_content/application.html b/src/main/java/org/olat/restapi/api/_content/application.html index 7ab1d006b29d2612d3cb2b8f1d9343cdb6b844fb..e3988dae15bfe465cf0413fb057ba392ceb1595e 100644 --- a/src/main/java/org/olat/restapi/api/_content/application.html +++ b/src/main/java/org/olat/restapi/api/_content/application.html @@ -200,1515 +200,1629 @@ </p> <ul> <li><a href="#resources">Resources</a><ul> - <li><a href="#d2e2">http://www.example.com/repo/courses/{courseId}/elements/enrollment</a><ul> - <li><a href="#d2e33">http://www.example.com/repo/courses/{courseId}/elements/enrollment/{nodeId}/groups</a></li> + <li><a href="#d2e2">http://www.example.com/groups</a><ul> + <li><a href="#d2e17">http://www.example.com/groups/version</a></li> + <li><a href="#d2e21">http://www.example.com/groups/{groupKey}/owners/{identityKey}</a></li> + <li><a href="#d2e30">http://www.example.com/groups/{groupKey}/news</a></li> + <li><a href="#d2e44">http://www.example.com/groups/{groupKey}</a></li> + <li><a href="#d2e60">http://www.example.com/groups/{groupKey}/configuration</a></li> + <li><a href="#d2e67">http://www.example.com/groups/{groupKey}/infos</a></li> + <li><a href="#d2e73">http://www.example.com/groups/{groupKey}/owners</a></li> + <li><a href="#d2e79">http://www.example.com/groups/{groupKey}/participants</a></li> + <li><a href="#d2e85">http://www.example.com/groups/{groupKey}/participants/{identityKey}</a></li> + <li><a href="#d2e95">http://www.example.com/groups/{groupKey}/forum</a><ul> + <li><a href="#d2e127">http://www.example.com/groups/{groupKey}/forum/threads</a></li> + <li><a href="#d2e236">http://www.example.com/groups/{groupKey}/forum/posts/{threadKey}</a></li> + <li><a href="#d2e277">http://www.example.com/groups/{groupKey}/forum/posts/{messageKey}</a></li> + <li><a href="#d2e389">http://www.example.com/groups/{groupKey}/forum/posts/{messageKey}/attachments</a></li> + <li><a href="#d2e460">http://www.example.com/groups/{groupKey}/forum/posts/{messageKey}/attachments/{filename}</a></li> + </ul> + </li> + <li><a href="#d2e482">http://www.example.com/groups/{groupKey}/wiki</a></li> + <li><a href="#d2e492">http://www.example.com/groups/{groupKey}/folder</a><ul> + <li><a href="#d2e525">http://www.example.com/groups/{groupKey}/folder/{path:.*}</a></li> + <li><a href="#d2e569">http://www.example.com/groups/{groupKey}/folder/version</a></li> + <li><a href="#d2e573">http://www.example.com/groups/{groupKey}/folder/metadata/{path:.*}</a></li> + </ul> + </li> </ul> </li> - <li><a href="#d2e40">http://www.example.com/catalog</a><ul> - <li><a href="#d2e59">http://www.example.com/catalog/{path:.*}/owners/{identityKey}</a></li> - <li><a href="#d2e150">http://www.example.com/catalog/{path:.*}/children</a></li> - <li><a href="#d2e179">http://www.example.com/catalog/version</a></li> - <li><a href="#d2e194">http://www.example.com/catalog/{path:.*}</a></li> - <li><a href="#d2e423">http://www.example.com/catalog/{path:.*}/owners</a></li> + <li><a href="#d2e579">http://www.example.com/registration</a></li> + <li><a href="#d2e613">http://www.example.com/users/{username}/auth</a><ul> + <li><a href="#d2e684">http://www.example.com/users/{username}/auth/{authKey}</a></li> + <li><a href="#d2e712">http://www.example.com/users/{username}/auth/version</a></li> + <li><a href="#d2e729">http://www.example.com/users/{username}/auth/password</a></li> </ul> </li> - <li><a href="#d2e455">http://www.example.com/api</a><ul> - <li><a href="#d2e458">http://www.example.com/api/version</a></li> - <li><a href="#d2e475">http://www.example.com/api/doc</a></li> - <li><a href="#d2e479">http://www.example.com/api/doc/{filename}</a></li> - <li><a href="#d2e490">http://www.example.com/api/{filename}</a></li> - <li><a href="#d2e501">http://www.example.com/api/copyright</a></li> + <li><a href="#d2e765">http://www.example.com/repo/courses/{courseId}/elements/folder</a><ul> + <li><a href="#d2e906">http://www.example.com/repo/courses/{courseId}/elements/folder/{nodeId}</a></li> + <li><a href="#d2e989">http://www.example.com/repo/courses/{courseId}/elements/folder/{nodeId}/files</a><ul> + <li><a href="#d2e1023">http://www.example.com/repo/courses/{courseId}/elements/folder/{nodeId}/files/{path:.*}</a></li> + <li><a href="#d2e1067">http://www.example.com/repo/courses/{courseId}/elements/folder/{nodeId}/files/version</a></li> + <li><a href="#d2e1071">http://www.example.com/repo/courses/{courseId}/elements/folder/{nodeId}/files/metadata/{path:.*}</a></li> + </ul> + </li> </ul> </li> - <li><a href="#d2e520">http://www.example.com/groups</a><ul> - <li><a href="#d2e569">http://www.example.com/groups/version</a></li> - <li><a href="#d2e584">http://www.example.com/groups/{groupKey}</a></li> - <li><a href="#d2e642">http://www.example.com/groups/{groupKey}/configuration</a></li> - <li><a href="#d2e649">http://www.example.com/groups/{groupKey}/infos</a></li> - <li><a href="#d2e671">http://www.example.com/groups/{groupKey}/owners</a></li> - <li><a href="#d2e693">http://www.example.com/groups/{groupKey}/participants</a></li> - <li><a href="#d2e715">http://www.example.com/groups/{groupKey}/owners/{identityKey}</a></li> - <li><a href="#d2e752">http://www.example.com/groups/{groupKey}/participants/{identityKey}</a></li> - <li><a href="#d2e790">http://www.example.com/groups/{groupKey}/forum</a><ul> - <li><a href="#d2e824">http://www.example.com/groups/{groupKey}/forum/threads</a></li> - <li><a href="#d2e933">http://www.example.com/groups/{groupKey}/forum/posts/{threadKey}</a></li> - <li><a href="#d2e974">http://www.example.com/groups/{groupKey}/forum/posts/{messageKey}</a></li> - <li><a href="#d2e1086">http://www.example.com/groups/{groupKey}/forum/posts/{messageKey}/attachments</a></li> - <li><a href="#d2e1157">http://www.example.com/groups/{groupKey}/forum/posts/{messageKey}/attachments/{filename}</a></li> + <li><a href="#d2e1077">http://www.example.com/users/{identityKey}/forums</a><ul> + <li><a href="#d2e1105">http://www.example.com/users/{identityKey}/forums/group/{groupKey}</a><ul> + <li><a href="#d2e1137">http://www.example.com/users/{identityKey}/forums/group/{groupKey}/threads</a></li> + <li><a href="#d2e1246">http://www.example.com/users/{identityKey}/forums/group/{groupKey}/posts/{threadKey}</a></li> + <li><a href="#d2e1287">http://www.example.com/users/{identityKey}/forums/group/{groupKey}/posts/{messageKey}</a></li> + <li><a href="#d2e1399">http://www.example.com/users/{identityKey}/forums/group/{groupKey}/posts/{messageKey}/attachments</a></li> + <li><a href="#d2e1470">http://www.example.com/users/{identityKey}/forums/group/{groupKey}/posts/{messageKey}/attachments/{filename}</a></li> </ul> </li> - <li><a href="#d2e1179">http://www.example.com/groups/{groupKey}/folder</a><ul> - <li><a href="#d2e1212">http://www.example.com/groups/{groupKey}/folder/{path:.*}</a></li> - <li><a href="#d2e1256">http://www.example.com/groups/{groupKey}/folder/version</a></li> - <li><a href="#d2e1260">http://www.example.com/groups/{groupKey}/folder/metadata/{path:.*}</a></li> + <li><a href="#d2e1492">http://www.example.com/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}</a><ul> + <li><a href="#d2e1525">http://www.example.com/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/threads</a></li> + <li><a href="#d2e1634">http://www.example.com/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{threadKey}</a></li> + <li><a href="#d2e1675">http://www.example.com/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{messageKey}</a></li> + <li><a href="#d2e1787">http://www.example.com/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{messageKey}/attachments</a></li> + <li><a href="#d2e1858">http://www.example.com/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{messageKey}/attachments/{filename}</a></li> </ul> </li> - <li><a href="#d2e1266">http://www.example.com/groups/{groupKey}/wiki</a></li> </ul> </li> - <li><a href="#d2e1274">http://www.example.com/repo/courses</a><ul> - <li><a href="#d2e1361">http://www.example.com/repo/courses/version</a></li> - <li><a href="#d2e1376">http://www.example.com/repo/courses/{courseId}</a><ul> - <li><a href="#d2e1423">http://www.example.com/repo/courses/{courseId}/configuration</a></li> - <li><a href="#d2e1503">http://www.example.com/repo/courses/{courseId}/authors</a></li> - <li><a href="#d2e1525">http://www.example.com/repo/courses/{courseId}/version</a></li> - <li><a href="#d2e1540">http://www.example.com/repo/courses/{courseId}/file</a></li> - <li><a href="#d2e1562">http://www.example.com/repo/courses/{courseId}/runstructure</a></li> - <li><a href="#d2e1584">http://www.example.com/repo/courses/{courseId}/editortreemodel</a></li> - <li><a href="#d2e1606">http://www.example.com/repo/courses/{courseId}/authors/{identityKey}</a></li> - <li><a href="#d2e1674">http://www.example.com/repo/courses/{courseId}/tutors/{identityKey}</a></li> - <li><a href="#d2e1699">http://www.example.com/repo/courses/{courseId}/tutors</a></li> - <li><a href="#d2e1721">http://www.example.com/repo/courses/{courseId}/participants</a></li> - <li><a href="#d2e1743">http://www.example.com/repo/courses/{courseId}/participants/{identityKey}</a></li> - <li><a href="#d2e1768">http://www.example.com/repo/courses/{courseId}/resource</a></li> - <li><a href="#d2e1773">http://www.example.com/repo/courses/{courseId}/publish</a></li> - <li><a href="#d2e1806">http://www.example.com/repo/courses/{courseId}/groups</a><ul> - <li><a href="#d2e1848">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}</a></li> - <li><a href="#d2e1909">http://www.example.com/repo/courses/{courseId}/groups/version</a></li> - <li><a href="#d2e1924">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/forum</a><ul> - <li><a href="#d2e1958">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/forum/threads</a></li> - <li><a href="#d2e2067">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{threadKey}</a></li> - <li><a href="#d2e2108">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{messageKey}</a></li> - <li><a href="#d2e2220">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{messageKey}/attachments</a></li> - <li><a href="#d2e2291">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{messageKey}/attachments/{filename}</a></li> - </ul> - </li> - <li><a href="#d2e2313">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/folder</a><ul> - <li><a href="#d2e2346">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/folder/{path:.*}</a></li> - <li><a href="#d2e2390">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/folder/version</a></li> - <li><a href="#d2e2394">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/folder/metadata/{path:.*}</a></li> - </ul> - </li> - </ul> - </li> - <li><a href="#d2e2400">http://www.example.com/repo/courses/{courseId}/calendar</a><ul> - <li><a href="#d2e2401">http://www.example.com/repo/courses/{courseId}/calendar/events</a></li> - <li><a href="#d2e2425">http://www.example.com/repo/courses/{courseId}/calendar/events/{eventId}</a></li> - </ul> - </li> - <li><a href="#d2e2431">http://www.example.com/repo/courses/{courseId}/vitero/{subIdentifier}</a><ul> - <li><a href="#d2e2451">http://www.example.com/repo/courses/{courseId}/vitero/{subIdentifier}/{bookingId}/members</a></li> - <li><a href="#d2e2464">http://www.example.com/repo/courses/{courseId}/vitero/{subIdentifier}/{bookingId}</a></li> - </ul> - </li> + <li><a href="#d2e1880">http://www.example.com/repo/entries</a><ul> + <li><a href="#d2e1900">http://www.example.com/repo/entries/search</a></li> + <li><a href="#d2e1910">http://www.example.com/repo/entries/version</a></li> + <li><a href="#d2e1914">http://www.example.com/repo/entries/{repoEntryKey}</a><ul> + <li><a href="#d2e1935">http://www.example.com/repo/entries/{repoEntryKey}/owners/{identityKey}</a></li> + <li><a href="#d2e1944">http://www.example.com/repo/entries/{repoEntryKey}/participants</a></li> + <li><a href="#d2e1956">http://www.example.com/repo/entries/{repoEntryKey}/participants/{identityKey}</a></li> + <li><a href="#d2e1965">http://www.example.com/repo/entries/{repoEntryKey}/owners</a></li> + <li><a href="#d2e1977">http://www.example.com/repo/entries/{repoEntryKey}/file</a></li> + <li><a href="#d2e1983">http://www.example.com/repo/entries/{repoEntryKey}/status</a></li> + <li><a href="#d2e1993">http://www.example.com/repo/entries/{repoEntryKey}/coaches/{identityKey}</a></li> + <li><a href="#d2e2002">http://www.example.com/repo/entries/{repoEntryKey}/coaches</a></li> </ul> </li> </ul> </li> - <li><a href="#d2e2470">http://www.example.com/ping</a><ul> - <li><a href="#d2e2487">http://www.example.com/ping/version</a></li> - <li><a href="#d2e2502">http://www.example.com/ping/{name}</a></li> + <li><a href="#d2e2014">http://www.example.com/i18n</a><ul> + <li><a href="#d2e2015">http://www.example.com/i18n/version</a></li> + <li><a href="#d2e2019">http://www.example.com/i18n/{package}/{key}</a></li> </ul> </li> - <li><a href="#d2e2518">http://www.example.com/repo/courses/{courseId}/resourcefolders</a><ul> - <li><a href="#d2e2521">http://www.example.com/repo/courses/{courseId}/resourcefolders/version</a></li> - <li><a href="#d2e2536">http://www.example.com/repo/courses/{courseId}/resourcefolders/coursefolder/{path:.*}</a></li> - <li><a href="#d2e2592">http://www.example.com/repo/courses/{courseId}/resourcefolders/coursefolder</a></li> - <li><a href="#d2e2647">http://www.example.com/repo/courses/{courseId}/resourcefolders/sharedfolder</a></li> - <li><a href="#d2e2666">http://www.example.com/repo/courses/{courseId}/resourcefolders/sharedfolder/{path:.*}</a></li> + <li><a href="#d2e2027">http://www.example.com/repo/courses/{resourceKey}/certificates</a><ul> + <li><a href="#d2e2030">http://www.example.com/repo/courses/{resourceKey}/certificates/{identityKey}</a></li> </ul> </li> - <li><a href="#d2e2686">http://www.example.com/auth</a><ul> - <li><a href="#d2e2689">http://www.example.com/auth/{username}</a></li> - <li><a href="#d2e2716">http://www.example.com/auth/version</a></li> + <li><a href="#d2e2122">http://www.example.com/repo/courses/{courseId}/elements/contact</a></li> + <li><a href="#d2e2247">http://www.example.com/openmeetings</a><ul> + <li><a href="#d2e2250">http://www.example.com/openmeetings/{identityToken}/portrait</a></li> </ul> </li> - <li><a href="#d2e2731">http://www.example.com/repo/courses/{courseId}/elements/forum</a><ul> - <li><a href="#d2e2842">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/thread</a></li> - <li><a href="#d2e2890">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/message</a></li> - <li><a href="#d2e2938">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}</a></li> - <li><a href="#d2e2973">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/forum</a><ul> - <li><a href="#d2e3006">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/forum/threads</a></li> - <li><a href="#d2e3115">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{threadKey}</a></li> - <li><a href="#d2e3156">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{messageKey}</a></li> - <li><a href="#d2e3268">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{messageKey}/attachments</a></li> - <li><a href="#d2e3339">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{messageKey}/attachments/{filename}</a></li> + <li><a href="#d2e2269">http://www.example.com/repo/courses/{courseId}/elements/forum</a><ul> + <li><a href="#d2e2380">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}</a></li> + <li><a href="#d2e2415">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/thread</a></li> + <li><a href="#d2e2463">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/message</a></li> + <li><a href="#d2e2511">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/forum</a><ul> + <li><a href="#d2e2544">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/forum/threads</a></li> + <li><a href="#d2e2653">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{threadKey}</a></li> + <li><a href="#d2e2694">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{messageKey}</a></li> + <li><a href="#d2e2806">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{messageKey}/attachments</a></li> + <li><a href="#d2e2877">http://www.example.com/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{messageKey}/attachments/{filename}</a></li> </ul> </li> </ul> </li> - <li><a href="#d2e3361">http://www.example.com/repo/courses/{courseId}/elements/contact</a></li> - <li><a href="#d2e3408">http://www.example.com/repo/courses/{courseId}/elements/folder</a><ul> - <li><a href="#d2e3441">http://www.example.com/repo/courses/{courseId}/elements/folder/{nodeId}</a></li> - <li><a href="#d2e3460">http://www.example.com/repo/courses/{courseId}/elements/folder/{nodeId}/files</a><ul> - <li><a href="#d2e3494">http://www.example.com/repo/courses/{courseId}/elements/folder/{nodeId}/files/{path:.*}</a></li> - <li><a href="#d2e3538">http://www.example.com/repo/courses/{courseId}/elements/folder/{nodeId}/files/version</a></li> - <li><a href="#d2e3542">http://www.example.com/repo/courses/{courseId}/elements/folder/{nodeId}/files/metadata/{path:.*}</a></li> - </ul> - </li> + <li><a href="#d2e2900">http://www.example.com/repo/courses/{courseId}/db/{category}</a><ul> + <li><a href="#d2e2903">http://www.example.com/repo/courses/{courseId}/db/{category}/values/{name}</a></li> + <li><a href="#d2e2987">http://www.example.com/repo/courses/{courseId}/db/{category}/values</a></li> + <li><a href="#d2e3028">http://www.example.com/repo/courses/{courseId}/db/{category}/version</a></li> + <li><a href="#d2e3043">http://www.example.com/repo/courses/{courseId}/db/{category}/values/{name}/delete</a></li> </ul> </li> - <li><a href="#d2e3549">http://www.example.com/system</a><ul> - <li><a href="#d2e3552">http://www.example.com/system/environment</a></li> - <li><a href="#d2e3575">http://www.example.com/system/release</a></li> - <li><a href="#d2e3598">http://www.example.com/system/notifications</a><ul> - <li><a href="#d2e3599">http://www.example.com/system/notifications/status</a></li> - </ul> - </li> - <li><a href="#d2e3648">http://www.example.com/system/log</a><ul> - <li><a href="#d2e3655">http://www.example.com/system/log/version</a></li> - <li><a href="#d2e3670">http://www.example.com/system/log/{date}</a></li> + <li><a href="#d2e3068">http://www.example.com/repo/wikis</a><ul> + <li><a href="#d2e3077">http://www.example.com/repo/wikis/{wikiKey}</a></li> + </ul> + </li> + <li><a href="#d2e3089">http://www.example.com/ping</a><ul> + <li><a href="#d2e3093">http://www.example.com/ping/version</a></li> + <li><a href="#d2e3097">http://www.example.com/ping/{name}</a></li> + </ul> + </li> + <li><a href="#d2e3102">http://www.example.com/system</a><ul> + <li><a href="#d2e3103">http://www.example.com/system/environment</a></li> + <li><a href="#d2e3108">http://www.example.com/system/release</a></li> + <li><a href="#d2e3113">http://www.example.com/system/log</a><ul> + <li><a href="#d2e3118">http://www.example.com/system/log/version</a></li> + <li><a href="#d2e3122">http://www.example.com/system/log/{date}</a></li> </ul> </li> - <li><a href="#d2e3676">http://www.example.com/system/monitoring</a><ul> - <li><a href="#d2e3677">http://www.example.com/system/monitoring/configuration</a></li> - <li><a href="#d2e3700">http://www.example.com/system/monitoring/runtime</a><ul> - <li><a href="#d2e3723">http://www.example.com/system/monitoring/runtime/classes</a></li> - <li><a href="#d2e3746">http://www.example.com/system/monitoring/runtime/memory</a></li> - <li><a href="#d2e3769">http://www.example.com/system/monitoring/runtime/threads</a></li> + <li><a href="#d2e3128">http://www.example.com/system/monitoring</a><ul> + <li><a href="#d2e3129">http://www.example.com/system/monitoring/configuration</a></li> + <li><a href="#d2e3134">http://www.example.com/system/monitoring/status</a></li> + <li><a href="#d2e3139">http://www.example.com/system/monitoring/runtime</a><ul> + <li><a href="#d2e3144">http://www.example.com/system/monitoring/runtime/classes</a></li> + <li><a href="#d2e3149">http://www.example.com/system/monitoring/runtime/memory</a></li> + <li><a href="#d2e3154">http://www.example.com/system/monitoring/runtime/threads</a></li> </ul> </li> - <li><a href="#d2e3792">http://www.example.com/system/monitoring/database</a></li> - <li><a href="#d2e3815">http://www.example.com/system/monitoring/openolat</a><ul> - <li><a href="#d2e3838">http://www.example.com/system/monitoring/openolat/tasks</a></li> - <li><a href="#d2e3861">http://www.example.com/system/monitoring/openolat/users</a></li> - <li><a href="#d2e3884">http://www.example.com/system/monitoring/openolat/sessions</a></li> - <li><a href="#d2e3907">http://www.example.com/system/monitoring/openolat/repository</a></li> - <li><a href="#d2e3930">http://www.example.com/system/monitoring/openolat/indexer</a><ul> - <li><a href="#d2e3953">http://www.example.com/system/monitoring/openolat/indexer/status</a></li> + <li><a href="#d2e3159">http://www.example.com/system/monitoring/database</a></li> + <li><a href="#d2e3164">http://www.example.com/system/monitoring/openolat</a><ul> + <li><a href="#d2e3169">http://www.example.com/system/monitoring/openolat/tasks</a></li> + <li><a href="#d2e3174">http://www.example.com/system/monitoring/openolat/users</a></li> + <li><a href="#d2e3179">http://www.example.com/system/monitoring/openolat/repository</a></li> + <li><a href="#d2e3184">http://www.example.com/system/monitoring/openolat/sessions</a></li> + <li><a href="#d2e3189">http://www.example.com/system/monitoring/openolat/indexer</a><ul> + <li><a href="#d2e3194">http://www.example.com/system/monitoring/openolat/indexer/status</a></li> </ul> </li> </ul> </li> - <li><a href="#d2e4002">http://www.example.com/system/monitoring/memory</a><ul> - <li><a href="#d2e4042">http://www.example.com/system/monitoring/memory/pools</a></li> - <li><a href="#d2e4050">http://www.example.com/system/monitoring/memory/samples</a></li> + <li><a href="#d2e3208">http://www.example.com/system/monitoring/memory</a><ul> + <li><a href="#d2e3216">http://www.example.com/system/monitoring/memory/pools</a></li> + <li><a href="#d2e3224">http://www.example.com/system/monitoring/memory/samples</a></li> </ul> </li> - <li><a href="#d2e4059">http://www.example.com/system/monitoring/threads</a><ul> - <li><a href="#d2e4069">http://www.example.com/system/monitoring/threads/cpu</a></li> + <li><a href="#d2e3233">http://www.example.com/system/monitoring/threads</a><ul> + <li><a href="#d2e3241">http://www.example.com/system/monitoring/threads/cpu</a></li> </ul> </li> </ul> </li> - <li><a href="#d2e4074">http://www.example.com/system/indexer</a><ul> - <li><a href="#d2e4097">http://www.example.com/system/indexer/status</a></li> + <li><a href="#d2e3246">http://www.example.com/system/indexer</a><ul> + <li><a href="#d2e3251">http://www.example.com/system/indexer/status</a></li> + </ul> + </li> + <li><a href="#d2e3265">http://www.example.com/system/notifications</a><ul> + <li><a href="#d2e3266">http://www.example.com/system/notifications/status</a></li> </ul> </li> </ul> </li> - <li><a href="#d2e4146">http://www.example.com/repo/entries</a><ul> - <li><a href="#d2e4214">http://www.example.com/repo/entries/search</a></li> - <li><a href="#d2e4246">http://www.example.com/repo/entries/version</a></li> - <li><a href="#d2e4252">http://www.example.com/repo/entries/{repoEntryKey}</a><ul> - <li><a href="#d2e4322">http://www.example.com/repo/entries/{repoEntryKey}/file</a></li> - <li><a href="#d2e4354">http://www.example.com/repo/entries/{repoEntryKey}/coaches/{identityKey}</a></li> - <li><a href="#d2e4391">http://www.example.com/repo/entries/{repoEntryKey}/coaches</a></li> - <li><a href="#d2e4413">http://www.example.com/repo/entries/{repoEntryKey}/participants</a></li> - <li><a href="#d2e4435">http://www.example.com/repo/entries/{repoEntryKey}/participants/{identityKey}</a></li> - <li><a href="#d2e4473">http://www.example.com/repo/entries/{repoEntryKey}/owners</a></li> - <li><a href="#d2e4495">http://www.example.com/repo/entries/{repoEntryKey}/owners/{identityKey}</a></li> + <li><a href="#d2e3280">http://www.example.com/repo/forums</a><ul> + <li><a href="#d2e3283">http://www.example.com/repo/forums/version</a></li> + <li><a href="#d2e3298">http://www.example.com/repo/forums/{forumKey}</a><ul> + <li><a href="#d2e3332">http://www.example.com/repo/forums/{forumKey}/threads</a></li> + <li><a href="#d2e3441">http://www.example.com/repo/forums/{forumKey}/posts/{threadKey}</a></li> + <li><a href="#d2e3482">http://www.example.com/repo/forums/{forumKey}/posts/{messageKey}</a></li> + <li><a href="#d2e3594">http://www.example.com/repo/forums/{forumKey}/posts/{messageKey}/attachments</a></li> + <li><a href="#d2e3665">http://www.example.com/repo/forums/{forumKey}/posts/{messageKey}/attachments/{filename}</a></li> </ul> </li> </ul> </li> - <li><a href="#d2e4532">http://www.example.com/repo/courses/infos</a><ul> - <li><a href="#d2e4552">http://www.example.com/repo/courses/infos/{courseId}</a></li> + <li><a href="#d2e3687">http://www.example.com/catalog</a><ul> + <li><a href="#d2e3692">http://www.example.com/catalog/{path:.*}/children</a></li> + <li><a href="#d2e3701">http://www.example.com/catalog/{path:.*}/owners/{identityKey}</a></li> + <li><a href="#d2e3713">http://www.example.com/catalog/version</a></li> + <li><a href="#d2e3717">http://www.example.com/catalog/{path:.*}</a></li> + <li><a href="#d2e3768">http://www.example.com/catalog/{path:.*}/owners</a></li> + </ul> + </li> + <li><a href="#d2e3774">http://www.example.com/repo/courses/{courseId}/assessments</a><ul> + <li><a href="#d2e3780">http://www.example.com/repo/courses/{courseId}/assessments/version</a></li> + <li><a href="#d2e3784">http://www.example.com/repo/courses/{courseId}/assessments/users/{identityKey}</a></li> + <li><a href="#d2e3791">http://www.example.com/repo/courses/{courseId}/assessments/{nodeId}</a></li> + <li><a href="#d2e3804">http://www.example.com/repo/courses/{courseId}/assessments/{nodeId}/users/{identityKey}</a></li> </ul> </li> - <li><a href="#d2e4570">http://www.example.com/contacts</a></li> - <li><a href="#d2e4585">http://www.example.com/users/{identityKey}/forums</a><ul> - <li><a href="#d2e4613">http://www.example.com/users/{identityKey}/forums/group/{groupKey}</a><ul> - <li><a href="#d2e4645">http://www.example.com/users/{identityKey}/forums/group/{groupKey}/threads</a></li> - <li><a href="#d2e4754">http://www.example.com/users/{identityKey}/forums/group/{groupKey}/posts/{threadKey}</a></li> - <li><a href="#d2e4795">http://www.example.com/users/{identityKey}/forums/group/{groupKey}/posts/{messageKey}</a></li> - <li><a href="#d2e4907">http://www.example.com/users/{identityKey}/forums/group/{groupKey}/posts/{messageKey}/attachments</a></li> - <li><a href="#d2e4978">http://www.example.com/users/{identityKey}/forums/group/{groupKey}/posts/{messageKey}/attachments/{filename}</a></li> + <li><a href="#d2e3812">http://www.example.com/repo/courses/{courseId}/resourcefolders</a><ul> + <li><a href="#d2e3813">http://www.example.com/repo/courses/{courseId}/resourcefolders/version</a></li> + <li><a href="#d2e3817">http://www.example.com/repo/courses/{courseId}/resourcefolders/sharedfolder/{path:.*}</a></li> + <li><a href="#d2e3826">http://www.example.com/repo/courses/{courseId}/resourcefolders/sharedfolder</a></li> + <li><a href="#d2e3831">http://www.example.com/repo/courses/{courseId}/resourcefolders/coursefolder/{path:.*}</a></li> + <li><a href="#d2e3846">http://www.example.com/repo/courses/{courseId}/resourcefolders/coursefolder</a></li> + </ul> + </li> + <li><a href="#d2e3857">http://www.example.com/contacts</a></li> + <li><a href="#d2e3872">http://www.example.com/users</a><ul> + <li><a href="#d2e3940">http://www.example.com/users/{identityKey}</a></li> + <li><a href="#d2e4041">http://www.example.com/users/{identityKey}/status</a></li> + <li><a href="#d2e4104">http://www.example.com/users/{identityKey}/roles</a></li> + <li><a href="#d2e4167">http://www.example.com/users/version</a></li> + <li><a href="#d2e4184">http://www.example.com/users/managed</a></li> + <li><a href="#d2e4189">http://www.example.com/users/{identityKey}/preferences</a></li> + <li><a href="#d2e4252">http://www.example.com/users/{identityKey}/portrait</a></li> + <li><a href="#d2e4322">http://www.example.com/users/{identityKey}/portrait/{size}</a></li> + <li><a href="#d2e4341">http://www.example.com/users/{identityKey}/folders</a><ul> + <li><a href="#d2e4367">http://www.example.com/users/{identityKey}/folders/personal</a><ul> + <li><a href="#d2e4399">http://www.example.com/users/{identityKey}/folders/personal/{path:.*}</a></li> + <li><a href="#d2e4443">http://www.example.com/users/{identityKey}/folders/personal/version</a></li> + <li><a href="#d2e4447">http://www.example.com/users/{identityKey}/folders/personal/metadata/{path:.*}</a></li> + </ul> + </li> + <li><a href="#d2e4453">http://www.example.com/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}</a><ul> + <li><a href="#d2e4487">http://www.example.com/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}/{path:.*}</a></li> + <li><a href="#d2e4531">http://www.example.com/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}/version</a></li> + <li><a href="#d2e4535">http://www.example.com/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}/metadata/{path:.*}</a></li> + </ul> + </li> + <li><a href="#d2e4541">http://www.example.com/users/{identityKey}/folders/group/{groupKey}</a><ul> + <li><a href="#d2e4574">http://www.example.com/users/{identityKey}/folders/group/{groupKey}/{path:.*}</a></li> + <li><a href="#d2e4618">http://www.example.com/users/{identityKey}/folders/group/{groupKey}/version</a></li> + <li><a href="#d2e4622">http://www.example.com/users/{identityKey}/folders/group/{groupKey}/metadata/{path:.*}</a></li> + </ul> + </li> </ul> </li> - <li><a href="#d2e5000">http://www.example.com/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}</a><ul> - <li><a href="#d2e5033">http://www.example.com/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/threads</a></li> - <li><a href="#d2e5142">http://www.example.com/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{threadKey}</a></li> - <li><a href="#d2e5183">http://www.example.com/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{messageKey}</a></li> - <li><a href="#d2e5295">http://www.example.com/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{messageKey}/attachments</a></li> - <li><a href="#d2e5366">http://www.example.com/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{messageKey}/attachments/{filename}</a></li> + <li><a href="#d2e4628">http://www.example.com/users/{identityKey}/courses</a><ul> + <li><a href="#d2e4630">http://www.example.com/users/{identityKey}/courses/my</a></li> + <li><a href="#d2e4660">http://www.example.com/users/{identityKey}/courses/teached</a></li> + <li><a href="#d2e4690">http://www.example.com/users/{identityKey}/courses/favorite</a></li> + </ul> + </li> + <li><a href="#d2e4720">http://www.example.com/users/{identityKey}/groups</a><ul> + <li><a href="#d2e4731">http://www.example.com/users/{identityKey}/groups/owner</a></li> + <li><a href="#d2e4741">http://www.example.com/users/{identityKey}/groups/participant</a></li> + <li><a href="#d2e4751">http://www.example.com/users/{identityKey}/groups/infos</a></li> </ul> </li> </ul> </li> - <li><a href="#d2e5388">http://www.example.com/repo/lifecycle</a></li> - <li><a href="#d2e5405">http://www.example.com/users</a><ul> - <li><a href="#d2e5473">http://www.example.com/users/{identityKey}</a></li> - <li><a href="#d2e5574">http://www.example.com/users/managed</a></li> - <li><a href="#d2e5579">http://www.example.com/users/{identityKey}/roles</a></li> - <li><a href="#d2e5642">http://www.example.com/users/{identityKey}/status</a></li> - <li><a href="#d2e5705">http://www.example.com/users/{identityKey}/preferences</a></li> - <li><a href="#d2e5768">http://www.example.com/users/{identityKey}/portrait</a></li> - <li><a href="#d2e5823">http://www.example.com/users/version</a></li> - <li><a href="#d2e5840">http://www.example.com/users/{identityKey}/folders</a><ul> - <li><a href="#d2e5866">http://www.example.com/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}</a><ul> - <li><a href="#d2e5900">http://www.example.com/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}/{path:.*}</a></li> - <li><a href="#d2e5944">http://www.example.com/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}/version</a></li> - <li><a href="#d2e5948">http://www.example.com/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}/metadata/{path:.*}</a></li> + <li><a href="#d2e4761">http://www.example.com/pwchange</a></li> + <li><a href="#d2e4771">http://www.example.com/repo/courses</a><ul> + <li><a href="#d2e4816">http://www.example.com/repo/courses/version</a></li> + <li><a href="#d2e4820">http://www.example.com/repo/courses/{courseId}</a><ul> + <li><a href="#d2e4830">http://www.example.com/repo/courses/{courseId}/configuration</a></li> + <li><a href="#d2e4848">http://www.example.com/repo/courses/{courseId}/version</a></li> + <li><a href="#d2e4852">http://www.example.com/repo/courses/{courseId}/tutors</a></li> + <li><a href="#d2e4863">http://www.example.com/repo/courses/{courseId}/participants</a></li> + <li><a href="#d2e4874">http://www.example.com/repo/courses/{courseId}/participants/{identityKey}</a></li> + <li><a href="#d2e4879">http://www.example.com/repo/courses/{courseId}/authors</a></li> + <li><a href="#d2e4890">http://www.example.com/repo/courses/{courseId}/resource</a></li> + <li><a href="#d2e4895">http://www.example.com/repo/courses/{courseId}/publish</a></li> + <li><a href="#d2e4905">http://www.example.com/repo/courses/{courseId}/file</a></li> + <li><a href="#d2e4910">http://www.example.com/repo/courses/{courseId}/status</a></li> + <li><a href="#d2e4918">http://www.example.com/repo/courses/{courseId}/runstructure</a></li> + <li><a href="#d2e4922">http://www.example.com/repo/courses/{courseId}/editortreemodel</a></li> + <li><a href="#d2e4926">http://www.example.com/repo/courses/{courseId}/authors/{identityKey}</a></li> + <li><a href="#d2e4939">http://www.example.com/repo/courses/{courseId}/tutors/{identityKey}</a></li> + <li><a href="#d2e4944">http://www.example.com/repo/courses/{courseId}/groups</a><ul> + <li><a href="#d2e4956">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}</a></li> + <li><a href="#d2e4969">http://www.example.com/repo/courses/{courseId}/groups/version</a></li> + <li><a href="#d2e4973">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/forum</a><ul> + <li><a href="#d2e5005">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/forum/threads</a></li> + <li><a href="#d2e5114">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{threadKey}</a></li> + <li><a href="#d2e5155">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{messageKey}</a></li> + <li><a href="#d2e5267">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{messageKey}/attachments</a></li> + <li><a href="#d2e5338">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{messageKey}/attachments/{filename}</a></li> + </ul> + </li> + <li><a href="#d2e5360">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/folder</a><ul> + <li><a href="#d2e5393">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/folder/{path:.*}</a></li> + <li><a href="#d2e5437">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/folder/version</a></li> + <li><a href="#d2e5441">http://www.example.com/repo/courses/{courseId}/groups/{groupKey}/folder/metadata/{path:.*}</a></li> + </ul> + </li> + </ul> + </li> + <li><a href="#d2e5447">http://www.example.com/repo/courses/{courseId}/calendar</a><ul> + <li><a href="#d2e5450">http://www.example.com/repo/courses/{courseId}/calendar/events/{eventId}</a></li> + <li><a href="#d2e5456">http://www.example.com/repo/courses/{courseId}/calendar/event</a></li> + <li><a href="#d2e5472">http://www.example.com/repo/courses/{courseId}/calendar/events</a></li> </ul> </li> - <li><a href="#d2e5954">http://www.example.com/users/{identityKey}/folders/group/{groupKey}</a><ul> - <li><a href="#d2e5987">http://www.example.com/users/{identityKey}/folders/group/{groupKey}/{path:.*}</a></li> - <li><a href="#d2e6031">http://www.example.com/users/{identityKey}/folders/group/{groupKey}/version</a></li> - <li><a href="#d2e6035">http://www.example.com/users/{identityKey}/folders/group/{groupKey}/metadata/{path:.*}</a></li> + <li><a href="#d2e5495">http://www.example.com/repo/courses/{courseId}/vitero/{subIdentifier}</a><ul> + <li><a href="#d2e5553">http://www.example.com/repo/courses/{courseId}/vitero/{subIdentifier}/{bookingId}/members</a></li> + <li><a href="#d2e5592">http://www.example.com/repo/courses/{courseId}/vitero/{subIdentifier}/{bookingId}</a></li> </ul> </li> - <li><a href="#d2e6041">http://www.example.com/users/{identityKey}/folders/personal</a><ul> - <li><a href="#d2e6073">http://www.example.com/users/{identityKey}/folders/personal/{path:.*}</a></li> - <li><a href="#d2e6117">http://www.example.com/users/{identityKey}/folders/personal/version</a></li> - <li><a href="#d2e6121">http://www.example.com/users/{identityKey}/folders/personal/metadata/{path:.*}</a></li> + <li><a href="#d2e5603">http://www.example.com/repo/courses/{courseId}/gotomeeting/{subIdentifier}</a><ul> + <li><a href="#d2e5607">http://www.example.com/repo/courses/{courseId}/gotomeeting/{subIdentifier}/trainings</a></li> + <li><a href="#d2e5662">http://www.example.com/repo/courses/{courseId}/gotomeeting/{subIdentifier}//trainings/{trainingKey}</a></li> </ul> </li> </ul> </li> - <li><a href="#d2e6128">http://www.example.com/users/{identityKey}/courses</a><ul> - <li><a href="#d2e6130">http://www.example.com/users/{identityKey}/courses/my</a></li> - <li><a href="#d2e6160">http://www.example.com/users/{identityKey}/courses/teached</a></li> - <li><a href="#d2e6190">http://www.example.com/users/{identityKey}/courses/favorite</a></li> + </ul> + </li> + <li><a href="#d2e5673">http://www.example.com/users/{identityKey}/calendars</a><ul> + <li><a href="#d2e5679">http://www.example.com/users/{identityKey}/calendars/events</a></li> + <li><a href="#d2e5689">http://www.example.com/users/{identityKey}/calendars/{calendarId}</a><ul> + <li><a href="#d2e5694">http://www.example.com/users/{identityKey}/calendars/{calendarId}/events/{eventId}</a></li> + <li><a href="#d2e5700">http://www.example.com/users/{identityKey}/calendars/{calendarId}/event</a></li> + <li><a href="#d2e5716">http://www.example.com/users/{identityKey}/calendars/{calendarId}/events</a></li> </ul> </li> - <li><a href="#d2e6220">http://www.example.com/users/{identityKey}/groups</a><ul> - <li><a href="#d2e6259">http://www.example.com/users/{identityKey}/groups/owner</a></li> - <li><a href="#d2e6295">http://www.example.com/users/{identityKey}/groups/participant</a></li> - <li><a href="#d2e6331">http://www.example.com/users/{identityKey}/groups/infos</a></li> + </ul> + </li> + <li><a href="#d2e5739">http://www.example.com/api</a><ul> + <li><a href="#d2e5740">http://www.example.com/api/version</a></li> + <li><a href="#d2e5744">http://www.example.com/api/doc</a></li> + <li><a href="#d2e5748">http://www.example.com/api/doc/{filename}</a></li> + <li><a href="#d2e5753">http://www.example.com/api/{filename}</a></li> + <li><a href="#d2e5758">http://www.example.com/api/copyright</a></li> + </ul> + </li> + <li><a href="#d2e5766">http://www.example.com/auth</a><ul> + <li><a href="#d2e5767">http://www.example.com/auth/{username}</a></li> + <li><a href="#d2e5776">http://www.example.com/auth/version</a></li> + </ul> + </li> + <li><a href="#d2e5780">http://www.example.com/vitero</a><ul> + <li><a href="#d2e5783">http://www.example.com/vitero/{resourceName}/{resourceId}/{subIdentifier}</a><ul> + <li><a href="#d2e5843">http://www.example.com/vitero/{resourceName}/{resourceId}/{subIdentifier}/{bookingId}/members</a></li> + <li><a href="#d2e5882">http://www.example.com/vitero/{resourceName}/{resourceId}/{subIdentifier}/{bookingId}</a></li> </ul> </li> </ul> </li> - <li><a href="#d2e6367">http://www.example.com/repo/forums</a><ul> - <li><a href="#d2e6370">http://www.example.com/repo/forums/version</a></li> - <li><a href="#d2e6385">http://www.example.com/repo/forums/{forumKey}</a><ul> - <li><a href="#d2e6419">http://www.example.com/repo/forums/{forumKey}/threads</a></li> - <li><a href="#d2e6528">http://www.example.com/repo/forums/{forumKey}/posts/{threadKey}</a></li> - <li><a href="#d2e6569">http://www.example.com/repo/forums/{forumKey}/posts/{messageKey}</a></li> - <li><a href="#d2e6681">http://www.example.com/repo/forums/{forumKey}/posts/{messageKey}/attachments</a></li> - <li><a href="#d2e6752">http://www.example.com/repo/forums/{forumKey}/posts/{messageKey}/attachments/{filename}</a></li> + <li><a href="#d2e5893">http://www.example.com/repo/lifecycle</a></li> + <li><a href="#d2e5898">http://www.example.com/repo/sharedfolder</a><ul> + <li><a href="#d2e5899">http://www.example.com/repo/sharedfolder/version</a></li> + <li><a href="#d2e5903">http://www.example.com/repo/sharedfolder/{repoEntryKey}/{path:.*}</a></li> + <li><a href="#d2e5909">http://www.example.com/repo/sharedfolder/{repoEntryKey}</a></li> + <li><a href="#d2e5914">http://www.example.com/repo/sharedfolder/{repoEntryKey}/files</a><ul> + <li><a href="#d2e5947">http://www.example.com/repo/sharedfolder/{repoEntryKey}/files/{path:.*}</a></li> + <li><a href="#d2e5991">http://www.example.com/repo/sharedfolder/{repoEntryKey}/files/version</a></li> + <li><a href="#d2e5995">http://www.example.com/repo/sharedfolder/{repoEntryKey}/files/metadata/{path:.*}</a></li> </ul> </li> </ul> </li> - <li><a href="#d2e6774">http://www.example.com/users/{username}/auth</a><ul> - <li><a href="#d2e6833">http://www.example.com/users/{username}/auth/{authKey}</a></li> - <li><a href="#d2e6861">http://www.example.com/users/{username}/auth/password</a></li> - <li><a href="#d2e6897">http://www.example.com/users/{username}/auth/version</a></li> + <li><a href="#d2e6001">http://www.example.com/notifications</a><ul> + <li><a href="#d2e6033">http://www.example.com/notifications/subscribers/{subscriberKey}</a></li> + <li><a href="#d2e6038">http://www.example.com/notifications/subscribers</a></li> + <li><a href="#d2e6045">http://www.example.com/notifications/subscribers/{ressourceName}/{ressourceId}/{subIdentifier}</a></li> </ul> </li> - <li><a href="#d2e6914">http://www.example.com/i18n</a><ul> - <li><a href="#d2e6917">http://www.example.com/i18n/version</a></li> - <li><a href="#d2e6932">http://www.example.com/i18n/{package}/{key}</a></li> + <li><a href="#d2e6053">http://www.example.com/repo/courses/{courseId}/elements</a><ul> + <li><a href="#d2e6054">http://www.example.com/repo/courses/{courseId}/elements/version</a></li> + <li><a href="#d2e6058">http://www.example.com/repo/courses/{courseId}/elements/structure/{nodeId}</a></li> + <li><a href="#d2e6065">http://www.example.com/repo/courses/{courseId}/elements/structure</a></li> + <li><a href="#d2e6084">http://www.example.com/repo/courses/{courseId}/elements/singlepage/{nodeId}</a></li> + <li><a href="#d2e6091">http://www.example.com/repo/courses/{courseId}/elements/singlepage</a></li> + <li><a href="#d2e6130">http://www.example.com/repo/courses/{courseId}/elements/task/{nodeId}</a></li> + <li><a href="#d2e6146">http://www.example.com/repo/courses/{courseId}/elements/task</a></li> + <li><a href="#d2e6177">http://www.example.com/repo/courses/{courseId}/elements/test/{nodeId}</a></li> + <li><a href="#d2e6192">http://www.example.com/repo/courses/{courseId}/elements/test</a></li> + <li><a href="#d2e6221">http://www.example.com/repo/courses/{courseId}/elements/assessment/{nodeId}</a></li> + <li><a href="#d2e6235">http://www.example.com/repo/courses/{courseId}/elements/assessment</a></li> + <li><a href="#d2e6263">http://www.example.com/repo/courses/{courseId}/elements/wiki/{nodeId}</a></li> + <li><a href="#d2e6278">http://www.example.com/repo/courses/{courseId}/elements/wiki</a></li> + <li><a href="#d2e6306">http://www.example.com/repo/courses/{courseId}/elements/blog/{nodeId}</a></li> + <li><a href="#d2e6321">http://www.example.com/repo/courses/{courseId}/elements/blog</a></li> + <li><a href="#d2e6349">http://www.example.com/repo/courses/{courseId}/elements/survey</a></li> + <li><a href="#d2e6377">http://www.example.com/repo/courses/{courseId}/elements/survey/{nodeId}</a></li> + <li><a href="#d2e6392">http://www.example.com/repo/courses/{courseId}/elements/externalpage/{nodeId}</a></li> + <li><a href="#d2e6407">http://www.example.com/repo/courses/{courseId}/elements/externalpage</a></li> + <li><a href="#d2e6435">http://www.example.com/repo/courses/{courseId}/elements/task/{nodeId}/file</a></li> + <li><a href="#d2e6446">http://www.example.com/repo/courses/{courseId}/elements/task/{nodeId}/configuration</a></li> + <li><a href="#d2e6517">http://www.example.com/repo/courses/{courseId}/elements/survey/{nodeId}/configuration</a></li> + <li><a href="#d2e6549">http://www.example.com/repo/courses/{courseId}/elements/test/{nodeId}/configuration</a></li> + <li><a href="#d2e6602">http://www.example.com/repo/courses/{courseId}/elements/{nodeId}</a></li> </ul> </li> - <li><a href="#d2e6957">http://www.example.com/repo/courses/{courseId}/elements</a><ul> - <li><a href="#d2e6960">http://www.example.com/repo/courses/{courseId}/elements/version</a></li> - <li><a href="#d2e6975">http://www.example.com/repo/courses/{courseId}/elements/{nodeId}</a></li> - <li><a href="#d2e7010">http://www.example.com/repo/courses/{courseId}/elements/structure/{nodeId}</a></li> - <li><a href="#d2e7035">http://www.example.com/repo/courses/{courseId}/elements/structure</a></li> - <li><a href="#d2e7102">http://www.example.com/repo/courses/{courseId}/elements/singlepage/{nodeId}</a></li> - <li><a href="#d2e7133">http://www.example.com/repo/courses/{courseId}/elements/singlepage</a></li> - <li><a href="#d2e7268">http://www.example.com/repo/courses/{courseId}/elements/task/{nodeId}</a></li> - <li><a href="#d2e7326">http://www.example.com/repo/courses/{courseId}/elements/task</a></li> - <li><a href="#d2e7443">http://www.example.com/repo/courses/{courseId}/elements/test/{nodeId}</a></li> - <li><a href="#d2e7482">http://www.example.com/repo/courses/{courseId}/elements/test</a></li> - <li><a href="#d2e7594">http://www.example.com/repo/courses/{courseId}/elements/assessment/{nodeId}</a></li> - <li><a href="#d2e7640">http://www.example.com/repo/courses/{courseId}/elements/assessment</a></li> - <li><a href="#d2e7733">http://www.example.com/repo/courses/{courseId}/elements/wiki/{nodeId}</a></li> - <li><a href="#d2e7782">http://www.example.com/repo/courses/{courseId}/elements/wiki</a></li> - <li><a href="#d2e7846">http://www.example.com/repo/courses/{courseId}/elements/blog/{nodeId}</a></li> - <li><a href="#d2e7895">http://www.example.com/repo/courses/{courseId}/elements/blog</a></li> - <li><a href="#d2e7993">http://www.example.com/repo/courses/{courseId}/elements/survey/{nodeId}</a></li> - <li><a href="#d2e8042">http://www.example.com/repo/courses/{courseId}/elements/survey</a></li> - <li><a href="#d2e8118">http://www.example.com/repo/courses/{courseId}/elements/externalpage/{nodeId}</a></li> - <li><a href="#d2e8167">http://www.example.com/repo/courses/{courseId}/elements/externalpage</a></li> - <li><a href="#d2e8269">http://www.example.com/repo/courses/{courseId}/elements/task/{nodeId}/file</a></li> - <li><a href="#d2e8339">http://www.example.com/repo/courses/{courseId}/elements/task/{nodeId}/configuration</a></li> - <li><a href="#d2e8486">http://www.example.com/repo/courses/{courseId}/elements/survey/{nodeId}/configuration</a></li> - <li><a href="#d2e8593">http://www.example.com/repo/courses/{courseId}/elements/test/{nodeId}/configuration</a></li> + <li><a href="#d2e6609">http://www.example.com/repo/courses/infos</a><ul> + <li><a href="#d2e6617">http://www.example.com/repo/courses/infos/{courseId}</a></li> </ul> </li> - <li><a href="#d2e8723">http://www.example.com/notifications</a></li> - <li><a href="#d2e8755">http://www.example.com/repo/courses/{courseId}/assessments</a><ul> - <li><a href="#d2e8783">http://www.example.com/repo/courses/{courseId}/assessments/version</a></li> - <li><a href="#d2e8798">http://www.example.com/repo/courses/{courseId}/assessments/users/{identityKey}</a></li> - <li><a href="#d2e8827">http://www.example.com/repo/courses/{courseId}/assessments/{nodeId}</a></li> - <li><a href="#d2e8874">http://www.example.com/repo/courses/{courseId}/assessments/{nodeId}/users/{identityKey}</a></li> + <li><a href="#d2e6623">http://www.example.com/repo/courses/{courseId}/elements/enrollment</a><ul> + <li><a href="#d2e6742">http://www.example.com/repo/courses/{courseId}/elements/enrollment/{nodeId}/groups</a></li> </ul> </li> </ul> </li> <li><a href="#representations">Representations</a><ul> - <li><a href="#d2e16">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e17">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e20">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e31">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e32">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e38">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e39">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e49">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e72"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e78">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e91"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e100"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e106">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e119"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e128"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e134">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e147"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e163"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e169">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e184">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e204">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e217"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e224">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e225">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e229"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e235">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e248"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e270"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e276">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e289"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e296">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e309"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e315">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e328"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e336">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e337">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e341"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e347">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e360"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e373"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e379">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e392"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e401"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e407">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e420"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e433"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e439">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e452"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e465">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e478">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e487">image/jpeg<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e498">image/jpeg<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e508">text/html, application/xhtml+xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e517">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e527">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> - <li><a href="#d2e528">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> - <li><a href="#d2e530"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e534">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - <li><a href="#d2e545"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e559">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - <li><a href="#d2e574">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e592">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - <li><a href="#d2e606">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> - <li><a href="#d2e607">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> - <li><a href="#d2e609"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e613">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - <li><a href="#d2e624"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e631"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e635"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e639"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e646">*/* (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> - <li><a href="#d2e648">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e657"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e661">application/xml, application/json (<abbr title="{http://www.example.com} groupInfoVO">ns3:groupInfoVO</abbr>)</a></li> - <li><a href="#d2e679"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e683">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e701"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e705">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e726"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e730"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e734"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e741"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e745"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e749"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e763"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e767"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e771"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e778"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e782"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e786"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e802"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e808">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> - <li><a href="#d2e821"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e840"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e846">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - <li><a href="#d2e859"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e878"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e884">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e5">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e6">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e8">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e9">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e15">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e16">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e20">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e26">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e29">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e34">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e37">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e40">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e43">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e48">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e49">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e52">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e53">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e55">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e56">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e59">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e64">*/* (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e66">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e71">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e72">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e77">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e78">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e83">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e84">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e90">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e93">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e105">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + <li><a href="#d2e118"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e124"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e143">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e156"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e162"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e181">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e194"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e200"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e207">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e214">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e227"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e233"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e255">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e268"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e274"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e285">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e298">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e311"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e317"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e324">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e325">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e329">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e342"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e348"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e367">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e380"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e386"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e399">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e405"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e412">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e418">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e424"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e431">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e432">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e436">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e442"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e451">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e457"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e473">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e479"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e490">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e491">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e496">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e497">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e498">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e499">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e500">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e503">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e504">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e507">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e512">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e513">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e516">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e517">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e520">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e521">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e523">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e524">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e529">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e530">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e531">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e532">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e533">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e536">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e537">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e538">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e541">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e546">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e547">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e548">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e551">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e552">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e553">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e556">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e557">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e559">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e560">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e563">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e564">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e567">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e568">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e572">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e577">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e578">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e590"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e594"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e601">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e606"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e610"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e623">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">authenticationVO</abbr>)</a></li> + <li><a href="#d2e624">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">authenticationVO</abbr>)</a></li> + <li><a href="#d2e628">application/xml, application/json (<abbr title="{http://www.example.com} authenticationVO">ns3:authenticationVO</abbr>)</a></li> + <li><a href="#d2e641"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e647"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e653"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e659"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e666">application/xml, application/json (<abbr title="{http://www.example.com} authenticationVO">ns3:authenticationVO</abbr>)</a></li> + <li><a href="#d2e677"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e681"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e697"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e703"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e709"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e719">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e737">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e744"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e750"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e756"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e762"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e777">application/xml, application/json (<abbr title="{http://www.example.com} folderVOes">ns3:folderVOes</abbr>)</a></li> + <li><a href="#d2e790"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e796"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e830">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e843"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e849"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e856">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e884">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> <li><a href="#d2e897"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e904">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e911"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e917">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e930"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e903"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e917">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e939">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> <li><a href="#d2e952"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e958">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - <li><a href="#d2e971"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e982">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e995"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1001">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e1014"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1021">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e1022">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e1026"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1032">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e1045"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1064"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1070">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e1083"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1096"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1102">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1109">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1115"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1121">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1128">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e1129">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e1133"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1139">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1148"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1154">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1170"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1176">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1183">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1184">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1185">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1186">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1187">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1190">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1191">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1194">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1199">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1200">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1203">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1204">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1207">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e1208">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e1210">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1211">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1216">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1217">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1218">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1219">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1220">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1223">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1224">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1225">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1228">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1233">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1234">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1235">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1238">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1239">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1240">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1243">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e1244">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e1246">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1247">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1250">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1251">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1254">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1255">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1259">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1264">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1265">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1272">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1273">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1288">application/xml, application/json, application/json;pagingspec=1.0 (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - <li><a href="#d2e1302">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">courseVO</abbr>)</a></li> - <li><a href="#d2e1303">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">courseVO</abbr>)</a></li> - <li><a href="#d2e1307">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - <li><a href="#d2e1320"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1341">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - <li><a href="#d2e1354"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1359">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1360">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1366">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1386"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1392"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1398"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1407"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1413">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - <li><a href="#d2e1433"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1439">application/xml, application/json (<abbr title="{http://www.example.com} courseConfigVO">ns3:courseConfigVO</abbr>)</a></li> + <li><a href="#d2e958"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e967">application/xml, application/json (<abbr title="{http://www.example.com} folderVO">ns3:folderVO</abbr>)</a></li> + <li><a href="#d2e980"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e986"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e994">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e995">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e996">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e997">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e998">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1001">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1002">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1005">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1010">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1011">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1014">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1015">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1018">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1019">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1021">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1022">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1027">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1028">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1029">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1030">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1031">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1034">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1035">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1036">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1039">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1044">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1045">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1046">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1049">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1050">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1051">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1054">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1055">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1057">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1058">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1061">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1062">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1065">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1066">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1070">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1075">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1076">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1089">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + <li><a href="#d2e1102"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1115">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + <li><a href="#d2e1128"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1134"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1153">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e1166"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1172"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1191">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1204"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1210"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1217">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1224">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1237"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1243"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1265">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e1278"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1284"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1295">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1308">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1321"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1327"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1334">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e1335">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e1339">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1352"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1358"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1377">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1390"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1396"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1409">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1415"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1422">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1428">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1434"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1441">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1442">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1446">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e1452"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1459">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1481"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1487">application/xml, application/json (<abbr title="{http://www.example.com} courseConfigVO">ns3:courseConfigVO</abbr>)</a></li> - <li><a href="#d2e1500"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1510"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1516">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e1461">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1467"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1483">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1489"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1503">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + <li><a href="#d2e1516"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e1522"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1530">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1547"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1553">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1559"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1569"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1575">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1581"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1591"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1597">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1603"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1616"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1622">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e1628"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1637"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1643"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1649"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1658"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1664"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1670"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1684"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1690"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1696"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1706"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1712">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e1718"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1728"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1734">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e1541">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e1554"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1560"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1579">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1592"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1598"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1605">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1612">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1625"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1631"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1653">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e1666"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1672"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1683">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1696">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1709"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1715"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1722">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e1723">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e1727">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> <li><a href="#d2e1740"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1753"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1759"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1771">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1772">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1746"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1765">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1778"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e1784"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1790">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> + <li><a href="#d2e1797">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e1803"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1813"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1817">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - <li><a href="#d2e1831">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> - <li><a href="#d2e1832">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> - <li><a href="#d2e1834">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - <li><a href="#d2e1845"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1856"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1860">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - <li><a href="#d2e1874"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1878"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1882"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1889">*/* (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> - <li><a href="#d2e1891"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1895">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - <li><a href="#d2e1906"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1914">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1936"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1942">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> - <li><a href="#d2e1955"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1974"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1980">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - <li><a href="#d2e1993"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2012"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2018">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e2031"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2038">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2045"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2051">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e2064"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1810">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1816">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1822"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1829">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1830">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1834">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1840"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1849">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1855"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1871">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1877"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1890">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1891">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1894">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1895">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1898">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1899">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1908">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1909">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1913">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1918">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1919">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1922">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1923">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1926">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">repositoryEntryVO</abbr>)</a></li> + <li><a href="#d2e1927">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">repositoryEntryVO</abbr>)</a></li> + <li><a href="#d2e1929">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1930">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1933">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1934">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1940">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1943">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1948">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1949">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1952">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1953">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1955">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1961">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1964">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1969">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1970">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1972">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1975">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1976">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1981">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1982">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1987">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1990">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1991">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1998">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2001">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2006">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2007">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2009">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2012">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2013">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2018">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2026">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2039">application/pdf<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2046">application/pdf<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2052"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2058"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2063">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2080"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e2086"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2092">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - <li><a href="#d2e2105"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2116">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2129"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2135">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e2148"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2155">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e2156">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e2160"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2166">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e2179"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2198"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2204">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e2217"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2230"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2236">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2243">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2249"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2255">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2262">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e2263">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e2267"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2273">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2282"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2288">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2304"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2310">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2317">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2318">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2319">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2320">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2321">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2324">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2325">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2328">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2333">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2334">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2337">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2338">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2341">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e2342">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e2344">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2345">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2350">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2351">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2352">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2353">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2354">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2357">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2358">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2359">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2362">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2367">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2368">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2369">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2372">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2373">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2374">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2377">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e2378">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e2380">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2381">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2384">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2385">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2388">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2389">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2393">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2398">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2399">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2408">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2409">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2412">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> - <li><a href="#d2e2413">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> - <li><a href="#d2e2415">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2416">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2419">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2420">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> - <li><a href="#d2e2421">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> - <li><a href="#d2e2423">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2424">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2429">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2430">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2435">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2436">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2439">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> - <li><a href="#d2e2440">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> - <li><a href="#d2e2442">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2443">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2446">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> - <li><a href="#d2e2447">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> - <li><a href="#d2e2449">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2450">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2455">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2456">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2459">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2460">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2462">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2463">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2468">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2469">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2477">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2492">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2508">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2526">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2543"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2547"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2551"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2558"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2562"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2566"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2570"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2577"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2581"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2585"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2589"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2598"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2602"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2606"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2613"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2092"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2098"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2107"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2113"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2119"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2176">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e2189"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2195"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2202">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2225">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e2238"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2244"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2260">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2266"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2279">application/xml, application/json (<abbr title="{http://www.example.com} forumVOes">ns3:forumVOes</abbr>)</a></li> + <li><a href="#d2e2292"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2298"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2305">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2319">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e2332"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2338"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2358">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e2371"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2377"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2393">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + <li><a href="#d2e2406"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2412"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2441">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e2454"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2460"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2489">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e2502"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2508"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2522">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + <li><a href="#d2e2535"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2541"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2560">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e2573"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2579"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2598">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e2611"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e2617"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2621"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2625"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2632"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2636"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2640"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2624">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2631">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> <li><a href="#d2e2644"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2655"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2659"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2663"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2675"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2679"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2683"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2698"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2702">text/plain, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2713"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2721">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2739">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2753"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2759">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e2772"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2781"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2787">application/xml, application/json (<abbr title="{http://www.example.com} forumVOes">ns3:forumVOes</abbr>)</a></li> - <li><a href="#d2e2800"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2820"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2826">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e2839"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2868"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2874">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e2887"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2916"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2922">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e2935"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2951"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2957">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> - <li><a href="#d2e2970"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2650"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2672">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e2685"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2691"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2702">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2715">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e2728"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2734"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2741">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e2742">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e2746">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e2759"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2784">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e2797"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2803"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2816">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2822"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2829">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2835">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2841"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2848">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e2849">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e2853">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2859"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2868">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2874"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2890">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2896"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2917">application/xml, application/json (<abbr title="{http://www.example.com} keyValuePair">ns3:keyValuePair</abbr>)</a></li> + <li><a href="#d2e2928"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2939"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2946">text/plain, text/html (<abbr title="{http://www.example.com} keyValuePair">ns3:keyValuePair</abbr>)</a></li> + <li><a href="#d2e2957"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2964">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2969"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2976"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2980"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e2984"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2990">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> - <li><a href="#d2e3003"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3022"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3028">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - <li><a href="#d2e3041"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3060"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3066">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e3079"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3086">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3093"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3099">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e3112"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3134"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3140">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - <li><a href="#d2e3153"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3164">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3177"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3183">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e3196"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3203">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e3204">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e3208"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3214">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e3227"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3246"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3252">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e3265"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3278"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3284">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3291">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3297"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3303">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3310">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e3311">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e3315"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3321">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3330"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3336">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3352"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3358">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3381">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3382">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3385">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3406">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3407">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3412">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3413">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3425">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3426">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3429">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3439">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3440">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3446">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3454">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3455">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3458">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3459">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3465">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3466">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3467">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3468">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3469">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3472">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3473">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3476">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3481">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3482">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3485">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3486">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3489">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e3490">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e3492">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3493">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3498">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3499">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3500">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3501">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3502">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3505">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3506">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3507">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3510">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3515">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3516">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3517">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3520">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3521">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3522">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3525">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e3526">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e3528">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3529">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3532">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3533">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3536">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3537">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3541">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3546">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3547">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3559">application/xml, application/json (<abbr title="{http://www.example.com} environmentVO">ns3:environmentVO</abbr>)</a></li> - <li><a href="#d2e3572"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3582">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> - <li><a href="#d2e3595"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3606">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3612"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3619">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3624"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3630"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3639">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3645"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3653">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3654">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3660">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3674">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3675">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3684">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> - <li><a href="#d2e3697"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3707">application/xml, application/json (<abbr title="{http://www.example.com} runtimeVO">ns3:runtimeVO</abbr>)</a></li> - <li><a href="#d2e3720"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3730">application/xml, application/json (<abbr title="{http://www.example.com} classesVO">ns3:classesVO</abbr>)</a></li> - <li><a href="#d2e3743"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3753">application/xml, application/json (<abbr title="{http://www.example.com} runtimeVO">ns3:runtimeVO</abbr>)</a></li> - <li><a href="#d2e3766"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3776">application/xml, application/json (<abbr title="{http://www.example.com} runtimeVO">ns3:runtimeVO</abbr>)</a></li> - <li><a href="#d2e3789"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3799">application/xml, application/json (<abbr title="{http://www.example.com} runtimeVO">ns3:runtimeVO</abbr>)</a></li> - <li><a href="#d2e3812"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3822">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> - <li><a href="#d2e3835"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3845">application/xml, application/json (<abbr title="{http://www.example.com} taskVOes">ns3:taskVOes</abbr>)</a></li> - <li><a href="#d2e3858"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3868">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> - <li><a href="#d2e3881"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3891">application/xml, application/json (<abbr title="{http://www.example.com} sessionVO">ns3:sessionVO</abbr>)</a></li> - <li><a href="#d2e3904"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3914">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> - <li><a href="#d2e3927"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3937">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> - <li><a href="#d2e3950"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3960">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2998">application/xml, application/json (<abbr title="{http://www.example.com} keyValuePair">ns3:keyValuePair</abbr>)</a></li> + <li><a href="#d2e3012">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">keyValuePair</abbr>)</a></li> + <li><a href="#d2e3013">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">keyValuePair</abbr>)</a></li> + <li><a href="#d2e3015"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3022">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">keyValuePair</abbr>)</a></li> + <li><a href="#d2e3023">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">keyValuePair</abbr>)</a></li> + <li><a href="#d2e3025"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3033">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3057"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3061"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3065"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3075">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3076">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3087">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3088">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3092">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3096">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3101">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3106">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3107">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3111">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3112">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3116">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3117">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3121">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3126">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3127">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3132">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3133">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3137">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3138">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3142">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3143">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3147">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3148">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3152">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3153">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3157">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3158">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3162">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3163">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3167">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3168">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3172">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3173">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3177">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3178">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3182">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3183">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3187">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3188">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3192">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3193">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3197">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3198">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3201">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3204">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3207">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3211">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3214">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3215">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3219">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3222">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3223">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3231">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3232">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3236">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3239">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3240">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3244">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3245">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3249">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3250">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3254">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3255">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3258">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3261">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3264">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3269">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3270">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3273">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3276">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3279">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3288">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3310">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + <li><a href="#d2e3323"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3329"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3348">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e3361"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3367"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3386">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e3399"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3405"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3412">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3419">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e3432"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3438"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3460">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e3473"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3479"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3490">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3503">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e3516"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3522"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3529">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e3530">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e3534">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e3547"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3553"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3572">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e3585"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3591"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3604">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3610"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3617">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3623">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3629"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3636">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e3637">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e3641">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3647"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3656">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3662"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3678">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3684"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3690">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3691">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3699">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3700">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3706">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3709">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3712">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3716">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3721">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3722">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3730">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3731">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3734">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e3735">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e3737">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3738">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3741">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3746">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3747">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3751">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e3752">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e3754">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3755">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3762">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3763">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3766">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3767">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3772">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3773">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3778">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3779">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3783">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3789">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3790">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3796">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3797">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3800">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">assessableResultsVO</abbr>)</a></li> + <li><a href="#d2e3801">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">assessableResultsVO</abbr>)</a></li> + <li><a href="#d2e3803">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3810">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3811">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3816">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3822">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3823">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3824">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3825">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3830">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3836">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3837">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3838">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3839">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3842">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3845">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3850">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3853">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3856">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3869"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3879">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> + <li><a href="#d2e3880">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> + <li><a href="#d2e3884">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3897"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3903">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3924">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e3937"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3948">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> + <li><a href="#d2e3949">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> + <li><a href="#d2e3953">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> <li><a href="#d2e3966"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3973">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3978"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3984"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3993">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3999"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4011">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4017"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4026">application/xml, application/json (<abbr title="{http://www.example.com} memoryVO">ns3:memoryVO</abbr>)</a></li> - <li><a href="#d2e4039"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4045">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4048">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4049">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4057">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4058">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4064">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4067">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4068">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4072">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4073">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4081">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> - <li><a href="#d2e4094"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4104">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4110"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4117">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4122"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4128"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4137">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4143"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4153">text/plain, text/html, application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> - <li><a href="#d2e4167">application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> - <li><a href="#d2e4178"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4204">text/plain, text/html, application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> - <li><a href="#d2e4232">application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> + <li><a href="#d2e3972"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3978">application/xml, application/json (<abbr title="{http://www.example.com} errorVO">ns3:errorVO</abbr>)</a></li> + <li><a href="#d2e3994"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4000"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4006"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4019">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4032"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4038"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4051">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4064"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4070"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4077">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">statusVO</abbr>)</a></li> + <li><a href="#d2e4078">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">statusVO</abbr>)</a></li> + <li><a href="#d2e4082">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4095"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4101"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4114">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4127"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4133"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4140">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">rolesVO</abbr>)</a></li> + <li><a href="#d2e4141">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">rolesVO</abbr>)</a></li> + <li><a href="#d2e4145">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4158"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4164"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4174">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4187">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4188">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4199">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4212"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4218"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4225">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">preferencesVO</abbr>)</a></li> + <li><a href="#d2e4226">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">preferencesVO</abbr>)</a></li> + <li><a href="#d2e4230">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e4243"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4251">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4264"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4270"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4276"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4281">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">repositoryEntryVO</abbr>)</a></li> - <li><a href="#d2e4282">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">repositoryEntryVO</abbr>)</a></li> - <li><a href="#d2e4284">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4285">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4290">application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> - <li><a href="#d2e4301"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4308"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4312">application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> - <li><a href="#d2e4328"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4332"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4336">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4347"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4351"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4365"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4369"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4373"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4380"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4384"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4388"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4399"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4403">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e4421"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4425">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e4446"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4450"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4454"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4461"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4465"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4469"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4481"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4485">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e4506"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4510"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4514"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4521"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4525"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4529"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4542">application/xml, application/json, application/json;pagingspec=1.0 (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - <li><a href="#d2e4560">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - <li><a href="#d2e4582"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4597">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> - <li><a href="#d2e4610"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4623"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4629">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> - <li><a href="#d2e4642"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4661"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4667">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - <li><a href="#d2e4680"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4699"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4705">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e4718"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4725">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4732"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4738">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e4751"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4773"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4779">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - <li><a href="#d2e4792"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4803">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4816"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4822">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e4835"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4842">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e4843">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e4847"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4853">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e4866"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4885"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4891">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e4904"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4917"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4923">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4930">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4936"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4942">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4949">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e4950">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e4954"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4960">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4969"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4975">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4991"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4997">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5011"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5017">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> - <li><a href="#d2e5030"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5049"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5055">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - <li><a href="#d2e5068"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5087"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5093">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e5106"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5113">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5120"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5126">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e5139"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5161"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5167">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - <li><a href="#d2e5180"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5191">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5204"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5210">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e5223"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5230">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e5231">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e5235"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5241">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e5254"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5273"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5279">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e5292"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5305"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5311">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5318">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5324"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5330">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5337">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e5338">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e5342"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5348">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4249"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4262">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4268"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4277">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4283"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4289"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4298"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4304"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4313">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4319"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4331">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4337"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4351">application/xml, application/json (<abbr title="{http://www.example.com} folderVOes">ns3:folderVOes</abbr>)</a></li> + <li><a href="#d2e4364"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4370">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4371">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4372">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4373">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4374">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4377">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4378">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4381">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4386">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4387">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4390">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4391">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4394">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4395">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4397">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4398">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4403">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4404">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4405">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4406">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4407">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4410">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4411">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4412">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4415">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4420">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4421">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4422">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4425">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4426">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4427">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4430">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4431">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4433">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4434">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4437">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4438">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4441">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4442">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4446">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4451">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4452">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4458">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4459">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4460">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4461">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4462">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4465">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4466">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4469">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4474">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4475">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4478">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4479">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4482">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4483">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4485">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4486">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4491">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4492">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4493">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4494">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4495">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4498">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4499">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4500">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4503">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4508">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4509">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4510">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4513">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4514">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4515">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4518">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4519">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4521">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4522">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4525">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4526">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4529">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4530">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4534">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4539">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4540">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4545">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4546">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4547">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4548">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4549">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4552">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4553">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4556">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4561">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4562">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4565">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4566">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4569">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4570">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4572">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4573">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4578">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4579">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4580">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4581">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4582">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4585">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4586">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4587">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4590">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4595">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4596">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4597">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4600">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4601">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4602">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4605">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4606">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4608">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4609">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4612">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4613">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4616">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4617">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4621">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4626">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4627">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4644">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> + <li><a href="#d2e4657"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4674">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> + <li><a href="#d2e4687"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4704">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> + <li><a href="#d2e4717"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4729">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4730">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4739">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4740">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4749">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4750">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4759">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4760">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4768">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4769">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4781">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4782">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4785">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">courseVO</abbr>)</a></li> + <li><a href="#d2e4786">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">courseVO</abbr>)</a></li> + <li><a href="#d2e4788">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4789">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4810">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4811">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4814">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4815">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4819">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4824">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4825">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4828">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4829">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4834">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4835">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4838">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4846">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4847">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4851">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4855">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4856">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4859">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4860">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4862">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4866">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4867">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4870">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4871">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4873">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4878">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4882">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4883">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4886">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4887">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4889">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4893">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4894">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4902">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4903">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4908">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4909">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4913">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4916">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4917">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4921">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4925">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4930">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4931">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4934">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4937">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4938">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4943">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4947">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4948">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4951">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e4952">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e4954">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4955">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4960">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4963">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4966">*/* (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e4968">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4972">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4983">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + <li><a href="#d2e4996"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5002"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5021">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e5034"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5040"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5059">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e5072"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5078"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5085">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5092">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e5105"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5111"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5133">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e5146"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5152"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5163">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5176">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e5189"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5195"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5202">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e5203">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e5207">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e5220"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5226"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5245">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e5258"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5264"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5277">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5283"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5290">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5296">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5302"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5309">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5310">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5314">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5320"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5329">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5335"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5351">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e5357"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5363">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5379"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5385">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5395">text/plain, text/html, application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> - <li><a href="#d2e5412">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> - <li><a href="#d2e5413">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> - <li><a href="#d2e5417">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5430">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5443"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5457">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e5470"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5483"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5489"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5495"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5502">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> - <li><a href="#d2e5503">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> - <li><a href="#d2e5507"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5513">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - <li><a href="#d2e5526">application/xml, application/json (<abbr title="{http://www.example.com} errorVO">ns3:errorVO</abbr>)</a></li> - <li><a href="#d2e5539"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5552"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5558">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5571"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5364">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5365">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5366">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5367">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5368">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5371">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5372">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5375">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5380">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5381">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5384">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5385">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5388">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5389">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5391">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5392">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5397">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5398">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5399">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5400">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5401">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5404">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5405">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5406">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5409">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5414">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5415">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5416">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5419">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5420">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5421">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5424">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5425">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5427">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5428">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5431">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5432">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5435">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5436">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5440">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5445">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5446">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5454">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5455">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5459">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e5460">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e5462">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5463">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5466">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5467">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e5468">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e5470">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5471">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5475">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5476">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5478">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5479">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5486">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5487">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5490">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5491">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5493">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5494">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5505">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5519">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5520">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5524">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5538">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5539">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5543">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5563">application/xml, application/json (<abbr title="{http://www.example.com} viteroGroupMemberVO">ns3:viteroGroupMemberVO</abbr>)</a></li> <li><a href="#d2e5577">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e5578">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5587">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">rolesVO</abbr>)</a></li> - <li><a href="#d2e5588">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">rolesVO</abbr>)</a></li> - <li><a href="#d2e5592"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5598">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5611"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5620"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5626">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5639"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5650">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">statusVO</abbr>)</a></li> - <li><a href="#d2e5651">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">statusVO</abbr>)</a></li> - <li><a href="#d2e5655"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5661">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5674"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5683"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5689">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5702"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5715"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5721">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5734"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5741">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">preferencesVO</abbr>)</a></li> - <li><a href="#d2e5742">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">preferencesVO</abbr>)</a></li> - <li><a href="#d2e5746"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5752">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5778"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5784">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5793"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5799">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5805"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5814"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5820"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5830">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5850">application/xml, application/json (<abbr title="{http://www.example.com} folderVOes">ns3:folderVOes</abbr>)</a></li> - <li><a href="#d2e5863"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5871">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5872">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5873">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5874">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5875">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5878">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5879">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5882">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5887">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5888">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5891">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5892">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5895">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e5896">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e5898">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5899">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5904">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5905">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5906">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5907">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5582">application/xml, application/json (<abbr title="{http://www.example.com} viteroGroupMemberVO">ns3:viteroGroupMemberVO</abbr>)</a></li> + <li><a href="#d2e5600"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5614">application/xml, application/json (<abbr title="{http://www.example.com} goToTrainingVO">ns3:goToTrainingVO</abbr>)</a></li> + <li><a href="#d2e5628">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">trainingVO</abbr>)</a></li> + <li><a href="#d2e5629">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">trainingVO</abbr>)</a></li> + <li><a href="#d2e5633">application/xml, application/json (<abbr title="{http://www.example.com} goToTrainingVO">ns3:goToTrainingVO</abbr>)</a></li> + <li><a href="#d2e5647">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">trainingVO</abbr>)</a></li> + <li><a href="#d2e5648">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">trainingVO</abbr>)</a></li> + <li><a href="#d2e5652">application/xml, application/json (<abbr title="{http://www.example.com} goToTrainingVO">ns3:goToTrainingVO</abbr>)</a></li> + <li><a href="#d2e5670"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5677">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5678">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5687">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5688">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5698">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5699">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5703">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e5704">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e5706">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5707">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5710">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5711">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e5712">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e5714">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5715">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5719">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5720">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5722">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5723">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5730">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5731">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5734">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5735">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5737">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5738">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5743">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5747">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5752">image/jpeg<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5757">image/jpeg<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5761">application/xhtml+xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5762">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5765">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5774">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5775">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5779">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5795">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5809">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5810">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5814">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5828">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5829">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5833">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5853">application/xml, application/json (<abbr title="{http://www.example.com} viteroGroupMemberVO">ns3:viteroGroupMemberVO</abbr>)</a></li> + <li><a href="#d2e5867">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5868">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5872">application/xml, application/json (<abbr title="{http://www.example.com} viteroGroupMemberVO">ns3:viteroGroupMemberVO</abbr>)</a></li> + <li><a href="#d2e5890"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5896">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5897">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5902">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e5908">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5911">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5912">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e5913">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5916">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5921">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5922">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5923">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5926">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5927">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5928">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5931">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e5932">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5918">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5919">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5920">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5921">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5922">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5925">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5926">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5929">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e5934">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e5935">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e5938">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e5939">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5942">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5943">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5947">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5952">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5953">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5942">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5943">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5945">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5946">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5951">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5952">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5953">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5954">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5955">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e5958">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e5959">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5960">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5961">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5962">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5965">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5966">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5969">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5974">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5975">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5978">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5979">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5982">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e5983">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5960">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5963">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5968">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5969">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5970">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5973">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5974">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5975">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5978">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5979">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5981">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5982">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e5985">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e5986">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5991">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5992">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5993">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5994">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5995">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5998">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5999">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6000">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6003">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6008">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6009">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6010">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6013">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6014">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6015">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6018">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e6019">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e6021">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6022">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6025">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6026">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6029">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6030">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6034">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6039">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6040">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6044">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6045">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6046">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6047">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6048">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6051">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6052">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6055">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6060">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6061">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5989">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5990">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5994">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5999">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6000">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6017">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6030"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6037">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6041">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">subscribersVO</abbr>)</a></li> + <li><a href="#d2e6042">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">subscribersVO</abbr>)</a></li> + <li><a href="#d2e6044">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6051">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6052">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6057">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6063">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e6064">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6065">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6068">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e6069">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e6071">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6072">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6077">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6078">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6079">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6080">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6081">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6084">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6085">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6086">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6089">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6094">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6095">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6096">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6099">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6100">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6101">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6104">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e6105">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e6069">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6070">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6082">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6083">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6089">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6090">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6095">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6106">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e6107">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6108">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6110">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e6111">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6112">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6115">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6116">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6120">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6124">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> <li><a href="#d2e6125">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6126">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6144">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - <li><a href="#d2e6157"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6174">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - <li><a href="#d2e6187"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6204">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - <li><a href="#d2e6217"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6243"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6249">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - <li><a href="#d2e6279"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6285">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - <li><a href="#d2e6315"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6321">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - <li><a href="#d2e6351">application/xml;pagingspec=1.0, application/json;pagingspec=1.0 (<abbr title="{http://www.example.com} groupInfoVO">ns3:groupInfoVO</abbr>)</a></li> - <li><a href="#d2e6364"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6375">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6397"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6403">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> - <li><a href="#d2e6416"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6435"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6441">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - <li><a href="#d2e6454"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6473"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6479">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e6492"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6499">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6506"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6512">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e6525"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6547"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6553">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - <li><a href="#d2e6566"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6577">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6590"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6596">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e6609"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6616">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e6617">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e6621"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6627">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e6640"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6659"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6665">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - <li><a href="#d2e6678"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6691"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6697">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6704">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6710"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6716">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6723">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e6724">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e6728"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6734">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6743"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6749">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6771">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6784">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">authenticationVO</abbr>)</a></li> - <li><a href="#d2e6785">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">authenticationVO</abbr>)</a></li> - <li><a href="#d2e6789"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6795">application/xml, application/json (<abbr title="{http://www.example.com} authenticationVO">ns3:authenticationVO</abbr>)</a></li> - <li><a href="#d2e6808"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6815"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6819">application/xml, application/json (<abbr title="{http://www.example.com} authenticationVO">ns3:authenticationVO</abbr>)</a></li> - <li><a href="#d2e6830"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6846"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6852"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6858"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6869">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6876"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6882"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6888"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6894"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6904">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6922">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6947">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6965">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6988"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6994">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7007"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7017"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7021">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7032"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7043"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7049">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7062"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7080"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7086">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7099"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7111"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7117">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7130"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7139">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7152"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7158">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7171"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7180"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7186">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7199"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7208"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7214">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7227"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7246"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7252">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7265"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7279">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7304"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7310">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7323"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7334">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7365"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7371">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7384"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7421"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7427">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7440"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7450">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7460"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7466">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7479"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7490">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7518"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7524">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7537"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7571"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7577">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7590"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7605">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7622"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7626">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7637"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7648">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7671"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7675">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7686"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7715"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7719">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7730"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7744">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7764"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7768">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7779"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7797"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7801">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7812"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7828"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7832">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7843"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7857">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7877"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7881">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7892"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7928"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7932">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7943"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7975"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e7979">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e7990"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8004">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8024"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8028">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e8039"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8069"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8073">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e8084"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8100"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8104">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e8115"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8129">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8149"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8153">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e8164"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8200"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8204">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e8215"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8247"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8251"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8255">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e8266"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8282"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8288">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e8301"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8310"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8316">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - <li><a href="#d2e8329"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8335"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8374"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8378"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8382">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>)</a></li> - <li><a href="#d2e8393"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8397"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8432"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8436"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8440">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>)</a></li> - <li><a href="#d2e8451"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8455"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8464"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8470">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>)</a></li> - <li><a href="#d2e8483"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8501"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8505"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8509">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>)</a></li> - <li><a href="#d2e8520"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8524"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8539"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8543"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8547">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>)</a></li> - <li><a href="#d2e8558"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8562"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8571"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8577">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>)</a></li> - <li><a href="#d2e8590"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8619"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8623"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8627">application/xml, application/json (<abbr title="{http://www.example.com} testConfigVO">ns3:testConfigVO</abbr>)</a></li> - <li><a href="#d2e8638"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8642"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8668"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8672"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8676">application/xml, application/json (<abbr title="{http://www.example.com} testConfigVO">ns3:testConfigVO</abbr>)</a></li> - <li><a href="#d2e8687"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8691"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8700"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8706">application/xml, application/json (<abbr title="{http://www.example.com} testConfigVO">ns3:testConfigVO</abbr>)</a></li> - <li><a href="#d2e8719"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8739"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8745">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8769">application/xml, application/json (<abbr title="{http://www.example.com} assessableResultsVO">ns3:assessableResultsVO</abbr>)</a></li> - <li><a href="#d2e8780"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8788">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8809"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8813">application/xml, application/json (<abbr title="{http://www.example.com} assessableResultsVO">ns3:assessableResultsVO</abbr>)</a></li> - <li><a href="#d2e8824"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8838"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8842">application/xml, application/json (<abbr title="{http://www.example.com} assessableResultsVO">ns3:assessableResultsVO</abbr>)</a></li> - <li><a href="#d2e8853"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8860">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">assessableResultsVO</abbr>)</a></li> - <li><a href="#d2e8861">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">assessableResultsVO</abbr>)</a></li> - <li><a href="#d2e8863"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8867"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8871"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8888"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e8892">application/xml, application/json (<abbr title="{http://www.example.com} assessableResultsVO">ns3:assessableResultsVO</abbr>)</a></li> - <li><a href="#d2e8903"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6128">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6129">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6135">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6144">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6145">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6150">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6161">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6162">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6175">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6176">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6182">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6190">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6191">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6196">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6206">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6207">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6219">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6220">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6226">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6233">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6234">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6239">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6248">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6249">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6260">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6261">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6268">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6276">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6277">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6291">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6292">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6304">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6305">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6311">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6319">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6320">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6334">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6335">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6347">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6348">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6362">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6363">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6375">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6376">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6382">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6390">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6391">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6397">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6405">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6406">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6420">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6421">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6433">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6434">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6440">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6441">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6444">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6445">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6479">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6480">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6511">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6512">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6515">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6516">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6530">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6531">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6542">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6543">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6546">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6547">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6573">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6574">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6596">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6597">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6600">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6601">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6607">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6608">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6615">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6616">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6621">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6622">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6663">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e6676"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6682"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6689">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6720">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e6733"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6739"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6751">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> + <li><a href="#d2e6764"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6770"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </li> </ul> <h2 id="resources">Resources</h2> <div class="resource"> - <h3 id="d2e2">/repo/courses/{courseId}/elements/enrollment<span class="optional">?parentNodeId</span><span class="optional">&position</span><span class="optional">&shortTitle</span><span class="optional">&longTitle</span><span class="optional">&objectives</span><span class="optional">&visibilityExpertRules</span><span class="optional">&accessExpertRules</span><span class="optional">&groups</span><span class="optional">&cancelEnabled</span></h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - </table> + <h3 id="d2e2">/groups</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachEnrolmment">PUT</h4> + <h4 id="http://www.example.com#createGroup">PUT</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e5">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e6">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e8">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e9">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#getGroupList">GET</h4> <h6>request query parameters</h6> <table> <tr> @@ -1718,73 +1832,7 @@ </tr> <tr> <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>groups</strong></p> + <p><strong>externalId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> @@ -1793,37 +1841,37 @@ </tr> <tr> <td> - <p><strong>cancelEnabled</strong></p> + <p><strong>managed</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> </td> <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e16">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e17">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e15">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e16">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e17">/groups/version</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachEnrollmenetPost">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e20">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e31">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e32">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e20">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e33">/repo/courses/{courseId}/elements/enrollment/{nodeId}/groups</h3> + <h3 id="d2e21">/groups/{groupKey}/owners/{identityKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -1833,7 +1881,7 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -1842,16 +1890,7 @@ </tr> <tr> <td> - <p><strong>nodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> + <p><strong>groupKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -1862,37 +1901,23 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getGroups">GET</h4> + <h4 id="http://www.example.com#addTutor">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e38">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e39">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e26">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e40">/catalog</h3> - <p>Description:<br> - A web service for the catalog - - <P> - Initial Date: 5 may 2010 <br> - </p> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getRoots">GET</h4> - <p>Returns the list of root catalog entries.</p> + <h4 id="http://www.example.com#removeTutor">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e49">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e29">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e59">/catalog/{path:.*}/owners/{identityKey}</h3> + <h3 id="d2e30">/groups/{groupKey}/news</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -1902,81 +1927,96 @@ </tr> <tr> <td> - <p><strong>path</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The path</p> - </td> - </tr> - <tr> - <td> - <p><strong>identityKey</strong></p> + <p><strong>groupKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The id of the user</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getOwner">GET</h4> - <p>Retrieves data of an owner of the local sub tree</p> + <h4 id="http://www.example.com#getNews">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e72"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e34">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#postNews">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e78">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e37">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e91"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e40">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#addOwner">PUT</h4> - <p>Add an owner of the local sub tree</p> + <h4 id="http://www.example.com#deleteNews">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e100"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e106">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e43">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e44">/groups/{groupKey}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#findById">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e119"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e48">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e49">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#removeOwner">DELETE</h4> - <p>Remove an owner of the local sub tree</p> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#postGroup">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e128"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e52">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e53">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e134">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e55">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e56">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteGroup">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e147"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e59">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e150">/catalog/{path:.*}/children<span class="optional">?start</span><span class="optional">&limit</span></h3> + <h3 id="d2e60">/groups/{groupKey}/configuration</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -1986,76 +2026,62 @@ </tr> <tr> <td> - <p><strong>path</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><strong>groupKey</strong></p> </td> <td> - <p>The path</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getChildren">GET</h4> - <p>Returns a list of catalog entries.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td></td> - </tr> - </table> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#postGroupConfiguration">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e163"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e64">*/* (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e169">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e66">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e179">/catalog/version</h3> + <h3 id="d2e67">/groups/{groupKey}/infos</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>Retrieves the version of the Catalog Web Service.</p> + <h4 id="http://www.example.com#getInformations">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e184">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e71">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e72">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e194">/catalog/{path:.*}</h3> + <h3 id="d2e73">/groups/{groupKey}/owners</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -2065,54 +2091,172 @@ </tr> <tr> <td> - <p><strong>path</strong></p> + <p><strong>groupKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getTutors">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e77">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e78">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e79">/groups/{groupKey}/participants</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> </td> <td> - <p>The path</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getCatalogEntry">GET</h4> - <p>Returns the metadata of the catalog entry.</p> + <h4 id="http://www.example.com#getParticipants">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e204">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e83">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e84">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e85">/groups/{groupKey}/participants/{identityKey}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#addParticipant">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e217"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e90">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#addCatalogEntry">PUT</h4> - <p>Adds a catalog entry under the path specified in the URL.</p> - <p><em>acceptable request representations:</em></p> + <h4 id="http://www.example.com#removeParticipant">DELETE</h4> + <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e224">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e225">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e93">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e95">/groups/{groupKey}/forum</h3> + <p>Description:<br> + Web service to manage a forum. + + <P> + Initial Date: 20 apr. 2010 <br> + </p> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getForum">GET</h4> + <p>Retrieves the forum.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e229"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e105">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e235">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e118"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e248"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e124"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e127">/groups/{groupKey}/forum/threads<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#addCatalogEntry">PUT</h4> - <p>Adds a catalog entry under the path specified in the URL.</p> + <h4 id="http://www.example.com#getThreads">GET</h4> + <p>Retrieves the threads in the forum</p> <h6>request query parameters</h6> <table> <tr> @@ -2122,85 +2266,65 @@ </tr> <tr> <td> - <p><strong>name</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><strong>start</strong></p> </td> <td> - <p>The name</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>description</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><strong>limit</strong></p> </td> <td> - <p>The description</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>type</strong></p> + <p><strong>orderBy</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>creationDate</tt></p> </td> <td> - <p>The type (leaf or node)</p> + <p>(value name,creationDate)</p> </td> </tr> <tr> <td> - <p><strong>repoEntryKey</strong></p> + <p><strong>asc</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> </td> <td> - <p>The id of the repository entry</p> + <p>(value true/false)</p> </td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e270"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e276">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e289"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#updatePostCatalogEntry">POST</h4> - <p>Updates the catalog entry under the path specified in the URL.</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e296">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e309"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e143">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e315">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e156"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e328"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e162"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#updateCatalogEntry">POST</h4> - <p>Updates the catalog entry with the path specified in the URL.</p> + <h4 id="http://www.example.com#newThreadToForum">PUT</h4> + <p>Creates a new thread in the forum of the course node</p> <h6>request query parameters</h6> <table> <tr> @@ -2210,103 +2334,75 @@ </tr> <tr> <td> - <p><strong>newParentKey</strong></p> + <p><strong>title</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The title for the first post in the thread</p> + </td> + </tr> + <tr> + <td> + <p><strong>body</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The body for the first post in the thread</p> + </td> + </tr> + <tr> + <td> + <p><strong>authorKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The author user key (optional)</p> + </td> </tr> </table> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e336">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> - <li><a href="#d2e337">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> - </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e341"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e181">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e347">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e194"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e360"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e200"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#updateCatalogEntry">POST</h4> - <p>Updates the catalog entry with the path specified in the URL.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>name</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>description</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>newParentKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e373"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e379">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#newThreadToForumPost">POST</h4> + <p>Creates a new thread in the forum of the course node</p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e392"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e207">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#deleteCatalogEntry">DELETE</h4> - <p>Deletes the catalog entry with the path specified in the URL.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e401"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e214">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e407">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e227"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e420"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e233"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e423">/catalog/{path:.*}/owners</h3> + <h3 id="d2e236">/groups/{groupKey}/forum/posts/{threadKey}<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -2316,76 +2412,99 @@ </tr> <tr> <td> - <p><strong>path</strong></p> + <p><strong>groupKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>threadKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The path</p> + <p>The key of the thread</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getOwners">GET</h4> - <p>Get the owners of the local sub tree</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e433"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e439">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getMessages">GET</h4> + <p>Retrieves the messages in the thread</p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>orderBy</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>creationDate</tt></p> + </td> + <td> + <p>(value name, creationDate)</p> + </td> + </tr> + <tr> + <td> + <p><strong>asc</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td> + <p>(value true/false)</p> + </td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e452"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e255">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e455">/api</h3> - <p>Description:<br> - Service for general informations on the OLAT REST Api. - - <P> - Initial Date: 14 apr. 2010 <br> - </p> - <h6>Methods</h6> - <div class="methods"></div> - </div> - <div class="resource"> - <h3 id="d2e458">/api/version</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>Version number of the whole REST API of OLAT.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e465">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e268"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e475">/api/doc</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getHtmlDoc">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e478">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e274"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e479">/api/doc/{filename}</h3> + <h3 id="d2e277">/groups/{groupKey}/forum/posts/{messageKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -2395,115 +2514,71 @@ </tr> <tr> <td> - <p><strong>filename</strong></p> + <p><strong>groupKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getImage1">GET</h4> - <p>Returns images for the documentation of OLAT.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e487">image/jpeg<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e490">/api/{filename}</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> <tr> <td> - <p><strong>filename</strong></p> + <p><strong>messageKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The id of the reply message</p> </td> - <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getImage2">GET</h4> - <p>Returns images for the documentation of OLAT.</p> + <h4 id="http://www.example.com#replyToPostPost">POST</h4> + <p>Creates a new reply in the forum of the course node</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e285">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e498">image/jpeg<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e298">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e501">/api/copyright</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getCopyrightXhtml">GET</h4> - <p>Returns the copyright of OLAT.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e508">text/html, application/xhtml+xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e311"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getCopyrightPlainText">GET</h4> - <p>Returns the copyright of OLAT.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e517">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e317"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e520">/groups</h3> - <p>Description:<br> - This handles the learning groups. - - <P> - Initial Date: 23 mar. 2010 <br> - </p> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#createGroup">PUT</h4> - <p>Create a group.</p> + <h4 id="http://www.example.com#replyToPost">PUT</h4> + <p>Creates a new reply in the forum of the course node</p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e527">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> - <li><a href="#d2e528">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e324">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e325">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e530"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e329">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e534">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> + <li><a href="#d2e342"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e545"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e348"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#getGroupList">GET</h4> - <p>Return the list of all groups if you have group manager permission, or all - learning group that you particip with or owne. - </p> + <h4 id="http://www.example.com#replyToPost">PUT</h4> + <p>Creates a new reply in the forum of the course node</p> <h6>request query parameters</h6> <table> <tr> @@ -2513,50 +2588,55 @@ </tr> <tr> <td> - <p><strong>externalId</strong></p> + <p><strong>title</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>Search with an external ID</p> + <p>The title for the first post in the thread</p> </td> </tr> <tr> <td> - <p><strong>managed</strong></p> + <p><strong>body</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The body for the first post in the thread</p> + </td> + </tr> + <tr> + <td> + <p><strong>authorKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>(true / false) Search only managed / not managed groups</p> + <p>The author user key (optional)</p> </td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e559">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> + <li><a href="#d2e367">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e380"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e569">/groups/version</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>Retrieves the version of the Group Web Service.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e574">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e386"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e584">/groups/{groupKey}</h3> + <h3 id="d2e389">/groups/{groupKey}/forum/posts/{messageKey}/attachments</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -2571,62 +2651,92 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>messageKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> <td> - <p>The key of the group</p> + <p>The key of the message</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#findById">GET</h4> - <p>Return the group specified by the key of the group.</p> + <h4 id="http://www.example.com#getAttachments">GET</h4> + <p>Retrieves the attachments of the message</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e592">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postGroup">POST</h4> - <p>Updates a group.</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e606">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> - <li><a href="#d2e607">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e399">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e609"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e405"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> + <p>Upload the attachment of a message, as parameter:<br> + filename The name of the attachment<br> + file The attachment. + </p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e613">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> + <li><a href="#d2e412">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e624"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e418">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e424"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#deleteGroup">DELETE</h4> - <p>Deletes the business group specified by the groupKey.</p> + <h4 id="http://www.example.com#replyToPostAttachment">PUT</h4> + <p>Upload the attachment of a message, as parameter:<br> + filename The name of the attachment<br> + file The attachment. + </p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e431">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e432">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e631"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e436">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e635"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e442"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> + <p>Upload the attachment of a message, as parameter:<br> + filename The name of the attachment<br> + file The attachment. + </p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e451">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e639"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e457"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e642">/groups/{groupKey}/configuration</h3> + <h3 id="d2e460">/groups/{groupKey}/forum/posts/{messageKey}/attachments/{filename}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -2643,61 +2753,50 @@ </td> <td></td> </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#postGroupConfiguration">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e646">*/* (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e648">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e649">/groups/{groupKey}/infos</h3> - <h6>resource-wide template parameters</h6> - <table> <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> + <td> + <p><strong>messageKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The identity key of the user being searched</p> + </td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>filename</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The key of the group</p> + <p>The name of the attachment</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getInformations">GET</h4> - <p>Returns the informations of the group specified by the groupKey.</p> + <h4 id="http://www.example.com#getAttachment">GET</h4> + <p>Retrieves the attachment of the message</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e657"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e473">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e661">application/xml, application/json (<abbr title="{http://www.example.com} groupInfoVO">ns3:groupInfoVO</abbr>)</a></li> + <li><a href="#d2e479"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e671">/groups/{groupKey}/owners</h3> + <h3 id="d2e482">/groups/{groupKey}/wiki</h3> + <p>The Group Wiki Webservice<br /> + allows the export of group wikis + </p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -2712,29 +2811,26 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the group</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getTutors">GET</h4> - <p>Returns the list of owners of the group specified by the groupKey.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e679"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#exportWiki">GET</h4> + <p>will export the wiki from the current group to a CP and serve as + zip-file.<br /> + </p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e683">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e490">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e491">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e693">/groups/{groupKey}/participants</h3> + <h3 id="d2e492">/groups/{groupKey}/folder</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -2749,29 +2845,67 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the group</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getParticipants">GET</h4> - <p>Returns the list of participants of the group specified by the groupKey.</p> + <h4 id="http://www.example.com#listFiles">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e496">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e497">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e498">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e499">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e500">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToRoot">POST</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e503">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e504">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e507">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e512">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e513">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFileToRoot">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e701"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e516">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e517">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e520">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e521">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e705">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e523">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e524">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e715">/groups/{groupKey}/owners/{identityKey}</h3> + <h3 id="d2e525">/groups/{groupKey}/folder/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -2786,60 +2920,95 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the group</p> - </td> + <td></td> </tr> <tr> <td> - <p><strong>identityKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>path</strong></p> </td> <td> - <p>The user's id</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#addTutor">PUT</h4> - <p>Adds an owner to the group.</p> + <h4 id="http://www.example.com#listFiles">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e529">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e530">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e531">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e532">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e533">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToFolder">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e726"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e536">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e537">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e538">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e541">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e730"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e546">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e547">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e548">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFileToFolder">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e734"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e551">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e552">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e553">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#removeTutor">DELETE</h4> - <p>Removes the owner from the group.</p> + <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e556">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e557">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e741"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e559">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e560">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFolders">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e745"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e563">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e564">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteItem">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e749"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e567">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e568">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e752">/groups/{groupKey}/participants/{identityKey}</h3> + <h3 id="d2e569">/groups/{groupKey}/folder/version</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -2854,66 +3023,122 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the group</p> - </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e572">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e573">/groups/{groupKey}/folder/metadata/{path:.*}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>groupKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>path</strong></p> + </td> <td> - <p>The id of the user</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#addParticipant">PUT</h4> - <p>Adds a participant to the group.</p> + <h4 id="http://www.example.com#getFileMetadata">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e763"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e577">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e578">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e579">/registration<span class="optional">?email</span></h3> + <p>Description:<br> + Web service to trigger the registration process + + <P> + Initial Date: 14 juil. 2011 <br> + </p> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#register">PUT</h4> + <p>Register with the specified email</p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>email</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The email address</p> + </td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e767"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e590"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e771"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e594"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#removeParticipant">DELETE</h4> - <p>Removes a participant from the group.</p> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#registerPost">POST</h4> + <p>Register with the specified email</p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e778"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e601">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e782"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e606"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e786"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e610"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e790">/groups/{groupKey}/forum</h3> - <p>Description:<br> - Web service to manage a forum. - - <P> - Initial Date: 20 apr. 2010 <br> - </p> + <h3 id="d2e613">/users/{username}/auth</h3> + <p>This web service handles functionalities related to authentication credentials of users.</p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -2923,38 +3148,67 @@ </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>username</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The key of the group</p> + <p>The username of the user to retrieve authentication</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getForum">GET</h4> - <p>Retrieves the forum.</p> + <h4 id="http://www.example.com#create">PUT</h4> + <p>Creates and persists an authentication</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e623">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">authenticationVO</abbr>)</a></li> + <li><a href="#d2e624">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">authenticationVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e628">application/xml, application/json (<abbr title="{http://www.example.com} authenticationVO">ns3:authenticationVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e641"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e647"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e802"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e653"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e808">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + <li><a href="#d2e659"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#getAuthenticationTokenList">GET</h4> + <p>Returns all user authentications</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e666">application/xml, application/json (<abbr title="{http://www.example.com} authenticationVO">ns3:authenticationVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e677"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e821"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e681"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e824">/groups/{groupKey}/forum/threads<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h3 id="d2e684">/users/{username}/auth/{authKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -2964,21 +3218,200 @@ </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>username</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The key of the group</p> + <p>The username of the user to retrieve authentication</p> </td> </tr> - </table> + <tr> + <td> + <p><strong>authKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The authentication key identifier</p> + </td> + </tr> + <tr> + <td> + <p><strong>username</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The username of the user</p> + </td> + </tr> + </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getThreads">GET</h4> - <p>Retrieves the threads in the forum</p> + <h4 id="http://www.example.com#delete">DELETE</h4> + <p>Deletes an authentication from the system</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e697"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e703"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e709"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e712">/users/{username}/auth/version</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>username</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The username of the user to retrieve authentication</p> + </td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> + <p>The version of the User Authentication Web Service</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e719">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e729">/users/{username}/auth/password</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>username</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The username of the user to retrieve authentication</p> + </td> + </tr> + <tr> + <td> + <p><strong>username</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The username of the user to change the password</p> + </td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#changePassword">POST</h4> + <p>Change the password of a user.</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e737">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e744"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e750"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e756"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e762"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e765">/repo/courses/{courseId}/elements/folder</h3> + <p>Description:<br> + + <P> + Initial Date: 6 févr. 2012 <br> + </p> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The course resourceable's id</p> + </td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getFolders">GET</h4> + <p>Retrieves metadata of the course node</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e777">application/xml, application/json (<abbr title="{http://www.example.com} folderVOes">ns3:folderVOes</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e790"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e796"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachFolder">PUT</h4> + <p>This attaches a Folder Element onto a given course. The element will be + inserted underneath the supplied parentNodeId. + </p> <h6>request query parameters</h6> <table> <tr> @@ -2988,143 +3421,135 @@ </tr> <tr> <td> - <p><strong>start</strong></p> + <p><strong>parentNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The node's id which will be the parent of this folder</p> </td> - <td></td> </tr> <tr> <td> - <p><strong>limit</strong></p> + <p><strong>position</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> </td> - <td></td> + <td> + <p>The node's position relative to its sibling nodes (optional)</p> + </td> </tr> <tr> <td> - <p><strong>orderBy</strong></p> + <p><strong>shortTitle</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>creationDate</tt></p> + <p>Default: <tt>undefined</tt></p> </td> <td> - <p>(value name,creationDate)</p> + <p>The node short title</p> </td> </tr> <tr> <td> - <p><strong>asc</strong></p> + <p><strong>longTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td> - <p>(value true/false)</p> + <p>The node long title</p> </td> </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e840"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e846">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e859"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#newThreadToForum">PUT</h4> - <p>Creates a new thread in the forum of the course node</p> - <h6>request query parameters</h6> - <table> <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> + <td> + <p><strong>objectives</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td> + <p>The node learning objectives</p> + </td> </tr> <tr> <td> - <p><strong>title</strong></p> + <p><strong>visibilityExpertRules</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The title for the first post in the thread</p> + <p>The rules to view the node (optional)</p> </td> </tr> <tr> <td> - <p><strong>body</strong></p> + <p><strong>downloadExpertRules</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The body for the first post in the thread</p> + <p>The rules to download files (optional)</p> </td> </tr> <tr> <td> - <p><strong>authorKey</strong></p> + <p><strong>uploadExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The author user key (optional)</p> + <p>The rules to upload files (optional)</p> </td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e878"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e830">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e884">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e843"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e897"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e849"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#newThreadToForumPost">POST</h4> - <p>Creates a new thread in the forum of the course node</p> + <h4 id="http://www.example.com#attachFolderPost">POST</h4> + <p>This attaches a Folder Element onto a given course. The element will be + inserted underneath the supplied parentNodeId. + </p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e904">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e856">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e911"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e884">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e917">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e897"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e930"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e903"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e933">/groups/{groupKey}/forum/posts/{threadKey}<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h3 id="d2e906">/repo/courses/{courseId}/elements/folder/{nodeId}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -3134,101 +3559,80 @@ </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key of the group</p> + <p>The course resourceable's id</p> </td> </tr> <tr> <td> - <p><strong>threadKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key of the thread</p> + <p>The course resourceable's id</p> </td> </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getMessages">GET</h4> - <p>Retrieves the messages in the thread</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>orderBy</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>creationDate</tt></p> - </td> - <td> - <p>(value name, creationDate)</p> - </td> - </tr> - <tr> - <td> - <p><strong>asc</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> - </td> - <td> - <p>(value true/false)</p> - </td> - </tr> - </table> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The node's id</p> + </td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#updateFolder">POST</h4> + <p>This updates a Folder Element onto a given course.</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e917">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e939">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + </ul> <p><em>available response representations:</em></p> <ul> <li><a href="#d2e952"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e958">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e958"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#getFolder">GET</h4> + <p>Retrieves metadata of the course node</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e967">application/xml, application/json (<abbr title="{http://www.example.com} folderVO">ns3:folderVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e980"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e971"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e986"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e974">/groups/{groupKey}/forum/posts/{messageKey}</h3> + <h3 id="d2e989">/repo/courses/{courseId}/elements/folder/{nodeId}/files</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -3238,131 +3642,92 @@ </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key of the group</p> + <p>The course resourceable's id</p> </td> </tr> <tr> <td> - <p><strong>messageKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The id of the reply message</p> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#replyToPostPost">POST</h4> - <p>Creates a new reply in the forum of the course node</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e982">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e995"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#listFiles">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1001">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e994">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e995">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e996">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e997">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e998">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToRoot">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1014"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1001">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1002">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPost">PUT</h4> - <p>Creates a new reply in the forum of the course node</p> + <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e1021">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e1022">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1026"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1032">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1005">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1045"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1010">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1011">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPost">PUT</h4> - <p>Creates a new reply in the forum of the course node</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>title</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The title for the first post in the thread</p> - </td> - </tr> - <tr> - <td> - <p><strong>body</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The body for the first post in the thread</p> - </td> - </tr> - <tr> - <td> - <p><strong>authorKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The author user key (optional)</p> - </td> - </tr> - </table> + <h4 id="http://www.example.com#putFileToRoot">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1064"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1014">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1015">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e1070">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1018">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1019">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1083"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1021">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1022">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1086">/groups/{groupKey}/forum/posts/{messageKey}/attachments</h3> + <h3 id="d2e1023">/repo/courses/{courseId}/elements/folder/{nodeId}/files/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -3372,99 +3737,120 @@ </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key of the group</p> + <p>The course resourceable's id</p> </td> </tr> <tr> <td> - <p><strong>messageKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> <td> - <p>The key of the message</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>path</strong></p> </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getAttachments">GET</h4> - <p>Retrieves the attachments of the message</p> + <h4 id="http://www.example.com#listFiles">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1096"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1027">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1028">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1029">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1030">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1031">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToFolder">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1102">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1034">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1035">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1036">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> - <p>Upload the attachment of a message, as parameter:<br> - filename The name of the attachment<br> - file The attachment. - </p> + <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e1109">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1039">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1115"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1044">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1045">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1046">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFileToFolder">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1121">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1049">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1050">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1051">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPostAttachment">PUT</h4> - <p>Upload the attachment of a message, as parameter:<br> - filename The name of the attachment<br> - file The attachment. - </p> + <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e1128">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e1129">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1133"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1054">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1055">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1139">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1057">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1058">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> - <p>Upload the attachment of a message, as parameter:<br> - filename The name of the attachment<br> - file The attachment. - </p> + <h4 id="http://www.example.com#putFolders">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1148"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1061">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1062">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteItem">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1154">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1065">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1066">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1157">/groups/{groupKey}/forum/posts/{messageKey}/attachments/{filename}</h3> + <h3 id="d2e1067">/repo/courses/{courseId}/elements/folder/{nodeId}/files/version</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -3474,56 +3860,47 @@ </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key of the group</p> + <p>The course resourceable's id</p> </td> </tr> <tr> <td> - <p><strong>filename</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><strong>courseId</strong></p> </td> <td> - <p>The name of the attachment</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>messageKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>nodeId</strong></p> </td> <td> - <p>The identity key of the user being searched</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getAttachment">GET</h4> - <p>Retrieves the attachment of the message</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1170"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1176">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1070">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1179">/groups/{groupKey}/folder</h3> + <h3 id="d2e1071">/repo/courses/{courseId}/elements/folder/{nodeId}/files/metadata/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -3533,85 +3910,30 @@ </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The course resourceable's id</p> + </td> </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#listFiles">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1183">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1184">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1185">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1186">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1187">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFileToRoot">POST</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1190">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1191">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e1194">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1199">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1200">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFileToRoot">PUT</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1203">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1204">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e1207">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e1208">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1210">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1211">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e1212">/groups/{groupKey}/folder/{path:.*}</h3> - <h6>resource-wide template parameters</h6> - <table> <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>nodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> @@ -3628,80 +3950,22 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#listFiles">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1216">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1217">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1218">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1219">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1220">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFileToFolder">POST</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1223">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1224">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1225">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e1228">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1233">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1234">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1235">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFileToFolder">PUT</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1238">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1239">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1240">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e1243">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e1244">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1246">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1247">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFolders">PUT</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1250">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1251">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#deleteItem">DELETE</h4> + <h4 id="http://www.example.com#getFileMetadata">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1254">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1255">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1075">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1076">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1256">/groups/{groupKey}/folder/version</h3> + <h3 id="d2e1077">/users/{identityKey}/forums</h3> + <p>Description:<br> + + <P> + Initial Date: 6 déc. 2011 <br> + </p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -3711,27 +3975,43 @@ </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The key of the user (IdentityImpl)</p> + </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> + <h4 id="http://www.example.com#getForums">GET</h4> + <p>Retrieves a list of forums on a user base. All forums of groups + where the user is participant/tutor + all forums in course where + the user is a participant (owner, tutor or participant) + </p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1089">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1259">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1102"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1260">/groups/{groupKey}/folder/metadata/{path:.*}</h3> + <h3 id="d2e1105">/users/{identityKey}/forums/group/{groupKey}</h3> + <p>Description:<br> + Web service to manage a forum. + + <P> + Initial Date: 20 apr. 2010 <br> + </p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -3741,19 +4021,21 @@ </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The key of the user (IdentityImpl)</p> + </td> </tr> <tr> <td> - <p><strong>path</strong></p> + <p><strong>groupKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> @@ -3761,17 +4043,25 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getFileMetadata">GET</h4> + <h4 id="http://www.example.com#getForum">GET</h4> + <p>Retrieves the forum.</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1115">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1264">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1265">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1128"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1134"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1266">/groups/{groupKey}/wiki</h3> + <h3 id="d2e1137">/users/{identityKey}/forums/group/{groupKey}/threads<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -3781,41 +4071,30 @@ </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key of the group</p> + <p>The key of the user (IdentityImpl)</p> + </td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#exportWiki">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1272">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1273">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e1274">/repo/courses<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&managed</span><span class="optional">&externalId</span><span class="optional">&externalRef</span><span class="optional">&repositoryEntryKey</span></h3> - <p>Description:<br> - This web service handles the courses. - - <P> - Initial Date: 27 apr. 2010 <br> - </p> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getCourseList">GET</h4> - <p>Get all courses viewable by the authenticated user</p> + <h4 id="http://www.example.com#getThreads">GET</h4> + <p>Retrieves the threads in the forum</p> <h6>request query parameters</h6> <table> <tr> @@ -3845,66 +4124,45 @@ </tr> <tr> <td> - <p><strong>managed</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><strong>orderBy</strong></p> </td> - <td></td> - </tr> - <tr> <td> - <p><strong>externalId</strong></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>creationDate</tt></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>(value name,creationDate)</p> </td> - <td></td> </tr> <tr> <td> - <p><strong>externalRef</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><strong>asc</strong></p> </td> - <td></td> - </tr> - <tr> <td> - <p><strong>repositoryEntryKey</strong></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>(value true/false)</p> </td> - <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1288">application/xml, application/json, application/json;pagingspec=1.0 (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#createEmptyCourse">PUT</h4> - <p>Creates an empty course, or a copy from a course if the parameter copyFrom is set.</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e1302">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">courseVO</abbr>)</a></li> - <li><a href="#d2e1303">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">courseVO</abbr>)</a></li> + <li><a href="#d2e1153">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1307">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> + <li><a href="#d2e1166"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1320"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1172"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#createEmptyCourse">PUT</h4> - <p>Creates an empty course, or a copy from a course if the parameter copyFrom is set.</p> + <h4 id="http://www.example.com#newThreadToForum">PUT</h4> + <p>Creates a new thread in the forum of the course node</p> <h6>request query parameters</h6> <table> <tr> @@ -3912,15 +4170,6 @@ <th>value</th> <th>description</th> </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> <tr> <td> <p><strong>title</strong></p> @@ -3928,132 +4177,70 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>displayName</strong></p> - </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>The title for the first post in the thread</p> </td> - <td></td> </tr> <tr> <td> - <p><strong>softKey</strong></p> + <p><strong>body</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>access</strong></p> - </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>The body for the first post in the thread</p> </td> - <td></td> </tr> <tr> <td> - <p><strong>membersOnly</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><strong>authorKey</strong></p> </td> - <td></td> - </tr> - <tr> <td> - <p><strong>externalId</strong></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>The author user key (optional)</p> </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>externalRef</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>managedFlags</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>sharedFolderSoftKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>copyFrom</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1341">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> + <li><a href="#d2e1191">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1354"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1204"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#importCourse">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1359">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1360">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1210"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e1361">/repo/courses/version</h3> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>The version of the Course Web Service</p> + <h4 id="http://www.example.com#newThreadToForumPost">POST</h4> + <p>Creates a new thread in the forum of the course node</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e1217">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1224">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1237"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1366">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1243"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1376">/repo/courses/{courseId}</h3> - <p>Description:<br> - This web service will handle the functionality related to <code>Course</code> - and its contents. - - <P> - Initial Date: 27 apr. 2010 <br> - </p> + <h3 id="d2e1246">/users/{identityKey}/forums/group/{groupKey}/posts/{threadKey}<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -4063,48 +4250,110 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the user (IdentityImpl)</p> + </td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> + <tr> + <td> + <p><strong>threadKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the thread</p> + </td> + </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#deleteCourse">DELETE</h4> - <p>Delete a course by id</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1386"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1392"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getMessages">GET</h4> + <p>Retrieves the messages in the thread</p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>orderBy</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>creationDate</tt></p> + </td> + <td> + <p>(value name, creationDate)</p> + </td> + </tr> + <tr> + <td> + <p><strong>asc</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td> + <p>(value true/false)</p> + </td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1398"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1265">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#findById">GET</h4> - <p>Get the metadatas of the course by id</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1407"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1278"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1413">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> + <li><a href="#d2e1284"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1423">/repo/courses/{courseId}/configuration</h3> + <h3 id="d2e1287">/users/{identityKey}/forums/group/{groupKey}/posts/{messageKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -4114,7 +4363,18 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the user (IdentityImpl)</p> + </td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -4123,97 +4383,120 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>messageKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The course resourceable's id</p> + <p>The id of the reply message</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getConfiguration">GET</h4> - <p>Get the configuration of the course</p> + <h4 id="http://www.example.com#replyToPostPost">POST</h4> + <p>Creates a new reply in the forum of the course node</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e1295">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1433"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1308">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1439">application/xml, application/json (<abbr title="{http://www.example.com} courseConfigVO">ns3:courseConfigVO</abbr>)</a></li> + <li><a href="#d2e1321"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1452"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1327"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#updateConfiguration">POST</h4> - <p>Update the course configuration</p> + <h4 id="http://www.example.com#replyToPost">PUT</h4> + <p>Creates a new reply in the forum of the course node</p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e1459">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1334">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e1335">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1481"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1339">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1487">application/xml, application/json (<abbr title="{http://www.example.com} courseConfigVO">ns3:courseConfigVO</abbr>)</a></li> + <li><a href="#d2e1352"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1500"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1358"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e1503">/repo/courses/{courseId}/authors</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getAuthors">GET</h4> - <p>Get all owners and authors of the course</p> + <h4 id="http://www.example.com#replyToPost">PUT</h4> + <p>Creates a new reply in the forum of the course node</p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>title</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The title for the first post in the thread</p> + </td> + </tr> + <tr> + <td> + <p><strong>body</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The body for the first post in the thread</p> + </td> + </tr> + <tr> + <td> + <p><strong>authorKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The author user key (optional)</p> + </td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1510"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1377">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1516">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e1390"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1522"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1396"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1525">/repo/courses/{courseId}/version</h3> + <h3 id="d2e1399">/users/{identityKey}/forums/group/{groupKey}/posts/{messageKey}/attachments</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -4223,145 +4506,108 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the user (IdentityImpl)</p> + </td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>The version of the Course Web Service</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1530">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e1540">/repo/courses/{courseId}/file</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>messageKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The key of the message</p> + </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getRepoFileById">GET</h4> - <p>Export the course</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1547"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getAttachments">GET</h4> + <p>Retrieves the attachments of the message</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1553">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1409">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1559"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1415"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e1562">/repo/courses/{courseId}/runstructure</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#findRunStructureById">GET</h4> - <p>Get the runstructure of the course by id</p> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> + <p>Upload the attachment of a message, as parameter:<br> + filename The name of the attachment<br> + file The attachment. + </p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e1569"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1422">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1575">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1428">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1581"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1434"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e1584">/repo/courses/{courseId}/editortreemodel</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#findEditorTreeModelById">GET</h4> - <p>Get the editor tree model of the course by id</p> + <h4 id="http://www.example.com#replyToPostAttachment">PUT</h4> + <p>Upload the attachment of a message, as parameter:<br> + filename The name of the attachment<br> + file The attachment. + </p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e1441">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1442">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1446">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1591"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1452"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> + <p>Upload the attachment of a message, as parameter:<br> + filename The name of the attachment<br> + file The attachment. + </p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1597">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1461">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1603"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1467"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1606">/repo/courses/{courseId}/authors/{identityKey}</h3> + <h3 id="d2e1470">/users/{identityKey}/forums/group/{groupKey}/posts/{messageKey}/attachments/{filename}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -4371,129 +4617,71 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The key of the user (IdentityImpl)</p> + </td> </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>groupKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The user identifier</p> - </td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getAuthor">GET</h4> - <p>Get this specific author and owner of the course</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1616"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1622">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1628"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#addAuthor">PUT</h4> - <p>Add an owner and author to the course</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1637"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1643"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1649"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#removeAuthor">DELETE</h4> - <p>Remove an owner and author to the course</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1658"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1664"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1670"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e1674">/repo/courses/{courseId}/tutors/{identityKey}</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> + <td></td> </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>messageKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The identity key of the user being searched</p> + </td> </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>filename</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The user identifier</p> + <p>The name of the attachment</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#addCoach">PUT</h4> - <p>Add a coach to the course</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1684"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getAttachment">GET</h4> + <p>Retrieves the attachment of the message</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1690"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1483">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1696"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1489"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1699">/repo/courses/{courseId}/tutors</h3> + <h3 id="d2e1492">/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}</h3> + <p>Description:<br> + Web service to manage a forum. + + <P> + Initial Date: 20 apr. 2010 <br> + </p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -4503,49 +4691,30 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The key of the user (IdentityImpl)</p> + </td> </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getTutors">GET</h4> - <p>Get all coaches of the course (don't follow the groups)</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1706"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1712">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1718"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e1721">/repo/courses/{courseId}/participants</h3> - <h6>resource-wide template parameters</h6> - <table> <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> + <td> + <p><strong>courseKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>courseNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> @@ -4553,25 +4722,25 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getParticipants">GET</h4> - <p>Get all participants of the course (don't follow the groups)</p> + <h4 id="http://www.example.com#getForum">GET</h4> + <p>Retrieves the forum.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1728"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1503">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1734">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e1516"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1740"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1522"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1743">/repo/courses/{courseId}/participants/{identityKey}</h3> + <h3 id="d2e1525">/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/threads<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -4581,47 +4750,185 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The key of the user (IdentityImpl)</p> + </td> </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>courseNodeId</strong></p> + </td> <td> - <p>The user identifier</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#addParticipant">PUT</h4> - <p>Add an participant to the course</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1753"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1759"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getThreads">GET</h4> + <p>Retrieves the threads in the forum</p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>orderBy</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>creationDate</tt></p> + </td> + <td> + <p>(value name,creationDate)</p> + </td> + </tr> + <tr> + <td> + <p><strong>asc</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td> + <p>(value true/false)</p> + </td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1541">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1554"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1560"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#newThreadToForum">PUT</h4> + <p>Creates a new thread in the forum of the course node</p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>title</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The title for the first post in the thread</p> + </td> + </tr> + <tr> + <td> + <p><strong>body</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The body for the first post in the thread</p> + </td> + </tr> + <tr> + <td> + <p><strong>authorKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The author user key (optional)</p> + </td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1579">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1592"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1598"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#newThreadToForumPost">POST</h4> + <p>Creates a new thread in the forum of the course node</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e1605">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1612">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1625"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1631"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1768">/repo/courses/{courseId}/resource</h3> + <h3 id="d2e1634">/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{threadKey}<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -4631,50 +4938,50 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the user (IdentityImpl)</p> + </td> + </tr> + <tr> + <td> + <p><strong>courseKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getOlatResource">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1771">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e1772">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e1773">/repo/courses/{courseId}/publish<span class="optional">?locale</span><span class="optional">&access</span><span class="optional">&membersOnly</span></h3> - <h6>resource-wide template parameters</h6> - <table> <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> + <td> + <p><strong>courseNodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>threadKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The key of the thread</p> + </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#publishCourse">POST</h4> - <p>Publish the course.</p> + <h4 id="http://www.example.com#getMessages">GET</h4> + <p>Retrieves the messages in the thread</p> <h6>request query parameters</h6> <table> <tr> @@ -4684,55 +4991,66 @@ </tr> <tr> <td> - <p><strong>locale</strong></p> + <p><strong>start</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>access</strong></p> + <p><strong>limit</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>membersOnly</strong></p> + <p><strong>orderBy</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>creationDate</tt></p> + </td> + <td> + <p>(value name, creationDate)</p> + </td> + </tr> + <tr> + <td> + <p><strong>asc</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td> + <p>(value true/false)</p> </td> - <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1784"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1653">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1790">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> + <li><a href="#d2e1666"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1803"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1672"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1806">/repo/courses/{courseId}/groups</h3> - <p>Description:<br> - CourseGroupWebService - - <P> - Initial Date: 7 apr. 2010 <br> - </p> + <h3 id="d2e1675">/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{messageKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -4742,49 +5060,149 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the user (IdentityImpl)</p> + </td> + </tr> + <tr> + <td> + <p><strong>courseKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> + <tr> + <td> + <p><strong>courseNodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>messageKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The id of the reply message</p> + </td> + </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getGroupList">GET</h4> - <p>Lists all learn groups of the specified course.</p> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#replyToPostPost">POST</h4> + <p>Creates a new reply in the forum of the course node</p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e1813"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1683">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1817">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putNewGroup">PUT</h4> - <p>Creates a new group for the course.</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e1831">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> - <li><a href="#d2e1832">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e1696">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1834">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> + <li><a href="#d2e1709"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1845"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1715"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#replyToPost">PUT</h4> + <p>Creates a new reply in the forum of the course node</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e1722">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e1723">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1727">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1740"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1746"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#replyToPost">PUT</h4> + <p>Creates a new reply in the forum of the course node</p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>title</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The title for the first post in the thread</p> + </td> + </tr> + <tr> + <td> + <p><strong>body</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The body for the first post in the thread</p> + </td> + </tr> + <tr> + <td> + <p><strong>authorKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The author user key (optional)</p> + </td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1765">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1778"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1784"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1848">/repo/courses/{courseId}/groups/{groupKey}</h3> + <h3 id="d2e1787">/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{messageKey}/attachments</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -4794,7 +5212,18 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the user (IdentityImpl)</p> + </td> + </tr> + <tr> + <td> + <p><strong>courseKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -4803,70 +5232,97 @@ </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>courseNodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>messageKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The group's id</p> + <p>The key of the message</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getGroup">GET</h4> - <p>Retrieves the metadata of the specified group.</p> + <h4 id="http://www.example.com#getAttachments">GET</h4> + <p>Retrieves the attachments of the message</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1856"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1797">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1860">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> + <li><a href="#d2e1803"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#deleteGroup">DELETE</h4> - <p>Deletes the business group specified by the key of the group.</p> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> + <p>Upload the attachment of a message, as parameter:<br> + filename The name of the attachment<br> + file The attachment. + </p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e1874"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1810">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1878"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1816">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1882"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1822"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#updateGroup">POST</h4> - <p>Updates the metadata for the specified group.</p> + <h4 id="http://www.example.com#replyToPostAttachment">PUT</h4> + <p>Upload the attachment of a message, as parameter:<br> + filename The name of the attachment<br> + file The attachment. + </p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e1889">*/* (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e1829">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1830">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e1834">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1891"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1840"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> + <p>Upload the attachment of a message, as parameter:<br> + filename The name of the attachment<br> + file The attachment. + </p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1895">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> + <li><a href="#d2e1849">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1906"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1855"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1909">/repo/courses/{courseId}/groups/version</h3> + <h3 id="d2e1858">/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{messageKey}/attachments/{filename}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -4876,117 +5332,78 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The key of the user (IdentityImpl)</p> + </td> </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>Retrieves the version of the Course Group Web Service.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1914">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e1924">/repo/courses/{courseId}/groups/{groupKey}/forum</h3> - <p>Description:<br> - Web service to manage a forum. - - <P> - Initial Date: 20 apr. 2010 <br> - </p> - <h6>resource-wide template parameters</h6> - <table> <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> + <td> + <p><strong>courseKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>courseNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>messageKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key of the group</p> + <p>The identity key of the user being searched</p> + </td> + </tr> + <tr> + <td> + <p><strong>filename</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The name of the attachment</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getForum">GET</h4> - <p>Retrieves the forum.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e1936"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getAttachment">GET</h4> + <p>Retrieves the attachment of the message</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1942">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + <li><a href="#d2e1871">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1955"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1877"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e1958">/repo/courses/{courseId}/groups/{groupKey}/forum/threads<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>groupKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The key of the group</p> - </td> - </tr> - </table> + <h3 id="d2e1880">/repo/entries<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&managed</span><span class="optional">&externalId</span><span class="optional">&externalRef</span><span class="optional">&resourceType</span></h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getThreads">GET</h4> - <p>Retrieves the threads in the forum</p> + <h4 id="http://www.example.com#getEntries">GET</h4> <h6>request query parameters</h6> <table> <tr> @@ -5016,45 +5433,71 @@ </tr> <tr> <td> - <p><strong>orderBy</strong></p> + <p><strong>managed</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>creationDate</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>externalId</strong></p> </td> <td> - <p>(value name,creationDate)</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>asc</strong></p> + <p><strong>externalRef</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>(value true/false)</p> + <p><strong>resourceType</strong></p> </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1974"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1890">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1891">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#getEntriesText">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1980">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e1894">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1895">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putResource">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e1993"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1898">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1899">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e1900">/repo/entries/search<span class="optional">?type</span><span class="optional">&author</span><span class="optional">&name</span><span class="optional">&myentries</span></h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#newThreadToForum">PUT</h4> - <p>Creates a new thread in the forum of the course node</p> + <h4 id="http://www.example.com#searchEntries">GET</h4> <h6>request query parameters</h6> <table> <tr> @@ -5064,75 +5507,127 @@ </tr> <tr> <td> - <p><strong>title</strong></p> + <p><strong>type</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td> - <p>The title for the first post in the thread</p> - </td> + <td></td> </tr> <tr> <td> - <p><strong>body</strong></p> + <p><strong>author</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>*</tt></p> </td> - <td> - <p>The body for the first post in the thread</p> - </td> + <td></td> </tr> <tr> <td> - <p><strong>authorKey</strong></p> + <p><strong>name</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>*</tt></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The author user key (optional)</p> + <p><strong>myentries</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> </td> + <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2012"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1908">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1909">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e1910">/repo/entries/version</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2018">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1913">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e1914">/repo/entries/{repoEntryKey}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>repoEntryKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#deleteCourse">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2031"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1918">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1919">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#newThreadToForumPost">POST</h4> - <p>Creates a new thread in the forum of the course node</p> - <p><em>acceptable request representations:</em></p> + <h4 id="http://www.example.com#getById">GET</h4> + <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2038">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1922">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1923">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#updateEntry">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e2045"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1926">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">repositoryEntryVO</abbr>)</a></li> + <li><a href="#d2e1927">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">repositoryEntryVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2051">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e1929">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1930">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#replaceResource">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2064"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1933">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1934">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2067">/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{threadKey}<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h3 id="d2e1935">/repo/entries/{repoEntryKey}/owners/{identityKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -5142,110 +5637,52 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>repoEntryKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the group</p> - </td> + <td></td> </tr> <tr> <td> - <p><strong>threadKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>repoEntryKey</strong></p> </td> <td> - <p>The key of the thread</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getMessages">GET</h4> - <p>Retrieves the messages in the thread</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>orderBy</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>creationDate</tt></p> - </td> - <td> - <p>(value name, creationDate)</p> - </td> - </tr> - <tr> - <td> - <p><strong>asc</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> - </td> - <td> - <p>(value true/false)</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2086"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#addOwner">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2092">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e1940">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#removeOwner">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2105"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1943">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2108">/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{messageKey}</h3> + <h3 id="d2e1944">/repo/entries/{repoEntryKey}/participants</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -5255,140 +5692,49 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>repoEntryKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The key of the group</p> - </td> - </tr> - <tr> - <td> - <p><strong>messageKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>repoEntryKey</strong></p> </td> <td> - <p>The id of the reply message</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#replyToPostPost">POST</h4> - <p>Creates a new reply in the forum of the course node</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e2116">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2129"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2135">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getParticipants">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2148"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1948">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1949">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPost">PUT</h4> - <p>Creates a new reply in the forum of the course node</p> + <h4 id="http://www.example.com#addParticipants">PUT</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e2155">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e2156">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2160"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2166">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2179"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#replyToPost">PUT</h4> - <p>Creates a new reply in the forum of the course node</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>title</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The title for the first post in the thread</p> - </td> - </tr> - <tr> - <td> - <p><strong>body</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The body for the first post in the thread</p> - </td> - </tr> - <tr> - <td> - <p><strong>authorKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The author user key (optional)</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2198"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1952">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1953">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2204">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2217"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1955">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2220">/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{messageKey}/attachments</h3> + <h3 id="d2e1956">/repo/entries/{repoEntryKey}/participants/{identityKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -5398,108 +5744,104 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>repoEntryKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the group</p> - </td> + <td></td> </tr> <tr> <td> - <p><strong>messageKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>repoEntryKey</strong></p> </td> <td> - <p>The key of the message</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getAttachments">GET</h4> - <p>Retrieves the attachments of the message</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2230"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#addParticipant">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2236">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1961">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> - <p>Upload the attachment of a message, as parameter:<br> - filename The name of the attachment<br> - file The attachment. - </p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e2243">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2249"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#removeParticipant">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2255">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1964">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e1965">/repo/entries/{repoEntryKey}/owners</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>repoEntryKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>repoEntryKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#replyToPostAttachment">PUT</h4> - <p>Upload the attachment of a message, as parameter:<br> - filename The name of the attachment<br> - file The attachment. - </p> + <h4 id="http://www.example.com#addOwners">PUT</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e2262">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e2263">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2267"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1969">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1970">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2273">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1972">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> - <p>Upload the attachment of a message, as parameter:<br> - filename The name of the attachment<br> - file The attachment. - </p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2282"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getOwners">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2288">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1975">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1976">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2291">/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{messageKey}/attachments/{filename}</h3> + <h3 id="d2e1977">/repo/entries/{repoEntryKey}/file</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -5509,65 +5851,37 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>repoEntryKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The key of the group</p> - </td> - </tr> - <tr> - <td> - <p><strong>filename</strong></p> + <p><strong>repoEntryKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td> - <p>The name of the attachment</p> - </td> - </tr> - <tr> - <td> - <p><strong>messageKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The identity key of the user being searched</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getAttachment">GET</h4> - <p>Retrieves the attachment of the message</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2304"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getRepoFileById">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2310">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1981">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1982">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2313">/repo/courses/{courseId}/groups/{groupKey}/folder</h3> + <h3 id="d2e1983">/repo/entries/{repoEntryKey}/status</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -5577,19 +5891,19 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>repoEntryKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>repoEntryKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> @@ -5597,61 +5911,21 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#listFiles">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2317">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2318">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2319">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2320">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2321">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFileToRoot">POST</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2324">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2325">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e2328">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2333">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2334">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFileToRoot">PUT</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2337">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2338">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> + <h4 id="http://www.example.com#deleteCoursePermanently">POST</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e2341">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e2342">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e1987">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2344">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2345">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1990">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1991">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2346">/repo/courses/{courseId}/groups/{groupKey}/folder/{path:.*}</h3> + <h3 id="d2e1993">/repo/entries/{repoEntryKey}/coaches/{identityKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -5661,16 +5935,16 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>repoEntryKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -5679,7 +5953,7 @@ </tr> <tr> <td> - <p><strong>path</strong></p> + <p><strong>repoEntryKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> @@ -5690,80 +5964,93 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#listFiles">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2350">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2351">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2352">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2353">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2354">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFileToFolder">POST</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2357">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2358">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2359">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e2362">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#addCoach">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2367">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2368">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2369">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e1998">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#putFileToFolder">PUT</h4> + <h4 id="http://www.example.com#removeCoach">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2372">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2373">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2374">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2001">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e2002">/repo/entries/{repoEntryKey}/coaches</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>repoEntryKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>repoEntryKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> + <h4 id="http://www.example.com#addCoach">PUT</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e2377">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e2378">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e2006">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2007">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2380">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2381">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2009">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#putFolders">PUT</h4> + <h4 id="http://www.example.com#getCoaches">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2384">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2385">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2012">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2013">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e2014">/i18n</h3> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e2015">/i18n/version</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#deleteItem">DELETE</h4> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2388">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2389">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2018">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2390">/repo/courses/{courseId}/groups/{groupKey}/folder/version</h3> + <h3 id="d2e2019">/i18n/{package}/{key}<span class="optional">?locale</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -5773,19 +6060,19 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>package</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>key</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> @@ -5793,16 +6080,39 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> + <h4 id="http://www.example.com#getTranslation">GET</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>locale</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2393">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2026">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2394">/repo/courses/{courseId}/groups/{groupKey}/folder/metadata/{path:.*}</h3> + <h3 id="d2e2027">/repo/courses/{resourceKey}/certificates</h3> + <p>Initial date: 17.11.2014<br></p> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e2030">/repo/courses/{resourceKey}/certificates/{identityKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -5812,89 +6122,62 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>resourceKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The primary key of the resource of the repository entry of the course.</p> + </td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>path</strong></p> - </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>The owner of the certificate</p> </td> - <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getFileMetadata">GET</h4> + <h4 id="http://www.example.com#getCertificateInfo">HEAD</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2398">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2399">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2039">application/pdf<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2400">/repo/courses/{courseId}/calendar</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"></div> - </div> - <div class="resource"> - <h3 id="d2e2401">/repo/courses/{courseId}/calendar/events<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&onlyFuture</span></h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getEventsByCalendar">GET</h4> + <h4 id="http://www.example.com#getCertificate">GET</h4> + <p>Return the certificate as PDF file.</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2046">application/pdf<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2052"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2058"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteCertificateInfo">DELETE</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2063">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putCertificate">PUT</h4> + <p>Generate a new certificate.</p> <h6>request query parameters</h6> <table> <tr> @@ -5904,178 +6187,81 @@ </tr> <tr> <td> - <p><strong>start</strong></p> + <p><strong>score</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> + </td> + <td> + <p>The score which appears in the certificate</p> </td> - <td></td> </tr> <tr> <td> - <p><strong>limit</strong></p> + <p><strong>passed</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td> + <p>The passed/failed which appears in the certificate (true/false)</p> </td> - <td></td> </tr> <tr> <td> - <p><strong>onlyFuture</strong></p> + <p><strong>creationDate</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The date of the certification</p> </td> - <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2408">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2409">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putEventByCalendar">PUT</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e2412">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> - <li><a href="#d2e2413">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e2080"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2415">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2416">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postEventByCalendar">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e2419">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2420">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> - <li><a href="#d2e2421">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e2086"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2423">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2424">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2092"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2425">/repo/courses/{courseId}/calendar/events/{eventId}</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>eventId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#deleteEventByCalendar">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2429">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2430">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2098"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2431">/repo/courses/{courseId}/vitero/{subIdentifier}</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>subIdentifier</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getRooms">GET</h4> + <h4 id="http://www.example.com#postCertificate">POST</h4> + <p>Upload a new certificate.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2435">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2436">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#createRoom">PUT</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e2439">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> - <li><a href="#d2e2440">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e2107"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2442">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2443">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#updateRoom">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e2446">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> - <li><a href="#d2e2447">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e2113"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2449">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2450">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2119"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2451">/repo/courses/{courseId}/vitero/{subIdentifier}/{bookingId}/members</h3> + <h3 id="d2e2122">/repo/courses/{courseId}/elements/contact<span class="optional">?parentNodeId</span><span class="optional">&position</span><span class="optional">&shortTitle</span><span class="optional">&longTitle</span><span class="optional">&objectives</span><span class="optional">&visibilityExpertRules</span><span class="optional">&accessExpertRules</span><span class="optional">&coaches</span><span class="optional">&participants</span><span class="optional">&groups</span><span class="optional">&areas</span><span class="optional">&to</span><span class="optional">&defaultSubject</span><span class="optional">&defaultBody</span></h3> + <p>Description:<br> + This handles the contact building block. + + <P> + Initial Date: 10 mai 2010 <br> + </p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -6092,135 +6278,226 @@ </td> <td></td> </tr> - <tr> - <td> - <p><strong>subIdentifier</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>bookingId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td></td> - </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getMembers">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2455">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2456">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#addMembers">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e2459">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2460">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2462">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2463">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2464">/repo/courses/{courseId}/vitero/{subIdentifier}/{bookingId}</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>subIdentifier</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>bookingId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td></td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#deleteRoom">DELETE</h4> + <h4 id="http://www.example.com#attachContact">PUT</h4> + <p>This attaches a contact element onto a given course, the element will be + inserted underneath the supplied parentNodeId + </p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>parentNodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The node's id which will be the parent of this structure</p> + </td> + </tr> + <tr> + <td> + <p><strong>position</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + </td> + <td> + <p>The node's position relative to its sibling nodes (optional)</p> + </td> + </tr> + <tr> + <td> + <p><strong>shortTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td> + <p>The node short title</p> + </td> + </tr> + <tr> + <td> + <p><strong>longTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td> + <p>The node long title</p> + </td> + </tr> + <tr> + <td> + <p><strong>objectives</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td> + <p>The node learning objectives</p> + </td> + </tr> + <tr> + <td> + <p><strong>visibilityExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The rules to view the node (optional)</p> + </td> + </tr> + <tr> + <td> + <p><strong>accessExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The rules to access the node (optional)</p> + </td> + </tr> + <tr> + <td> + <p><strong>coaches</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td> + <p>Send to coaches (true/false)</p> + </td> + </tr> + <tr> + <td> + <p><strong>participants</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td> + <p>Send to participants (true/false)</p> + </td> + </tr> + <tr> + <td> + <p><strong>groups</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>A list of learning groups (list of keys)</p> + </td> + </tr> + <tr> + <td> + <p><strong>areas</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>A list of learning areas (list of keys)</p> + </td> + </tr> + <tr> + <td> + <p><strong>to</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The list of e-mail address</p> + </td> + </tr> + <tr> + <td> + <p><strong>defaultSubject</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The default subject</p> + </td> + </tr> + <tr> + <td> + <p><strong>defaultBody</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The default body text</p> + </td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2468">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e2469">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2176">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2189"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2470">/ping</h3> - <p>Description:<br> - Ping to test the presence of the REST Api - - <P> - Initial Date: 7 apr. 2010 <br> - </p> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#ping">GET</h4> - <p>Return a string</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2477">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2195"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2487">/ping/version</h3> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>The version of the Ping Web Service</p> + <h4 id="http://www.example.com#attachContactPost">POST</h4> + <p>This attaches a contact element onto a given course, the element will be + inserted underneath the supplied parentNodeId + </p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e2202">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2225">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2238"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2492">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2244"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2502">/ping/{name}</h3> + <h3 id="d2e2247">/openmeetings</h3> + <p>Initial date: 13.11.2012<br></p> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e2250">/openmeetings/{identityToken}/portrait</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -6230,55 +6507,40 @@ </tr> <tr> <td> - <p><strong>name</strong></p> + <p><strong>identityToken</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td></td> + <td> + <p>The identity key of the user being searched</p> + </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#ping">POST</h4> - <p>Return a string</p> + <h4 id="http://www.example.com#getPortrait">GET</h4> + <p>Retrieves the portrait of an user</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2260">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2508">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2266"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2518">/repo/courses/{courseId}/resourcefolders</h3> + <h3 id="d2e2269">/repo/courses/{courseId}/elements/forum</h3> <p>Description:<br> - This will handle the resources folders in the course: the course storage folder - and the shared folder. The course folder has a read-write access but the shared - folder can only be read. + REST API implementation for forum course node <P> - Initial Date: 26 apr. 2010 <br> + Initial Date: 20.12.2010 <br> </p> - <h6>Methods</h6> - <div class="methods"></div> - </div> - <div class="resource"> - <h3 id="d2e2521">/repo/courses/{courseId}/resourcefolders/version</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>The version of the resources folders Web Service</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2526">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2536">/repo/courses/{courseId}/resourcefolders/coursefolder/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -6286,15 +6548,6 @@ <th>value</th> <th>description</th> </tr> - <tr> - <td> - <p><strong>path</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> <tr> <td> <p><strong>courseId</strong></p> @@ -6308,65 +6561,166 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getCourseFiles">GET</h4> - <p>This retrieves the files in the course folder</p> + <h4 id="http://www.example.com#getForums">GET</h4> + <p>Retrieves metadata of the published course node</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2543"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2279">application/xml, application/json (<abbr title="{http://www.example.com} forumVOes">ns3:forumVOes</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2547"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2292"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2551"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2298"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#attachFileToFolderPost">POST</h4> - <p>This attaches the uploaded file(s) to the supplied folder id.</p> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#attachForumPost">POST</h4> + <p>This attaches a Forum Element onto a given course. The element will be + inserted underneath the supplied parentNodeId. + </p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e2558"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2305">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2562"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2319">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2566"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2332"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2570"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2338"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#attachFileToFolder">PUT</h4> - <p>This attaches the uploaded file(s) to the supplied folder id at the root level</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2577"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#attachForum">PUT</h4> + <p>This attaches a Forum Element onto a given course. The element will be + inserted underneath the supplied parentNodeId. + </p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>parentNodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>position</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>shortTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>longTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>objectives</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>visibilityExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>moderatorExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>posterExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>readerExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2581"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2358">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2585"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2371"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2589"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2377"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2592">/repo/courses/{courseId}/resourcefolders/coursefolder</h3> + <h3 id="d2e2380">/repo/courses/{courseId}/elements/forum/{nodeId}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -6383,76 +6737,6 @@ </td> <td></td> </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getCourseFiles">GET</h4> - <p>This retrieves the files in the course folder</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2598"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2602"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2606"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#attachFileToFolderPost">POST</h4> - <p>This attaches the uploaded file(s) to the supplied folder id.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2613"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2617"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2621"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2625"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#attachFileToFolder">PUT</h4> - <p>This attaches the uploaded file(s) to the supplied folder id at the root level</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2632"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2636"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2640"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2644"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2647">/repo/courses/{courseId}/resourcefolders/sharedfolder</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> <tr> <td> <p><strong>courseId</strong></p> @@ -6464,29 +6748,40 @@ <p>The course resourceable's id</p> </td> </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The node's id</p> + </td> + </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getSharedFiles">GET</h4> - <p>This retrieves the files in the shared folder</p> + <h4 id="http://www.example.com#getForum">GET</h4> + <p>Retrieves metadata of the published course node</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2655"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2393">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2659"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2406"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2663"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2412"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2666">/repo/courses/{courseId}/resourcefolders/sharedfolder/{path:.*}</h3> + <h3 id="d2e2415">/repo/courses/{courseId}/elements/forum/{nodeId}/thread<span class="optional">?title</span><span class="optional">&body</span><span class="optional">&identityName</span><span class="optional">&sticky</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -6496,10 +6791,10 @@ </tr> <tr> <td> - <p><strong>path</strong></p> + <p><strong>courseId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> @@ -6511,69 +6806,26 @@ <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The course resourceable's id</p> + <p>The id of the course.</p> </td> </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getSharedFiles">GET</h4> - <p>This retrieves the files in the shared folder</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2675"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2679"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2683"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2686">/auth</h3> - <p>Description:<br> - Authenticate against OLAT Provider - - <P> - Initial Date: 7 apr. 2010 <br> - </p> - <h6>Methods</h6> - <div class="methods"></div> - </div> - <div class="resource"> - <h3 id="d2e2689">/auth/{username}<span class="optional">?password</span><span class="optional">&x-olat-token</span></h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> <tr> <td> - <p><strong>username</strong></p> + <p><strong>nodeId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td></td> + <td> + <p>The id of the course node.</p> + </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#login">GET</h4> - <p>Authenticates against OLAT Provider and provides a security token if - authentication is successful. The security token is returned as - a header named X-OLAT-TOKEN. Given that the password is sent in clear text and not encrypted, it is not advisable - to use this service over a none secure connection (https). - </p> + <h4 id="http://www.example.com#newThreadToForum">PUT</h4> + <p>Creates a new thread in the forum of the course node</p> <h6>request query parameters</h6> <table> <tr> @@ -6583,240 +6835,66 @@ </tr> <tr> <td> - <p><strong>password</strong></p> + <p><strong>title</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td></td> + <td> + <p>The title for the first post in the thread</p> + </td> </tr> <tr> <td> - <p><strong>x-olat-token</strong></p> + <p><strong>body</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td></td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2698"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2702">text/plain, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2713"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2716">/auth/version</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>Retrieves the version of the User Authentication Web Service</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2721">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2731">/repo/courses/{courseId}/elements/forum</h3> - <p>Description:<br> - REST API implementation for forum course node - - <P> - Initial Date: 20.12.2010 <br> - </p> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#attachForumPost">POST</h4> - <p>This attaches a Forum Element onto a given course. The element will be - inserted underneath the supplied parentNodeId. - </p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e2739">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2753"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2759">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2772"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getForums">GET</h4> - <p>Retrieves metadata of the published course node</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2781"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2787">application/xml, application/json (<abbr title="{http://www.example.com} forumVOes">ns3:forumVOes</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2800"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#attachForum">PUT</h4> - <p>This attaches a Forum Element onto a given course. The element will be - inserted underneath the supplied parentNodeId. - </p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> + <td> + <p>The body for the first post in the thread</p> + </td> </tr> <tr> <td> - <p><strong>accessExpertRules</strong></p> + <p><strong>identityName</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>moderatorExpertRules</strong></p> - </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>The author identity name (optional)</p> </td> - <td></td> </tr> <tr> <td> - <p><strong>posterExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><strong>sticky</strong></p> </td> - <td></td> - </tr> - <tr> <td> - <p><strong>readerExpertRules</strong></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Creates sticky thread.</p> </td> - <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2820"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2441">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2826">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e2454"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2839"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2460"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2842">/repo/courses/{courseId}/elements/forum/{nodeId}/thread<span class="optional">?title</span><span class="optional">&body</span><span class="optional">&identityName</span><span class="optional">&sticky</span></h3> + <h3 id="d2e2463">/repo/courses/{courseId}/elements/forum/{nodeId}/message<span class="optional">?parentMessageId</span><span class="optional">&title</span><span class="optional">&body</span><span class="optional">&identityName</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -6835,32 +6913,32 @@ </tr> <tr> <td> - <p><strong>nodeId</strong></p> + <p><strong>courseId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The id of the course node.</p> + <p>The id of the course.</p> </td> </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>nodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The id of the course.</p> + <p>The id of the course node.</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#newThreadToForum">PUT</h4> - <p>Creates a new thread in the forum of the course node</p> + <h4 id="http://www.example.com#newMessageToForum">PUT</h4> + <p>Creates a new forum message in the forum of the course node</p> <h6>request query parameters</h6> <table> <tr> @@ -6870,66 +6948,72 @@ </tr> <tr> <td> - <p><strong>title</strong></p> + <p><strong>parentMessageId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The title for the first post in the thread</p> + <p>The id of the parent message.</p> </td> </tr> <tr> <td> - <p><strong>body</strong></p> + <p><strong>title</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The body for the first post in the thread</p> + <p>The title for the first post in the thread</p> </td> </tr> <tr> <td> - <p><strong>identityName</strong></p> + <p><strong>body</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The author identity name (optional)</p> + <p>The body for the first post in the thread</p> </td> </tr> <tr> <td> - <p><strong>sticky</strong></p> + <p><strong>identityName</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>Creates sticky thread.</p> + <p>The author identity name (optional)</p> </td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2868"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2489">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2874">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e2502"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e2887"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2508"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e2890">/repo/courses/{courseId}/elements/forum/{nodeId}/message<span class="optional">?parentMessageId</span><span class="optional">&title</span><span class="optional">&body</span><span class="optional">&identityName</span></h3> + <h3 id="d2e2511">/repo/courses/{courseId}/elements/forum/{nodeId}/forum</h3> + <p>Description:<br> + Web service to manage a forum. + + <P> + Initial Date: 20 apr. 2010 <br> + </p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -6946,6 +7030,15 @@ </td> <td></td> </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> <tr> <td> <p><strong>nodeId</strong></p> @@ -6953,9 +7046,46 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getForum">GET</h4> + <p>Retrieves the forum.</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2522">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2535"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2541"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e2544">/repo/courses/{courseId}/elements/forum/{nodeId}/forum/threads<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> <td> - <p>The id of the course node.</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> @@ -6964,16 +7094,23 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> <td> - <p>The id of the course.</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#newMessageToForum">PUT</h4> - <p>Creates a new forum message in the forum of the course node</p> + <h4 id="http://www.example.com#getThreads">GET</h4> + <p>Retrieves the threads in the forum</p> <h6>request query parameters</h6> <table> <tr> @@ -6983,240 +7120,7 @@ </tr> <tr> <td> - <p><strong>parentMessageId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The id of the parent message.</p> - </td> - </tr> - <tr> - <td> - <p><strong>title</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The title for the first post in the thread</p> - </td> - </tr> - <tr> - <td> - <p><strong>body</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The body for the first post in the thread</p> - </td> - </tr> - <tr> - <td> - <p><strong>identityName</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The author identity name (optional)</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2916"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2922">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2935"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2938">/repo/courses/{courseId}/elements/forum/{nodeId}</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>nodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The node's id</p> - </td> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The course resourceable's id</p> - </td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getForum">GET</h4> - <p>Retrieves metadata of the published course node</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2951"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2957">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2970"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e2973">/repo/courses/{courseId}/elements/forum/{nodeId}/forum</h3> - <p>Description:<br> - Web service to manage a forum. - - <P> - Initial Date: 20 apr. 2010 <br> - </p> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>nodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getForum">GET</h4> - <p>Retrieves the forum.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2984"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e2990">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3003"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e3006">/repo/courses/{courseId}/elements/forum/{nodeId}/forum/threads<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>nodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getThreads">GET</h4> - <p>Retrieves the threads in the forum</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> + <p><strong>start</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> @@ -7261,15 +7165,15 @@ </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3022"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2560">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3028">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e2573"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3041"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2579"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -7318,15 +7222,15 @@ </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3060"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2598">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3066">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e2611"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3079"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2617"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -7334,25 +7238,25 @@ <p>Creates a new thread in the forum of the course node</p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e3086">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2624">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3093"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2631">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3099">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e2644"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3112"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2650"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3115">/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{threadKey}<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h3 id="d2e2653">/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{threadKey}<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -7458,21 +7362,21 @@ </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3134"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2672">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3140">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e2685"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3153"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2691"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3156">/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{messageKey}</h3> + <h3 id="d2e2694">/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{messageKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -7526,19 +7430,19 @@ <p>Creates a new reply in the forum of the course node</p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e3164">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2702">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3177"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2715">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3183">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e2728"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3196"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2734"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -7546,20 +7450,20 @@ <p>Creates a new reply in the forum of the course node</p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e3203">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e3204">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e2741">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e2742">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3208"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2746">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3214">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e2759"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3227"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -7608,21 +7512,21 @@ </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3246"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2784">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3252">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e2797"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3265"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2803"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3268">/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{messageKey}/attachments</h3> + <h3 id="d2e2806">/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{messageKey}/attachments</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -7676,11 +7580,11 @@ <p>Retrieves the attachments of the message</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3278"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2816">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3284">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2822"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -7691,15 +7595,15 @@ </p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e3291">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2829">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3297"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2835">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3303">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2841"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -7710,16 +7614,16 @@ </p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e3310">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e3311">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e2848">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e2849">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3315"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2853">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3321">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2859"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -7730,17 +7634,17 @@ </p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3330"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2868">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3336">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2874"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3339">/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{messageKey}/attachments/{filename}</h3> + <h3 id="d2e2877">/repo/courses/{courseId}/elements/forum/{nodeId}/forum/posts/{messageKey}/attachments/{filename}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -7777,24 +7681,24 @@ </tr> <tr> <td> - <p><strong>filename</strong></p> + <p><strong>messageKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The name of the attachment</p> + <p>The identity key of the user being searched</p> </td> </tr> <tr> <td> - <p><strong>messageKey</strong></p> + <p><strong>filename</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The identity key of the user being searched</p> + <p>The name of the attachment</p> </td> </tr> </table> @@ -7805,17 +7709,28 @@ <p>Retrieves the attachment of the message</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3352"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2890">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3358">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2896"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3361">/repo/courses/{courseId}/elements/contact<span class="optional">?parentNodeId</span><span class="optional">&position</span><span class="optional">&shortTitle</span><span class="optional">&longTitle</span><span class="optional">&objectives</span><span class="optional">&visibilityExpertRules</span><span class="optional">&accessExpertRules</span><span class="optional">&coaches</span><span class="optional">&participants</span><span class="optional">&groups</span><span class="optional">&areas</span><span class="optional">&to</span><span class="optional">&defaultSubject</span><span class="optional">&defaultBody</span></h3> + <h3 id="d2e2900">/repo/courses/{courseId}/db/{category}</h3> + <p>Description:<br> + Access the custom dbs of a course + + <P> + Initial Date: *7 apr. 2010 <br> + </p> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e2903">/repo/courses/{courseId}/db/{category}/values/{name}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -7825,18 +7740,55 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>name</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The name of the key value pair</p> </td> - <td></td> </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#attachContact">PUT</h4> + <tr> + <td> + <p><strong>category</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The name of the database</p> + </td> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The course resourceable's id</p> + </td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getValue">GET</h4> + <p>Retrieve a value of an authenticated user.</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2917">application/xml, application/json (<abbr title="{http://www.example.com} keyValuePair">ns3:keyValuePair</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2928"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putValue">PUT</h4> + <p>Put a new value for an authenticated user.</p> <h6>request query parameters</h6> <table> <tr> @@ -7846,158 +7798,65 @@ </tr> <tr> <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>coaches</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>participants</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>groups</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>areas</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>to</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>defaultSubject</strong></p> + <p><strong>value</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>defaultBody</strong></p> - </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>The value of the key value pair</p> </td> - <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3381">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3382">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2939"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#attachContactPost">POST</h4> + <h4 id="http://www.example.com#getValuePlain">GET</h4> + <p>Retrieve a value of an authenticated user.</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2946">text/plain, text/html (<abbr title="{http://www.example.com} keyValuePair">ns3:keyValuePair</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2957"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#formValue">POST</h4> + <p>Update a value for an authenticated user.</p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e3385">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2964">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2969"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteValue">DELETE</h4> + <p>Delete a value for an authenticated user.</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2976"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e2980"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3406">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3407">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2984"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3408">/repo/courses/{courseId}/elements/folder</h3> + <h3 id="d2e2987">/repo/courses/{courseId}/db/{category}/values</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -8005,6 +7864,17 @@ <th>value</th> <th>description</th> </tr> + <tr> + <td> + <p><strong>category</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The name of the database</p> + </td> + </tr> <tr> <td> <p><strong>courseId</strong></p> @@ -8012,126 +7882,65 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The course resourceable's id</p> + </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getFolders">GET</h4> + <h4 id="http://www.example.com#getValues">GET</h4> + <p>Retrieve all values of the authenticated user</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3412">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3413">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e2998">application/xml, application/json (<abbr title="{http://www.example.com} keyValuePair">ns3:keyValuePair</abbr>)</a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#attachFolder">PUT</h4> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>downloadExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>uploadExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - </table> + <h4 id="http://www.example.com#putValues">PUT</h4> + <p>Put a new value for an authenticated user.</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e3012">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">keyValuePair</abbr>)</a></li> + <li><a href="#d2e3013">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">keyValuePair</abbr>)</a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3425">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3426">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3015"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#attachFolderPost">POST</h4> + <h4 id="http://www.example.com#postValues">POST</h4> + <p>Update a value for an authenticated user.</p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e3429">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3022">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">keyValuePair</abbr>)</a></li> + <li><a href="#d2e3023">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">keyValuePair</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3025"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3028">/repo/courses/{courseId}/db/{category}/version</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> + <p>Retrieves the version of the Course DB Web Service.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3439">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3440">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3033">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3441">/repo/courses/{courseId}/elements/folder/{nodeId}</h3> + <h3 id="d2e3043">/repo/courses/{courseId}/db/{category}/values/{name}/delete</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -8141,21 +7950,25 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>name</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The name of the key value pair</p> </td> - <td></td> </tr> <tr> <td> - <p><strong>nodeId</strong></p> + <p><strong>category</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td></td> + <td> + <p>The name of the database</p> + </td> </tr> <tr> <td> @@ -8164,35 +7977,54 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> + <td> + <p>The course resourceable's id</p> + </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#updateFolder">POST</h4> - <p><em>acceptable request representations:</em></p> + <h4 id="http://www.example.com#deleteValuePost">POST</h4> + <p>Fallbakc method for the browsers</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3057"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3446">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3061"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3454">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3455">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3065"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3068">/repo/wikis</h3> + <p>The Wikis Webservice.<br /> + OO-112 + </p> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getFolder">GET</h4> + <h4 id="http://www.example.com#getWikis">GET</h4> + <p>get list of repo-entry wikis. Group-Wikis are not listed!</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3458">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3459">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3075">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3076">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3460">/repo/courses/{courseId}/elements/folder/{nodeId}/files</h3> + <h3 id="d2e3077">/repo/wikis/{wikiKey}</h3> + <p>The Wiki Webservice<br /> + allows the export of "normal" wikis ( in contrast to group-wikis) OO-112 + </p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -8202,25 +8034,71 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>wikiKey</strong></p> </td> - <td></td> - </tr> - <tr> <td> - <p><strong>courseId</strong></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p>part of the REST path, the resourceable-id / repo-entry-key / + softkey of the wiki resource. + </p> </td> - <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#exportWiki">GET</h4> + <p>will export the specified wiki (which must be a repo-entry-wiki) to a CP + and serve as zip-file.<br /> + </p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3087">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3088">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3089">/ping</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#ping">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3092">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3093">/ping/version</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3096">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3097">/ping/{name}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> </tr> <tr> <td> - <p><strong>nodeId</strong></p> + <p><strong>name</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> @@ -8231,61 +8109,76 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#listFiles">GET</h4> + <h4 id="http://www.example.com#ping">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3465">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3466">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3467">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3468">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3469">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3101">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3102">/system</h3> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e3103">/system/environment</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#postFileToRoot">POST</h4> + <h4 id="http://www.example.com#getEnvironnementXml">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3472">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3473">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3106">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3107">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3108">/system/release</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e3476">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getReleaseInfos">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3481">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3482">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3111">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3112">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3113">/system/log</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#putFileToRoot">PUT</h4> + <h4 id="http://www.example.com#getCurrentLogFile">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3485">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3486">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3116">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3117">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3118">/system/log/version</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e3489">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e3490">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3492">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3493">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3121">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3494">/repo/courses/{courseId}/elements/folder/{nodeId}/files/{path:.*}</h3> + <h3 id="d2e3122">/system/log/{date}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -8295,34 +8188,7 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>nodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>path</strong></p> + <p><strong>date</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> @@ -8333,681 +8199,609 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#listFiles">GET</h4> + <h4 id="http://www.example.com#getLogFileByDate">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3498">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3499">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3500">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3501">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3502">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3126">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3127">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3128">/system/monitoring</h3> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e3129">/system/monitoring/configuration</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#postFileToFolder">POST</h4> + <h4 id="http://www.example.com#getImplementedProbes">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3505">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3506">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3507">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3132">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3133">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3134">/system/monitoring/status</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> - <p><em>acceptable request representations:</em></p> + <h4 id="http://www.example.com#getSystemSummaryVO">GET</h4> + <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3510">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3137">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3138">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3139">/system/monitoring/runtime</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getSystemSummaryVO">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3515">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3516">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3517">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3142">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3143">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3144">/system/monitoring/runtime/classes</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#putFileToFolder">PUT</h4> + <h4 id="http://www.example.com#getCompilationXml">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3520">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3521">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3522">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3147">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3148">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3149">/system/monitoring/runtime/memory</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> - <p><em>acceptable request representations:</em></p> + <h4 id="http://www.example.com#getMemoryStatistics">GET</h4> + <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3525">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e3526">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e3152">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3153">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3154">/system/monitoring/runtime/threads</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getThreadStatistics">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3528">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3529">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3157">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3158">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3159">/system/monitoring/database</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#putFolders">PUT</h4> + <h4 id="http://www.example.com#getDatabaseStatistics">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3532">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3533">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3162">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3163">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3164">/system/monitoring/openolat</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#deleteItem">DELETE</h4> + <h4 id="http://www.example.com#getStatistics">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3536">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3537">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3167">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3168">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3538">/repo/courses/{courseId}/elements/folder/{nodeId}/files/version</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>nodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - </table> + <h3 id="d2e3169">/system/monitoring/openolat/tasks</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> + <h4 id="http://www.example.com#getTasks">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3541">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3172">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3173">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3542">/repo/courses/{courseId}/elements/folder/{nodeId}/files/metadata/{path:.*}</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>nodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>path</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - </table> + <h3 id="d2e3174">/system/monitoring/openolat/users</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getFileMetadata">GET</h4> + <h4 id="http://www.example.com#getUserStatistics">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3546">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3547">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3177">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3178">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3549">/system</h3> - <p><h3>Description:</h3> - <p> - Initial Date: 18 jun. 2010 <br> - </p> - <h6>Methods</h6> - <div class="methods"></div> - </div> - <div class="resource"> - <h3 id="d2e3552">/system/environment</h3> + <h3 id="d2e3179">/system/monitoring/openolat/repository</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getEnvironnementXml">GET</h4> - <p>Return some informations about the environment.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3559">application/xml, application/json (<abbr title="{http://www.example.com} environmentVO">ns3:environmentVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getRepositoryStatistics">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3572"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3182">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3183">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3575">/system/release</h3> + <h3 id="d2e3184">/system/monitoring/openolat/sessions</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getReleaseInfos">GET</h4> - <p>Return the version of the instance.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3582">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getSessions">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3595"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3187">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3188">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3598">/system/notifications</h3> + <h3 id="d2e3189">/system/monitoring/openolat/indexer</h3> <h6>Methods</h6> - <div class="methods"></div> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getStatistics">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3192">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3193">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> </div> <div class="resource"> - <h3 id="d2e3599">/system/notifications/status</h3> + <h3 id="d2e3194">/system/monitoring/openolat/indexer/status</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> <h4 id="http://www.example.com#getStatus">GET</h4> - <p>Return the status of the notifications job: running, stopped</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3606">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3612"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3197">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3198">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> <h4 id="http://www.example.com#setStatus">POST</h4> - <p>Update the status of the notifications job: running, stopped. - Running start the indexer, stopped, stop it. - </p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e3619">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3624"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3201">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3630"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3204">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> <h4 id="http://www.example.com#getPlainTextStatus">GET</h4> - <p>Return the status of the notifications job: running, stopped</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3639">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3645"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3207">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3648">/system/log</h3> - <p>Description:<br> - This web service returns logFiles - - <P> - Initial Date: 23.12.2011 <br> - </p> + <h3 id="d2e3208">/system/monitoring/memory</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getCurrentLogFile">GET</h4> + <h4 id="http://www.example.com#getMemory">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3653">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3654">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3211">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e3655">/system/log/version</h3> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>The version of the Log Web Service</p> + <h4 id="http://www.example.com#getMemoryXml">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3660">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3214">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3215">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3670">/system/log/{date}</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>date</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - </table> + <h3 id="d2e3216">/system/monitoring/memory/pools</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getLogFileByDate">GET</h4> + <h4 id="http://www.example.com#getMemoryPools">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3674">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e3675">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3219">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e3676">/system/monitoring</h3> - <h6>Methods</h6> - <div class="methods"></div> - </div> - <div class="resource"> - <h3 id="d2e3677">/system/monitoring/configuration</h3> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getImplementedProbes">GET</h4> - <p>Return the configuration of the monitoring, which probes are available, - which dependency... - </p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3684">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getMemoryPoolsXml">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3697"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3222">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3223">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3700">/system/monitoring/runtime</h3> + <h3 id="d2e3224">/system/monitoring/memory/samples<span class="optional">?from</span><span class="optional">&to</span><span class="optional">&lastSamples</span></h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getSystemSummaryVO">GET</h4> - <p>Return the statistics about runtime: uptime, classes loaded, memory - summary, threads count... - </p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3707">application/xml, application/json (<abbr title="{http://www.example.com} runtimeVO">ns3:runtimeVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getSamplesXml">GET</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>from</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>to</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>lastSamples</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + </td> + <td></td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3720"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3231">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3232">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3723">/system/monitoring/runtime/classes</h3> + <h3 id="d2e3233">/system/monitoring/threads</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getCompilationXml">GET</h4> - <p>Return some informations about the number of Java classes...</p> + <h4 id="http://www.example.com#getThreads">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3730">application/xml, application/json (<abbr title="{http://www.example.com} classesVO">ns3:classesVO</abbr>)</a></li> + <li><a href="#d2e3236">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#getThreadsXml">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3743"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3239">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3240">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3746">/system/monitoring/runtime/memory</h3> + <h3 id="d2e3241">/system/monitoring/threads/cpu</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getMemoryStatistics">GET</h4> - <p>Return the statistics about memory</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3753">application/xml, application/json (<abbr title="{http://www.example.com} runtimeVO">ns3:runtimeVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getThreadsCpu">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3766"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3244">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3245">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3769">/system/monitoring/runtime/threads</h3> + <h3 id="d2e3246">/system/indexer</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getThreadStatistics">GET</h4> - <p>Return the statistics about threads</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3776">application/xml, application/json (<abbr title="{http://www.example.com} runtimeVO">ns3:runtimeVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getStatistics">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3789"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3249">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3250">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3792">/system/monitoring/database</h3> + <h3 id="d2e3251">/system/indexer/status</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getDatabaseStatistics">GET</h4> - <p>Return the statistics about database and hibernate</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3799">application/xml, application/json (<abbr title="{http://www.example.com} runtimeVO">ns3:runtimeVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getStatus">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3812"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3254">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3255">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e3815">/system/monitoring/openolat</h3> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getStatistics">GET</h4> - <p>Return the statistics about OpenOLAT, users count, courses count...</p> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#setStatus">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e3822">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> + <li><a href="#d2e3258">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3835"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3261">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e3838">/system/monitoring/openolat/tasks</h3> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getTasks">GET</h4> - <p>Return some statistics about long running tasks.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3845">application/xml, application/json (<abbr title="{http://www.example.com} taskVOes">ns3:taskVOes</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getPlainTextStatus">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3858"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3264">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3861">/system/monitoring/openolat/users</h3> + <h3 id="d2e3265">/system/notifications</h3> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e3266">/system/notifications/status</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getUserStatistics">GET</h4> - <p>Return the statistics about OpenOLAT users</p> + <h4 id="http://www.example.com#getStatus">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3868">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> + <li><a href="#d2e3269">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3270">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#setStatus">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e3273">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3881"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3276">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e3884">/system/monitoring/openolat/sessions</h3> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getSessions">GET</h4> - <p>Return some statistics about session.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3891">application/xml, application/json (<abbr title="{http://www.example.com} sessionVO">ns3:sessionVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getPlainTextStatus">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3904"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3279">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3907">/system/monitoring/openolat/repository</h3> + <h3 id="d2e3280">/repo/forums</h3> + <p>Description:<br> + Web service to manage forums. + + <P> + Initial Date: 26 aug. 2010 <br> + </p> <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getRepositoryStatistics">GET</h4> - <p>Return the statistics about the repository, courses count, published courses...</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3914">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3927"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> + <div class="methods"></div> </div> <div class="resource"> - <h3 id="d2e3930">/system/monitoring/openolat/indexer</h3> + <h3 id="d2e3283">/repo/forums/version</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getStatistics">GET</h4> - <p>Return the statistics about the indexer</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3937">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getVersion">GET</h4> + <p>The version of the Forum Web Service</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3950"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3288">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e3953">/system/monitoring/openolat/indexer/status</h3> + <h3 id="d2e3298">/repo/forums/{forumKey}</h3> + <p>Description:<br> + Web service to manage a forum. + + <P> + Initial Date: 20 apr. 2010 <br> + </p> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>forumKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the forum</p> + </td> + </tr> + </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getStatus">GET</h4> - <p>Return the status of the indexer: running, stopped</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3960">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3966"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#setStatus">POST</h4> - <p>Update the status of the indexer: running, stopped. - Running start the indexer, stopped, stop it. - </p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e3973">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e3978"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getForum">GET</h4> + <p>Retrieves the forum.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3984"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3310">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getPlainTextStatus">GET</h4> - <p>Return the status of the indexer: running, stopped</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3993">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3323"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e3999"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3329"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4002">/system/monitoring/memory</h3> - <p><h3>Description:</h3> - - Initial Date: 21 juin 2010 <br> - </p> + <h3 id="d2e3332">/repo/forums/{forumKey}/threads<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>forumKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the forum</p> + </td> + </tr> + </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getMemory">GET</h4> - <p>Return informations about memory.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4011">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4017"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getMemoryXml">GET</h4> - <p>Return some informations about memory.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4026">application/xml, application/json (<abbr title="{http://www.example.com} memoryVO">ns3:memoryVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getThreads">GET</h4> + <p>Retrieves the threads in the forum</p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>orderBy</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>creationDate</tt></p> + </td> + <td> + <p>(value name,creationDate)</p> + </td> + </tr> + <tr> + <td> + <p><strong>asc</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td> + <p>(value true/false)</p> + </td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4039"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3348">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e4042">/system/monitoring/memory/pools</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getMemoryPools">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4045">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3361"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getMemoryPoolsXml">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4048">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4049">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3367"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e4050">/system/monitoring/memory/samples<span class="optional">?from</span><span class="optional">&to</span><span class="optional">&lastSamples</span></h3> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getSamplesXml">GET</h4> + <h4 id="http://www.example.com#newThreadToForum">PUT</h4> + <p>Creates a new thread in the forum of the course node</p> <h6>request query parameters</h6> <table> <tr> @@ -9017,178 +8811,110 @@ </tr> <tr> <td> - <p><strong>from</strong></p> + <p><strong>title</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td></td> + <td> + <p>The title for the first post in the thread</p> + </td> </tr> <tr> <td> - <p><strong>to</strong></p> + <p><strong>body</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td></td> + <td> + <p>The body for the first post in the thread</p> + </td> </tr> <tr> <td> - <p><strong>lastSamples</strong></p> + <p><strong>authorKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The author user key (optional)</p> </td> - <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4057">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4058">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3386">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e4059">/system/monitoring/threads</h3> - <p><h3>Description:</h3> - - Initial Date: 21 juin 2010 <br> - </p> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getThreads">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4064">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3399"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getThreadsXml">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4067">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4068">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3405"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e4069">/system/monitoring/threads/cpu</h3> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getThreadsCpu">GET</h4> + <h4 id="http://www.example.com#newThreadToForumPost">POST</h4> + <p>Creates a new thread in the forum of the course node</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e3412">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4072">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4073">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3419">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e4074">/system/indexer</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getStatistics">GET</h4> - <p>Return the statistics about the indexer</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4081">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>)</a></li> + <li><a href="#d2e3432"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4094"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3438"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4097">/system/indexer/status</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getStatus">GET</h4> - <p>Return the status of the indexer: running, stopped</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4104">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4110"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#setStatus">POST</h4> - <p>Update the status of the indexer: running, stopped. - Running start the indexer, stopped, stop it. - </p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e4117">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4122"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4128"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getPlainTextStatus">GET</h4> - <p>Return the status of the indexer: running, stopped</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4137">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4143"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e4146">/repo/entries</h3> - <p>Description:<br> - This handles the repository entries - - <P> - Initial Date: 19.05.2009 <br> - </p> + <h3 id="d2e3441">/repo/forums/{forumKey}/posts/{threadKey}<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>forumKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the forum</p> + </td> + </tr> + <tr> + <td> + <p><strong>threadKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the thread</p> + </td> + </tr> + </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getEntriesText">GET</h4> - <p>List all entries in the OLAT repository</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4153">text/plain, text/html, application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putResource">PUT</h4> - <p>Import a resource in the repository</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4167">application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4178"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getEntries">GET</h4> - <p>List all entries in the OLAT repository</p> + <h4 id="http://www.example.com#getMessages">GET</h4> + <p>Retrieves the messages in the thread</p> <h6>request query parameters</h6> <table> <tr> @@ -9204,9 +8930,7 @@ <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> <p>Default: <tt>0</tt></p> </td> - <td> - <p>(optional)</p> - </td> + <td></td> </tr> <tr> <td> @@ -9216,69 +8940,126 @@ <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> <p>Default: <tt>25</tt></p> </td> - <td> - <p>(optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>managed</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td> - <p>(optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>externalId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>External ID (optional)</p> - </td> + <td></td> </tr> <tr> <td> - <p><strong>externalRef</strong></p> + <p><strong>orderBy</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>creationDate</tt></p> </td> <td> - <p>External reference number (optional)</p> + <p>(value name, creationDate)</p> </td> </tr> <tr> <td> - <p><strong>resourceType</strong></p> + <p><strong>asc</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> </td> <td> - <p>The resource type (CourseModule) (optional)</p> + <p>(value true/false)</p> </td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4204">text/plain, text/html, application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> + <li><a href="#d2e3460">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3473"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3479"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4214">/repo/entries/search<span class="optional">?type</span><span class="optional">&author</span><span class="optional">&name</span><span class="optional">&myentries</span></h3> + <h3 id="d2e3482">/repo/forums/{forumKey}/posts/{messageKey}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>forumKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the forum</p> + </td> + </tr> + <tr> + <td> + <p><strong>messageKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The id of the reply message</p> + </td> + </tr> + </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#searchEntries">GET</h4> - <p>Search for repository entries, possible search attributes are name, author and type</p> + <h4 id="http://www.example.com#replyToPostPost">POST</h4> + <p>Creates a new reply in the forum of the course node</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e3490">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3503">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3516"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3522"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#replyToPost">PUT</h4> + <p>Creates a new reply in the forum of the course node</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e3529">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e3530">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3534">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3547"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3553"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#replyToPost">PUT</h4> + <p>Creates a new reply in the forum of the course node</p> <h6>request query parameters</h6> <table> <tr> @@ -9288,85 +9069,55 @@ </tr> <tr> <td> - <p><strong>type</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>Filter by the file resource type of the repository entry</p> - </td> - </tr> - <tr> - <td> - <p><strong>author</strong></p> + <p><strong>title</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>*</tt></p> </td> <td> - <p>Filter by the author's username</p> + <p>The title for the first post in the thread</p> </td> </tr> <tr> <td> - <p><strong>name</strong></p> + <p><strong>body</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>*</tt></p> </td> <td> - <p>Filter by name of repository entry</p> + <p>The body for the first post in the thread</p> </td> </tr> <tr> <td> - <p><strong>myentries</strong></p> + <p><strong>authorKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>Only search entries the requester owns</p> + <p>The author user key (optional)</p> </td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4232">application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> + <li><a href="#d2e3572">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4243"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3585"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e4246">/repo/entries/version</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>The version number of this web service</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4251">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3591"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4252">/repo/entries/{repoEntryKey}</h3> - <p>Description:<br> - Repository entry resource - - <P> - Initial Date: 19.05.2009 <br> - </p> + <h3 id="d2e3594">/repo/forums/{forumKey}/posts/{messageKey}/attachments</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -9376,135 +9127,99 @@ </tr> <tr> <td> - <p><strong>repoEntryKey</strong></p> + <p><strong>forumKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The key of the forum</p> + </td> + </tr> + <tr> + <td> + <p><strong>messageKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key or soft key of the repository entry</p> + <p>The key of the message</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#deleteCourse">DELETE</h4> - <p>Delete a course by id</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4264"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getAttachments">GET</h4> + <p>Retrieves the attachments of the message</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4270"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3604">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4276"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3610"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#updateEntry">POST</h4> + <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> + <p>Upload the attachment of a message, as parameter:<br> + filename The name of the attachment<br> + file The attachment. + </p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e4281">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">repositoryEntryVO</abbr>)</a></li> - <li><a href="#d2e4282">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">repositoryEntryVO</abbr>)</a></li> + <li><a href="#d2e3617">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3623">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4284">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e4285">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3629"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replaceResource">POST</h4> - <p>Replace a resource in the repository and update its display name. The implementation is - limited to CP. + <h4 id="http://www.example.com#replyToPostAttachment">PUT</h4> + <p>Upload the attachment of a message, as parameter:<br> + filename The name of the attachment<br> + file The attachment. </p> - <p><em>available response representations:</em></p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e4290">application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> + <li><a href="#d2e3636">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e3637">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4301"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getById">GET</h4> - <p>get a resource in the repository</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4308"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3641">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4312">application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> + <li><a href="#d2e3647"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e4322">/repo/entries/{repoEntryKey}/file</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>repoEntryKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The key or soft key of the repository entry</p> - </td> - </tr> - <tr> - <td> - <p><strong>repoEntryKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getRepoFileById">GET</h4> - <p>Download the export zip file of a repository entry.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4328"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4332"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4336">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> + <p>Upload the attachment of a message, as parameter:<br> + filename The name of the attachment<br> + file The attachment. + </p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4347"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3656">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4351"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3662"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4354">/repo/entries/{repoEntryKey}/coaches/{identityKey}</h3> + <h3 id="d2e3665">/repo/forums/{forumKey}/posts/{messageKey}/attachments/{filename}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -9514,124 +9229,70 @@ </tr> <tr> <td> - <p><strong>repoEntryKey</strong></p> + <p><strong>forumKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key or soft key of the repository entry</p> + <p>The key of the forum</p> </td> </tr> <tr> <td> - <p><strong>repoEntryKey</strong></p> + <p><strong>messageKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key of the repository entry</p> + <p>The identity key of the user being searched</p> </td> </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>filename</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The user's id</p> + <p>The name of the attachment</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#addCoach">PUT</h4> - <p>Adds a coach to the repository entry.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4365"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4369"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4373"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#removeCoach">DELETE</h4> - <p>Removes the coach from the repository entry.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4380"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getAttachment">GET</h4> + <p>Retrieves the attachment of the message</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4384"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3678">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4388"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3684"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4391">/repo/entries/{repoEntryKey}/coaches</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>repoEntryKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The key or soft key of the repository entry</p> - </td> - </tr> - <tr> - <td> - <p><strong>repoEntryKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The key of the repository entry</p> - </td> - </tr> - </table> + <h3 id="d2e3687">/catalog</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getCoaches">GET</h4> - <p>Returns the list of coaches of the repository entry.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4399"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getRoots">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4403">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e3690">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3691">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4413">/repo/entries/{repoEntryKey}/participants</h3> + <h3 id="d2e3692">/catalog/{path:.*}/children<span class="optional">?start</span><span class="optional">&limit</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -9641,45 +9302,56 @@ </tr> <tr> <td> - <p><strong>repoEntryKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The key or soft key of the repository entry</p> - </td> - </tr> - <tr> - <td> - <p><strong>repoEntryKey</strong></p> + <p><strong>path</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td> - <p>The key of the repository entry</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getParticipants">GET</h4> - <p>Returns the list of participants of the repository entry.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4421"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getChildren">GET</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td></td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4425">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e3699">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3700">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4435">/repo/entries/{repoEntryKey}/participants/{identityKey}</h3> + <h3 id="d2e3701">/catalog/{path:.*}/owners/{identityKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -9689,25 +9361,12 @@ </tr> <tr> <td> - <p><strong>repoEntryKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The key or soft key of the repository entry</p> - </td> - </tr> - <tr> - <td> - <p><strong>repoEntryKey</strong></p> + <p><strong>path</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td> - <p>The key of the repository entry</p> - </td> + <td></td> </tr> <tr> <td> @@ -9716,49 +9375,49 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The user's id</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#addParticipant">PUT</h4> - <p>Adds a participant to the repository entry.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4446"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4450"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getOwner">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4454"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3706">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#removeParticipant">DELETE</h4> - <p>Removes the participant from the repository entry.</p> + <h4 id="http://www.example.com#addOwner">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4461"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3709">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#removeOwner">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4465"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3712">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3713">/catalog/version</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4469"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3716">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4473">/repo/entries/{repoEntryKey}/owners</h3> + <h3 id="d2e3717">/catalog/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -9768,134 +9427,133 @@ </tr> <tr> <td> - <p><strong>repoEntryKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The key or soft key of the repository entry</p> - </td> - </tr> - <tr> - <td> - <p><strong>repoEntryKey</strong></p> + <p><strong>path</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td> - <p>The key of the repository entry</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getOwners">GET</h4> - <p>Returns the list of owners of the repository entry specified by the groupKey.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4481"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getCatalogEntry">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4485">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> + <li><a href="#d2e3721">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3722">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e4495">/repo/entries/{repoEntryKey}/owners/{identityKey}</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>repoEntryKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The key or soft key of the repository entry</p> - </td> - </tr> - <tr> - <td> - <p><strong>repoEntryKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The key of the repository entry</p> - </td> - </tr> - <tr> - <td> - <p><strong>identityKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The user's id</p> - </td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#addOwner">PUT</h4> - <p>Adds an owner to the repository entry.</p> + <h4 id="http://www.example.com#addCatalogEntry">PUT</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>name</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>description</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>type</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>repoEntryKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4506"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3730">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3731">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#addCatalogEntry">PUT</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e4510"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3734">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e3735">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4514"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3737">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3738">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#removeOwner">DELETE</h4> - <p>Removes the owner from the repository entry.</p> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#updatePostCatalogEntry">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e4521"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3741">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4525"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3746">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3747">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#updateCatalogEntry">POST</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>newParentKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e3751">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> + <li><a href="#d2e3752">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4529"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3754">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3755">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e4532">/repo/courses/infos<span class="optional">?start</span><span class="optional">&limit</span></h3> - <p>Description:<br> - - <P> - Initial Date: 7 févr. 2012 <br> - </p> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getCourseInfoList">GET</h4> - <p>Get courses informations viewable by the authenticated user</p> + <h4 id="http://www.example.com#updateCatalogEntry">POST</h4> <h6>request query parameters</h6> <table> <tr> @@ -9905,34 +9563,50 @@ </tr> <tr> <td> - <p><strong>start</strong></p> + <p><strong>name</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>limit</strong></p> + <p><strong>description</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>newParentKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4542">application/xml, application/json, application/json;pagingspec=1.0 (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> + <li><a href="#d2e3762">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3763">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteCatalogEntry">DELETE</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3766">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3767">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4552">/repo/courses/infos/{courseId}</h3> + <h3 id="d2e3768">/catalog/{path:.*}/owners</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -9942,82 +9616,59 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>path</strong></p> </td> <td> - <p>The course id</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getCourseInfo">GET</h4> - <p>Get course informations viewable by the authenticated user</p> + <h4 id="http://www.example.com#getOwners">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4560">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> + <li><a href="#d2e3772">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3773">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4570">/contacts<span class="optional">?start</span><span class="optional">&limit</span></h3> - <p>Description:<br> - - <P> - Initial Date: 21 oct. 2011 <br> - </p> + <h3 id="d2e3774">/repo/courses/{courseId}/assessments</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getMyContacts">GET</h4> - <p>Retrieve the contacts of the logged in identity.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td></td> - </tr> - </table> + <h4 id="http://www.example.com#getCourseResults">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4582"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3778">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3779">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4585">/users/{identityKey}/forums</h3> - <p>Description:<br> - - <P> - Initial Date: 6 déc. 2011 <br> - </p> + <h3 id="d2e3780">/repo/courses/{courseId}/assessments/version</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -10027,43 +9678,27 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the user (IdentityImpl)</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getForums">GET</h4> - <p>Retrieves a list of forums on a user base. All forums of groups - where the user is participant/tutor + all forums in course where - the user is a participant (owner, tutor or participant) - </p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4597">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4610"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3783">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4613">/users/{identityKey}/forums/group/{groupKey}</h3> - <p>Description:<br> - Web service to manage a forum. - - <P> - Initial Date: 20 apr. 2010 <br> - </p> + <h3 id="d2e3784">/repo/courses/{courseId}/assessments/users/{identityKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -10073,18 +9708,25 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>identityKey</strong></p> + </td> <td> - <p>The key of the user (IdentityImpl)</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -10095,25 +9737,17 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getForum">GET</h4> - <p>Retrieves the forum.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4623"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4629">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getCourseResultsOf">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4642"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3789">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3790">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4645">/users/{identityKey}/forums/group/{groupKey}/threads<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h3 id="d2e3791">/repo/courses/{courseId}/assessments/{nodeId}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -10123,21 +9757,28 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> <td> - <p>The key of the user (IdentityImpl)</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>nodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> @@ -10145,154 +9786,29 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getThreads">GET</h4> - <p>Retrieves the threads in the forum</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>orderBy</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>creationDate</tt></p> - </td> - <td> - <p>(value name,creationDate)</p> - </td> - </tr> - <tr> - <td> - <p><strong>asc</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> - </td> - <td> - <p>(value true/false)</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4661"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4667">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4680"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#newThreadToForum">PUT</h4> - <p>Creates a new thread in the forum of the course node</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>title</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The title for the first post in the thread</p> - </td> - </tr> - <tr> - <td> - <p><strong>body</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The body for the first post in the thread</p> - </td> - </tr> - <tr> - <td> - <p><strong>authorKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The author user key (optional)</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4699"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4705">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getAssessableResults">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4718"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3796">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3797">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#newThreadToForumPost">POST</h4> - <p>Creates a new thread in the forum of the course node</p> + <h4 id="http://www.example.com#postAssessableResults">POST</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e4725">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4732"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4738">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e3800">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">assessableResultsVO</abbr>)</a></li> + <li><a href="#d2e3801">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">assessableResultsVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4751"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3803">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4754">/users/{identityKey}/forums/group/{groupKey}/posts/{threadKey}<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h3 id="d2e3804">/repo/courses/{courseId}/assessments/{nodeId}/users/{identityKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -10302,18 +9818,16 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the user (IdentityImpl)</p> - </td> + <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -10322,90 +9836,55 @@ </tr> <tr> <td> - <p><strong>threadKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The key of the thread</p> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getMessages">GET</h4> - <p>Retrieves the messages in the thread</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>orderBy</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>creationDate</tt></p> - </td> - <td> - <p>(value name, creationDate)</p> - </td> - </tr> - <tr> - <td> - <p><strong>asc</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> - </td> - <td> - <p>(value true/false)</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4773"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getCourseNodeResultsForNode">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4779">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e3810">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3811">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3812">/repo/courses/{courseId}/resourcefolders</h3> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e3813">/repo/courses/{courseId}/resourcefolders/version</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4792"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3816">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4795">/users/{identityKey}/forums/group/{groupKey}/posts/{messageKey}</h3> + <h3 id="d2e3817">/repo/courses/{courseId}/resourcefolders/sharedfolder/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -10415,82 +9894,179 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>path</strong></p> </td> <td> - <p>The key of the user (IdentityImpl)</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>groupKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getSharedFiles">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3822">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3823">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3824">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3825">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3826">/repo/courses/{courseId}/resourcefolders/sharedfolder</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> <tr> <td> - <p><strong>messageKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The id of the reply message</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#replyToPostPost">POST</h4> - <p>Creates a new reply in the forum of the course node</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e4803">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4816"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4822">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getSharedFiles">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4835"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3830">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3831">/repo/courses/{courseId}/resourcefolders/coursefolder/{path:.*}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>path</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#replyToPost">PUT</h4> - <p>Creates a new reply in the forum of the course node</p> - <p><em>acceptable request representations:</em></p> + <h4 id="http://www.example.com#getCourseFiles">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3836">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3837">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3838">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3839">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachFileToFolderPost">POST</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3842">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachFileToFolder">PUT</h4> + <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4842">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e4843">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e3845">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3846">/repo/courses/{courseId}/resourcefolders/coursefolder</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getCourseFiles">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4847"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3850">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachFileToFolderPost">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4853">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e3853">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachFileToFolder">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4866"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3856">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3857">/contacts<span class="optional">?start</span><span class="optional">&limit</span></h3> + <p>Description:<br> + + <P> + Initial Date: 21 oct. 2011 <br> + </p> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#replyToPost">PUT</h4> - <p>Creates a new reply in the forum of the course node</p> + <h4 id="http://www.example.com#getMyContacts">GET</h4> + <p>Retrieve the contacts of the logged in identity.</p> <h6>request query parameters</h6> <table> <tr> @@ -10500,55 +10076,128 @@ </tr> <tr> <td> - <p><strong>title</strong></p> + <p><strong>start</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The title for the first post in the thread</p> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> </td> + <td></td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3869"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e3872">/users</h3> + <p>This web service handles functionalities related to <code>User</code>.</p> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#create">PUT</h4> + <p>Creates and persists a new user entity</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e3879">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> + <li><a href="#d2e3880">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3884">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3897"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e3903">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#getUserListQuery">GET</h4> + <p>Search users and return them in a simple form (without user properties). User properties + can be added two the query parameters. If the authUsername and the authProvider are set, + the search is made only with these two parameters because they are sufficient to return + a single user.<br> + The search with login and user properties are made default with wild cards. If an exact + match is needed, the parameter msut be quoted:<br> + users?login="username"<br> + Don't forget the right escaping in the URL!<br> + You can make a search with the user properties like this:<br> + users?telMobile=39847592&login=test + </p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> </tr> <tr> <td> - <p><strong>body</strong></p> + <p><strong>login</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>authProvider</strong></p> + </td> <td> - <p>The body for the first post in the thread</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>authorKey</strong></p> + <p><strong>authUsername</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The author user key (optional)</p> + <p><strong>statusVisibleLimit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4885"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e4891">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e3924">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4904"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3937"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4907">/users/{identityKey}/forums/group/{groupKey}/posts/{messageKey}/attachments</h3> + <h3 id="d2e3940">/users/{identityKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -10564,102 +10213,93 @@ <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key of the user (IdentityImpl)</p> - </td> - </tr> - <tr> - <td> - <p><strong>groupKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>messageKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The key of the message</p> + <p>The user key identifier of the user being searched</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getAttachments">GET</h4> - <p>Retrieves the attachments of the message</p> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#update">POST</h4> + <p>Update an user</p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e4917"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3948">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> + <li><a href="#d2e3949">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4923">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3953">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> - <p>Upload the attachment of a message, as parameter:<br> - filename The name of the attachment<br> - file The attachment. - </p> - <p><em>acceptable request representations:</em></p> + <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4930">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3966"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4936"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3972"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4942">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e3978">application/xml, application/json (<abbr title="{http://www.example.com} errorVO">ns3:errorVO</abbr>)</a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPostAttachment">PUT</h4> - <p>Upload the attachment of a message, as parameter:<br> - filename The name of the attachment<br> - file The attachment. - </p> - <p><em>acceptable request representations:</em></p> + <h4 id="http://www.example.com#delete">DELETE</h4> + <p>Delete an user from the system</p> + <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4949">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e4950">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e3994"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4954"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4000"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4960">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4006"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> - <p>Upload the attachment of a message, as parameter:<br> - filename The name of the attachment<br> - file The attachment. - </p> + <h4 id="http://www.example.com#findById">GET</h4> + <p>Retrieves an user given its unique key identifier</p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>withPortrait</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td> + <p>If true return the portrait as Base64 (default false)</p> + </td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4969"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4019">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4975">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4032"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4038"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e4978">/users/{identityKey}/forums/group/{groupKey}/posts/{messageKey}/attachments/{filename}</h3> + <h3 id="d2e4041">/users/{identityKey}/status</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -10675,65 +10315,150 @@ <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key of the user (IdentityImpl)</p> - </td> - </tr> - <tr> - <td> - <p><strong>groupKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p>The user key identifier of the user being searched</p> </td> - <td></td> </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getStatus">GET</h4> + <p>Retrieves the status of a user given its unique key identifier</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4051">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4064"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4070"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#updateStatus">POST</h4> + <p>Update the roles of a user given its unique key identifier: + <ul> + <li>1: Permanent user</li> + <li>2: activ</li> + <li>101: login denied</li> + <li>199: deleted</li> + </ul> + </p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e4077">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">statusVO</abbr>)</a></li> + <li><a href="#d2e4078">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">statusVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4082">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4095"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4101"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4104">/users/{identityKey}/roles</h3> + <h6>resource-wide template parameters</h6> + <table> <tr> - <td> - <p><strong>filename</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The name of the attachment</p> - </td> + <th>parameter</th> + <th>value</th> + <th>description</th> </tr> <tr> <td> - <p><strong>messageKey</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The identity key of the user being searched</p> + <p>The user key identifier of the user being searched</p> </td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getAttachment">GET</h4> - <p>Retrieves the attachment of the message</p> + <h4 id="http://www.example.com#getRoles">GET</h4> + <p>Retrieves the roles of a user given its unique key identifier</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4114">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4127"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4133"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#updateRoles">POST</h4> + <p>Update the roles of a user given its unique key identifier</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e4140">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">rolesVO</abbr>)</a></li> + <li><a href="#d2e4141">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">rolesVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4145">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4991"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4158"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e4997">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4164"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5000">/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}</h3> - <p>Description:<br> - Web service to manage a forum. - - <P> - Initial Date: 20 apr. 2010 <br> - </p> + <h3 id="d2e4167">/users/version</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> + <p>The version of the User Web Service</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4174">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4184">/users/managed</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getManagedUsers">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4187">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4188">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4189">/users/{identityKey}/preferences</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -10749,50 +10474,130 @@ <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The key of the user (IdentityImpl)</p> + <p>The user key identifier of the user being searched</p> </td> </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getUserPreferences">GET</h4> + <p>Retrieves the preferences of a user given its unique key identifier</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4199">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4212"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4218"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#updatePreferences">POST</h4> + <p>Update the preferences of a user given its unique key identifier</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e4225">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">preferencesVO</abbr>)</a></li> + <li><a href="#d2e4226">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">preferencesVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4230">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4243"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4249"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4252">/users/{identityKey}/portrait</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> <tr> <td> - <p><strong>courseKey</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>courseNodeId</strong></p> - </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>The identity key of the user being searched</p> </td> - <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getForum">GET</h4> - <p>Retrieves the forum.</p> + <h4 id="http://www.example.com#getPortraitHead">HEAD</h4> + <p>Retrieves the portrait of an user</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4262">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4268"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postPortrait">POST</h4> + <p>Upload the portrait of an user</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4277">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4283"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4289"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deletePortrait">DELETE</h4> + <p>Deletes the portrait of an user</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5011"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4298"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5017">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + <li><a href="#d2e4304"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#getPortrait">GET</h4> + <p>Retrieves the portrait of an user</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5030"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4313">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4319"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5033">/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/threads<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h3 id="d2e4322">/users/{identityKey}/portrait/{size}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -10802,30 +10607,59 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>size</strong></p> </td> <td> - <p>The key of the user (IdentityImpl)</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>courseKey</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getOriginalPortraitHead">HEAD</h4> + <p>Retrieves the portrait of an user</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4331">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4337"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4341">/users/{identityKey}/folders</h3> + <p>Description:<br> + + <P> + Initial Date: 16 déc. 2011 <br> + </p> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> <tr> <td> - <p><strong>courseNodeId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> @@ -10833,154 +10667,99 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getThreads">GET</h4> - <p>Retrieves the threads in the forum</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>orderBy</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>creationDate</tt></p> - </td> - <td> - <p>(value name,creationDate)</p> - </td> - </tr> - <tr> - <td> - <p><strong>asc</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> - </td> - <td> - <p>(value true/false)</p> - </td> - </tr> - </table> + <h4 id="http://www.example.com#getFolders">GET</h4> + <p>Retrieves a list of folders on a user base. All folders of groups + where the user is participant/tutor + all folders in course where + the user is a participant (owner, tutor or participant) + </p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5049"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4351">application/xml, application/json (<abbr title="{http://www.example.com} folderVOes">ns3:folderVOes</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5055">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e4364"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4367">/users/{identityKey}/folders/personal</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#listFiles">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5068"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4370">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4371">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4372">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4373">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4374">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#newThreadToForum">PUT</h4> - <p>Creates a new thread in the forum of the course node</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>title</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The title for the first post in the thread</p> - </td> - </tr> - <tr> - <td> - <p><strong>body</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The body for the first post in the thread</p> - </td> - </tr> - <tr> - <td> - <p><strong>authorKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The author user key (optional)</p> - </td> - </tr> - </table> + <h4 id="http://www.example.com#postFileToRoot">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5087"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4377">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4378">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e5093">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e4381">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5106"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4386">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4387">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#newThreadToForumPost">POST</h4> - <p>Creates a new thread in the forum of the course node</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e5113">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#putFileToRoot">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5120"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4390">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4391">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e5126">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e4394">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4395">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5139"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4397">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4398">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5142">/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{threadKey}<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h3 id="d2e4399">/users/{identityKey}/folders/personal/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -10995,114 +10774,165 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the user (IdentityImpl)</p> - </td> + <td></td> </tr> <tr> <td> - <p><strong>courseKey</strong></p> + <p><strong>path</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#listFiles">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4403">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4404">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4405">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4406">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4407">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToFolder">POST</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4410">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4411">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4412">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e4415">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4420">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4421">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4422">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFileToFolder">PUT</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4425">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4426">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4427">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e4430">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4431">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4433">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4434">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFolders">PUT</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4437">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4438">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteItem">DELETE</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4441">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4442">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4443">/users/{identityKey}/folders/personal/version</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> <tr> <td> - <p><strong>courseNodeId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4446">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4447">/users/{identityKey}/folders/personal/metadata/{path:.*}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> <tr> <td> - <p><strong>threadKey</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>path</strong></p> + </td> <td> - <p>The key of the thread</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getMessages">GET</h4> - <p>Retrieves the messages in the thread</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>orderBy</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>creationDate</tt></p> - </td> - <td> - <p>(value name, creationDate)</p> - </td> - </tr> - <tr> - <td> - <p><strong>asc</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> - </td> - <td> - <p>(value true/false)</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5161"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5167">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getFileMetadata">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5180"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4451">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4452">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5183">/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{messageKey}</h3> + <h3 id="d2e4453">/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -11117,9 +10947,7 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the user (IdentityImpl)</p> - </td> + <td></td> </tr> <tr> <td> @@ -11139,122 +10967,65 @@ </td> <td></td> </tr> - <tr> - <td> - <p><strong>messageKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The id of the reply message</p> - </td> - </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#replyToPostPost">POST</h4> - <p>Creates a new reply in the forum of the course node</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e5191">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5204"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#listFiles">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5210">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e4458">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4459">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4460">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4461">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4462">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToRoot">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5223"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4465">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4466">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPost">PUT</h4> - <p>Creates a new reply in the forum of the course node</p> + <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e5230">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e5231">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5235"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4469">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5241">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5254"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4474">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4475">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPost">PUT</h4> - <p>Creates a new reply in the forum of the course node</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>title</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The title for the first post in the thread</p> - </td> - </tr> - <tr> - <td> - <p><strong>body</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The body for the first post in the thread</p> - </td> - </tr> - <tr> - <td> - <p><strong>authorKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The author user key (optional)</p> - </td> - </tr> - </table> + <h4 id="http://www.example.com#putFileToRoot">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5273"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4478">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4479">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e5279">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e4482">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4483">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5292"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4485">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4486">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5295">/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{messageKey}/attachments</h3> + <h3 id="d2e4487">/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -11269,9 +11040,7 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the user (IdentityImpl)</p> - </td> + <td></td> </tr> <tr> <td> @@ -11293,88 +11062,91 @@ </tr> <tr> <td> - <p><strong>messageKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>path</strong></p> </td> <td> - <p>The key of the message</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getAttachments">GET</h4> - <p>Retrieves the attachments of the message</p> + <h4 id="http://www.example.com#listFiles">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5305"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4491">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4492">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4493">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4494">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4495">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToFolder">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5311">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4498">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4499">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4500">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> - <p>Upload the attachment of a message, as parameter:<br> - filename The name of the attachment<br> - file The attachment. - </p> + <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e5318">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4503">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5324"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4508">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4509">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4510">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFileToFolder">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5330">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4513">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4514">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4515">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPostAttachment">PUT</h4> - <p>Upload the attachment of a message, as parameter:<br> - filename The name of the attachment<br> - file The attachment. - </p> + <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e5337">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e5338">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5342"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4518">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4519">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5348">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4521">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4522">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#replyToPostAttachment">POST</h4> - <p>Upload the attachment of a message, as parameter:<br> - filename The name of the attachment<br> - file The attachment. - </p> + <h4 id="http://www.example.com#putFolders">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5357"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4525">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4526">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteItem">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5363">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4529">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4530">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5366">/users/{identityKey}/forums/course/{courseKey}/{courseNodeId}/posts/{messageKey}/attachments/{filename}</h3> + <h3 id="d2e4531">/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}/version</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -11389,9 +11161,7 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the user (IdentityImpl)</p> - </td> + <td></td> </tr> <tr> <td> @@ -11411,156 +11181,78 @@ </td> <td></td> </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4534">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4535">/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}/metadata/{path:.*}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> <tr> <td> - <p><strong>filename</strong></p> + <p><strong>identityKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>courseKey</strong></p> </td> <td> - <p>The name of the attachment</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>messageKey</strong></p> + <p><strong>courseNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>path</strong></p> </td> <td> - <p>The identity key of the user being searched</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getAttachment">GET</h4> - <p>Retrieves the attachment of the message</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5379"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5385">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e5388">/repo/lifecycle</h3> - <p>Initial date: 10.06.2013<br></p> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getPublicLifeCycles">GET</h4> - <p>List all public lifecycles</p> + <h4 id="http://www.example.com#getFileMetadata">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5395">text/plain, text/html, application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>)</a></li> + <li><a href="#d2e4539">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4540">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5405">/users</h3> - <p>This web service handles functionalities related to <code>User</code>.</p> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#create">PUT</h4> - <p>Creates and persists a new user entity</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e5412">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> - <li><a href="#d2e5413">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5417">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5430">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5443"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getUserListQuery">GET</h4> - <p>Search users and return them in a simple form (without user properties). User properties - can be added two the query parameters. If the authUsername and the authProvider are set, - the search is made only with these two parameters because they are sufficient to return - a single user.<br> - The search with login and user properties are made default with wild cards. If an exact - match is needed, the parameter msut be quoted:<br> - users?login="username"<br> - Don't forget the right escaping in the URL!<br> - You can make a search with the user properties like this:<br> - users?telMobile=39847592&login=test - </p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>login</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>authProvider</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>authUsername</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>statusVisibleLimit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5457">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5470"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e5473">/users/{identityKey}</h3> + <h3 id="d2e4541">/users/{identityKey}/folders/group/{groupKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -11575,108 +11267,76 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> <td> - <p>The user key identifier of the user being searched</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#delete">DELETE</h4> - <p>Delete an user from the system</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5483"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#listFiles">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5489"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4545">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4546">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4547">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4548">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4549">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToRoot">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5495"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4552">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4553">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#update">POST</h4> - <p>Update an user</p> + <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e5502">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> - <li><a href="#d2e5503">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5507"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5513">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5526">application/xml, application/json (<abbr title="{http://www.example.com} errorVO">ns3:errorVO</abbr>)</a></li> + <li><a href="#d2e4556">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5539"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4561">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4562">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#findById">GET</h4> - <p>Retrieves an user given its unique key identifier</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>withPortrait</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> - </td> - <td> - <p>If true return the portrait as Base64 (default false)</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5552"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5558">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#putFileToRoot">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5571"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4565">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4566">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e5574">/users/managed</h3> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getManagedUsers">GET</h4> + <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e4569">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4570">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5577">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5578">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4572">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4573">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5579">/users/{identityKey}/roles</h3> + <h3 id="d2e4574">/users/{identityKey}/folders/group/{groupKey}/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -11691,54 +11351,104 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> <td> - <p>The user key identifier of the user being searched</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>path</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#updateRoles">POST</h4> - <p>Update the roles of a user given its unique key identifier</p> - <p><em>acceptable request representations:</em></p> + <h4 id="http://www.example.com#listFiles">GET</h4> + <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5587">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">rolesVO</abbr>)</a></li> - <li><a href="#d2e5588">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">rolesVO</abbr>)</a></li> + <li><a href="#d2e4578">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4579">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4580">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4581">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4582">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToFolder">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5592"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4585">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4586">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4587">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e4590">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5598">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4595">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4596">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4597">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFileToFolder">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5611"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4600">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4601">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4602">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#getRoles">GET</h4> - <p>Retrieves the roles of a user given its unique key identifier</p> + <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e4605">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4606">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5620"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4608">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4609">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFolders">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5626">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4612">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4613">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteItem">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5639"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4616">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4617">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5642">/users/{identityKey}/status</h3> + <h3 id="d2e4618">/users/{identityKey}/folders/group/{groupKey}/version</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -11753,61 +11463,31 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The user key identifier of the user being searched</p> + <p><strong>groupKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#updateStatus">POST</h4> - <p>Update the roles of a user given its unique key identifier: - <ul> - <li>1: Permanent user</li> - <li>2: activ</li> - <li>101: login denied</li> - <li>199: deleted</li> - </ul> - </p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e5650">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">statusVO</abbr>)</a></li> - <li><a href="#d2e5651">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">statusVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5655"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5661">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5674"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getStatus">GET</h4> - <p>Retrieves the status of a user given its unique key identifier</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5683"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5689">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5702"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4621">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5705">/users/{identityKey}/preferences</h3> + <h3 id="d2e4622">/users/{identityKey}/folders/group/{groupKey}/metadata/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -11822,54 +11502,41 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>path</strong></p> + </td> <td> - <p>The user key identifier of the user being searched</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getUserPreferences">GET</h4> - <p>Retrieves the preferences of a user given its unique key identifier</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5715"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5721">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5734"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#updatePreferences">POST</h4> - <p>Update the preferences of a user given its unique key identifier</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e5741">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">preferencesVO</abbr>)</a></li> - <li><a href="#d2e5742">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">preferencesVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5746"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5752">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getFileMetadata">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4626">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4627">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5768">/users/{identityKey}/portrait</h3> + <h3 id="d2e4628">/users/{identityKey}/courses</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -11884,76 +11551,81 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e4630">/users/{identityKey}/courses/my<span class="optional">?start</span><span class="optional">&limit</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>identityKey</strong></p> + </td> <td> - <p>The identity key identifier of the user being searched</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getPortrait">GET</h4> - <p>Retrieves the portrait of an user</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5778"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5784">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postPortrait">POST</h4> - <p>Upload the portrait of an user</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5793"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5799">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5805"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#deletePortrait">DELETE</h4> - <p>Deletes the portrait of an user</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5814"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getMyCourses">GET</h4> + <p>Retrieves the list of "My entries" but limited to courses.</p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td> + <p>The first result</p> + </td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td> + <p>Max result</p> + </td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5820"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4644">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e5823">/users/version</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>The version of the User Web Service</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5830">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4657"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5840">/users/{identityKey}/folders</h3> - <p>Description:<br> - - <P> - Initial Date: 16 déc. 2011 <br> - </p> + <h3 id="d2e4660">/users/{identityKey}/courses/teached<span class="optional">?start</span><span class="optional">&limit</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -11974,24 +11646,53 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getFolders">GET</h4> - <p>Retrieves a list of folders on a user base. All folders of groups - where the user is participant/tutor + all folders in course where - the user is a participant (owner, tutor or participant) - </p> + <h4 id="http://www.example.com#getTeachedCourses">GET</h4> + <p>Retrieves the list of "My supervised courses" but limited to courses.</p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td> + <p>The first result</p> + </td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td> + <p>Max result</p> + </td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5850">application/xml, application/json (<abbr title="{http://www.example.com} folderVOes">ns3:folderVOes</abbr>)</a></li> + <li><a href="#d2e4674">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5863"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4687"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5866">/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}</h3> + <h3 id="d2e4690">/users/{identityKey}/courses/favorite<span class="optional">?start</span><span class="optional">&limit</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12008,83 +11709,57 @@ </td> <td></td> </tr> - <tr> - <td> - <p><strong>courseKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>courseNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#listFiles">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5871">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5872">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5873">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5874">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5875">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFileToRoot">POST</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5878">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5879">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e5882">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5887">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5888">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFileToRoot">PUT</h4> + <h4 id="http://www.example.com#getFavoritCourses">GET</h4> + <p>Retrieves the list of my favorite courses.</p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td> + <p>The first result</p> + </td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td> + <p>Max result</p> + </td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5891">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5892">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e5895">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e5896">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4704">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5898">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5899">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4717"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5900">/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}/{path:.*}</h3> + <h3 id="d2e4720">/users/{identityKey}/groups<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&externalId</span><span class="optional">&managed</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12101,111 +11776,67 @@ </td> <td></td> </tr> - <tr> - <td> - <p><strong>courseKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>courseNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>path</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#listFiles">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5904">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5905">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5906">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5907">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5908">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFileToFolder">POST</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5911">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5912">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5913">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e5916">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5921">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5922">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5923">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFileToFolder">PUT</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5926">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5927">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5928">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e5931">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e5932">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5934">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5935">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFolders">PUT</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5938">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5939">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#deleteItem">DELETE</h4> + <h4 id="http://www.example.com#getUserGroupList">GET</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>externalId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>managed</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5942">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5943">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4729">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4730">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5944">/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}/version</h3> + <h3 id="d2e4731">/users/{identityKey}/groups/owner<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&externalId</span><span class="optional">&managed</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12222,38 +11853,67 @@ </td> <td></td> </tr> - <tr> - <td> - <p><strong>courseKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>courseNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> + <h4 id="http://www.example.com#getOwnedGroupList">GET</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>externalId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>managed</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5947">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4739">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4740">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5948">/users/{identityKey}/folders/course/{courseKey}/{courseNodeId}/metadata/{path:.*}</h3> + <h3 id="d2e4741">/users/{identityKey}/groups/participant<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&externalId</span><span class="optional">&managed</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12270,48 +11930,67 @@ </td> <td></td> </tr> - <tr> - <td> - <p><strong>courseKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>courseNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>path</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getFileMetadata">GET</h4> + <h4 id="http://www.example.com#getParticipatingGroupList">GET</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>externalId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>managed</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5952">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5953">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4749">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4750">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5954">/users/{identityKey}/folders/group/{groupKey}</h3> + <h3 id="d2e4751">/users/{identityKey}/groups/infos<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&externalId</span><span class="optional">&managed</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12328,225 +12007,375 @@ </td> <td></td> </tr> - <tr> - <td> - <p><strong>groupKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#listFiles">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5958">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5959">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5960">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5961">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5962">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFileToRoot">POST</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5965">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5966">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e5969">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5974">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5975">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFileToRoot">PUT</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5978">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5979">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e5982">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e5983">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getUserGroupInfosList">GET</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>externalId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>managed</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e5985">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5986">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4759">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4760">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e5987">/users/{identityKey}/folders/group/{groupKey}/{path:.*}</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>identityKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>groupKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>path</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - </table> + <h3 id="d2e4761">/pwchange<span class="optional">?identityKey</span></h3> + <p>Webservice to create a temporary key to change the password + + Initial date: 15.10.2013<br> + </p> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#listFiles">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5991">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5992">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5993">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5994">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5995">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFileToFolder">POST</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e5998">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e5999">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6000">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e6003">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#register">PUT</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6008">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6009">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6010">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4768">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4769">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4771">/repo/courses<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&managed</span><span class="optional">&externalId</span><span class="optional">&externalRef</span><span class="optional">&repositoryEntryKey</span></h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#putFileToFolder">PUT</h4> + <h4 id="http://www.example.com#getCourseList">GET</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>managed</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>externalId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>externalRef</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>repositoryEntryKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6013">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6014">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6015">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4781">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4782">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> + <h4 id="http://www.example.com#createEmptyCourse">PUT</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6018">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e6019">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4785">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">courseVO</abbr>)</a></li> + <li><a href="#d2e4786">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">courseVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6021">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6022">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4788">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4789">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#putFolders">PUT</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6025">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6026">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#deleteItem">DELETE</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6029">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6030">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e6031">/users/{identityKey}/folders/group/{groupKey}/version</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>identityKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>groupKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - </table> + <h4 id="http://www.example.com#createEmptyCourse">PUT</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>shortTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>title</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>displayName</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>description</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>softKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>access</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>membersOnly</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>externalId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>externalRef</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>authors</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>location</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>managedFlags</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>sharedFolderSoftKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>copyFrom</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>initialAuthor</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>setAuthor</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4810">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4811">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#importCourse">POST</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4814">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4815">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4816">/repo/courses/version</h3> <h6>Methods</h6> <div class="methods"> <div class="method"> <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6034">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4819">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6035">/users/{identityKey}/folders/group/{groupKey}/metadata/{path:.*}</h3> + <h3 id="d2e4820">/repo/courses/{courseId}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12556,46 +12385,36 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>groupKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> - <tr> - <td> - <p><strong>path</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getFileMetadata">GET</h4> + <h4 id="http://www.example.com#findById">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4824">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4825">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteCourse">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6039">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6040">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4828">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4829">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6041">/users/{identityKey}/folders/personal</h3> + <h3 id="d2e4830">/repo/courses/{courseId}/configuration</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12605,7 +12424,16 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -12616,61 +12444,29 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#listFiles">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6044">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6045">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6046">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6047">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6048">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFileToRoot">POST</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6051">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6052">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e6055">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6060">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6061">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFileToRoot">PUT</h4> + <h4 id="http://www.example.com#getConfiguration">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6064">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6065">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4834">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4835">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> + <h4 id="http://www.example.com#updateConfiguration">POST</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6068">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e6069">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e4838">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6071">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6072">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4846">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4847">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6073">/users/{identityKey}/folders/personal/{path:.*}</h3> + <h3 id="d2e4848">/repo/courses/{courseId}/version</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12680,100 +12476,70 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> - <tr> - <td> - <p><strong>path</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#listFiles">GET</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6077">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6078">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6079">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6080">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6081">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFileToFolder">POST</h4> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6084">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6085">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6086">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e6089">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6094">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6095">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6096">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4851">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4852">/repo/courses/{courseId}/tutors</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#putFileToFolder">PUT</h4> + <h4 id="http://www.example.com#getTutors">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6099">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6100">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6101">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4855">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4856">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> + <h4 id="http://www.example.com#addCoaches">PUT</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6104">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e6105">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6107">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6108">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#putFolders">PUT</h4> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6111">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6112">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4859">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4860">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#deleteItem">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6115">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6116">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4862">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6117">/users/{identityKey}/folders/personal/version</h3> + <h3 id="d2e4863">/repo/courses/{courseId}/participants</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12783,7 +12549,7 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -12794,16 +12560,29 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> + <h4 id="http://www.example.com#getParticipants">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4866">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4867">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#addParticipants">PUT</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e4870">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4871">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6120">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4873">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6121">/users/{identityKey}/folders/personal/metadata/{path:.*}</h3> + <h3 id="d2e4874">/repo/courses/{courseId}/participants/{identityKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12813,7 +12592,7 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -12822,10 +12601,10 @@ </tr> <tr> <td> - <p><strong>path</strong></p> + <p><strong>identityKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> @@ -12833,17 +12612,16 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getFileMetadata">GET</h4> + <h4 id="http://www.example.com#addParticipant">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6125">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - <li><a href="#d2e6126">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4878">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6128">/users/{identityKey}/courses</h3> + <h3 id="d2e4879">/repo/courses/{courseId}/authors</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12853,7 +12631,7 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -12862,10 +12640,31 @@ </tr> </table> <h6>Methods</h6> - <div class="methods"></div> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getAuthors">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4882">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4883">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#addAuthors">PUT</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e4886">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4887">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4889">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> </div> <div class="resource"> - <h3 id="d2e6130">/users/{identityKey}/courses/my<span class="optional">?start</span><span class="optional">&limit</span></h3> + <h3 id="d2e4890">/repo/courses/{courseId}/resource</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12875,7 +12674,7 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -12886,53 +12685,17 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getMyCourses">GET</h4> - <p>Retrieves the list of "My entries" but limited to courses.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td> - <p>The first result</p> - </td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td> - <p>Max result</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6144">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getOlatResource">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6157"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4893">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4894">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6160">/users/{identityKey}/courses/teached<span class="optional">?start</span><span class="optional">&limit</span></h3> + <h3 id="d2e4895">/repo/courses/{courseId}/publish<span class="optional">?locale</span><span class="optional">&access</span><span class="optional">&membersOnly</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -12942,7 +12705,7 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -12953,8 +12716,7 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getTeachedCourses">GET</h4> - <p>Retrieves the list of "My supervised courses" but limited to courses.</p> + <h4 id="http://www.example.com#publishCourse">POST</h4> <h6>request query parameters</h6> <table> <tr> @@ -12964,42 +12726,42 @@ </tr> <tr> <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> + <p><strong>locale</strong></p> </td> <td> - <p>The first result</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>limit</strong></p> + <p><strong>access</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> </td> + <td></td> + </tr> + <tr> <td> - <p>Max result</p> + <p><strong>membersOnly</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> </td> + <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6174">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6187"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4902">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4903">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6190">/users/{identityKey}/courses/favorite<span class="optional">?start</span><span class="optional">&limit</span></h3> + <h3 id="d2e4905">/repo/courses/{courseId}/file</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -13009,7 +12771,7 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -13020,58 +12782,17 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getFavoritCourses">GET</h4> - <p>Retrieves the list of my favorite courses.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td> - <p>The first result</p> - </td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td> - <p>Max result</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6204">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getRepoFileById">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6217"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4908">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4909">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6220">/users/{identityKey}/groups<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&externalId</span><span class="optional">&managed</span></h3> - <p>Description:<br> - - <P> - Initial Date: 18 oct. 2011 <br> - </p> + <h3 id="d2e4910">/repo/courses/{courseId}/status</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -13081,7 +12802,7 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -13092,75 +12813,21 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getUserGroupList">GET</h4> - <p>Return all groups of a user where the user is coach or participant.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td> - <p>The first result</p> - </td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td> - <p>The maximum results</p> - </td> - </tr> - <tr> - <td> - <p><strong>externalId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>Search with an external ID</p> - </td> - </tr> - <tr> - <td> - <p><strong>managed</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td> - <p>(true / false) Search only managed / not managed groups</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#deleteCoursePermanently">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6243"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4913">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6249">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> + <li><a href="#d2e4916">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4917">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6259">/users/{identityKey}/groups/owner<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&externalId</span><span class="optional">&managed</span></h3> + <h3 id="d2e4918">/repo/courses/{courseId}/runstructure</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -13170,7 +12837,7 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -13181,75 +12848,16 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getOwnedGroupList">GET</h4> - <p>Return all groups of a user where the user is coach/owner.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td> - <p>The first result</p> - </td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td> - <p>The maximum results</p> - </td> - </tr> - <tr> - <td> - <p><strong>externalId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>Search with an external ID</p> - </td> - </tr> - <tr> - <td> - <p><strong>managed</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td> - <p>(true / false) Search only managed / not managed groups</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6279"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#findRunStructureById">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6285">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> + <li><a href="#d2e4921">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6295">/users/{identityKey}/groups/participant<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&externalId</span><span class="optional">&managed</span></h3> + <h3 id="d2e4922">/repo/courses/{courseId}/editortreemodel</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -13259,7 +12867,7 @@ </tr> <tr> <td> - <p><strong>identityKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -13270,75 +12878,16 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getParticipatingGroupList">GET</h4> - <p>Return all groups of a user where the user is participant.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td> - <p>The first result</p> - </td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td> - <p>The maximum results</p> - </td> - </tr> - <tr> - <td> - <p><strong>externalId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>Search with an external ID</p> - </td> - </tr> - <tr> - <td> - <p><strong>managed</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td> - <p>(true / false) Search only managed / not managed groups</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6315"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#findEditorTreeModelById">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6321">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> + <li><a href="#d2e4925">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6331">/users/{identityKey}/groups/infos<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&externalId</span><span class="optional">&managed</span></h3> + <h3 id="d2e4926">/repo/courses/{courseId}/authors/{identityKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -13346,6 +12895,15 @@ <th>value</th> <th>description</th> </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> <tr> <td> <p><strong>identityKey</strong></p> @@ -13359,106 +12917,71 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getUserGroupInfosList">GET</h4> - <p>Return all groups with information of a user. Paging is mandatory!</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>start</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> - </td> - <td> - <p>The first result</p> - </td> - </tr> - <tr> - <td> - <p><strong>limit</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>25</tt></p> - </td> - <td> - <p>The maximum results</p> - </td> - </tr> - <tr> - <td> - <p><strong>externalId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>Search with an external ID</p> - </td> - </tr> - <tr> - <td> - <p><strong>managed</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td> - <p>(true / false) Search only managed / not managed groups</p> - </td> - </tr> - </table> + <h4 id="http://www.example.com#getAuthor">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4930">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4931">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#addAuthor">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6351">application/xml;pagingspec=1.0, application/json;pagingspec=1.0 (<abbr title="{http://www.example.com} groupInfoVO">ns3:groupInfoVO</abbr>)</a></li> + <li><a href="#d2e4934">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#removeAuthor">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6364"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4937">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4938">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6367">/repo/forums</h3> - <p>Description:<br> - Web service to manage forums. - - <P> - Initial Date: 26 aug. 2010 <br> - </p> - <h6>Methods</h6> - <div class="methods"></div> - </div> - <div class="resource"> - <h3 id="d2e6370">/repo/forums/version</h3> + <h3 id="d2e4939">/repo/courses/{courseId}/tutors/{identityKey}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>The version of the Forum Web Service</p> + <h4 id="http://www.example.com#addCoach">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6375">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4943">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6385">/repo/forums/{forumKey}</h3> - <p>Description:<br> - Web service to manage a forum. - - <P> - Initial Date: 20 apr. 2010 <br> - </p> + <h3 id="d2e4944">/repo/courses/{courseId}/groups</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -13468,38 +12991,41 @@ </tr> <tr> <td> - <p><strong>forumKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The key of the forum</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getForum">GET</h4> - <p>Retrieves the forum.</p> + <h4 id="http://www.example.com#getGroupList">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6397"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4947">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4948">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#putNewGroup">PUT</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6403">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + <li><a href="#d2e4951">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + <li><a href="#d2e4952">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6416"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4954">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e4955">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6419">/repo/forums/{forumKey}/threads<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h3 id="d2e4956">/repo/courses/{courseId}/groups/{groupKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -13509,17 +13035,165 @@ </tr> <tr> <td> - <p><strong>forumKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The key of the forum</p> + <p><strong>groupKey</strong></p> </td> - </tr> - </table> - <h6>Methods</h6> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getGroup">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4960">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteGroup">DELETE</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4963">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#updateGroup">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e4966">*/* (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4968">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4969">/repo/courses/{courseId}/groups/version</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4972">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e4973">/repo/courses/{courseId}/groups/{groupKey}/forum</h3> + <p>Description:<br> + Web service to manage a forum. + + <P> + Initial Date: 20 apr. 2010 <br> + </p> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getForum">GET</h4> + <p>Retrieves the forum.</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4983">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e4996"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5002"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e5005">/repo/courses/{courseId}/groups/{groupKey}/forum/threads<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> <div class="methods"> <div class="method"> <h4 id="http://www.example.com#getThreads">GET</h4> @@ -13578,15 +13252,15 @@ </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6435"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5021">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6441">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e5034"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6454"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5040"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -13635,15 +13309,15 @@ </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6473"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5059">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6479">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e5072"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6492"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5078"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -13651,25 +13325,25 @@ <p>Creates a new thread in the forum of the course node</p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6499">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5085">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6506"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5092">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6512">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e5105"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6525"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5111"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6528">/repo/forums/{forumKey}/posts/{threadKey}<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> + <h3 id="d2e5114">/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{threadKey}<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&orderBy</span><span class="optional">&asc</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -13679,14 +13353,21 @@ </tr> <tr> <td> - <p><strong>forumKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The key of the forum</p> + <p><strong>groupKey</strong></p> </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> </tr> <tr> <td> @@ -13759,21 +13440,21 @@ </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6547"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5133">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6553">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>)</a></li> + <li><a href="#d2e5146"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6566"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5152"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6569">/repo/forums/{forumKey}/posts/{messageKey}</h3> + <h3 id="d2e5155">/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{messageKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -13783,14 +13464,21 @@ </tr> <tr> <td> - <p><strong>forumKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> <td> - <p>The key of the forum</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> @@ -13811,19 +13499,19 @@ <p>Creates a new reply in the forum of the course node</p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6577">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5163">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6590"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5176">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6596">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e5189"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6609"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5195"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -13831,20 +13519,20 @@ <p>Creates a new reply in the forum of the course node</p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6616">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> - <li><a href="#d2e6617">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e5202">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> + <li><a href="#d2e5203">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6621"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5207">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6627">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e5220"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6640"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5226"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -13893,21 +13581,21 @@ </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6659"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5245">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6665">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>)</a></li> + <li><a href="#d2e5258"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6678"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5264"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6681">/repo/forums/{forumKey}/posts/{messageKey}/attachments</h3> + <h3 id="d2e5267">/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{messageKey}/attachments</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -13917,14 +13605,21 @@ </tr> <tr> <td> - <p><strong>forumKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> + </td> <td> - <p>The key of the forum</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> @@ -13945,11 +13640,11 @@ <p>Retrieves the attachments of the message</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6691"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5277">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6697">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5283"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -13960,15 +13655,15 @@ </p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6704">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5290">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6710"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5296">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6716">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5302"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -13979,16 +13674,16 @@ </p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6723">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> - <li><a href="#d2e6724">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5309">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5310">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6728"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5314">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6734">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5320"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> @@ -13999,17 +13694,17 @@ </p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6743"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5329">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6749">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5335"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6752">/repo/forums/{forumKey}/posts/{messageKey}/attachments/{filename}</h3> + <h3 id="d2e5338">/repo/courses/{courseId}/groups/{groupKey}/forum/posts/{messageKey}/attachments/{filename}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -14019,35 +13714,42 @@ </tr> <tr> <td> - <p><strong>forumKey</strong></p> + <p><strong>courseId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The key of the forum</p> + <p><strong>groupKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>filename</strong></p> + <p><strong>messageKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td> - <p>The name of the attachment</p> + <p>The identity key of the user being searched</p> </td> </tr> <tr> <td> - <p><strong>messageKey</strong></p> + <p><strong>filename</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p>The identity key of the user being searched</p> + <p>The name of the attachment</p> </td> </tr> </table> @@ -14058,18 +13760,17 @@ <p>Retrieves the attachment of the message</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5351">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6771">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5357"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6774">/users/{username}/auth</h3> - <p>This web service handles functionalities related to authentication credentials of users.</p> + <h3 id="d2e5360">/repo/courses/{courseId}/groups/{groupKey}/folder</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -14079,59 +13780,81 @@ </tr> <tr> <td> - <p><strong>username</strong></p> + <p><strong>courseId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> </td> <td> - <p>The username of the user to retrieve authentication</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#create">PUT</h4> - <p>Creates and persists an authentication</p> - <p><em>acceptable request representations:</em></p> + <h4 id="http://www.example.com#listFiles">GET</h4> + <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6784">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">authenticationVO</abbr>)</a></li> - <li><a href="#d2e6785">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">authenticationVO</abbr>)</a></li> + <li><a href="#d2e5364">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5365">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5366">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5367">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5368">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToRoot">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6789"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5371">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5372">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6795">application/xml, application/json (<abbr title="{http://www.example.com} authenticationVO">ns3:authenticationVO</abbr>)</a></li> + <li><a href="#d2e5375">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6808"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5380">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5381">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#getAuthenticationTokenList">GET</h4> - <p>Returns all user authentications</p> + <h4 id="http://www.example.com#putFileToRoot">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6815"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5384">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5385">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6819">application/xml, application/json (<abbr title="{http://www.example.com} authenticationVO">ns3:authenticationVO</abbr>)</a></li> + <li><a href="#d2e5388">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5389">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6830"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5391">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5392">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6833">/users/{username}/auth/{authKey}</h3> + <h3 id="d2e5393">/repo/courses/{courseId}/groups/{groupKey}/folder/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -14141,120 +13864,109 @@ </tr> <tr> <td> - <p><strong>username</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><strong>courseId</strong></p> </td> <td> - <p>The username of the user to retrieve authentication</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>username</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><strong>groupKey</strong></p> </td> <td> - <p>The username of the user</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>authKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>path</strong></p> </td> <td> - <p>The authentication key identifier</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#delete">DELETE</h4> - <p>Deletes an authentication from the system</p> + <h4 id="http://www.example.com#listFiles">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6846"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5397">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5398">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5399">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5400">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5401">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToFolder">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6852"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5404">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5405">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5406">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e5409">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6858"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5414">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5415">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5416">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e6861">/users/{username}/auth/password</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>username</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The username of the user to retrieve authentication</p> - </td> - </tr> - <tr> - <td> - <p><strong>username</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The username of the user to change the password</p> - </td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#changePassword">POST</h4> - <p>Change the password of a user.</p> - <p><em>acceptable request representations:</em></p> + <h4 id="http://www.example.com#putFileToFolder">PUT</h4> + <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6869">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5419">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5420">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5421">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e6876"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5424">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5425">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6882"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5427">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5428">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFolders">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6888"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5431">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5432">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteItem">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6894"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5435">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5436">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6897">/users/{username}/auth/version</h3> + <h3 id="d2e5437">/repo/courses/{courseId}/groups/{groupKey}/folder/version</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -14264,55 +13976,36 @@ </tr> <tr> <td> - <p><strong>username</strong></p> + <p><strong>courseId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The username of the user to retrieve authentication</p> + <p><strong>groupKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> <h4 id="http://www.example.com#getVersion">GET</h4> - <p>The version of the User Authentication Web Service</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6904">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e6914">/i18n</h3> - <p>Description:<br> - This handles translations from the i18n module of OLAT. - - <P> - Initial Date: 14 apr. 2010 <br> - </p> - <h6>Methods</h6> - <div class="methods"></div> - </div> - <div class="resource"> - <h3 id="d2e6917">/i18n/version</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>Retrieves the version of the i18n Web Service.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6922">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5440">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6932">/i18n/{package}/{key}<span class="optional">?locale</span></h3> + <h3 id="d2e5441">/repo/courses/{courseId}/groups/{groupKey}/folder/metadata/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -14322,85 +14015,47 @@ </tr> <tr> <td> - <p><strong>package</strong></p> + <p><strong>courseId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>groupKey</strong></p> </td> <td> - <p>The name of the package</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>key</strong></p> + <p><strong>path</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td> - <p>The key to translate</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getTranslation">GET</h4> - <p>Return the translation of the key. If the "locale" parameter is not specified, the method - try to use the "locale" of the user and if it hasn't, take the default locale. - </p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>locale</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The locale (optional)</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6947">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e6957">/repo/courses/{courseId}/elements</h3> - <p>This interface provides course building capabilities from our REST API. - <p> - Initial Date: Feb 8, 2010 Time: 3:45:50 PM<br> - </p> - <h6>Methods</h6> - <div class="methods"></div> - </div> - <div class="resource"> - <h3 id="d2e6960">/repo/courses/{courseId}/elements/version</h3> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>The version of the Course Elements Web Service</p> + <h4 id="http://www.example.com#getFileMetadata">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e6965">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5445">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5446">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e6975">/repo/courses/{courseId}/elements/{nodeId}</h3> + <h3 id="d2e5447">/repo/courses/{courseId}/calendar</h3> + <p>Initial date: 23.12.2015<br></p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -14410,14 +14065,25 @@ </tr> <tr> <td> - <p><strong>nodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><strong>courseId</strong></p> </td> <td> - <p>The node's id</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e5450">/repo/courses/{courseId}/calendar/events/{eventId}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> </tr> <tr> <td> @@ -14426,33 +14092,32 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The course resourceable's id</p> + <p><strong>eventId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getCourseNode">GET</h4> - <p>Retrieves metadata of the course node</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6988"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e6994">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#deleteEventByCalendar">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7007"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5454">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5455">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7010">/repo/courses/{courseId}/elements/structure/{nodeId}</h3> + <h3 id="d2e5456">/repo/courses/{courseId}/calendar/event</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -14460,15 +14125,6 @@ <th>value</th> <th>description</th> </tr> - <tr> - <td> - <p><strong>nodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> <tr> <td> <p><strong>courseId</strong></p> @@ -14482,25 +14138,36 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#updateStructure">POST</h4> - <p>This updates a Structure Element onto a given course.</p> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#putEventByCalendar">PUT</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e7017"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5459">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e5460">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7021">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5462">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5463">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postEventByCalendar">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e5466">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5467">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e5468">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7032"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5470">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5471">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7035">/repo/courses/{courseId}/elements/structure</h3> + <h3 id="d2e5472">/repo/courses/{courseId}/calendar/events</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -14521,28 +14188,20 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachStructurePostMultiparts">POST</h4> - <p>This attaches a Structure Element onto a given course. The element will be - inserted underneath the supplied parentNodeId. - </p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7043"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#putEventsByCalendar">PUT</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e7049">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5475">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5476">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7062"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5478">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5479">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#attachStructure">PUT</h4> - <p>This attaches a Structure Element onto a given course. The element will be - inserted underneath the supplied parentNodeId. - </p> + <h4 id="http://www.example.com#getEventsByCalendar">GET</h4> <h6>request query parameters</h6> <table> <tr> @@ -14552,98 +14211,59 @@ </tr> <tr> <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> + <p><strong>start</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> + <p><strong>limit</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>objectives</strong></p> + <p><strong>onlyFuture</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>displayType</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>toc</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> </td> <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7080"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5486">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5487">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#postEventsByCalendar">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e7086">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5490">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5491">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7099"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5493">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5494">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7102">/repo/courses/{courseId}/elements/singlepage/{nodeId}</h3> + <h3 id="d2e5495">/repo/courses/{courseId}/vitero/{subIdentifier}</h3> + <p>Initial date: 14.07.2015<br></p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -14653,19 +14273,19 @@ </tr> <tr> <td> - <p><strong>nodeId</strong></p> + <p><strong>courseId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>subIdentifier</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> @@ -14673,25 +14293,43 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#updateSinglePage">POST</h4> - <p>This updates a Single Page Element onto a given course.</p> + <h4 id="http://www.example.com#getRooms">GET</h4> + <p>returns the list of booking of the resource.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7111"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5505">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>)</a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#createRoom">PUT</h4> + <p>Return the created or updated booking</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e5519">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5520">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7117">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5524">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>)</a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#updateRoom">POST</h4> + <p>Return the created or updated booking</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e5538">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5539">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7130"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5543">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>)</a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7133">/repo/courses/{courseId}/elements/singlepage</h3> + <h3 id="d2e5553">/repo/courses/{courseId}/vitero/{subIdentifier}/{bookingId}/members</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -14708,181 +14346,56 @@ </td> <td></td> </tr> + <tr> + <td> + <p><strong>subIdentifier</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>bookingId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + </td> + <td> + <p>The id of the booking</p> + </td> + </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachSinglePagePost">POST</h4> - <p>This attaches a Single Page Element onto a given course. The element will - be inserted underneath the supplied parentNodeId. - </p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e7139">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7152"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7158">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7171"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#attachSinglePagePost">POST</h4> - <p>This attaches a Single Page Element onto a given course. The element will - be inserted underneath the supplied parentNodeId. - </p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7180"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7186">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7199"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#attachSinglePage">PUT</h4> - <p>This attaches a Single Page Element onto a given course. The element will - be inserted underneath the supplied parentNodeId. - </p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7208"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7214">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getMembers">GET</h4> + <p>Returns the list of members of the booking.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7227"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5563">application/xml, application/json (<abbr title="{http://www.example.com} viteroGroupMemberVO">ns3:viteroGroupMemberVO</abbr>)</a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#attachSinglePage">PUT</h4> - <p>This attaches a Single Page Element onto a given course. The element will - be inserted underneath the supplied parentNodeId. + <h4 id="http://www.example.com#addMembers">POST</h4> + <p>Update the list of members of the booking, it add and mutates the + members and delete the missing members. </p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>filename</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>path</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7246"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e7252">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5577">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5578">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7265"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5582">application/xml, application/json (<abbr title="{http://www.example.com} viteroGroupMemberVO">ns3:viteroGroupMemberVO</abbr>)</a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7268">/repo/courses/{courseId}/elements/task/{nodeId}</h3> + <h3 id="d2e5592">/repo/courses/{courseId}/vitero/{subIdentifier}/{bookingId}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -14892,53 +14405,47 @@ </tr> <tr> <td> - <p><strong>nodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><strong>courseId</strong></p> </td> <td> - <p>The node's id of this task</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>subIdentifier</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>bookingId</strong></p> </td> <td> - <p>The course resourceable id</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#updateTask">POST</h4> - <p>This updates a Task Element onto a given course.</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e7279">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7304"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7310">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#deleteRoom">DELETE</h4> + <p>Delete the booking</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7323"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5600"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7326">/repo/courses/{courseId}/elements/task</h3> + <h3 id="d2e5603">/repo/courses/{courseId}/gotomeeting/{subIdentifier}</h3> + <p>Initial date: 24.03.2016<br></p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -14953,167 +14460,89 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>subIdentifier</strong></p> + </td> <td> - <p>The course resourceable id</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#attachTaskPost">POST</h4> - <p>This attaches a Task Element onto a given course. The element will be - inserted underneath the supplied parentNodeId. - </p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e7334">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7365"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7371">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e5607">/repo/courses/{courseId}/gotomeeting/{subIdentifier}/trainings</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>subIdentifier</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getTrainings">GET</h4> + <p>returns the list of booking of the resource.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7384"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5614">application/xml, application/json (<abbr title="{http://www.example.com} goToTrainingVO">ns3:goToTrainingVO</abbr>)</a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#attachTask">PUT</h4> - <p>This attaches a Task Element onto a given course. The element will be - inserted underneath the supplied parentNodeId. - </p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The node's id which will be the parent of this task</p> - </td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td> - <p>The node's position relative to its sibling nodes (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node short title</p> - </td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node long title</p> - </td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node learning objectives</p> - </td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The rules to view the node (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The rules to access the node (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>text</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The task node text</p> - </td> - </tr> - <tr> - <td> - <p><strong>points</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> - </td> - <td> - <p>The task node's possible points</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#createTraining">PUT</h4> + <p>Return the created or updated training</p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e7421"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5628">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">trainingVO</abbr>)</a></li> + <li><a href="#d2e5629">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">trainingVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7427">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5633">application/xml, application/json (<abbr title="{http://www.example.com} goToTrainingVO">ns3:goToTrainingVO</abbr>)</a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#updateTraining">POST</h4> + <p>Return the created or updated training</p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e5647">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">trainingVO</abbr>)</a></li> + <li><a href="#d2e5648">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">trainingVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7440"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5652">application/xml, application/json (<abbr title="{http://www.example.com} goToTrainingVO">ns3:goToTrainingVO</abbr>)</a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7443">/repo/courses/{courseId}/elements/test/{nodeId}</h3> + <h3 id="d2e5662">/repo/courses/{courseId}/gotomeeting/{subIdentifier}//trainings/{trainingKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -15123,7 +14552,16 @@ </tr> <tr> <td> - <p><strong>nodeId</strong></p> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>subIdentifier</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> @@ -15132,7 +14570,7 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>trainingKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -15143,29 +14581,17 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#updateTest">POST</h4> - <p>This updates a Test Element onto a given course.</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e7450">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#deleteTraining">DELETE</h4> + <p>Delete the training</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7460"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7466">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7479"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5670"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7482">/repo/courses/{courseId}/elements/test</h3> + <h3 id="d2e5673">/users/{identityKey}/calendars</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -15175,45 +14601,58 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The course resourceable id</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachTestPost">POST</h4> - <p>This attaches a Test Element onto a given course. The element will be - inserted underneath the supplied parentNodeId. - </p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e7490">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7518"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getCalendars">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7524">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7537"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5677">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5678">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e5679">/users/{identityKey}/calendars/events<span class="optional">?start</span><span class="optional">&limit</span><span class="optional">&onlyFuture</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachTest">PUT</h4> - <p>This attaches a Test Element onto a given course. The element will be - inserted underneath the supplied parentNodeId. - </p> + <h4 id="http://www.example.com#getEvents">GET</h4> <h6>request query parameters</h6> <table> <tr> @@ -15223,115 +14662,46 @@ </tr> <tr> <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><strong>start</strong></p> </td> <td> - <p>The node's id which will be the parent of this test</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>position</strong></p> + <p><strong>limit</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> </td> - <td> - <p>The test node's id which is retorned in the - response of the import test resource - </p> - </td> + <td></td> </tr> <tr> <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> + <p><strong>onlyFuture</strong></p> </td> <td> - <p>The node's position relative to its sibling nodes (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node short title</p> - </td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node long title</p> - </td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The node learning objectives</p> - </td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The rules to view the node (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>testResourceableId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The rules to access the node (optional)</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> </td> + <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7571"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7577">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7590"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5687">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5688">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7594">/repo/courses/{courseId}/elements/assessment/{nodeId}</h3> + <h3 id="d2e5689">/users/{identityKey}/calendars/{calendarId}</h3> + <p>Initial date: 23.12.2015<br></p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -15341,53 +14711,37 @@ </tr> <tr> <td> - <p><strong>nodeId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>calendarId</strong></p> </td> <td> - <p>The node's id of this assessment</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The course resourceable's id</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#updateAssessment">POST</h4> - <p>Updates an assessment building block.</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e7605">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7622"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7626">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7637"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> + <div class="methods"></div> </div> <div class="resource"> - <h3 id="d2e7640">/repo/courses/{courseId}/elements/assessment</h3> + <h3 id="d2e5694">/users/{identityKey}/calendars/{calendarId}/events/{eventId}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -15397,146 +14751,55 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>calendarId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>eventId</strong></p> + </td> <td> - <p>The course resourceable's id</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachAssessmentPost">POST</h4> - <p>Attaches an assessment building block.</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e7648">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7671"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7675">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7686"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#attachAssessment">PUT</h4> - <p>Attaches an assessment building block.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The node's id which will be the parent of this assessment</p> - </td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td> - <p>The node's position relative to its sibling nodes (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node short title</p> - </td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node long title</p> - </td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node learning objectives</p> - </td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The rules to view the node (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The rules to access the node (optional)</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7715"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7719">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#deleteEventByCalendar">DELETE</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7730"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5698">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5699">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7733">/repo/courses/{courseId}/elements/wiki/{nodeId}</h3> + <h3 id="d2e5700">/users/{identityKey}/calendars/{calendarId}/event</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -15546,53 +14809,65 @@ </tr> <tr> <td> - <p><strong>nodeId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>calendarId</strong></p> </td> <td> - <p>The node's id which of this wiki</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The course resourceable's id</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#updateWiki">POST</h4> - <p>Attaches an wiki building block.</p> + <h4 id="http://www.example.com#putEventByCalendar">PUT</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e7744">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5703">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e5704">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7764"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5706">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5707">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#postEventByCalendar">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e7768">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5710">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5711">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> + <li><a href="#d2e5712">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7779"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5714">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5715">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7782">/repo/courses/{courseId}/elements/wiki<span class="optional">?parentNodeId</span><span class="optional">&position</span><span class="optional">&shortTitle</span><span class="optional">&longTitle</span><span class="optional">&objectives</span><span class="optional">&visibilityExpertRules</span><span class="optional">&accessExpertRules</span><span class="optional">&wikiResourceableId</span></h3> + <h3 id="d2e5716">/users/{identityKey}/calendars/{calendarId}/events</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -15602,118 +14877,49 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>identityKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> - </table> + <tr> + <td> + <p><strong>calendarId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>identityKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachWikiPost">POST</h4> - <p>Attaches an wiki building block.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>wikiResourceableId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7797"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#putEventsByCalendar">PUT</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e7801">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5719">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5720">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7812"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5722">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5723">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#attachWiki">PUT</h4> - <p>Attaches an wiki building block.</p> + <h4 id="http://www.example.com#getEventsByCalendar">GET</h4> <h6>request query parameters</h6> <table> <tr> @@ -15723,97 +14929,89 @@ </tr> <tr> <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> + <p><strong>start</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> + <p><strong>limit</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>wikiResourceableId</strong></p> + <p><strong>onlyFuture</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> </td> <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7828"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5730">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5731">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postEventsByCalendar">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e5734">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5735">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5737">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5738">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e5739">/api</h3> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e5740">/api/version</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7832">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5743">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e5744">/api/doc</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getHtmlDoc">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7843"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5747">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7846">/repo/courses/{courseId}/elements/blog/{nodeId}</h3> + <h3 id="d2e5748">/api/doc/{filename}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -15823,53 +15021,83 @@ </tr> <tr> <td> - <p><strong>nodeId</strong></p> + <p><strong>filename</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td> - <p>The node's id of this blog</p> - </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getImage1">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5752">image/jpeg<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e5753">/api/{filename}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> </tr> <tr> <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>filename</strong></p> </td> <td> - <p>The course resourceable's id</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#updateBlog">POST</h4> - <p>Update an blog building block.</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e7857">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#getImage2">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7877"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5757">image/jpeg<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e5758">/api/copyright</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getCopyrightXhtml">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7881">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5761">application/xhtml+xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5762">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#getCopyrightPlainText">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7892"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5765">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7895">/repo/courses/{courseId}/elements/blog<span class="optional">?parentNodeId</span><span class="optional">&position</span><span class="optional">&shortTitle</span><span class="optional">&longTitle</span><span class="optional">&objectives</span><span class="optional">&visibilityExpertRules</span><span class="optional">&accessExpertRules</span><span class="optional">&repoEntry</span></h3> + <h3 id="d2e5766">/auth</h3> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e5767">/auth/{username}<span class="optional">?password</span><span class="optional">&x-olat-token</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -15879,21 +15107,18 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>username</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The course resourceable's id</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachBlogPost">POST</h4> - <p>Attaches an blog building block.</p> + <h4 id="http://www.example.com#login">GET</h4> <h6>request query parameters</h6> <table> <tr> @@ -15903,228 +15128,53 @@ </tr> <tr> <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The node's id which will be the parent of this assessment</p> - </td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td> - <p>The node's position relative to its sibling nodes (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node short title</p> - </td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node long title</p> - </td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node learning objectives</p> - </td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> + <p><strong>password</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td> - <p>The rules to view the node (optional)</p> - </td> + <td></td> </tr> <tr> <td> - <p><strong>accessExpertRules</strong></p> + <p><strong>x-olat-token</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td> - <p>The rules to access the node (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>repoEntry</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The softkey of the blog resourceable (optional)</p> - </td> + <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7928"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7932">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7943"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5774">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5775">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e5776">/auth/version</h3> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachBlog">PUT</h4> - <p>Attaches an blog building block.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The node's id which will be the parent of this assessment</p> - </td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td> - <p>The node's position relative to its sibling nodes (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node short title</p> - </td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node long title</p> - </td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node learning objectives</p> - </td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The rules to view the node (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The rules to access the node (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>repoEntry</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The softkey of the blog resourceable (optional)</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7975"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e7979">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e7990"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5779">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e7993">/repo/courses/{courseId}/elements/survey/{nodeId}</h3> + <h3 id="d2e5780">/vitero</h3> + <p>Initial date: 06.07.2015<br></p> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e5783">/vitero/{resourceName}/{resourceId}/{subIdentifier}</h3> + <p>Initial date: 14.07.2015<br></p> <h6>resource-wide template parameters</h6> <table> <tr> @@ -16134,53 +15184,72 @@ </tr> <tr> <td> - <p><strong>nodeId</strong></p> + <p><strong>resourceName</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td> - <p>The node's id which will be the parent of this assessment</p> - </td> + <td></td> </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>resourceId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The course resourceable's id</p> + <p><strong>subIdentifier</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachSurveyPost">POST</h4> - <p>Attaches an survey building block.</p> + <h4 id="http://www.example.com#getRooms">GET</h4> + <p>returns the list of booking of the resource.</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5795">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>)</a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#createRoom">PUT</h4> + <p>Return the created or updated booking</p> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e8004">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5809">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5810">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8024"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5814">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>)</a></li> </ul> - <p><em>available response representations:</em></p> + </div> + <div class="method"> + <h4 id="http://www.example.com#updateRoom">POST</h4> + <p>Return the created or updated booking</p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e8028">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5828">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> + <li><a href="#d2e5829">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8039"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5833">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>)</a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e8042">/repo/courses/{courseId}/elements/survey<span class="optional">?parentNodeId</span><span class="optional">&position</span><span class="optional">&shortTitle</span><span class="optional">&longTitle</span><span class="optional">&objectives</span><span class="optional">&visibilityExpertRules</span><span class="optional">&accessExpertRules</span><span class="optional">&surveyResourceableId</span></h3> + <h3 id="d2e5843">/vitero/{resourceName}/{resourceId}/{subIdentifier}/{bookingId}/members</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -16190,230 +15259,72 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>resourceName</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>resourceId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#attachSurveyPost">POST</h4> - <p>Attaches an survey building block.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node's position relative to its sibling nodes (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node short title</p> - </td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node long title</p> - </td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The node learning objectives</p> - </td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The rules to view the node (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>surveyResourceableId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The rules to access the node (optional)</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8069"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8073">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> + <tr> + <td> + <p><strong>subIdentifier</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>bookingId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + </td> + <td> + <p>The id of the booking</p> + </td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getMembers">GET</h4> + <p>Returns the list of members of the booking.</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8084"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5853">application/xml, application/json (<abbr title="{http://www.example.com} viteroGroupMemberVO">ns3:viteroGroupMemberVO</abbr>)</a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#attachSurvey">PUT</h4> - <p>Attaches an survey building block.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>surveyResourceableId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td></td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8100"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#addMembers">POST</h4> + <p>Update the list of members of the booking, it add and mutates the + members and delete the missing members. + </p> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e8104">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5867">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5868">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8115"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5872">application/xml, application/json (<abbr title="{http://www.example.com} viteroGroupMemberVO">ns3:viteroGroupMemberVO</abbr>)</a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e8118">/repo/courses/{courseId}/elements/externalpage/{nodeId}</h3> + <h3 id="d2e5882">/vitero/{resourceName}/{resourceId}/{subIdentifier}/{bookingId}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -16423,53 +15334,87 @@ </tr> <tr> <td> - <p><strong>parentNodeId</strong></p> + <p><strong>resourceName</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>resourceId</strong></p> + </td> <td> - <p>The node's id of this external page</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>subIdentifier</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The course resourceable's id</p> + <p><strong>bookingId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#updateExternalPage">POST</h4> - <p>Update an external page building block.</p> - <p><em>acceptable request representations:</em></p> - <ul> - <li><a href="#d2e8129">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + <h4 id="http://www.example.com#deleteRoom">DELETE</h4> + <p>Delete the booking</p> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8149"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5890"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e5893">/repo/lifecycle</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getPublicLifeCycles">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8153">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5896">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5897">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e5898">/repo/sharedfolder</h3> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e5899">/repo/sharedfolder/version</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8164"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5902">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e8167">/repo/courses/{courseId}/elements/externalpage<span class="optional">?parentNodeId</span><span class="optional">&position</span><span class="optional">&shortTitle</span><span class="optional">&longTitle</span><span class="optional">&objectives</span><span class="optional">&visibilityExpertRules</span><span class="optional">&accessExpertRules</span><span class="optional">&url</span></h3> + <h3 id="d2e5903">/repo/sharedfolder/{repoEntryKey}/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -16479,256 +15424,36 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>path</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td> - <p>The course resourceable's id</p> + <td></td> + </tr> + <tr> + <td> + <p><strong>repoEntryKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachExternalPagePost">POST</h4> - <p>Attaches an external page building block.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The node's id which will be the parent of this assessment</p> - </td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td> - <p>The node's position relative to its sibling nodes (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node short title</p> - </td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node long title</p> - </td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node learning objectives</p> - </td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The rules to view the node (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The rules to access the node (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>url</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The URL of the external page</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8200"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8204">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8215"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#attachExternalPage">PUT</h4> - <p>Attaches an external page building block.</p> - <h6>request query parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>parentNodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The node's id which will be the parent of this assessment</p> - </td> - </tr> - <tr> - <td> - <p><strong>position</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - </td> - <td> - <p>The node's position relative to its sibling nodes (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>shortTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node short title</p> - </td> - </tr> - <tr> - <td> - <p><strong>longTitle</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node long title</p> - </td> - </tr> - <tr> - <td> - <p><strong>objectives</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>undefined</tt></p> - </td> - <td> - <p>The node learning objectives</p> - </td> - </tr> - <tr> - <td> - <p><strong>visibilityExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The rules to view the node (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>accessExpertRules</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The rules to access the node (optional)</p> - </td> - </tr> - <tr> - <td> - <p><strong>url</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The URL of the external page</p> - </td> - </tr> - </table> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8247"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8251"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8255">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getSharedFiles">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8266"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5908">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e8269">/repo/courses/{courseId}/elements/task/{nodeId}/file</h3> + <h3 id="d2e5909">/repo/sharedfolder/{repoEntryKey}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -16738,69 +15463,102 @@ </tr> <tr> <td> - <p><strong>nodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td> - <p>The node's id which will be the parent of this task file</p> - </td> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> + <p><strong>repoEntryKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The course resourceable id</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#attachTaskFilePost">POST</h4> - <p>This attaches a Task file onto a given task element.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8282"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8288">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> - </ul> + <h4 id="http://www.example.com#getSharedFiles">GET</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8301"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5913">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - <div class="method"> - <h4 id="http://www.example.com#attachTaskFile">PUT</h4> - <p>This attaches a Task file onto a given task element.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8310"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> + </div> + </div> + <div class="resource"> + <h3 id="d2e5914">/repo/sharedfolder/{repoEntryKey}/files</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>repoEntryKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#listFiles">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5918">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5919">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5920">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5921">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5922">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToRoot">POST</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5925">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5926">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFile64ToRoot">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e5929">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8316">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + <li><a href="#d2e5934">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5935">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFileToRoot">PUT</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8329"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5938">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5939">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFile64VOToRoot">PUT</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e5942">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5943">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8335"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5945">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5946">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e8339">/repo/courses/{courseId}/elements/task/{nodeId}/configuration<span class="optional">?enableAssignment</span><span class="optional">&taskAssignmentType</span><span class="optional">&taskAssignmentText</span><span class="optional">&enableTaskPreview</span><span class="optional">&enableTaskDeselect</span><span class="optional">&onlyOneUserPerTask</span><span class="optional">&enableDropbox</span><span class="optional">&enableDropboxConfirmationMail</span><span class="optional">&dropboxConfirmationText</span><span class="optional">&enableReturnbox</span><span class="optional">&enableScoring</span><span class="optional">&grantScoring</span><span class="optional">&scoreMin</span><span class="optional">&scoreMax</span><span class="optional">&grantPassing</span><span class="optional">&scorePassingThreshold</span><span class="optional">&enableCommentField</span><span class="optional">&commentForUser</span><span class="optional">&commentForCoaches</span><span class="optional">&enableSolution</span><span class="optional">&accessExpertRuleTask</span><span class="optional">&accessExpertRuleDropbox</span><span class="optional">&accessExpertRuleReturnbox</span><span class="optional">&accessExpertRuleScoring</span><span class="optional">&accessExpertRuleSolution</span></h3> + <h3 id="d2e5947">/repo/sharedfolder/{repoEntryKey}/files/{path:.*}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -16810,28 +15568,180 @@ </tr> <tr> <td> - <p><strong>nodeId</strong></p> + <p><strong>repoEntryKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>path</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#listFiles">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5951">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5952">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5953">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5954">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5955">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFileToFolder">POST</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5958">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5959">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5960">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#postFile64ToFolder">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e5963">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5968">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5969">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5970">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFileToFolder">PUT</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5973">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5974">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5975">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFile64ToFolder">PUT</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e5978">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + <li><a href="#d2e5979">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5981">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5982">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#putFolders">PUT</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5985">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5986">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#deleteItem">DELETE</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5989">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e5990">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e5991">/repo/sharedfolder/{repoEntryKey}/files/version</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>repoEntryKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5994">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e5995">/repo/sharedfolder/{repoEntryKey}/files/metadata/{path:.*}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> <tr> <td> - <p><strong>courseId</strong></p> + <p><strong>repoEntryKey</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> + <tr> + <td> + <p><strong>path</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#addTaskConfigurationPost">POST</h4> - <p>This attaches the run-time configuration onto a given task element.</p> + <h4 id="http://www.example.com#getFileMetadata">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e5999">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6000">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6001">/notifications<span class="optional">?date</span><span class="optional">&type</span></h3> + <p><h3>Description:</h3> + REST API for notifications + <p> + Initial Date: 25 aug 2010 <br> + </p> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getNotifications">GET</h4> + <p>Retrieves the notification of the logged in user.</p> <h6>request query parameters</h6> <table> <tr> @@ -16841,187 +15751,282 @@ </tr> <tr> <td> - <p><strong>enableAssignment</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>taskAssignmentType</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>taskAssignmentText</strong></p> + <p><strong>date</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>enableTaskPreview</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>enableTaskDeselect</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>onlyOneUserPerTask</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td></td> - </tr> - <tr> <td> - <p><strong>enableDropbox</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>The date (optional)</p> </td> - <td></td> </tr> <tr> <td> - <p><strong>enableDropboxConfirmationMail</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><strong>type</strong></p> </td> - <td></td> - </tr> - <tr> <td> - <p><strong>dropboxConfirmationText</strong></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>The type of notifications (User, Forum...) (optional)</p> </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>enableReturnbox</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>enableScoring</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>grantScoring</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>scoreMin</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>scoreMax</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> - </td> - <td></td> </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6017">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6030"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6033">/notifications/subscribers/{subscriberKey}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>subscriberKey</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#unsubscribe">DELETE</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6037">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6038">/notifications/subscribers</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#subscribe">PUT</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e6041">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">subscribersVO</abbr>)</a></li> + <li><a href="#d2e6042">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">subscribersVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6044">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6045">/notifications/subscribers/{ressourceName}/{ressourceId}/{subIdentifier}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>ressourceId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>subIdentifier</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>ressourceName</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getSubscriber">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6051">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6052">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6053">/repo/courses/{courseId}/elements</h3> + <h6>Methods</h6> + <div class="methods"></div> + </div> + <div class="resource"> + <h3 id="d2e6054">/repo/courses/{courseId}/elements/version</h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getVersion">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6057">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6058">/repo/courses/{courseId}/elements/structure/{nodeId}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#updateStructure">POST</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6063">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6064">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6065">/repo/courses/{courseId}/elements/structure</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#attachStructurePostMultiparts">POST</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6069">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6070">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachStructure">PUT</h4> + <h6>request query parameters</h6> + <table> <tr> - <td> - <p><strong>grantPassing</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td></td> + <th>parameter</th> + <th>value</th> + <th>description</th> </tr> <tr> <td> - <p><strong>scorePassingThreshold</strong></p> + <p><strong>parentNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>enableCommentField</strong></p> + <p><strong>position</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>commentForUser</strong></p> + <p><strong>shortTitle</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>commentForCoaches</strong></p> + <p><strong>longTitle</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>enableSolution</strong></p> + <p><strong>objectives</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>accessExpertRuleTask</strong></p> + <p><strong>visibilityExpertRules</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> @@ -17030,7 +16035,7 @@ </tr> <tr> <td> - <p><strong>accessExpertRuleDropbox</strong></p> + <p><strong>accessExpertRules</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> @@ -17039,56 +16044,106 @@ </tr> <tr> <td> - <p><strong>accessExpertRuleReturnbox</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRuleScoring</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRuleSolution</strong></p> + <p><strong>displayType</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>toc</tt></p> </td> <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8374"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6082">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6083">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6084">/repo/courses/{courseId}/elements/singlepage/{nodeId}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#updateSinglePage">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8378"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6089">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6090">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6091">/repo/courses/{courseId}/elements/singlepage</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#attachSinglePagePost">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e8382">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>)</a></li> + <li><a href="#d2e6095">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8393"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6106">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6107">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachSinglePagePost">POST</h4> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8397"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6110">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6111">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#addTaskConfiguration">PUT</h4> - <p>This attaches the run-time configuration onto a given task element.</p> + <h4 id="http://www.example.com#attachSinglePage">PUT</h4> <h6>request query parameters</h6> <table> <tr> @@ -17098,160 +16153,260 @@ </tr> <tr> <td> - <p><strong>enableAssignment</strong></p> + <p><strong>parentNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>taskAssignmentType</strong></p> + <p><strong>position</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>taskAssignmentText</strong></p> + <p><strong>shortTitle</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>enableTaskPreview</strong></p> + <p><strong>longTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>enableTaskDeselect</strong></p> + <p><strong>objectives</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>onlyOneUserPerTask</strong></p> + <p><strong>visibilityExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>enableDropbox</strong></p> + <p><strong>accessExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>enableDropboxConfirmationMail</strong></p> + <p><strong>filename</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>dropboxConfirmationText</strong></p> + <p><strong>path</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6124">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6125">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachSinglePage">PUT</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6128">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6129">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6130">/repo/courses/{courseId}/elements/task/{nodeId}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#updateTask">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e6135">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6144">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6145">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6146">/repo/courses/{courseId}/elements/task</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#attachTaskPost">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e6150">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6161">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6162">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachTask">PUT</h4> + <h6>request query parameters</h6> + <table> <tr> - <td> - <p><strong>enableReturnbox</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td></td> + <th>parameter</th> + <th>value</th> + <th>description</th> </tr> <tr> <td> - <p><strong>enableScoring</strong></p> + <p><strong>parentNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>grantScoring</strong></p> + <p><strong>position</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>scoreMin</strong></p> + <p><strong>shortTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>scoreMax</strong></p> + <p><strong>longTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>grantPassing</strong></p> + <p><strong>objectives</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>scorePassingThreshold</strong></p> + <p><strong>visibilityExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>enableCommentField</strong></p> + <p><strong>accessExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>commentForUser</strong></p> + <p><strong>text</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> @@ -17260,109 +16415,24 @@ </tr> <tr> <td> - <p><strong>commentForCoaches</strong></p> + <p><strong>points</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>enableSolution</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRuleTask</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRuleDropbox</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRuleReturnbox</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRuleScoring</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - </td> - <td></td> - </tr> - <tr> - <td> - <p><strong>accessExpertRuleSolution</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> </td> <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8432"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8436"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8440">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8451"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8455"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getTaskConfiguration">GET</h4> - <p>Retrieves configuration of the task course node</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8464"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8470">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8483"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6175">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6176">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e8486">/repo/courses/{courseId}/elements/survey/{nodeId}/configuration<span class="optional">?allowCancel</span><span class="optional">&allowNavigation</span><span class="optional">&allowSuspend</span><span class="optional">&sequencePresentation</span><span class="optional">&showNavigation</span><span class="optional">&showQuestionTitle</span><span class="optional">&showSectionsOnly</span></h3> + <h3 id="d2e6177">/repo/courses/{courseId}/elements/test/{nodeId}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -17370,6 +16440,15 @@ <th>value</th> <th>description</th> </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> <tr> <td> <p><strong>nodeId</strong></p> @@ -17379,6 +16458,32 @@ </td> <td></td> </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#updateTest">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e6182">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6190">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6191">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6192">/repo/courses/{courseId}/elements/test</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> <tr> <td> <p><strong>courseId</strong></p> @@ -17392,8 +16497,19 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#addSurveyConfigurationPost">POST</h4> - <p>This attaches the run-time configuration onto a given survey element.</p> + <h4 id="http://www.example.com#attachTestPost">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e6196">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6206">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6207">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachTest">PUT</h4> <h6>request query parameters</h6> <table> <tr> @@ -17403,99 +16519,167 @@ </tr> <tr> <td> - <p><strong>allowCancel</strong></p> + <p><strong>parentNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>allowNavigation</strong></p> + <p><strong>position</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>allowSuspend</strong></p> + <p><strong>shortTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>sequencePresentation</strong></p> + <p><strong>longTitle</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>itemPage</tt></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showNavigation</strong></p> + <p><strong>objectives</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showQuestionTitle</strong></p> + <p><strong>visibilityExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showSectionsOnly</strong></p> + <p><strong>accessExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>testResourceableId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8501"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6219">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6220">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6221">/repo/courses/{courseId}/elements/assessment/{nodeId}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#updateAssessment">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e8505"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6226">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8509">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>)</a></li> + <li><a href="#d2e6233">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6234">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6235">/repo/courses/{courseId}/elements/assessment</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#attachAssessmentPost">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e8520"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6239">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8524"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6248">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6249">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> <div class="method"> - <h4 id="http://www.example.com#addSurveyConfiguration">PUT</h4> - <p>This attaches the run-time configuration onto a given survey element.</p> + <h4 id="http://www.example.com#attachAssessment">PUT</h4> <h6>request query parameters</h6> <table> <tr> @@ -17505,116 +16689,81 @@ </tr> <tr> <td> - <p><strong>allowCancel</strong></p> + <p><strong>parentNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>allowNavigation</strong></p> + <p><strong>position</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>allowSuspend</strong></p> + <p><strong>shortTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>sequencePresentation</strong></p> + <p><strong>longTitle</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>itemPage</tt></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showNavigation</strong></p> + <p><strong>objectives</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showQuestionTitle</strong></p> + <p><strong>visibilityExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showSectionsOnly</strong></p> + <p><strong>accessExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8539"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8543"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8547">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8558"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8562"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getSurveyConfiguration">GET</h4> - <p>Retrieves configuration of the survey course node</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8571"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8577">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8590"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6260">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6261">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e8593">/repo/courses/{courseId}/elements/test/{nodeId}/configuration<span class="optional">?allowCancel</span><span class="optional">&allowNavigation</span><span class="optional">&allowSuspend</span><span class="optional">&numAttempts</span><span class="optional">&sequencePresentation</span><span class="optional">&showNavigation</span><span class="optional">&showQuestionTitle</span><span class="optional">&showResultsAfterFinish</span><span class="optional">&showResultsDependendOnDate</span><span class="optional">&showResultsOnHomepage</span><span class="optional">&showScoreInfo</span><span class="optional">&showQuestionProgress</span><span class="optional">&showScoreProgress</span><span class="optional">&showSectionsOnly</span><span class="optional">&summaryPresentation</span><span class="optional">&startDate</span><span class="optional">&endDate</span></h3> + <h3 id="d2e6263">/repo/courses/{courseId}/elements/wiki/{nodeId}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -17622,6 +16771,15 @@ <th>value</th> <th>description</th> </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> <tr> <td> <p><strong>nodeId</strong></p> @@ -17631,6 +16789,32 @@ </td> <td></td> </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#updateWiki">POST</h4> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e6268">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6276">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6277">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6278">/repo/courses/{courseId}/elements/wiki<span class="optional">?parentNodeId</span><span class="optional">&position</span><span class="optional">&shortTitle</span><span class="optional">&longTitle</span><span class="optional">&objectives</span><span class="optional">&visibilityExpertRules</span><span class="optional">&accessExpertRules</span><span class="optional">&wikiResourceableId</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> <tr> <td> <p><strong>courseId</strong></p> @@ -17644,8 +16828,7 @@ <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#addTestConfigurationPost">POST</h4> - <p>This attaches the run-time configuration onto a given test element.</p> + <h4 id="http://www.example.com#attachWikiPost">POST</h4> <h6>request query parameters</h6> <table> <tr> @@ -17655,166 +16838,164 @@ </tr> <tr> <td> - <p><strong>allowCancel</strong></p> + <p><strong>parentNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>allowNavigation</strong></p> + <p><strong>position</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>allowSuspend</strong></p> + <p><strong>shortTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>numAttempts</strong></p> + <p><strong>longTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>sequencePresentation</strong></p> + <p><strong>objectives</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>itemPage</tt></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showNavigation</strong></p> + <p><strong>visibilityExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showQuestionTitle</strong></p> + <p><strong>accessExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showResultsAfterFinish</strong></p> + <p><strong>wikiResourceableId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6291">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6292">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachWiki">PUT</h4> + <h6>request query parameters</h6> + <table> <tr> - <td> - <p><strong>showResultsDependendOnDate</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> - </td> - <td></td> + <th>parameter</th> + <th>value</th> + <th>description</th> </tr> <tr> <td> - <p><strong>showResultsOnHomepage</strong></p> + <p><strong>parentNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showScoreInfo</strong></p> + <p><strong>position</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showQuestionProgress</strong></p> + <p><strong>shortTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showScoreProgress</strong></p> + <p><strong>longTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showSectionsOnly</strong></p> + <p><strong>objectives</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>summaryPresentation</strong></p> + <p><strong>visibilityExpertRules</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>summaryCompact</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>startDate</strong></p> + <p><strong>accessExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>endDate</strong></p> + <p><strong>wikiResourceableId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -17824,28 +17005,79 @@ </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8619"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8623"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8627">application/xml, application/json (<abbr title="{http://www.example.com} testConfigVO">ns3:testConfigVO</abbr>)</a></li> + <li><a href="#d2e6304">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6305">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> - <p><em>available response representations:</em></p> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6306">/repo/courses/{courseId}/elements/blog/{nodeId}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#updateBlog">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e8638"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6311">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8642"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6319">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6320">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6321">/repo/courses/{courseId}/elements/blog<span class="optional">?parentNodeId</span><span class="optional">&position</span><span class="optional">&shortTitle</span><span class="optional">&longTitle</span><span class="optional">&objectives</span><span class="optional">&visibilityExpertRules</span><span class="optional">&accessExpertRules</span><span class="optional">&repoEntry</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#addTestConfiguration">PUT</h4> - <p>This attaches the run-time configuration onto a given test element.</p> + <h4 id="http://www.example.com#attachBlogPost">POST</h4> <h6>request query parameters</h6> <table> <tr> @@ -17855,166 +17087,164 @@ </tr> <tr> <td> - <p><strong>allowCancel</strong></p> + <p><strong>parentNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>allowNavigation</strong></p> + <p><strong>position</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>allowSuspend</strong></p> + <p><strong>shortTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>numAttempts</strong></p> + <p><strong>longTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> - <p>Default: <tt>0</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>sequencePresentation</strong></p> + <p><strong>objectives</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>itemPage</tt></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showNavigation</strong></p> + <p><strong>visibilityExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showQuestionTitle</strong></p> + <p><strong>accessExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showResultsAfterFinish</strong></p> + <p><strong>repoEntry</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> <td></td> </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6334">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6335">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachBlog">PUT</h4> + <h6>request query parameters</h6> + <table> <tr> - <td> - <p><strong>showResultsDependendOnDate</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> - </td> - <td></td> + <th>parameter</th> + <th>value</th> + <th>description</th> </tr> <tr> <td> - <p><strong>showResultsOnHomepage</strong></p> + <p><strong>parentNodeId</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showScoreInfo</strong></p> + <p><strong>position</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showQuestionProgress</strong></p> + <p><strong>shortTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showScoreProgress</strong></p> + <p><strong>longTitle</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>true</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>showSectionsOnly</strong></p> + <p><strong>objectives</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> - <p>Default: <tt>false</tt></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>summaryPresentation</strong></p> + <p><strong>visibilityExpertRules</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> - <p>Default: <tt>summaryCompact</tt></p> </td> <td></td> </tr> <tr> <td> - <p><strong>startDate</strong></p> + <p><strong>accessExpertRules</strong></p> </td> <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> <td></td> </tr> <tr> <td> - <p><strong>endDate</strong></p> + <p><strong>repoEntry</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> @@ -18024,55 +17254,35 @@ </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8668"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8672"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8676">application/xml, application/json (<abbr title="{http://www.example.com} testConfigVO">ns3:testConfigVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8687"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8691"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#getTestConfiguration">GET</h4> - <p>Retrieves configuration of the test course node</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8700"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8706">application/xml, application/json (<abbr title="{http://www.example.com} testConfigVO">ns3:testConfigVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8719"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6347">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6348">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e8723">/notifications<span class="optional">?date</span><span class="optional">&type</span></h3> - <p><h3>Description:</h3> - REST API for notifications - <p> - Initial Date: 25 aug 2010 <br> - </p> + <h3 id="d2e6349">/repo/courses/{courseId}/elements/survey<span class="optional">?parentNodeId</span><span class="optional">&position</span><span class="optional">&shortTitle</span><span class="optional">&longTitle</span><span class="optional">&objectives</span><span class="optional">&visibilityExpertRules</span><span class="optional">&accessExpertRules</span><span class="optional">&surveyResourceableId</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getNotifications">GET</h4> - <p>Retrieves the notification of the logged in user.</p> + <h4 id="http://www.example.com#attachSurveyPost">POST</h4> <h6>request query parameters</h6> <table> <tr> @@ -18082,120 +17292,181 @@ </tr> <tr> <td> - <p><strong>date</strong></p> + <p><strong>parentNodeId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> + </tr> + <tr> <td> - <p>The date (optional)</p> + <p><strong>position</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> </td> + <td></td> </tr> <tr> <td> - <p><strong>type</strong></p> + <p><strong>shortTitle</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>longTitle</strong></p> </td> <td> - <p>The type of notifications (User, Forum...) (optional)</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>objectives</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>visibilityExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>surveyResourceableId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> + <td></td> </tr> </table> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8739"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8745">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e8755">/repo/courses/{courseId}/assessments</h3> - <p>Description:<br> - Retrieve and import course assessments - - <P> - Initial Date: 7 apr. 2010 <br> - </p> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The course resourceable's id</p> - </td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> - <div class="method"> - <h4 id="http://www.example.com#getCourseResults">GET</h4> - <p>Returns the results of the course.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8769">application/xml, application/json (<abbr title="{http://www.example.com} assessableResultsVO">ns3:assessableResultsVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8780"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6362">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6363">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e8783">/repo/courses/{courseId}/assessments/version</h3> - <h6>resource-wide template parameters</h6> - <table> - <tr> - <th>parameter</th> - <th>value</th> - <th>description</th> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The course resourceable's id</p> - </td> - </tr> - </table> - <h6>Methods</h6> - <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getVersion">GET</h4> - <p>Retireves the version of the Course Assessment Web Service.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8788">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <div class="resource"> - <h3 id="d2e8798">/repo/courses/{courseId}/assessments/users/{identityKey}</h3> + <h4 id="http://www.example.com#attachSurvey">PUT</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>parentNodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>position</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>shortTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>longTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>objectives</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>visibilityExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>surveyResourceableId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6375">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6376">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6377">/repo/courses/{courseId}/elements/survey/{nodeId}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -18210,55 +17481,36 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The course resourceable's id</p> - </td> - </tr> - <tr> - <td> - <p><strong>identityKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The id of the user</p> - </td> + <td></td> </tr> <tr> <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + <p><strong>nodeId</strong></p> </td> <td> - <p>The course resourceable's id</p> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getCourseResultsOf">GET</h4> - <p>Returns the results of the course.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8809"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> + <h4 id="http://www.example.com#attachSurveyPost">POST</h4> + <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e8813">application/xml, application/json (<abbr title="{http://www.example.com} assessableResultsVO">ns3:assessableResultsVO</abbr>)</a></li> + <li><a href="#d2e6382">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8824"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6390">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6391">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e8827">/repo/courses/{courseId}/assessments/{nodeId}</h3> + <h3 id="d2e6392">/repo/courses/{courseId}/elements/externalpage/{nodeId}</h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -18268,25 +17520,12 @@ </tr> <tr> <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The course resourceable's id</p> - </td> - </tr> - <tr> - <td> - <p><strong>nodeId</strong></p> + <p><strong>parentNodeId</strong></p> </td> <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> </td> - <td> - <p>The id of the course building block</p> - </td> + <td></td> </tr> <tr> <td> @@ -18295,54 +17534,27 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The resourceable id of the course</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getAssessableResults">GET</h4> - <p>Exports results for an assessable course node for all students.</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8838"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8842">application/xml, application/json (<abbr title="{http://www.example.com} assessableResultsVO">ns3:assessableResultsVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8853"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - <div class="method"> - <h4 id="http://www.example.com#postAssessableResults">POST</h4> - <p>Imports results for an assessable course node for the authenticated student.</p> + <h4 id="http://www.example.com#updateExternalPage">POST</h4> <p><em>acceptable request representations:</em></p> <ul> - <li><a href="#d2e8860">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">assessableResultsVO</abbr>)</a></li> - <li><a href="#d2e8861">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">assessableResultsVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8863"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6397">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> <p><em>available response representations:</em></p> <ul> - <li><a href="#d2e8867"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8871"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6405">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6406">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> </ul> </div> </div> </div> <div class="resource"> - <h3 id="d2e8874">/repo/courses/{courseId}/assessments/{nodeId}/users/{identityKey}</h3> + <h3 id="d2e6407">/repo/courses/{courseId}/elements/externalpage<span class="optional">?parentNodeId</span><span class="optional">&position</span><span class="optional">&shortTitle</span><span class="optional">&longTitle</span><span class="optional">&objectives</span><span class="optional">&visibilityExpertRules</span><span class="optional">&accessExpertRules</span><span class="optional">&url</span></h3> <h6>resource-wide template parameters</h6> <table> <tr> @@ -18357,1798 +17569,1792 @@ <td> <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> </td> - <td> - <p>The course resourceable's id</p> - </td> - </tr> - <tr> - <td> - <p><strong>nodeId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The ident of the course building block</p> - </td> - </tr> - <tr> - <td> - <p><strong>identityKey</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The id of the user</p> - </td> - </tr> - <tr> - <td> - <p><strong>courseId</strong></p> - </td> - <td> - <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> - </td> - <td> - <p>The course resourceable's id</p> - </td> + <td></td> </tr> </table> <h6>Methods</h6> <div class="methods"> <div class="method"> - <h4 id="http://www.example.com#getCourseNodeResultsForNode">GET</h4> - <p>Returns the results of a student at a specific assessable node</p> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8888"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8892">application/xml, application/json (<abbr title="{http://www.example.com} assessableResultsVO">ns3:assessableResultsVO</abbr>)</a></li> - </ul> - <p><em>available response representations:</em></p> - <ul> - <li><a href="#d2e8903"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> - </ul> - </div> - </div> - </div> - <h2 id="representations">Representations</h2> - <h3 id="d2e16">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e17">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e20">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e31">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e32">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e38">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e39">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e49">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<catalogEntries totalCount="0"> - <catalogEntries> - <catalogEntry> - <key>478</key> - <name>Category</name> - <description>Description of the category</description> - <type>0</type> - </catalogEntry> - </catalogEntries> -</catalogEntries> -</code></pre></p> - <p>The list of roots catalog entries</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e72"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The path could not be resolved to a valid catalog entry</p> - <h3 id="d2e78">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<users totalCount="0"> - <users> - <user> - <key>345</key> - <login>john</login> - <password></password> - <firstName>John</firstName> - <lastName>Smith</lastName> - <email>john.smith@frentix.com</email> - <properties> - <property> - <name>telPrivate</name> - <value>238456782</value> - </property> - <property> - <name>telMobile</name> - <value>238456782</value> - </property> - </properties> - </user> - </users> -</users> -</code></pre></p> - <p>The catalog entry</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e91"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Not authorized</p> - <h3 id="d2e100"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The path could not be resolved to a valid catalog entry</p> - <h3 id="d2e106">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<users totalCount="0"> - <users> - <user> - <key>345</key> - <login>john</login> - <password></password> - <firstName>John</firstName> - <lastName>Smith</lastName> - <email>john.smith@frentix.com</email> - <properties> - <property> - <name>telPrivate</name> - <value>238456782</value> - </property> - <property> - <name>telMobile</name> - <value>238456782</value> - </property> - </properties> - </user> - </users> -</users> -</code></pre></p> - <p>The catalog entry</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e119"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Not authorized</p> - <h3 id="d2e128"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The path could not be resolved to a valid catalog entry</p> - <h3 id="d2e134">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<users totalCount="0"> - <users> - <user> - <key>345</key> - <login>john</login> - <password></password> - <firstName>John</firstName> - <lastName>Smith</lastName> - <email>john.smith@frentix.com</email> - <properties> - <property> - <name>telPrivate</name> - <value>238456782</value> - </property> - <property> - <name>telMobile</name> - <value>238456782</value> - </property> - </properties> - </user> - </users> -</users> -</code></pre></p> - <p>The catalog entry</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e147"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Not authorized</p> - <h3 id="d2e163"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The path could not be resolved to a valid catalog entry</p> - <h3 id="d2e169">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<catalogEntries totalCount="0"> - <catalogEntries> - <catalogEntry> - <key>478</key> - <name>Category</name> - <description>Description of the category</description> - <type>0</type> - </catalogEntry> - </catalogEntries> -</catalogEntries> -</code></pre></p> - <p>The list of catalog entries</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e184">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e204">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<catalogEntryVO> - <key>478</key> - <name>Category</name> - <description>Description of the category</description> - <type>0</type> -</catalogEntryVO> -</code></pre></p> - <p>The catalog entry</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e217"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The path could not be resolved to a valid catalog entry</p> - <h3 id="d2e224">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e225">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e229"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The path could not be resolved to a valid catalog entry</p> - <h3 id="d2e235">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<catalogEntryVO> - <key>478</key> - <name>Category</name> - <description>Description of the category</description> - <type>0</type> -</catalogEntryVO> -</code></pre></p> - <p>The catalog entry</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e248"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Not authorized</p> - <h3 id="d2e270"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The path could not be resolved to a valid catalog entry</p> - <h3 id="d2e276">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<catalogEntryVO> - <key>478</key> - <name>Category</name> - <description>Description of the category</description> - <type>0</type> -</catalogEntryVO> -</code></pre></p> - <p>The catalog entry</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e289"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Not authorized</p> - <h3 id="d2e296">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e309"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The path could not be resolved to a valid catalog entry</p> - <h3 id="d2e315">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<catalogEntryVO> - <key>478</key> - <name>Category</name> - <description>Description of the category</description> - <type>0</type> -</catalogEntryVO> -</code></pre></p> - <p>The catalog entry</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e328"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Not authorized</p> - <h3 id="d2e336">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e337">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e341"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The path could not be resolved to a valid catalog entry</p> - <h3 id="d2e347">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<catalogEntryVO> - <key>478</key> - <name>Category</name> - <description>Description of the category</description> - <type>0</type> -</catalogEntryVO> -</code></pre></p> - <p>The catalog entry</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e360"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Not authorized</p> - <h3 id="d2e373"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The path could not be resolved to a valid catalog entry</p> - <h3 id="d2e379">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<catalogEntryVO> - <key>478</key> - <name>Category</name> - <description>Description of the category</description> - <type>0</type> -</catalogEntryVO> -</code></pre></p> - <p>The catalog entry</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e392"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Not authorized</p> - <h3 id="d2e401"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The path could not be resolved to a valid catalog entry</p> - <h3 id="d2e407">application/xml, application/json (<abbr title="{http://www.example.com} catalogEntryVO">ns3:catalogEntryVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<catalogEntryVO> - <key>478</key> - <name>Category</name> - <description>Description of the category</description> - <type>0</type> -</catalogEntryVO> -</code></pre></p> - <p>The catalog entry</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e420"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Not authorized</p> - <h3 id="d2e433"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The path could not be resolved to a valid catalog entry</p> - <h3 id="d2e439">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<users totalCount="0"> - <users> - <user> - <key>345</key> - <login>john</login> - <password></password> - <firstName>John</firstName> - <lastName>Smith</lastName> - <email>john.smith@frentix.com</email> - <properties> - <property> - <name>telPrivate</name> - <value>238456782</value> - </property> - <property> - <name>telMobile</name> - <value>238456782</value> - </property> - </properties> - </user> - </users> -</users> -</code></pre></p> - <p>The catalog entry</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e452"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Not authorized</p> - <h3 id="d2e465">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>Return the version number</p> - <h3 id="d2e478">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e487">image/jpeg<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Images for the documentation</p> - <h3 id="d2e498">image/jpeg<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Images for the documentation</p> - <h3 id="d2e508">text/html, application/xhtml+xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The copyright of the REST API.</p> - <h3 id="d2e517">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The copyright of the REST API.</p> - <h3 id="d2e527">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e528">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e530"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group cannot be found</p> - <h3 id="d2e534">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groupVO> - <key>123467</key> - <description>My group description</description> - <externalId>External Identifier</externalId> - <managedFlags>title,description</managedFlags> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> -</groupVO> -</code></pre></p> - <p>The saved business group</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e545"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e559">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groups totalCount="0"> - <groups> - <group> - <key>123467</key> - <description>My group description</description> - <externalId>External Identifier</externalId> - <managedFlags>title,description</managedFlags> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> - </group> - </groups> -</groups> -</code></pre></p> - <p>This is the list of all groups in OLAT system</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e574">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e592">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groupVO> - <key>123467</key> - <description>My group description</description> - <externalId>External Identifier</externalId> - <managedFlags>title,description</managedFlags> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> -</groupVO> -</code></pre></p> - <p>A business group in the OLAT system</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e606">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e607">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e609"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group cannot be found</p> - <h3 id="d2e613">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groupVO> - <key>123467</key> - <description>My group description</description> - <externalId>External Identifier</externalId> - <managedFlags>title,description</managedFlags> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> -</groupVO> -</code></pre></p> - <p>The saved business group</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e624"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e631"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group cannot be found</p> - <h3 id="d2e635"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group is deleted</p> - <h3 id="d2e639"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e646">*/* (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e648">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e657"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group cannot be found</p> - <h3 id="d2e661">application/xml, application/json (<abbr title="{http://www.example.com} groupInfoVO">ns3:groupInfoVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groupInfoVO folderWrite="false"> - <key>123467</key> - <description>My group description</description> - <externalId>External identifier</externalId> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> - <news>&lt;p&gt;Hello world&lt;/p&gt;</news> - <forumKey>374589</forumKey> - <hasWiki>false</hasWiki> - <hasFolder>false</hasFolder> -</groupInfoVO> -</code></pre></p> - <p>Participants of the business group</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e679"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group cannot be found</p> - <h3 id="d2e683">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<users totalCount="0"> - <users> - <user> - <key>345</key> - <login>john</login> - <password></password> - <firstName>John</firstName> - <lastName>Smith</lastName> - <email>john.smith@frentix.com</email> - <properties> - <property> - <name>telPrivate</name> - <value>238456782</value> - </property> - <property> - <name>telMobile</name> - <value>238456782</value> - </property> - </properties> - </user> - </users> -</users> -</code></pre></p> - <p>Owners of the business group</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e701"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group cannot be found</p> - <h3 id="d2e705">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<users totalCount="0"> - <users> - <user> - <key>345</key> - <login>john</login> - <password></password> - <firstName>John</firstName> - <lastName>Smith</lastName> - <email>john.smith@frentix.com</email> - <properties> - <property> - <name>telPrivate</name> - <value>238456782</value> - </property> - <property> - <name>telMobile</name> - <value>238456782</value> - </property> - </properties> - </user> - </users> -</users> -</code></pre></p> - <p>Participants of the business group</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e726"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group or the user cannot be found</p> - <h3 id="d2e730"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is added as owner of the group</p> - <h3 id="d2e734"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e741"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group or the user cannot be found</p> - <h3 id="d2e745"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is removed as owner from the group</p> - <h3 id="d2e749"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e763"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group or the user cannot be found</p> - <h3 id="d2e767"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is added as participant of the group</p> - <h3 id="d2e771"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e778"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group or the user cannot be found</p> - <h3 id="d2e782"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is remove from the group as participant</p> - <h3 id="d2e786"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e802"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The forum not found</p> - <h3 id="d2e808">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<forum name="My forum" detailsName="It is a forum" forumKey="3865487" courseKey="286" courseNodeId="2784628" subscribed="false"/> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e821"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e840"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e846">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messages totalCount="1"> - <messages> - <message> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> - </message> - </messages> -</messages> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e859"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e878"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e884">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messageVO> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> -</messageVO> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e897"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e904">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e911"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e917">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messageVO> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> -</messageVO> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e930"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e952"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e958">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messages totalCount="1"> - <messages> - <message> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> - </message> - </messages> -</messages> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e971"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e982">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e995"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e1001">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messageVO> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> -</messageVO> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1014"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1021">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1022">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1026"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e1032">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messageVO> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> -</messageVO> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1045"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1064"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e1070">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messageVO> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> -</messageVO> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1083"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1096"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The message not found</p> - <h3 id="d2e1102">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The links to the attachments</p> - <h3 id="d2e1109">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e1115"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e1121">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Ok</p> - <h3 id="d2e1128">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1129">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1133"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e1139">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Ok</p> - <h3 id="d2e1148"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e1154">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Ok</p> - <h3 id="d2e1170"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e1176">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The portrait as image</p> - <h3 id="d2e1183">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1184">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1185">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1186">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1187">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1190">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1191">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1194">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e1199">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1200">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1203">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1204">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1207">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1208">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1210">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1211">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1216">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1217">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1218">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1219">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1220">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1223">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1224">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1225">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1228">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e1233">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1234">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1235">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1238">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1239">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1240">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1243">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1244">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1246">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1247">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1250">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1251">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1254">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1255">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1259">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1264">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1265">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1272">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1273">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1288">application/xml, application/json, application/json;pagingspec=1.0 (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courses totalCount="0"> - <courses> - <course> - <key>777</key> - <softKey>internal_fx_cp</softKey> - <repoEntryKey>27684</repoEntryKey> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title,description</managedFlags> - <title>Demo course</title> - <displayName>Demo course</displayName> - </course> - </courses> -</courses> -</code></pre></p> - <p>List of visible courses</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1302">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">courseVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1303">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">courseVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1307">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseVO> - <key>777</key> - <softKey>internal_fx_cp</softKey> - <repoEntryKey>27684</repoEntryKey> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title,description</managedFlags> - <title>Demo course</title> - <displayName>Demo course</displayName> -</courseVO> -</code></pre></p> - <p>The metadatas of the created course</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1320"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1341">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseVO> - <key>777</key> - <softKey>internal_fx_cp</softKey> - <repoEntryKey>27684</repoEntryKey> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title,description</managedFlags> - <title>Demo course</title> - <displayName>Demo course</displayName> -</courseVO> -</code></pre></p> - <p>The metadatas of the created course</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1354"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1359">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1360">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1366">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e1386"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e1392"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The metadatas of the created course</p> - <h3 id="d2e1398"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1407"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e1413">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseVO> - <key>777</key> - <softKey>internal_fx_cp</softKey> - <repoEntryKey>27684</repoEntryKey> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title,description</managedFlags> - <title>Demo course</title> - <displayName>Demo course</displayName> -</courseVO> -</code></pre></p> - <p>The metadatas of the created course</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1433"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e1439">application/xml, application/json (<abbr title="{http://www.example.com} courseConfigVO">ns3:courseConfigVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseVO> - <sharedFolderSoftKey>head_1_olat_43985684395</sharedFolderSoftKey> -</courseVO> -</code></pre></p> - <p>The configuration of the course</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1452"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1459">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e1481"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e1487">application/xml, application/json (<abbr title="{http://www.example.com} courseConfigVO">ns3:courseConfigVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseVO> - <sharedFolderSoftKey>head_1_olat_43985684395</sharedFolderSoftKey> -</courseVO> -</code></pre></p> - <p>The metadatas of the created course</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1500"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1510"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e1516">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) - </h3> - <p>The array of authors</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1522"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1530">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e1547"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e1553">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course as a ZIP file</p> - <h3 id="d2e1559"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Not authorized to export the course</p> - <h3 id="d2e1569"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e1575">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The run structure of the course</p> - <h3 id="d2e1581"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1591"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e1597">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The editor tree model of the course</p> - <h3 id="d2e1603"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1616"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found or the user is not an onwer or author of the course</p> - <h3 id="d2e1622">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) - </h3> - <p>The author</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1628"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1637"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or the user not found</p> - <h3 id="d2e1643"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is an author and owner of the course</p> - <h3 id="d2e1649"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1658"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or the user not found</p> - <h3 id="d2e1664"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user was successfully removed as owner of the course</p> - <h3 id="d2e1670"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1684"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or the user not found</p> - <h3 id="d2e1690"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is a coach of the course</p> - <h3 id="d2e1696"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1706"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e1712">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) - </h3> - <p>The array of coaches</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1718"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1728"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e1734">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) - </h3> - <p>The array of participants</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1740"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1753"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or the user not found</p> - <h3 id="d2e1759"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is a participant of the course</p> - <h3 id="d2e1765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1771">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1772">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e1784"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e1790">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseVO> - <key>777</key> - <softKey>internal_fx_cp</softKey> - <repoEntryKey>27684</repoEntryKey> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title,description</managedFlags> - <title>Demo course</title> - <displayName>Demo course</displayName> -</courseVO> -</code></pre></p> - <p>The metadatas of the created course</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1803"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1813"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The context of the group not found</p> - <h3 id="d2e1817">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groups totalCount="0"> - <groups> - <group> - <key>123467</key> - <description>My group description</description> - <externalId>External Identifier</externalId> - <managedFlags>title,description</managedFlags> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> - </group> - </groups> -</groups> -</code></pre></p> - <p>The list of all learning group of the course</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1831">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1832">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1834">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groupVO> - <key>123467</key> - <description>My group description</description> - <externalId>External Identifier</externalId> - <managedFlags>title,description</managedFlags> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> -</groupVO> -</code></pre></p> - <p>The persisted group</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1845"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1856"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group cannot be found</p> - <h3 id="d2e1860">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groupVO> - <key>123467</key> - <description>My group description</description> - <externalId>External Identifier</externalId> - <managedFlags>title,description</managedFlags> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> -</groupVO> -</code></pre></p> - <p>This is the list of all groups in OLAT system</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1874"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group cannot be found</p> - <h3 id="d2e1878"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group is deleted</p> - <h3 id="d2e1882"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1889">*/* (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1891"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The business group cannot be found</p> - <h3 id="d2e1895">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groupVO> - <key>123467</key> - <description>My group description</description> - <externalId>External Identifier</externalId> - <managedFlags>title,description</managedFlags> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> -</groupVO> -</code></pre></p> - <p>The saved group</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1906"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1914">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e1936"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The forum not found</p> - <h3 id="d2e1942">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<forum name="My forum" detailsName="It is a forum" forumKey="3865487" courseKey="286" courseNodeId="2784628" subscribed="false"/> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1955"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e1974"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e1980">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messages totalCount="1"> - <messages> - <message> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> - </message> - </messages> -</messages> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e1993"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2012"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e2018">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messageVO> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> -</messageVO> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2031"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2038">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e2045"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e2051">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messageVO> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> -</messageVO> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2064"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2086"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e2092">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messages totalCount="1"> - <messages> - <message> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> - </message> - </messages> -</messages> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2105"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2116">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e2129"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e2135">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messageVO> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> -</messageVO> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2148"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2155">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2156">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2160"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e2166">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messageVO> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> -</messageVO> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2179"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2198"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e2204">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messageVO> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> -</messageVO> -</code></pre></p> - <p>The root message of the thread</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2217"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2230"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The message not found</p> - <h3 id="d2e2236">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The links to the attachments</p> - <h3 id="d2e2243">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e2249"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e2255">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Ok</p> - <h3 id="d2e2262">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2263">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2267"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e2273">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Ok</p> - <h3 id="d2e2282"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e2288">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Ok</p> - <h3 id="d2e2304"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e2310">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The portrait as image</p> - <h3 id="d2e2317">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2318">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2319">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2320">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2321">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2324">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2325">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2328">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e2333">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2334">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2337">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2338">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2341">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2342">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2344">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2345">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2350">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2351">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2352">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2353">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2354">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2357">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2358">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2359">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2362">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e2367">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2368">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2369">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2372">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2373">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2374">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2377">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2378">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2380">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2381">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2384">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2385">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2388">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2389">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2393">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2398">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2399">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2408">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2409">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2412">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2413">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2415">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2416">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2419">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2420">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2421">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2423">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2424">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2429">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2430">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2435">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2436">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2439">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2440">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2442">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2443">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2446">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2447">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2449">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2450">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2455">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2456">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2459">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2460">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2462">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2463">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2468">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2469">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e2477">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>Ping</code></pre></p> - <p>Return a small string</p> - <h3 id="d2e2492">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e2508">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>Ping</code></pre></p> - <p>Return a small string</p> - <h3 id="d2e2526">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e2543"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e2547"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The list of files</p> - <h3 id="d2e2551"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2558"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or course node not found</p> - <h3 id="d2e2562"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The file is correctly saved</p> - <h3 id="d2e2566"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course node is not acceptable to copy a file</p> - <h3 id="d2e2570"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2577"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or course node not found</p> - <h3 id="d2e2581"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The file is correctly saved</p> - <h3 id="d2e2585"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course node is not acceptable to copy a file</p> - <h3 id="d2e2589"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2598"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e2602"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The list of files</p> - <h3 id="d2e2606"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2613"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or course node not found</p> - <h3 id="d2e2617"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The file is correctly saved</p> - <h3 id="d2e2621"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course node is not acceptable to copy a file</p> - <h3 id="d2e2625"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2632"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or course node not found</p> - <h3 id="d2e2636"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The file is correctly saved</p> - <h3 id="d2e2640"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course node is not acceptable to copy a file</p> - <h3 id="d2e2644"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2655"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or the shared folder not found</p> - <h3 id="d2e2659"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The list of files</p> - <h3 id="d2e2663"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2675"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or the shared folder not found</p> - <h3 id="d2e2679"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The list of files</p> - <h3 id="d2e2683"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2698"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e2702">text/plain, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>&lt;hello&gt;Hello john&lt;/hello&gt;</code></pre></p> - <p>Say hello to the authenticated user, and give it a security token</p> - <h3 id="d2e2713"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The authentication has failed</p> - <h3 id="d2e2721">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e2739">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e2753"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e2759">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2772"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2781"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e2787">application/xml, application/json (<abbr title="{http://www.example.com} forumVOes">ns3:forumVOes</abbr>) + <h4 id="http://www.example.com#attachExternalPagePost">POST</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>parentNodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>position</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>shortTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>longTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>objectives</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>visibilityExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>url</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6420">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6421">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachExternalPage">PUT</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>parentNodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>position</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>shortTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>longTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>objectives</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>visibilityExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>url</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6433">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6434">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6435">/repo/courses/{courseId}/elements/task/{nodeId}/file</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#attachTaskFilePost">POST</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6440">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6441">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachTaskFile">PUT</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6444">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6445">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6446">/repo/courses/{courseId}/elements/task/{nodeId}/configuration<span class="optional">?enableAssignment</span><span class="optional">&taskAssignmentType</span><span class="optional">&taskAssignmentText</span><span class="optional">&enableTaskPreview</span><span class="optional">&enableTaskDeselect</span><span class="optional">&onlyOneUserPerTask</span><span class="optional">&enableDropbox</span><span class="optional">&enableDropboxConfirmationMail</span><span class="optional">&dropboxConfirmationText</span><span class="optional">&enableReturnbox</span><span class="optional">&enableScoring</span><span class="optional">&grantScoring</span><span class="optional">&scoreMin</span><span class="optional">&scoreMax</span><span class="optional">&grantPassing</span><span class="optional">&scorePassingThreshold</span><span class="optional">&enableCommentField</span><span class="optional">&commentForUser</span><span class="optional">&commentForCoaches</span><span class="optional">&enableSolution</span><span class="optional">&accessExpertRuleTask</span><span class="optional">&accessExpertRuleDropbox</span><span class="optional">&accessExpertRuleReturnbox</span><span class="optional">&accessExpertRuleScoring</span><span class="optional">&accessExpertRuleSolution</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#addTaskConfigurationPost">POST</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>enableAssignment</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>taskAssignmentType</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>taskAssignmentText</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableTaskPreview</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableTaskDeselect</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>onlyOneUserPerTask</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableDropbox</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableDropboxConfirmationMail</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>dropboxConfirmationText</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableReturnbox</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableScoring</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>grantScoring</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>scoreMin</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>scoreMax</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>grantPassing</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>scorePassingThreshold</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableCommentField</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>commentForUser</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>commentForCoaches</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableSolution</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRuleTask</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRuleDropbox</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRuleReturnbox</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRuleScoring</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRuleSolution</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6479">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6480">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#addTaskConfiguration">PUT</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>enableAssignment</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>taskAssignmentType</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>taskAssignmentText</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableTaskPreview</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableTaskDeselect</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>onlyOneUserPerTask</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableDropbox</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableDropboxConfirmationMail</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>dropboxConfirmationText</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableReturnbox</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableScoring</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>grantScoring</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>scoreMin</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>scoreMax</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>grantPassing</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>scorePassingThreshold</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#float">float</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableCommentField</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>commentForUser</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>commentForCoaches</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>enableSolution</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRuleTask</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRuleDropbox</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRuleReturnbox</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRuleScoring</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>accessExpertRuleSolution</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6511">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6512">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#getTaskConfiguration">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6515">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6516">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6517">/repo/courses/{courseId}/elements/survey/{nodeId}/configuration<span class="optional">?allowCancel</span><span class="optional">&allowNavigation</span><span class="optional">&allowSuspend</span><span class="optional">&sequencePresentation</span><span class="optional">&showNavigation</span><span class="optional">&showQuestionTitle</span><span class="optional">&showSectionsOnly</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#addSurveyConfigurationPost">POST</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>allowCancel</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>allowNavigation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>allowSuspend</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>sequencePresentation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>itemPage</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showNavigation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showQuestionTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showSectionsOnly</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6530">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6531">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#addSurveyConfiguration">PUT</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>allowCancel</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>allowNavigation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>allowSuspend</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>sequencePresentation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>itemPage</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showNavigation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showQuestionTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showSectionsOnly</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6542">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6543">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#getSurveyConfiguration">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6546">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6547">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6549">/repo/courses/{courseId}/elements/test/{nodeId}/configuration<span class="optional">?allowCancel</span><span class="optional">&allowNavigation</span><span class="optional">&allowSuspend</span><span class="optional">&numAttempts</span><span class="optional">&sequencePresentation</span><span class="optional">&showNavigation</span><span class="optional">&showQuestionTitle</span><span class="optional">&showResultsAfterFinish</span><span class="optional">&showResultsDependendOnDate</span><span class="optional">&showResultsOnHomepage</span><span class="optional">&showScoreInfo</span><span class="optional">&showQuestionProgress</span><span class="optional">&showScoreProgress</span><span class="optional">&showSectionsOnly</span><span class="optional">&summaryPresentation</span><span class="optional">&startDate</span><span class="optional">&endDate</span></h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#addTestConfigurationPost">POST</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>allowCancel</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>allowNavigation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>allowSuspend</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>numAttempts</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>sequencePresentation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>itemPage</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showNavigation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showQuestionTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showResultsAfterFinish</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showResultsDependendOnDate</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showResultsOnHomepage</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showScoreInfo</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showQuestionProgress</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showScoreProgress</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showSectionsOnly</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>summaryPresentation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>summaryCompact</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>startDate</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>endDate</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6573">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6574">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#addTestConfiguration">PUT</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>allowCancel</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>allowNavigation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>allowSuspend</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>numAttempts</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>sequencePresentation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>itemPage</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showNavigation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showQuestionTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showResultsAfterFinish</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showResultsDependendOnDate</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showResultsOnHomepage</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showScoreInfo</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showQuestionProgress</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showScoreProgress</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>true</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>showSectionsOnly</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>summaryPresentation</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>summaryCompact</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>startDate</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>endDate</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6596">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6597">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#getTestConfiguration">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6600">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6601">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6602">/repo/courses/{courseId}/elements/{nodeId}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getCourseNode">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6607">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6608">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6609">/repo/courses/infos<span class="optional">?start</span><span class="optional">&limit</span></h3> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getCourseInfoList">GET</h4> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>start</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>0</tt></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>limit</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + <p>Default: <tt>25</tt></p> + </td> + <td></td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6615">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6616">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6617">/repo/courses/infos/{courseId}</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getCourseInfo">GET</h4> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6621">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + <li><a href="#d2e6622">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6623">/repo/courses/{courseId}/elements/enrollment<span class="optional">?parentNodeId</span><span class="optional">&position</span><span class="optional">&shortTitle</span><span class="optional">&longTitle</span><span class="optional">&objectives</span><span class="optional">&visibilityExpertRules</span><span class="optional">&accessExpertRules</span><span class="optional">&groups</span><span class="optional">&cancelEnabled</span></h3> + <p>Description:<br> + This handles the enrollment building block. + + <P> + Initial Date: 10 mai 2010 <br> + </p> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The course resourceable's id</p> + </td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#attachEnrolmment">PUT</h4> + <p>This attaches an enrollment element onto a given course, the element will be + inserted underneath the supplied parentNodeId + </p> + <h6>request query parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>parentNodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The node's id which will be the parent of this structure</p> + </td> + </tr> + <tr> + <td> + <p><strong>position</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#int">int</a></em></p> + </td> + <td> + <p>The node's position relative to its sibling nodes (optional)</p> + </td> + </tr> + <tr> + <td> + <p><strong>shortTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td> + <p>The node short title</p> + </td> + </tr> + <tr> + <td> + <p><strong>longTitle</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td> + <p>The node long title</p> + </td> + </tr> + <tr> + <td> + <p><strong>objectives</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + <p>Default: <tt>undefined</tt></p> + </td> + <td> + <p>The node learning objectives</p> + </td> + </tr> + <tr> + <td> + <p><strong>visibilityExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The rules to view the node (optional)</p> + </td> + </tr> + <tr> + <td> + <p><strong>accessExpertRules</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>The rules to access the node (optional)</p> + </td> + </tr> + <tr> + <td> + <p><strong>groups</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td> + <p>A list of learning groups (list of keys)</p> + </td> + </tr> + <tr> + <td> + <p><strong>cancelEnabled</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#boolean">boolean</a></em></p> + <p>Default: <tt>false</tt></p> + </td> + <td> + <p>cancel enrollment enabled or not</p> + </td> + </tr> + </table> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6663">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6676"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6682"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + <div class="method"> + <h4 id="http://www.example.com#attachEnrollmenetPost">POST</h4> + <p>This attaches an enrollment element onto a given course, the element will be + inserted underneath the supplied parentNodeId + </p> + <p><em>acceptable request representations:</em></p> + <ul> + <li><a href="#d2e6689">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6720">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6733"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6739"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <div class="resource"> + <h3 id="d2e6742">/repo/courses/{courseId}/elements/enrollment/{nodeId}/groups</h3> + <h6>resource-wide template parameters</h6> + <table> + <tr> + <th>parameter</th> + <th>value</th> + <th>description</th> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td> + <p>The course resourceable's id</p> + </td> + </tr> + <tr> + <td> + <p><strong>courseId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#long">long</a></em></p> + </td> + <td></td> + </tr> + <tr> + <td> + <p><strong>nodeId</strong></p> + </td> + <td> + <p><em><a href="http://www.w3.org/TR/xmlschema-2/#string">string</a></em></p> + </td> + <td></td> + </tr> + </table> + <h6>Methods</h6> + <div class="methods"> + <div class="method"> + <h4 id="http://www.example.com#getGroups">GET</h4> + <p>Retrieves the groups where the enrollment happens</p> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6751">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>)</a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6764"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + <p><em>available response representations:</em></p> + <ul> + <li><a href="#d2e6770"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></a></li> + </ul> + </div> + </div> + </div> + <h2 id="representations">Representations</h2> + <h3 id="d2e5">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<forums totalCount="1"> - <forums> - <forums name="My forum" detailsName="It is a forum" forumKey="3865487" courseKey="286" courseNodeId="2784628" subscribed="false"/> - </forums> -</forums> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2800"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2820"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e2826">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e6">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2839"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2868"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e2874">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e8">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e9">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e15">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e16">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e20">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e26">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e29">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e34">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e37">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e40">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e43">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e48">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e49">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e52">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messageVO> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> -</messageVO> -</code></pre></p> - <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2887"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2916"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e2922">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e53">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<messageVO> - <key>380</key> - <authorKey>345</authorKey> - <title>A message</title> - <body>The content of the message</body> -</messageVO> -</code></pre></p> - <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2935"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2951"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e2957">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) + <h3 id="d2e55">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e56">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e59">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e64">*/* (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<forum name="My forum" detailsName="It is a forum" forumKey="3865487" courseKey="286" courseNodeId="2784628" subscribed="false"/> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e2970"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e2984"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The forum not found</p> - <h3 id="d2e2990">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) + <h3 id="d2e66">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e71">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e72">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e77">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e78">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e83">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e84">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e90">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e93">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e105">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -20158,11 +19364,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3003"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e118"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3022"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e3028">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) + <h3 id="d2e124"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The forum not found</p> + <h3 id="d2e143">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -20181,11 +19387,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3041"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e156"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3060"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e162"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author, forum or message not found</p> - <h3 id="d2e3066">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e181">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -20200,13 +19406,13 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3079"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e194"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3086">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e3093"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e200"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author, forum or message not found</p> - <h3 id="d2e3099">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e207">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e214">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -20221,11 +19427,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3112"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e227"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3134"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e233"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author, forum or message not found</p> - <h3 id="d2e3140">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) + <h3 id="d2e255">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -20244,13 +19450,13 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3153"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e268"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3164">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e274"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e285">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e3177"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e3183">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e298">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -20265,21 +19471,21 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3196"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e311"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3203">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) + <h3 id="d2e317"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e324">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3204">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) + <h3 id="d2e325">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3208"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e3214">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e329">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -20294,11 +19500,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3227"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e342"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3246"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e348"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author or message not found</p> - <h3 id="d2e3252">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e367">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -20313,763 +19519,967 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3265"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e380"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3278"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The message not found</p> - <h3 id="d2e3284">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e386"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e399">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The links to the attachments</p> - <h3 id="d2e3291">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e405"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The message not found</p> + <h3 id="d2e412">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e3297"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e3303">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e418">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Ok</p> - <h3 id="d2e3310">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e424"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e431">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3311">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e432">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3315"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e3321">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e436">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Ok</p> - <h3 id="d2e3330"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e442"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The identity or the portrait not found</p> - <h3 id="d2e3336">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e451">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Ok</p> - <h3 id="d2e3352"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e457"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The identity or the portrait not found</p> - <h3 id="d2e3358">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e473">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The portrait as image</p> - <h3 id="d2e3381">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3382">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3385">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e3406">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3407">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3412">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3413">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3425">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3426">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3429">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e479"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e490">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e491">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e496">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e497">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e498">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e499">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e500">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e503">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e504">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e507">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e3439">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3440">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3446">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e512">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e513">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e516">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e517">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e520">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e521">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e523">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e524">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e529">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e530">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e531">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e532">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e533">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e536">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e537">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e538">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e541">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e3454">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3455">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3458">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3459">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3465">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3466">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3467">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3468">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3469">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3472">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3473">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3476">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e546">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e547">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e548">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e551">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e552">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e553">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e556">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e557">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e559">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e560">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e563">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e564">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e567">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e568">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e572">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e577">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e578">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e590"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>Registration successful</p> + <h3 id="d2e594"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>Already registered, HTTP-Header location set to redirect</p> + <h3 id="d2e601">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e3481">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3482">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3485">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3486">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3489">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e606"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>Registration successful</p> + <h3 id="d2e610"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>Already registered, HTTP-Header location set to redirect</p> + <h3 id="d2e623">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">authenticationVO</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e624">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">authenticationVO</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e628">application/xml, application/json (<abbr title="{http://www.example.com} authenticationVO">ns3:authenticationVO</abbr>) </h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<authenticationVO> + <key>38759</key> + <identityKey>345</identityKey> + <provider>OLAT</provider> + <authUsername>john</authUsername> +</authenticationVO> +</code></pre></p> + <p>The saved authentication</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3490">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e641"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e647"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity not found</p> + <h3 id="d2e653"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>Cannot create the authentication for an unkown reason</p> + <h3 id="d2e659"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>Cannot create the authentication because the authentication username is already used by someone else within the same provider</p> + <h3 id="d2e666">application/xml, application/json (<abbr title="{http://www.example.com} authenticationVO">ns3:authenticationVO</abbr>) </h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<authenticationVOes> + <authenticationVO> + <key>38759</key> + <identityKey>345</identityKey> + <provider>OLAT</provider> + <authUsername>john</authUsername> + </authenticationVO> +</authenticationVOes> +</code></pre></p> + <p>The list of all users in the OLAT system</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3492">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3493">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3498">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3499">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3500">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3501">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3502">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3505">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3506">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3507">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3510">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e677"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e681"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity not found</p> + <h3 id="d2e697"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The authentication successfully deleted</p> + <h3 id="d2e703"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e709"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the authentication not found</p> + <h3 id="d2e719">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p> + <h6>Example</h6><pre><code>1.0</code></pre></p> + <p>The version of this specific Web Service</p> + <h3 id="d2e737">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e3515">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3516">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3517">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3520">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3521">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3522">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3525">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e744"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The password successfully changed</p> + <h3 id="d2e750"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e756"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The password was not changed</p> + <h3 id="d2e762"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the authentication not found</p> + <h3 id="d2e777">application/xml, application/json (<abbr title="{http://www.example.com} folderVOes">ns3:folderVOes</abbr>) </h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<folders totalCount="1"> + <folders> + <folder name="Course folder" courseKey="375397" courseNodeId="438950850389" subscribed="true" write="false" read="false" list="false" delete="false"/> + </folders> +</folders> +</code></pre></p> + <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3526">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e790"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e796"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e830">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) </h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<courseNodeVO> + <id>id</id> +</courseNodeVO> +</code></pre></p> + <p>The folder node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3528">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3529">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3532">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3533">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3536">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3537">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3541">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3546">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3547">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3559">application/xml, application/json (<abbr title="{http://www.example.com} environmentVO">ns3:environmentVO</abbr>) + <h3 id="d2e843"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e849"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e856">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e884">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<environmentVO arch="x86_64" osName="Mac OS X" osVersion="10.7.2" availableProcessors="4" runtimeName="15261@agam.local" vmName="Java HotSpot(TM) 64-Bit Server VM" vmVendor="Apple Inc." vmVersion="20.4-b02-402"/> +<courseNodeVO> + <id>id</id> +</courseNodeVO> </code></pre></p> - <p>A short summary of the number of classes</p> + <p>The folder node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3572"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e897"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3582">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>) + <h3 id="d2e903"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e917">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e939">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<versionVO buildVersion="" olatVersion="" repoRevision=""/> +<courseNodeVO> + <id>id</id> +</courseNodeVO> </code></pre></p> - <p>The verison of the instance</p> + <p>The folder node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3595"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e952"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3606">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The status of the notifications job</p> - <h3 id="d2e3612"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e958"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e967">application/xml, application/json (<abbr title="{http://www.example.com} folderVO">ns3:folderVO</abbr>) + </h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<folder name="Course folder" courseKey="375397" courseNodeId="438950850389" subscribed="true" write="false" read="false" list="false" delete="false"/> +</code></pre></p> + <p>The course node metadatas</p> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e980"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3619">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e986"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e994">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e995">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e996">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e997">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e998">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1001">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1002">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1005">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e1010">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1011">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1014">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1015">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1018">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e1019">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e1021">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1022">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1027">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1028">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1029">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1030">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1031">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1034">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1035">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1036">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1039">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e3624"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The status has changed</p> - <h3 id="d2e3630"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1044">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1045">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1046">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1049">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1050">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1051">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1054">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e1055">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e1057">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1058">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1061">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1062">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1065">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1066">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1070">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1075">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1076">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1089">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) + </h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<forum name="My forum" detailsName="It is a forum" forumKey="3865487" courseKey="286" courseNodeId="2784628" subscribed="false"/> +</code></pre></p> + <p>The forums</p> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e1102"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3639">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The status of the notifications job</p> - <h3 id="d2e3645"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1115">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) + </h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<forum name="My forum" detailsName="It is a forum" forumKey="3865487" courseKey="286" courseNodeId="2784628" subscribed="false"/> +</code></pre></p> + <p>The root message of the thread</p> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e1128"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3653">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3654">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3660">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1134"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The forum not found</p> + <h3 id="d2e1153">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) + </h3> <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e3674">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3675">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e3684">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>) + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<messages totalCount="1"> + <messages> + <message> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> + </message> + </messages> +</messages> +</code></pre></p> + <p>The root message of the thread</p> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e1166"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e1172"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e1191">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + </h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<messageVO> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> +</messageVO> +</code></pre></p> + <p>The root message of the thread</p> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e1204"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e1210"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e1217">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e1224">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<monitoringInfosVO> - <type>openolat</type> - <description>this is an OpenOLAT instance</description> - <probes> - <probe>Environment</probe> - <probe>System</probe> - <probe>Runtime</probe> - <probe>Memory</probe> - </probes> - <dependencies> - <dependency type="openfire" url="localhost"/> - <dependency type="mysql" url="192.168.1.120"/> - </dependencies> -</monitoringInfosVO> +<messageVO> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> +</messageVO> </code></pre></p> - <p>The verison of the instance</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3697"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1237"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3707">application/xml, application/json (<abbr title="{http://www.example.com} runtimeVO">ns3:runtimeVO</abbr>) + <h3 id="d2e1243"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e1265">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<runtimeVO systemLoadAverage="1.16748046875" startTime="2015-07-15T13:18:08.591+02:00" upTime="21248"> - <classes loadedClassCount="7000" unloadedClassCount="1500" totalLoadedClassCount="8500"/> - <threads threadCount="102" daemonCount="45" peakThreadCount="123"/> - <memory usedMemory="12" freeMemory="45" totalMemory="56" initHeap="0" usedHeap="0" committedHeap="0" maxHeap="0" initNonHeap="0" usedNonHeap="0" committedNonHeap="0" maxNonHeap="0" garbageCollectionTime="0" garbageCollectionCount="0"/> -</runtimeVO> +<messages totalCount="1"> + <messages> + <message> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> + </message> + </messages> +</messages> </code></pre></p> - <p>The version of the instance</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3720"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1278"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3730">application/xml, application/json (<abbr title="{http://www.example.com} classesVO">ns3:classesVO</abbr>) + <h3 id="d2e1284"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e1295">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e1308">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<classeStatisticsVO loadedClassCount="7000" unloadedClassCount="1500" totalLoadedClassCount="8500"/> +<messageVO> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> +</messageVO> </code></pre></p> - <p>A short summary of the number of classes</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3743"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1321"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3753">application/xml, application/json (<abbr title="{http://www.example.com} runtimeVO">ns3:runtimeVO</abbr>) + <h3 id="d2e1327"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e1334">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<memoryStatisticsVO usedMemory="12" freeMemory="45" totalMemory="56" initHeap="0" usedHeap="0" committedHeap="0" maxHeap="0" initNonHeap="0" usedNonHeap="0" committedNonHeap="0" maxNonHeap="0" garbageCollectionTime="0" garbageCollectionCount="0"/> -</code></pre></p> - <p>The version of the instance</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3766"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3776">application/xml, application/json (<abbr title="{http://www.example.com} runtimeVO">ns3:runtimeVO</abbr>) + <h3 id="d2e1335">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<threadStatisticsVO threadCount="102" daemonCount="45" peakThreadCount="123"/> -</code></pre></p> - <p>The version of the instance</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3789"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3799">application/xml, application/json (<abbr title="{http://www.example.com} runtimeVO">ns3:runtimeVO</abbr>) + <h3 id="d2e1339">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<databaseVO> - <connectionInfos activeConnectionCount="10" currentConnectionCount="25"/> - <hibernateStatistics openSessionsCount="12" transactionsCount="13900" successfulTransactionCount="13980" failedTransactionsCount="2" optimisticFailureCount="23" queryExecutionMaxTime="12000" queryExecutionMaxTimeQueryString="select * from PLock" queryExecutionCount="1237"/> -</databaseVO> +<messageVO> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> +</messageVO> </code></pre></p> - <p>The version of the instance</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3812"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1352"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3822">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>) + <h3 id="d2e1358"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e1377">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<openolatStatisticsVO/> +<messageVO> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> +</messageVO> </code></pre></p> - <p>The verison of the instance</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3835"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1390"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3845">application/xml, application/json (<abbr title="{http://www.example.com} taskVOes">ns3:taskVOes</abbr>) + <h3 id="d2e1396"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e1409">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The links to the attachments</p> + <h3 id="d2e1415"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The message not found</p> + <h3 id="d2e1422">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e1428">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>Ok</p> + <h3 id="d2e1434"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e1441">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<sessionsVO count="234" authenticatedCount="234" secureAuthenticatedCount="234" webdavCount="23" secureWebdavCount="12" restCount="0" secureRestCount="0" instantMessagingCount="123" authenticatedClickCountLastMinute="0" authenticatedPollCountLastMinute="0" authenticatedClickCountLastFiveMinutes="0" requestLastMinute="0" requestLastFiveMinutes="0" authenticatedPollCountLastFiveMinutes="0" concurrentDispatchThreads="0"/> -</code></pre></p> - <p>A short summary about sessions</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3858"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3868">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>) + <h3 id="d2e1442">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<userStatisticsVO totalUserCount="0" activeUserCount="0" activeUserCountLastDay="0" activeUserCountLastWeek="0" activeUserCountLastMonth="0" activeUserCountLast6Month="0" externalUserCount="0" blockedUserCount="0" deletedUserCount="0" totalGroupCount="0"/> -</code></pre></p> - <p>The verison of the instance</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3881"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3891">application/xml, application/json (<abbr title="{http://www.example.com} sessionVO">ns3:sessionVO</abbr>) + <h3 id="d2e1446">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>Ok</p> + <h3 id="d2e1452"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e1461">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>Ok</p> + <h3 id="d2e1467"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e1483">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The portrait as image</p> + <h3 id="d2e1489"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e1503">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<sessionsVO count="234" authenticatedCount="234" secureAuthenticatedCount="234" webdavCount="23" secureWebdavCount="12" restCount="0" secureRestCount="0" instantMessagingCount="123" authenticatedClickCountLastMinute="0" authenticatedPollCountLastMinute="0" authenticatedClickCountLastFiveMinutes="0" requestLastMinute="0" requestLastFiveMinutes="0" authenticatedPollCountLastFiveMinutes="0" concurrentDispatchThreads="0"/> +<forum name="My forum" detailsName="It is a forum" forumKey="3865487" courseKey="286" courseNodeId="2784628" subscribed="false"/> </code></pre></p> - <p>A short summary about sessions</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3904"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1516"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3914">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>) + <h3 id="d2e1522"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The forum not found</p> + <h3 id="d2e1541">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<repositoryStatisticsVO coursesCount="0" publishedCoursesCount="0"/> +<messages totalCount="1"> + <messages> + <message> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> + </message> + </messages> +</messages> </code></pre></p> - <p>The verison of the instance</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3927"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1554"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3937">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>) + <h3 id="d2e1560"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e1579">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<indexerStatisticsVO indexedDocumentCount="0" excludedDocumentCount="0" documentQueueSize="0" runningFolderIndexerCount="0" availableFolderIndexerCount="0" indexSize="0" indexingTime="0"/> +<messageVO> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> +</messageVO> </code></pre></p> - <p>Statistics about the indexer</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e3950"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1592"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3960">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The status of the indexer</p> - <h3 id="d2e3966"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3973">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1598"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e1605">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e3978"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The status has changed</p> - <h3 id="d2e3984"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e3993">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The status of the indexer</p> - <h3 id="d2e3999"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4011">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Informations about memory</p> - <h3 id="d2e4017"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4026">application/xml, application/json (<abbr title="{http://www.example.com} memoryVO">ns3:memoryVO</abbr>) + <h3 id="d2e1612">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<memoryVO date="2015-07-15T13:18:08.591+02:00" totalMem="230" totalUsed="546" maxAvailable="2000"/> +<messageVO> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> +</messageVO> </code></pre></p> - <p>A short summary of the number of classes</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4039"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1625"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4045">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4048">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4049">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4057">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4058">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4064">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4067">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4068">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4072">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4073">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4081">application/xml, application/json (<abbr title="{http://www.example.com} releaseVO">ns3:releaseVO</abbr>) + <h3 id="d2e1631"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e1653">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<indexerStatisticsVO indexedDocumentCount="0" excludedDocumentCount="0" documentQueueSize="0" runningFolderIndexerCount="0" availableFolderIndexerCount="0" indexSize="0" indexingTime="0"/> +<messages totalCount="1"> + <messages> + <message> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> + </message> + </messages> +</messages> </code></pre></p> - <p>Statistics about the indexer</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4094"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4104">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The status of the indexer</p> - <h3 id="d2e4110"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1666"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4117">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1672"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e1683">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e4122"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The status has changed</p> - <h3 id="d2e4128"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4137">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The status of the indexer</p> - <h3 id="d2e4143"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4153">text/plain, text/html, application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>) + <h3 id="d2e1696">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<repositoryEntries totalCount="1"> - <repositoryEntries> - <repositoryEntrie> - <key>479286</key> - <softkey>internal_cp</softkey> - <resourcename>fdhasl</resourcename> - <displayname>CP-demo</displayname> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title.description</managedFlags> - <resourceableId>4368567</resourceableId> - <resourceableTypeName>CourseModule</resourceableTypeName> - </repositoryEntrie> - </repositoryEntries> -</repositoryEntries> +<messageVO> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> +</messageVO> </code></pre></p> - <p>List all entries in the repository</p> + <p>The root message of the thread</p> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e1709"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e1715"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e1722">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) + </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4167">application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>) + <h3 id="d2e1723">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<repositoryEntryVO> - <key>479286</key> - <softkey>internal_cp</softkey> - <resourcename>fdhasl</resourcename> - <displayname>CP-demo</displayname> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title.description</managedFlags> - <resourceableId>4368567</resourceableId> - <resourceableTypeName>CourseModule</resourceableTypeName> -</repositoryEntryVO> -</code></pre></p> - <p>Import the resource and return the repository entry</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4178"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4204">text/plain, text/html, application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>) + <h3 id="d2e1727">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<repositoryEntries totalCount="1"> - <repositoryEntries> - <repositoryEntrie> - <key>479286</key> - <softkey>internal_cp</softkey> - <resourcename>fdhasl</resourcename> - <displayname>CP-demo</displayname> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title.description</managedFlags> - <resourceableId>4368567</resourceableId> - <resourceableTypeName>CourseModule</resourceableTypeName> - </repositoryEntrie> - </repositoryEntries> -</repositoryEntries> +<messageVO> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> +</messageVO> </code></pre></p> - <p>List all entries in the repository</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4232">application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>) + <h3 id="d2e1740"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e1746"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e1765">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<repositoryEntryVO> - <key>479286</key> - <softkey>internal_cp</softkey> - <resourcename>fdhasl</resourcename> - <displayname>CP-demo</displayname> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title.description</managedFlags> - <resourceableId>4368567</resourceableId> - <resourceableTypeName>CourseModule</resourceableTypeName> -</repositoryEntryVO> +<messageVO> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> +</messageVO> </code></pre></p> - <p>Search for repository entries</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4243"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1778"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4251">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4264"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e4270"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The metadatas of the created course</p> - <h3 id="d2e4276"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4281">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">repositoryEntryVO</abbr>) + <h3 id="d2e1784"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e1797">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The links to the attachments</p> + <h3 id="d2e1803"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The message not found</p> + <h3 id="d2e1810">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e1816">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>Ok</p> + <h3 id="d2e1822"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e1829">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4282">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">repositoryEntryVO</abbr>) + <h3 id="d2e1830">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4284">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4285">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e4290">application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>) + <h3 id="d2e1834">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>Ok</p> + <h3 id="d2e1840"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e1849">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>Ok</p> + <h3 id="d2e1855"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e1871">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The portrait as image</p> + <h3 id="d2e1877"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e1890">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1891">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1894">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1895">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1898">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1899">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1908">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1909">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1913">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1918">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1919">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1922">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1923">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1926">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">repositoryEntryVO</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e1927">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">repositoryEntryVO</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e1929">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1930">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1933">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1934">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1940">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1943">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1948">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1949">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1952">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1953">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1955">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1961">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1964">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1969">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1970">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1972">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1975">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1976">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1981">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1982">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1987">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e1990">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1991">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e1998">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2001">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2006">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2007">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2009">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2012">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2013">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2018">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2026">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2039">application/pdf<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2046">application/pdf<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The certificate as file</p> + <h3 id="d2e2052"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e2058"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The owner or the certificate cannot be found</p> + <h3 id="d2e2063">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2080"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>If the certificate was created</p> + <h3 id="d2e2086"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e2092"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>An unexpected error happened during the creation of the certificate</p> + <h3 id="d2e2098"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the resource cannot be found</p> + <h3 id="d2e2107"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>if the certificate was uploaded</p> + <h3 id="d2e2113"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e2119"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the resource cannot be found</p> + <h3 id="d2e2176">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<repositoryEntryVO> - <key>479286</key> - <softkey>internal_cp</softkey> - <resourcename>fdhasl</resourcename> - <displayname>CP-demo</displayname> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title.description</managedFlags> - <resourceableId>4368567</resourceableId> - <resourceableTypeName>CourseModule</resourceableTypeName> -</repositoryEntryVO> +<courseNodeVO> + <id>id</id> +</courseNodeVO> </code></pre></p> - <p>Replace the resource and return the updated repository entry</p> + <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4301"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2189"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4308"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The repository entry not found</p> - <h3 id="d2e4312">application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>) + <h3 id="d2e2195"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e2202">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e2225">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<repositoryEntryVO> - <key>479286</key> - <softkey>internal_cp</softkey> - <resourcename>fdhasl</resourcename> - <displayname>CP-demo</displayname> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title.description</managedFlags> - <resourceableId>4368567</resourceableId> - <resourceableTypeName>CourseModule</resourceableTypeName> -</repositoryEntryVO> +<courseNodeVO> + <id>id</id> +</courseNodeVO> </code></pre></p> - <p>Get the repository resource</p> + <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4328"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The resource is locked</p> - <h3 id="d2e4332"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The resource could not found</p> - <h3 id="d2e4336">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<repositoryEntryVO> - <key>479286</key> - <softkey>internal_cp</softkey> - <resourcename>fdhasl</resourcename> - <displayname>CP-demo</displayname> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title.description</managedFlags> - <resourceableId>4368567</resourceableId> - <resourceableTypeName>CourseModule</resourceableTypeName> -</repositoryEntryVO> -</code></pre></p> - <p>Download the repository entry as export zip file</p> - <h3 id="d2e4347"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Download of this resource is not possible</p> - <h3 id="d2e4351"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4365"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The repository entry or the user cannot be found</p> - <h3 id="d2e4369"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is added as coach of the repository entry</p> - <h3 id="d2e4373"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2238"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4380"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The repository entry or the user cannot be found</p> - <h3 id="d2e4384"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is removed as coach from the repository entry</p> - <h3 id="d2e4388"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4399"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The repository entry cannot be found</p> - <h3 id="d2e4403">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) + <h3 id="d2e2244"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e2260">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The portrait as image</p> + <h3 id="d2e2266"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e2279">application/xml, application/json (<abbr title="{http://www.example.com} forumVOes">ns3:forumVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<users totalCount="0"> - <users> - <user> - <key>345</key> - <login>john</login> - <password></password> - <firstName>John</firstName> - <lastName>Smith</lastName> - <email>john.smith@frentix.com</email> - <properties> - <property> - <name>telPrivate</name> - <value>238456782</value> - </property> - <property> - <name>telMobile</name> - <value>238456782</value> - </property> - </properties> - </user> - </users> -</users> +<forums totalCount="1"> + <forums> + <forums name="My forum" detailsName="It is a forum" forumKey="3865487" courseKey="286" courseNodeId="2784628" subscribed="false"/> + </forums> +</forums> </code></pre></p> - <p>Coaches of the repository entry</p> + <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4421"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The repository entry cannot be found</p> - <h3 id="d2e4425">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<users totalCount="0"> - <users> - <user> - <key>345</key> - <login>john</login> - <password></password> - <firstName>John</firstName> - <lastName>Smith</lastName> - <email>john.smith@frentix.com</email> - <properties> - <property> - <name>telPrivate</name> - <value>238456782</value> - </property> - <property> - <name>telMobile</name> - <value>238456782</value> - </property> - </properties> - </user> - </users> -</users> + <h3 id="d2e2292"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e2298"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e2305">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e2319">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + </h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<courseNodeVO> + <id>id</id> +</courseNodeVO> </code></pre></p> - <p>Coaches of the repository entry</p> + <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4446"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The repository entry or the user cannot be found</p> - <h3 id="d2e4450"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is added as participant of the repository entry</p> - <h3 id="d2e4454"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4461"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The repository entry or the user cannot be found</p> - <h3 id="d2e4465"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is removed as participant from the repository entry</p> - <h3 id="d2e4469"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2332"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4481"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The repository entry cannot be found</p> - <h3 id="d2e4485">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) + <h3 id="d2e2338"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e2358">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<users totalCount="0"> - <users> - <user> - <key>345</key> - <login>john</login> - <password></password> - <firstName>John</firstName> - <lastName>Smith</lastName> - <email>john.smith@frentix.com</email> - <properties> - <property> - <name>telPrivate</name> - <value>238456782</value> - </property> - <property> - <name>telMobile</name> - <value>238456782</value> - </property> - </properties> - </user> - </users> -</users> +<courseNodeVO> + <id>id</id> +</courseNodeVO> </code></pre></p> - <p>Owners of the repository entry</p> + <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4506"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The repository entry or the user cannot be found</p> - <h3 id="d2e4510"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is added as owner of the repository entry</p> - <h3 id="d2e4514"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4521"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The repository entry or the user cannot be found</p> - <h3 id="d2e4525"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is removed as owner from the repository entry</p> - <h3 id="d2e4529"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2371"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4542">application/xml, application/json, application/json;pagingspec=1.0 (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) + <h3 id="d2e2377"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e2393">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseInfoVOes totalCount="1"> - <infos> - <infos> - <key>777</key> - <softKey>oo_98237498</softKey> - <repoEntryKey>456</repoEntryKey> - <title>Demo course</title> - <displayName>Demo course</displayName> - </infos> - </infos> -</courseInfoVOes> +<forum name="My forum" detailsName="It is a forum" forumKey="3865487" courseKey="286" courseNodeId="2784628" subscribed="false"/> </code></pre></p> - <p>List of visible courses</p> + <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4560">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) + <h3 id="d2e2406"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e2412"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e2441">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseVO> - <key>777</key> - <softKey>oo_98237498</softKey> - <repoEntryKey>456</repoEntryKey> - <title>Demo course</title> - <displayName>Demo course</displayName> -</courseVO> +<messageVO> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> +</messageVO> </code></pre></p> - <p>Course informations</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4582"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The list of contacts</p> - <h3 id="d2e4597">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) + <h3 id="d2e2454"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e2460"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e2489">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<forum name="My forum" detailsName="It is a forum" forumKey="3865487" courseKey="286" courseNodeId="2784628" subscribed="false"/> +<messageVO> + <key>380</key> + <authorKey>345</authorKey> + <title>A message</title> + <body>The content of the message</body> +</messageVO> </code></pre></p> - <p>The forums</p> + <p>The root message of the thread</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4610"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2502"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4623"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The forum not found</p> - <h3 id="d2e4629">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) + <h3 id="d2e2508"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e2522">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21079,11 +20489,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4642"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2535"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4661"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e4667">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) + <h3 id="d2e2541"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The forum not found</p> + <h3 id="d2e2560">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21102,11 +20512,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4680"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2573"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4699"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2579"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author, forum or message not found</p> - <h3 id="d2e4705">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e2598">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21121,13 +20531,13 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4718"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2611"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4725">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e4732"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2617"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author, forum or message not found</p> - <h3 id="d2e4738">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e2624">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e2631">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21142,11 +20552,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4751"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2644"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4773"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2650"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author, forum or message not found</p> - <h3 id="d2e4779">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) + <h3 id="d2e2672">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21165,13 +20575,13 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4792"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2685"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4803">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2691"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e2702">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e4816"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e4822">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e2715">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21186,21 +20596,21 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4835"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2728"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4842">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) + <h3 id="d2e2734"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e2741">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4843">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) + <h3 id="d2e2742">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4847"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e4853">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e2746">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21215,11 +20625,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4866"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2759"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4885"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author or message not found</p> - <h3 id="d2e4891">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e2784">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21234,43 +20644,208 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4904"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2797"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e4917"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The message not found</p> - <h3 id="d2e4923">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2803"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e2816">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The links to the attachments</p> - <h3 id="d2e4930">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2822"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The message not found</p> + <h3 id="d2e2829">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e4936"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e4942">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2835">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Ok</p> - <h3 id="d2e4949">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e2841"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e2848">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4950">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e2849">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e4954"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e4960">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2853">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Ok</p> - <h3 id="d2e4969"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2859"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The identity or the portrait not found</p> - <h3 id="d2e4975">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2868">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Ok</p> - <h3 id="d2e4991"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2874"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The identity or the portrait not found</p> - <h3 id="d2e4997">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e2890">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The portrait as image</p> - <h3 id="d2e5011"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The forum not found</p> - <h3 id="d2e5017">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) + <h3 id="d2e2896"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e2917">application/xml, application/json (<abbr title="{http://www.example.com} keyValuePair">ns3:keyValuePair</abbr>) + </h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<keyValuePair> + <key>Prefered color</key> + <value>Green</value> +</keyValuePair> +</code></pre></p> + <p>The value in the course</p> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e2928"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The entry cannot be found</p> + <h3 id="d2e2939"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The value is saved in the course</p> + <h3 id="d2e2946">text/plain, text/html (<abbr title="{http://www.example.com} keyValuePair">ns3:keyValuePair</abbr>) + </h3> + <p> + <h6>Example</h6><pre><code>Green</code></pre></p> + <p>A value of the course</p> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e2957"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The entry cannot be found</p> + <h3 id="d2e2964">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e2969"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The value is saved in the course</p> + <h3 id="d2e2976"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>the key value pair is remove from the db</p> + <h3 id="d2e2980"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e2984"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The entry cannot be found</p> + <h3 id="d2e2998">application/xml, application/json (<abbr title="{http://www.example.com} keyValuePair">ns3:keyValuePair</abbr>) + </h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<keyValuePairVOes> + <keyValuePairVO> + <key>Prefered color</key> + <value>Green</value> + </keyValuePairVO> +</keyValuePairVOes> +</code></pre></p> + <p>All the values in the course</p> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e3012">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">keyValuePair</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e3013">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">keyValuePair</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e3015"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>the key value pair is saved on the db</p> + <h3 id="d2e3022">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">keyValuePair</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e3023">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">keyValuePair</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e3025"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>the key value pair is saved on the db</p> + <h3 id="d2e3033">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p> + <h6>Example</h6><pre><code>1.0</code></pre></p> + <p>The version of this specific Web Service</p> + <h3 id="d2e3057"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>the key value pair is remove from the db</p> + <h3 id="d2e3061"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e3065"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The entry cannot be found</p> + <h3 id="d2e3075">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3076">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3087">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3088">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3092">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3096">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3101">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3106">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3107">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3111">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3112">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3116">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3117">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3121">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3126">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3127">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3132">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3133">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3137">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3138">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3142">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3143">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3147">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3148">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3152">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3153">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3157">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3158">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3162">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3163">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3167">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3168">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3172">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3173">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3177">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3178">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3182">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3183">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3187">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3188">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3192">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3193">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3197">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3198">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3201">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e3204">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3207">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3211">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3214">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3215">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3219">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3222">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3223">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3231">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3232">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3236">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3239">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3240">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3244">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3245">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3249">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3250">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3254">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3255">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3258">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e3261">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3264">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3269">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3270">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3273">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e3276">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3279">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3288">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p> + <h6>Example</h6><pre><code>1.0</code></pre></p> + <p>The version of this specific Web Service</p> + <h3 id="d2e3310">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21280,11 +20855,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5030"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3323"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5049"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e5055">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) + <h3 id="d2e3329"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The forum not found</p> + <h3 id="d2e3348">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21303,11 +20878,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5068"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3361"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5087"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3367"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author, forum or message not found</p> - <h3 id="d2e5093">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e3386">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21322,13 +20897,13 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5106"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3399"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5113">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e5120"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3405"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author, forum or message not found</p> - <h3 id="d2e5126">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e3412">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e3419">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21343,11 +20918,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5139"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3432"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5161"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3438"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author, forum or message not found</p> - <h3 id="d2e5167">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) + <h3 id="d2e3460">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21366,13 +20941,13 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5180"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3473"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5191">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3479"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e3490">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e5204"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e5210">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e3503">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21387,21 +20962,21 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5223"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3516"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5230">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) + <h3 id="d2e3522"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e3529">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5231">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) + <h3 id="d2e3530">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5235"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e5241">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e3534">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21416,11 +20991,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5254"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3547"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5273"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3553"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author or message not found</p> - <h3 id="d2e5279">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e3572">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21435,75 +21010,136 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5292"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3585"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5305"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The message not found</p> - <h3 id="d2e5311">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3591"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e3604">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The links to the attachments</p> - <h3 id="d2e5318">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3610"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The message not found</p> + <h3 id="d2e3617">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e5324"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e5330">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3623">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Ok</p> - <h3 id="d2e5337">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e3629"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e3636">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5338">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e3637">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5342"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e5348">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3641">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Ok</p> - <h3 id="d2e5357"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3647"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The identity or the portrait not found</p> - <h3 id="d2e5363">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3656">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Ok</p> - <h3 id="d2e5379"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3662"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The identity or the portrait not found</p> - <h3 id="d2e5385">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3678">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The portrait as image</p> - <h3 id="d2e5395">text/plain, text/html, application/xml, application/json (<abbr title="{http://www.example.com} repositoryEntryVO">ns3:repositoryEntryVO</abbr>) + <h3 id="d2e3684"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e3690">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3691">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3699">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3700">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3706">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3709">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3712">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3716">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3721">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3722">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3730">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3731">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3734">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e3735">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e3737">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3738">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3741">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e3746">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3747">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3751">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e3752">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">catalogEntryVO</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e3754">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3755">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3762">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3763">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3766">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3767">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3772">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3773">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3778">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3779">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3783">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3789">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3790">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3796">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3797">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3800">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">assessableResultsVO</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e3801">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">assessableResultsVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<repositoryEntries totalCount="1"> - <repositoryEntries> - <repositoryEntrie> - <key>479286</key> - <softkey>internal_cp</softkey> - <resourcename>fdhasl</resourcename> - <displayname>CP-demo</displayname> - <externalId>External identifier</externalId> - <externalRef>External reference</externalRef> - <managedFlags>title.description</managedFlags> - <resourceableId>4368567</resourceableId> - <resourceableTypeName>CourseModule</resourceableTypeName> - </repositoryEntrie> - </repositoryEntries> -</repositoryEntries> -</code></pre></p> - <p>List all entries in the repository</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5412">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>) + <h3 id="d2e3803">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3810">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3811">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3816">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3822">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3823">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3824">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3825">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3830">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3836">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3837">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3838">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3839">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3842">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3845">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3850">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3853">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3856">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3869"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The list of contacts</p> + <h3 id="d2e3879">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5413">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>) + <h3 id="d2e3880">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5417">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3884">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <userVO> @@ -21526,7 +21162,9 @@ </userVO> </code></pre></p> <p>The persisted user</p> - <h3 id="d2e5430">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3897"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e3903">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <errorVOes> @@ -21537,9 +21175,7 @@ </errorVOes> </code></pre></p> <p>The list of errors</p> - <h3 id="d2e5443"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5457">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) + <h3 id="d2e3924">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21570,27 +21206,19 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5470"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5483"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e5489"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The user is removed from the group</p> - <h3 id="d2e5495"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3937"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5502">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>) + <h3 id="d2e3948">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5503">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>) + <h3 id="d2e3949">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">userVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5507"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e5513">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) + <h3 id="d2e3953">application/xml, application/json (<abbr title="{http://www.example.com} userVO">ns3:userVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21617,7 +21245,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5526">application/xml, application/json (<abbr title="{http://www.example.com} errorVO">ns3:errorVO</abbr>) + <h3 id="d2e3966"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e3972"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity not found</p> + <h3 id="d2e3978">application/xml, application/json (<abbr title="{http://www.example.com} errorVO">ns3:errorVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21632,11 +21264,13 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5539"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e3994"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The user is removed from the group</p> + <h3 id="d2e4000"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5552"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4006"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The identity not found</p> - <h3 id="d2e5558">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4019">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <userVO> @@ -21659,23 +21293,33 @@ </userVO> </code></pre></p> <p>The user</p> - <h3 id="d2e5571"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4032"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5577">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5578">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5587">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">rolesVO</abbr>) + <h3 id="d2e4038"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity not found</p> + <h3 id="d2e4051">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<statusVO> + <status>2</status> +</statusVO> +</code></pre></p> + <p>The user</p> + <h3 id="d2e4064"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e4070"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity not found</p> + <h3 id="d2e4077">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">statusVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5588">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">rolesVO</abbr>) + <h3 id="d2e4078">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">statusVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5592"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e5598">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4082">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <rolesVO> @@ -21690,11 +21334,11 @@ </rolesVO> </code></pre></p> <p>The user</p> - <h3 id="d2e5611"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4095"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5620"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4101"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The identity not found</p> - <h3 id="d2e5626">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4114">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <rolesVO> @@ -21709,21 +21353,21 @@ </rolesVO> </code></pre></p> <p>The user</p> - <h3 id="d2e5639"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4127"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5650">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">statusVO</abbr>) + <h3 id="d2e4133"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity not found</p> + <h3 id="d2e4140">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">rolesVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5651">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">statusVO</abbr>) + <h3 id="d2e4141">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">rolesVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5655"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e5661">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4145">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <rolesVO> @@ -21738,23 +21382,17 @@ </rolesVO> </code></pre></p> <p>The user</p> - <h3 id="d2e5674"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4158"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5683"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4164"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The identity not found</p> - <h3 id="d2e5689">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4174">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<statusVO> - <status>2</status> -</statusVO> -</code></pre></p> - <p>The user</p> - <h3 id="d2e5702"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5715"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e5721">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h6>Example</h6><pre><code>1.0</code></pre></p> + <p>The version of this specific Web Service</p> + <h3 id="d2e4187">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4188">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4199">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <preferencesVO> @@ -21762,21 +21400,21 @@ </preferencesVO> </code></pre></p> <p>The preferences</p> - <h3 id="d2e5734"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4212"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5741">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">preferencesVO</abbr>) + <h3 id="d2e4218"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity not found</p> + <h3 id="d2e4225">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">preferencesVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5742">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">preferencesVO</abbr>) + <h3 id="d2e4226">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">preferencesVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5746"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e5752">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4230">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <preferencesVO> @@ -21784,27 +21422,33 @@ </preferencesVO> </code></pre></p> <p>The user</p> - <h3 id="d2e5765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4243"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5778"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e5784">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4249"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity not found</p> + <h3 id="d2e4262">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The portrait as image</p> - <h3 id="d2e5793"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4268"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The identity or the portrait not found</p> - <h3 id="d2e5799">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4277">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The portrait as image</p> - <h3 id="d2e5805"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4283"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Not authorized</p> - <h3 id="d2e5814"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4289"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e4298"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The portrait deleted</p> - <h3 id="d2e5820"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4304"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Not authorized</p> - <h3 id="d2e5830">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e5850">application/xml, application/json (<abbr title="{http://www.example.com} folderVOes">ns3:folderVOes</abbr>) + <h3 id="d2e4313">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The portrait as image</p> + <h3 id="d2e4319"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e4331">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The portrait as image</p> + <h3 id="d2e4337"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e4351">application/xml, application/json (<abbr title="{http://www.example.com} folderVOes">ns3:folderVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -21818,189 +21462,189 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5863"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4364"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e5871">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5872">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5873">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5874">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5875">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5878">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5879">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5882">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4370">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4371">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4372">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4373">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4374">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4377">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4378">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4381">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e5887">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5888">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5891">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5892">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5895">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e4386">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4387">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4390">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4391">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4394">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5896">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e4395">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5898">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5899">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5904">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5905">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5906">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5907">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5908">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5911">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5912">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5913">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5916">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4397">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4398">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4403">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4404">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4405">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4406">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4407">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4410">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4411">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4412">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4415">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e5921">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5922">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5923">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5926">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5927">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5928">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5931">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e4420">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4421">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4422">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4425">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4426">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4427">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4430">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5932">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e4431">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5934">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5935">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5938">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5939">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5942">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5943">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5947">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5952">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5953">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5958">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5959">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5960">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5961">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5962">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5965">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5966">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5969">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4433">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4434">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4437">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4438">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4441">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4442">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4446">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4451">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4452">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4458">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4459">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4460">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4461">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4462">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4465">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4466">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4469">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e5974">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5975">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5978">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5979">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5982">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e4474">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4475">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4478">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4479">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4482">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5983">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e4483">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e5985">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5986">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5991">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5992">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5993">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5994">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5995">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5998">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e5999">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6000">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6003">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4485">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4486">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4491">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4492">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4493">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4494">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4495">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4498">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4499">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4500">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4503">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e6008">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6009">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6010">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6013">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6014">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6015">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6018">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e4508">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4509">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4510">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4513">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4514">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4515">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4518">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6019">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e4519">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6021">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6022">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6025">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6026">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6029">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6030">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6034">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6039">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6040">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6044">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6045">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6046">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6047">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6048">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6051">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6052">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6055">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4521">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4522">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4525">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4526">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4529">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4530">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4534">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4539">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4540">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4545">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4546">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4547">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4548">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4549">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4552">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4553">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4556">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e6060">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6061">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6064">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6065">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6068">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e4561">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4562">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4565">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4566">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4569">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6069">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e4570">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6071">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6072">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6077">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6078">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6079">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6080">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6081">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6084">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6085">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6086">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6089">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4572">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4573">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4578">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4579">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4580">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4581">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4582">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4585">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4586">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4587">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4590">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e6094">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6095">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6096">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6099">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6100">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6101">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6104">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e4595">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4596">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4597">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4600">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4601">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4602">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4605">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6105">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e4606">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6107">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6108">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6111">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6112">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6115">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6116">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6120">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6125">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6126">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <h3 id="d2e6144">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) + <h3 id="d2e4608">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4609">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4612">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4613">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4616">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4617">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4621">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4626">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4627">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4644">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -22009,12 +21653,12 @@ <course> <key>777</key> <softKey>internal_fx_cp</softKey> + <displayName>Demo course</displayName> <repoEntryKey>27684</repoEntryKey> <externalId>External identifier</externalId> <externalRef>External reference</externalRef> <managedFlags>title,description</managedFlags> <title>Demo course</title> - <displayName>Demo course</displayName> </course> </courses> </courses> @@ -22023,9 +21667,9 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6157"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4657"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6174">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) + <h3 id="d2e4674">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -22034,12 +21678,12 @@ <course> <key>777</key> <softKey>internal_fx_cp</softKey> + <displayName>Demo course</displayName> <repoEntryKey>27684</repoEntryKey> <externalId>External identifier</externalId> <externalRef>External reference</externalRef> <managedFlags>title,description</managedFlags> <title>Demo course</title> - <displayName>Demo course</displayName> </course> </courses> </courses> @@ -22048,9 +21692,9 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6187"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4687"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6204">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) + <h3 id="d2e4704">application/xml, application/json (<abbr title="{http://www.example.com} courseVO">ns3:courseVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -22059,128 +21703,120 @@ <course> <key>777</key> <softKey>internal_fx_cp</softKey> + <displayName>Demo course</displayName> <repoEntryKey>27684</repoEntryKey> <externalId>External identifier</externalId> <externalRef>External reference</externalRef> <managedFlags>title,description</managedFlags> <title>Demo course</title> - <displayName>Demo course</displayName> </course> </courses> -</courses> -</code></pre></p> - <p>The courses</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6217"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6243"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e6249">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groups totalCount="0"> - <groups> - <group> - <key>123467</key> - <description>My group description</description> - <externalId>External Identifier</externalId> - <managedFlags>title,description</managedFlags> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> - </group> - </groups> -</groups> +</courses> </code></pre></p> - <p>The groups of the user</p> + <p>The courses</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6279"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e6285">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>) + <h3 id="d2e4717"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e4729">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4730">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4739">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4740">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4749">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4750">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4759">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4760">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4768">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4769">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4781">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4782">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4785">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">courseVO</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e4786">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">courseVO</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e4788">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4789">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4810">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4811">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4814">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4815">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4819">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4824">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4825">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4828">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4829">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4834">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4835">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4838">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e4846">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4847">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4851">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4855">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4856">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4859">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4860">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4862">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4866">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4867">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4870">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4871">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4873">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4878">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4882">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4883">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4886">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4887">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4889">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4893">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4894">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4902">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4903">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4908">application/zip<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4909">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4913">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e4916">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4917">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4921">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4925">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4930">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4931">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4934">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4937">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4938">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4943">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4947">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4948">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4951">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groups totalCount="0"> - <groups> - <group> - <key>123467</key> - <description>My group description</description> - <externalId>External Identifier</externalId> - <managedFlags>title,description</managedFlags> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> - </group> - </groups> -</groups> -</code></pre></p> - <p>The groups of the user</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6315"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e6321">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>) + <h3 id="d2e4952">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groups totalCount="0"> - <groups> - <group> - <key>123467</key> - <description>My group description</description> - <externalId>External Identifier</externalId> - <managedFlags>title,description</managedFlags> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> - </group> - </groups> -</groups> -</code></pre></p> - <p>The groups of the user</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6351">application/xml;pagingspec=1.0, application/json;pagingspec=1.0 (<abbr title="{http://www.example.com} groupInfoVO">ns3:groupInfoVO</abbr>) + <h3 id="d2e4954">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4955">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4960">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4963">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4966">*/* (<abbr title="{http://wadl.dev.java.net/2009/02} ">groupVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<groups totalCount="0"> - <groups> - <group folderWrite="false"> - <key>123467</key> - <description>My group description</description> - <externalId>External identifier</externalId> - <name>My group</name> - <minParticipants>0</minParticipants> - <maxParticipants>0</maxParticipants> - <news>&lt;p&gt;Hello world&lt;/p&gt;</news> - <forumKey>374589</forumKey> - <hasWiki>false</hasWiki> - <hasFolder>false</hasFolder> - </group> - </groups> -</groups> -</code></pre></p> - <p>The groups of the user</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6364"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The request hasn't paging information</p> - <h3 id="d2e6375">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e6397"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The forum not found</p> - <h3 id="d2e6403">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) + <h3 id="d2e4968">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4972">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4983">application/xml, application/json (<abbr title="{http://www.example.com} forumVO">ns3:forumVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -22190,11 +21826,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6416"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e4996"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6435"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author, forum or message not found</p> - <h3 id="d2e6441">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) + <h3 id="d2e5002"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The forum not found</p> + <h3 id="d2e5021">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -22213,11 +21849,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6454"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5034"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6473"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5040"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author, forum or message not found</p> - <h3 id="d2e6479">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e5059">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -22232,13 +21868,13 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6492"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5072"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6499">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e6506"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5078"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author, forum or message not found</p> - <h3 id="d2e6512">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e5085">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e5092">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -22253,11 +21889,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6525"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5105"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6547"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5111"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author, forum or message not found</p> - <h3 id="d2e6553">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) + <h3 id="d2e5133">application/xml, application/json (<abbr title="{http://www.example.com} messageVOes">ns3:messageVOes</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -22276,13 +21912,13 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6566"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5146"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6577">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5152"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author, forum or message not found</p> + <h3 id="d2e5163">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e6590"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e6596">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e5176">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -22297,21 +21933,21 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6609"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5189"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6616">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) + <h3 id="d2e5195"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e5202">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6617">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) + <h3 id="d2e5203">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">replyVO</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6621"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The author or message not found</p> - <h3 id="d2e6627">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e5207">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -22326,11 +21962,11 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6640"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5220"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6659"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5226"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The author or message not found</p> - <h3 id="d2e6665">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) + <h3 id="d2e5245">application/xml, application/json (<abbr title="{http://www.example.com} messageVO">ns3:messageVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> @@ -22345,831 +21981,564 @@ <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6678"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5258"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6691"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The message not found</p> - <h3 id="d2e6697">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5264"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The author or message not found</p> + <h3 id="d2e5277">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The links to the attachments</p> - <h3 id="d2e6704">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5283"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The message not found</p> + <h3 id="d2e5290">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e6710"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e6716">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5296">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Ok</p> - <h3 id="d2e6723">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e5302"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e5309">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6724">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + <h3 id="d2e5310">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6728"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the portrait not found</p> - <h3 id="d2e6734">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5314">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Ok</p> - <h3 id="d2e6743"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5320"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The identity or the portrait not found</p> - <h3 id="d2e6749">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5329">application/json, application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>Ok</p> - <h3 id="d2e6765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5335"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The identity or the portrait not found</p> - <h3 id="d2e6771">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5351">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The portrait as image</p> - <h3 id="d2e6784">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">authenticationVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6785">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">authenticationVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6789"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e6795">application/xml, application/json (<abbr title="{http://www.example.com} authenticationVO">ns3:authenticationVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<authenticationVO> - <key>38759</key> - <identityKey>345</identityKey> - <provider>OLAT</provider> - <authUsername>john</authUsername> -</authenticationVO> -</code></pre></p> - <p>The saved authentication</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6808"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6815"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e6819">application/xml, application/json (<abbr title="{http://www.example.com} authenticationVO">ns3:authenticationVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<authenticationVOes> - <authenticationVO> - <key>38759</key> - <identityKey>345</identityKey> - <provider>OLAT</provider> - <authUsername>john</authUsername> - </authenticationVO> -</authenticationVOes> -</code></pre></p> - <p>The list of all users in the OLAT system</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e6830"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6846"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the authentication not found</p> - <h3 id="d2e6852"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The authentication successfully deleted</p> - <h3 id="d2e6858"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6869">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5357"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity or the portrait not found</p> + <h3 id="d2e5364">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5365">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5366">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5367">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5368">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5371">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5372">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5375">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e6876"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the authentication not found</p> - <h3 id="d2e6882"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The password was not changed</p> - <h3 id="d2e6888"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The password successfully changed</p> - <h3 id="d2e6894"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e6904">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e6922">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e6947">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>OK</code></pre></p> - <p>The translation of the package + key</p> - <h3 id="d2e6965">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e6988"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e6994">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7007"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7017"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7021">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7032"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7043"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7049">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) - </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7062"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7080"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7086">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5380">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5381">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5384">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5385">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5388">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7099"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7111"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7117">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5389">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>the course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7130"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7139">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5391">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5392">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5397">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5398">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5399">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5400">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5401">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5404">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5405">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5406">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5409">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <div class="representation"></div> - <h3 id="d2e7152"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7158">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5414">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5415">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5416">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5419">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5420">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5421">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5424">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7171"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7180"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7186">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5425">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7199"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7208"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7214">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5427">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5428">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5431">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5432">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5435">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5436">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5440">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5445">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5446">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5454">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5455">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5459">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>the course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7227"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7246"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7252">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5460">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>the course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7265"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7279">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e7304"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7310">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5462">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5463">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5466">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5467">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7323"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7334">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e7365"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7371">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5468">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7384"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7421"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7427">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5470">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5471">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5475">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5476">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5478">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5479">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5486">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5487">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5490">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5491">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5493">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5494">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5505">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<viteroBookingVO> + <bookingId>23</bookingId> + <groupId>24</groupId> + <groupName>NEW-EVENT_OLAT_938745983</groupName> + <eventName>New event</eventName> + <externalId>AC-234</externalId> + <start>2017-05-30T12:06:28.893+02:00</start> + <startBuffer>15</startBuffer> + <end>2017-05-30T12:06:28.893+02:00</end> + <endBuffer>15</endBuffer> + <roomSize>22</roomSize> + <autoSignIn>true</autoSignIn> + <timeZoneId></timeZoneId> +</viteroBookingVO> </code></pre></p> - <p>The course node metadatas</p> + <p>This is the list of all bookings of a resource</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7440"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7450">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e7460"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course, parentNode or test not found</p> - <h3 id="d2e7466">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5519">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The test node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7479"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7490">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e7518"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course, parentNode or test not found</p> - <h3 id="d2e7524">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5520">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The test node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7537"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7571"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>course, parentNode or test not found</p> - <h3 id="d2e7577">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5524">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<viteroBookingVO> + <bookingId>23</bookingId> + <groupId>24</groupId> + <groupName>NEW-EVENT_OLAT_938745983</groupName> + <eventName>New event</eventName> + <externalId>AC-234</externalId> + <start>2017-05-30T12:06:28.893+02:00</start> + <startBuffer>15</startBuffer> + <end>2017-05-30T12:06:28.893+02:00</end> + <endBuffer>15</endBuffer> + <roomSize>22</roomSize> + <autoSignIn>true</autoSignIn> + <timeZoneId></timeZoneId> +</viteroBookingVO> </code></pre></p> - <p>the test node metadatas</p> + <p>The created booking</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7590"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7605">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e7622"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7626">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5538">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7637"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7648">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e7671"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7675">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5539">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7686"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7715"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7719">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e5543">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<viteroBookingVO> + <bookingId>23</bookingId> + <groupId>24</groupId> + <groupName>NEW-EVENT_OLAT_938745983</groupName> + <eventName>New event</eventName> + <externalId>AC-234</externalId> + <start>2017-05-30T12:06:28.893+02:00</start> + <startBuffer>15</startBuffer> + <end>2017-05-30T12:06:28.893+02:00</end> + <endBuffer>15</endBuffer> + <roomSize>22</roomSize> + <autoSignIn>true</autoSignIn> + <timeZoneId></timeZoneId> +</viteroBookingVO> </code></pre></p> - <p>The course node metadatas</p> + <p>The created booking</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7730"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7744">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e7764"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7768">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5563">application/xml, application/json (<abbr title="{http://www.example.com} viteroGroupMemberVO">ns3:viteroGroupMemberVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<viteroGroupMemberVO> + <identityKey>23497</identityKey> + <groupRole>participant</groupRole> +</viteroGroupMemberVO> </code></pre></p> - <p>The course node metadatas</p> + <p>This is the list of all bookings of a resource</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7779"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7797"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7801">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5577">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5578">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5582">application/xml, application/json (<abbr title="{http://www.example.com} viteroGroupMemberVO">ns3:viteroGroupMemberVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<viteroGroupMemberVO> + <identityKey>23497</identityKey> + <groupRole>participant</groupRole> +</viteroGroupMemberVO> </code></pre></p> - <p>The course node metadatas</p> + <p>This is the list of all bookings of a resource</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7812"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7828"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7832">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5600"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The booking is deleted</p> + <h3 id="d2e5614">application/xml, application/json (<abbr title="{http://www.example.com} goToTrainingVO">ns3:goToTrainingVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<trainingVO> + <key>4534759</key> + <name>Training</name> + <externalId>AC-234</externalId> + <start>2017-05-30T12:06:28.886+02:00</start> + <end>2017-05-30T12:06:28.886+02:00</end> +</trainingVO> </code></pre></p> - <p>The course node metadatas</p> + <p>This is the list of all training of a resource</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7843"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7857">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e7877"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7881">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5628">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">trainingVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7892"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7928"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7932">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5629">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">trainingVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7943"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e7975"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e7979">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5633">application/xml, application/json (<abbr title="{http://www.example.com} goToTrainingVO">ns3:goToTrainingVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<trainingVO> + <key>4534759</key> + <name>Training</name> + <externalId>AC-234</externalId> + <start>2017-05-30T12:06:28.886+02:00</start> + <end>2017-05-30T12:06:28.886+02:00</end> +</trainingVO> </code></pre></p> - <p>The course node metadatas</p> + <p>Created a training</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e7990"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8004">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e8024"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e8028">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5647">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">trainingVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8039"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8069"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e8073">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5648">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">trainingVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8084"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8100"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e8104">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5652">application/xml, application/json (<abbr title="{http://www.example.com} goToTrainingVO">ns3:goToTrainingVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<trainingVO> + <key>4534759</key> + <name>Training</name> + <externalId>AC-234</externalId> + <start>2017-05-30T12:06:28.886+02:00</start> + <end>2017-05-30T12:06:28.886+02:00</end> +</trainingVO> </code></pre></p> - <p>The course node metadatas</p> + <p>The created booking</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8115"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8129">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <div class="representation"></div> - <h3 id="d2e8149"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e8153">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5670"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The training is deleted</p> + <h3 id="d2e5677">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5678">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5687">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5688">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5698">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5699">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5703">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8164"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8200"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e8204">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5704">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8215"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8247"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The given URL is not valid</p> - <h3 id="d2e8251"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e8255">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5706">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5707">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5710">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5711">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8266"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8282"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e8288">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5712">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">eventVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8301"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8310"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or parentNode not found</p> - <h3 id="d2e8316">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) + <h3 id="d2e5714">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5715">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5719">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5720">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5722">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5723">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5730">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5731">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5734">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5735">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5737">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5738">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5743">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5747">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5752">image/jpeg<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5757">image/jpeg<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5761">application/xhtml+xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5762">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5765">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5774">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5775">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5779">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5795">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<viteroBookingVO> + <bookingId>23</bookingId> + <groupId>24</groupId> + <groupName>NEW-EVENT_OLAT_938745983</groupName> + <eventName>New event</eventName> + <externalId>AC-234</externalId> + <start>2017-05-30T12:06:28.893+02:00</start> + <startBuffer>15</startBuffer> + <end>2017-05-30T12:06:28.893+02:00</end> + <endBuffer>15</endBuffer> + <roomSize>22</roomSize> + <autoSignIn>true</autoSignIn> + <timeZoneId></timeZoneId> +</viteroBookingVO> </code></pre></p> - <p>The course node metadatas</p> + <p>This is the list of all bookings of a resource</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8329"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course node is not of type task</p> - <h3 id="d2e8335"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8374"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The configuration is not valid</p> - <h3 id="d2e8378"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or task node not found</p> - <h3 id="d2e8382">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>) + <h3 id="d2e5809">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The task node configuration</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8393"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The call is not applicable to task course node</p> - <h3 id="d2e8397"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8432"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The configuration is not valid</p> - <h3 id="d2e8436"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or task node not found</p> - <h3 id="d2e8440">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>) + <h3 id="d2e5810">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The task node configuration</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8451"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The call is not applicable to task course node</p> - <h3 id="d2e8455"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8464"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or task node not found</p> - <h3 id="d2e8470">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>) + <h3 id="d2e5814">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<viteroBookingVO> + <bookingId>23</bookingId> + <groupId>24</groupId> + <groupName>NEW-EVENT_OLAT_938745983</groupName> + <eventName>New event</eventName> + <externalId>AC-234</externalId> + <start>2017-05-30T12:06:28.893+02:00</start> + <startBuffer>15</startBuffer> + <end>2017-05-30T12:06:28.893+02:00</end> + <endBuffer>15</endBuffer> + <roomSize>22</roomSize> + <autoSignIn>true</autoSignIn> + <timeZoneId></timeZoneId> +</viteroBookingVO> </code></pre></p> - <p>The course node configuration</p> + <p>The created booking</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8483"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8501"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The configuration is not valid</p> - <h3 id="d2e8505"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or survey node not found</p> - <h3 id="d2e8509">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>) + <h3 id="d2e5828">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The survey node configuration</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8520"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The call is not applicable to survey course node</p> - <h3 id="d2e8524"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8539"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The configuration is not valid</p> - <h3 id="d2e8543"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or survey node not found</p> - <h3 id="d2e8547">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>) + <h3 id="d2e5829">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">viteroBookingVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The survey node configuration</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8558"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The call is not applicable to survey course node</p> - <h3 id="d2e8562"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8571"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or survey node not found</p> - <h3 id="d2e8577">application/xml, application/json (<abbr title="{http://www.example.com} surveyConfigVO">ns3:surveyConfigVO</abbr>) + <h3 id="d2e5833">application/xml, application/json (<abbr title="{http://www.example.com} viteroBookingVO">ns3:viteroBookingVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<viteroBookingVO> + <bookingId>23</bookingId> + <groupId>24</groupId> + <groupName>NEW-EVENT_OLAT_938745983</groupName> + <eventName>New event</eventName> + <externalId>AC-234</externalId> + <start>2017-05-30T12:06:28.893+02:00</start> + <startBuffer>15</startBuffer> + <end>2017-05-30T12:06:28.893+02:00</end> + <endBuffer>15</endBuffer> + <roomSize>22</roomSize> + <autoSignIn>true</autoSignIn> + <timeZoneId></timeZoneId> +</viteroBookingVO> </code></pre></p> - <p>The course node configuration</p> + <p>The created booking</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8590"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8619"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The configuration is not valid</p> - <h3 id="d2e8623"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or test node not found</p> - <h3 id="d2e8627">application/xml, application/json (<abbr title="{http://www.example.com} testConfigVO">ns3:testConfigVO</abbr>) + <h3 id="d2e5853">application/xml, application/json (<abbr title="{http://www.example.com} viteroGroupMemberVO">ns3:viteroGroupMemberVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<viteroGroupMemberVO> + <identityKey>23497</identityKey> + <groupRole>participant</groupRole> +</viteroGroupMemberVO> </code></pre></p> - <p>The test node configuration</p> + <p>This is the list of all bookings of a resource</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8638"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The call is not applicable to test course node</p> - <h3 id="d2e8642"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8668"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The configuration is not valid</p> - <h3 id="d2e8672"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or test node not found</p> - <h3 id="d2e8676">application/xml, application/json (<abbr title="{http://www.example.com} testConfigVO">ns3:testConfigVO</abbr>) + <h3 id="d2e5867">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5868">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5872">application/xml, application/json (<abbr title="{http://www.example.com} viteroGroupMemberVO">ns3:viteroGroupMemberVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> +<viteroGroupMemberVO> + <identityKey>23497</identityKey> + <groupRole>participant</groupRole> +</viteroGroupMemberVO> </code></pre></p> - <p>The test node configuration</p> + <p>This is the list of all bookings of a resource</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8687"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The call is not applicable to test course node</p> - <h3 id="d2e8691"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8700"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course or test node not found</p> - <h3 id="d2e8706">application/xml, application/json (<abbr title="{http://www.example.com} testConfigVO">ns3:testConfigVO</abbr>) + <h3 id="d2e5890"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The booking is deleted</p> + <h3 id="d2e5896">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5897">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5902">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5908">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5913">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5918">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5919">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5920">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5921">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5922">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5925">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5926">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5929">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e5934">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5935">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5938">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5939">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5942">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<courseNodeVO> - <id>id</id> -</courseNodeVO> -</code></pre></p> - <p>The course node configuration</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8719"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8739"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e8745">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5943">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e5945">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5946">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5951">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5952">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5953">text/html<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5954">application/octet-stream<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5955">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5958">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5959">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5960">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5963">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e5968">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5969">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5970">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5973">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5974">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5975">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5978">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e5979">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">fileUpload</abbr>) + </h3> + <div class="representation"> + <h6>XML Schema</h6> + <p><em>Source: <a href=""></a></em></p><pre></pre></div> + <h3 id="d2e5981">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5982">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5985">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5986">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5989">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5990">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5994">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e5999">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6000">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6017">application/xml, application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <subscriptionInfoVOes> @@ -23180,101 +22549,186 @@ </subscriptionInfoVOes> </code></pre></p> <p>The notifications</p> - <h3 id="d2e8765"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e8769">application/xml, application/json (<abbr title="{http://www.example.com} assessableResultsVO">ns3:assessableResultsVO</abbr>) + <h3 id="d2e6030"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The identity not found</p> + <h3 id="d2e6037">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6041">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">subscribersVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<assessableResultsVOes> - <assessableResultsVO> - <identityKey>345</identityKey> - <score>34.0</score> - <passed>true</passed> - </assessableResultsVO> -</assessableResultsVOes> -</code></pre></p> - <p>Array of results for the whole the course</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8780"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8788">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p> - <h6>Example</h6><pre><code>1.0</code></pre></p> - <p>The version of this specific Web Service</p> - <h3 id="d2e8809"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the course not found</p> - <h3 id="d2e8813">application/xml, application/json (<abbr title="{http://www.example.com} assessableResultsVO">ns3:assessableResultsVO</abbr>) + <h3 id="d2e6042">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">subscribersVO</abbr>) </h3> - <p> - <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<assessableResultsVO> - <identityKey>345</identityKey> - <score>34.0</score> - <passed>true</passed> -</assessableResultsVO> -</code></pre></p> - <p>The result of the course</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8824"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8838"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The course not found</p> - <h3 id="d2e8842">application/xml, application/json (<abbr title="{http://www.example.com} assessableResultsVO">ns3:assessableResultsVO</abbr>) + <h3 id="d2e6044">*/*<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6051">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6052">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6057">text/plain<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6063">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6064">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6069">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6070">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6082">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6083">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6089">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6090">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6095">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e6106">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6107">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6110">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6111">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6124">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6125">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6128">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6129">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6135">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e6144">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6145">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6150">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e6161">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6162">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6175">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6176">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6182">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e6190">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6191">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6196">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e6206">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6207">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6219">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6220">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6226">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e6233">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6234">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6239">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e6248">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6249">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6260">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6261">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6268">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e6276">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6277">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6291">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6292">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6304">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6305">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6311">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e6319">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6320">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6334">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6335">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6347">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6348">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6362">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6363">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6375">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6376">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6382">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e6390">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6391">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6397">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e6405">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6406">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6420">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6421">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6433">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6434">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6440">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6441">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6444">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6445">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6479">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6480">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6511">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6512">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6515">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6516">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6530">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6531">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6542">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6543">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6546">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6547">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6573">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6574">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6596">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6597">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6600">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6601">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6607">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6608">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6615">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6616">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6621">application/xml<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6622">application/json<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6663">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<assessableResultsVOes> - <assessableResultsVO> - <identityKey>345</identityKey> - <score>34.0</score> - <passed>true</passed> - </assessableResultsVO> -</assessableResultsVOes> +<courseNodeVO> + <id>id</id> +</courseNodeVO> </code></pre></p> - <p>Export all results of all user of the course</p> + <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8853"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6676"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8860">application/xml (<abbr title="{http://wadl.dev.java.net/2009/02} ">assessableResultsVO</abbr>) - </h3> - <div class="representation"> - <h6>XML Schema</h6> - <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8861">application/json (<abbr title="{http://wadl.dev.java.net/2009/02} ">assessableResultsVO</abbr>) + <h3 id="d2e6682"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e6689">application/x-www-form-urlencoded<abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <div class="representation"></div> + <h3 id="d2e6720">application/xml, application/json (<abbr title="{http://www.example.com} courseNodeVO">ns3:courseNodeVO</abbr>) </h3> + <p> + <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<courseNodeVO> + <id>id</id> +</courseNodeVO> +</code></pre></p> + <p>The course node metadatas</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8863"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity not found</p> - <h3 id="d2e8867"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>Import successful</p> - <h3 id="d2e8871"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6733"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> - <h3 id="d2e8888"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> - <p>The identity or the course not found</p> - <h3 id="d2e8892">application/xml, application/json (<abbr title="{http://www.example.com} assessableResultsVO">ns3:assessableResultsVO</abbr>) + <h3 id="d2e6739"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or parentNode not found</p> + <h3 id="d2e6751">application/xml, application/json (<abbr title="{http://www.example.com} groupVO">ns3:groupVO</abbr>) </h3> <p> <h6>Example</h6><pre><code><?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<assessableResultsVO> - <identityKey>345</identityKey> - <score>34.0</score> - <passed>true</passed> -</assessableResultsVO> +<groupVO> + <key>123467</key> + <description>My group description</description> + <externalId>External Identifier</externalId> + <managedFlags>title,description</managedFlags> + <name>My group</name> + <minParticipants>0</minParticipants> + <maxParticipants>0</maxParticipants> +</groupVO> </code></pre></p> - <p>The result of a user at a specific node</p> + <p>The groups</p> <div class="representation"> <h6>XML Schema</h6> <p><em>Source: <a href=""></a></em></p><pre></pre></div> - <h3 id="d2e8903"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <h3 id="d2e6764"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> <p>The roles of the authenticated user are not sufficient</p> + <h3 id="d2e6770"><abbr title="{http://wadl.dev.java.net/2009/02} "></abbr></h3> + <p>The course or course node not found</p> </body> </html> \ No newline at end of file diff --git a/src/main/java/org/olat/restapi/repository/RepositoryEntryResource.java b/src/main/java/org/olat/restapi/repository/RepositoryEntryResource.java index 7f8de92c5a32b5aaf40deb69c29c5ca2416083cb..7e6158af15a7c5c7aa2d2a7c0851a8c7c290395c 100644 --- a/src/main/java/org/olat/restapi/repository/RepositoryEntryResource.java +++ b/src/main/java/org/olat/restapi/repository/RepositoryEntryResource.java @@ -283,9 +283,9 @@ public class RepositoryEntryResource { /** * Returns the list of coaches of the repository entry. * @response.representation.200.qname {http://www.example.com}userVO - * @response.representation.200.mediaType application/xml, application/json - * @response.representation.200.doc Coaches of the repository entry - * @response.representation.200.example {@link org.olat.user.restapi.Examples#SAMPLE_USERVOes} + * @response.representation.200.mediaType application/xml, application/json + * @response.representation.200.doc Coaches of the repository entry + * @response.representation.200.example {@link org.olat.user.restapi.Examples#SAMPLE_USERVOes} * @response.representation.404.doc The repository entry cannot be found * @param repoEntryKey The key of the repository entry * @param request The HTTP Request diff --git a/src/main/java/org/olat/restapi/repository/SharedFolderWebService.java b/src/main/java/org/olat/restapi/repository/SharedFolderWebService.java new file mode 100644 index 0000000000000000000000000000000000000000..1b59571541ffb532e515f0ef9b3b2198390857b2 --- /dev/null +++ b/src/main/java/org/olat/restapi/repository/SharedFolderWebService.java @@ -0,0 +1,227 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.restapi.repository; + + +import static org.olat.restapi.security.RestSecurityHelper.getRoles; + +import java.util.Collections; +import java.util.Date; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.core.CacheControl; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.PathSegment; +import javax.ws.rs.core.Request; +import javax.ws.rs.core.Response; +import javax.ws.rs.core.Response.Status; +import javax.ws.rs.core.UriBuilder; +import javax.ws.rs.core.UriInfo; + +import org.olat.core.CoreSpringFactory; +import org.olat.core.id.Roles; +import org.olat.core.util.WebappHelper; +import org.olat.core.util.vfs.VFSContainer; +import org.olat.core.util.vfs.VFSItem; +import org.olat.core.util.vfs.VFSLeaf; +import org.olat.core.util.vfs.callbacks.ReadOnlyCallback; +import org.olat.core.util.vfs.filters.SystemItemFilter; +import org.olat.core.util.vfs.restapi.VFSWebservice; +import org.olat.modules.sharedfolder.SharedFolderManager; +import org.olat.repository.RepositoryEntry; +import org.olat.repository.RepositoryManager; +import org.olat.repository.model.RepositoryEntrySecurity; +import org.olat.restapi.security.RestSecurityHelper; +import org.olat.restapi.support.vo.LinkVO; + +/** + * Description:<br> + * A web service for the catalog + * + * <P> + * Initial Date: 5 may 2017 <br> + * @author Stephan Clemenz, VCRP + */ +@Path("repo/sharedfolder") +public class SharedFolderWebService { + + private static final String VERSION = "1.0"; + public static CacheControl cc = new CacheControl(); + + private final RepositoryManager repositoryManager; + + static { + cc.setMaxAge(-1); + } + + public SharedFolderWebService() { + repositoryManager = CoreSpringFactory.getImpl(RepositoryManager.class); + } + + /** + * Retrieves the version of the Catalog Web Service. + * @response.representation.200.mediaType text/plain + * @response.representation.200.doc The version of this specific Web Service + * @response.representation.200.example 1.0 + * @return + */ + @GET + @Path("version") + @Produces(MediaType.TEXT_PLAIN) + public Response getVersion() { + return Response.ok(VERSION).build(); + } + + /** + * This retrieves the files in the shared folder + * @response.representation.200.doc The list of files + * @response.representation.401.doc The roles of the authenticated user are not sufficient + * @response.representation.404.doc The shared folder is not found + * @param repoEntryKey The course resourceable's id + * @param uri The uri infos + * @param httpRequest The HTTP request + * @param request The REST request + * @return + */ + @GET + @Path("{repoEntryKey}") + public Response getSharedFiles(@PathParam("repoEntryKey") Long repoEntryKey, @Context UriInfo uriInfo, + @Context HttpServletRequest httpRequest, @Context Request request) { + return getFiles(repoEntryKey, Collections.<PathSegment>emptyList(), uriInfo, httpRequest, request); + } + + /** + * This retrieves the files in the shared folder + * @response.representation.200.doc The list of files + * @response.representation.401.doc The roles of the authenticated user are not sufficient + * @response.representation.404.doc The shared folder is not found + * @param repoEntryKey The course resourceable's id + * @param path The path of the file or directory + * @param uri The uri infos + * @param httpRequest The HTTP request + * @param request The REST request + * @return + */ + @GET + @Path("{repoEntryKey}/{path:.*}") + public Response getSharedFiles(@PathParam("repoEntryKey") Long repoEntryKey, @PathParam("path") List<PathSegment> path, @Context UriInfo uriInfo, + @Context HttpServletRequest httpRequest, @Context Request request) { + return getFiles(repoEntryKey, path, uriInfo, httpRequest, request); + } + + /** + * This retrieves the files in the shared folder and give full access to + * the folder, read, write, delete. + * + * @response.representation.200.doc The list of files + * @response.representation.401.doc The roles of the authenticated user are not sufficient + * @response.representation.404.doc The course or the file not found + * @param repoEntryKey The course resourceable's id + * @param httpRequest The HTTP request + * @return + */ + @Path("{repoEntryKey}/files") + @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_HTML, MediaType.APPLICATION_OCTET_STREAM}) + public VFSWebservice getVFSWebservice(@PathParam("repoEntryKey") Long repoEntryKey, @Context HttpServletRequest httpRequest) { + RepositoryEntry re = repositoryManager.lookupRepositoryEntry(repoEntryKey); + if(re == null) { + throw new WebApplicationException( Response.serverError().status(Status.NOT_FOUND).build()); + } + + VFSContainer container = SharedFolderManager.getInstance().getNamedSharedFolder(re, true); + if(container == null) { + throw new WebApplicationException( Response.serverError().status(Status.NOT_FOUND).build()); + } + + Roles roles = getRoles(httpRequest); + if(roles.isOLATAdmin()){ + // all ok + } else { + RepositoryEntrySecurity reSecurity = repositoryManager + .isAllowed(RestSecurityHelper.getIdentity(httpRequest), RestSecurityHelper.getRoles(httpRequest), re); + if(reSecurity.isEntryAdmin()) { + // all ok + } else if(reSecurity.isMember()) { + container.setLocalSecurityCallback(new ReadOnlyCallback()); + } else { + throw new WebApplicationException( Response.serverError().status(Status.UNAUTHORIZED).build()); + } + } + return new VFSWebservice(container); + } + + public Response getFiles(Long repoEntryKey, List<PathSegment> path, UriInfo uriInfo, HttpServletRequest httpRequest, Request request) { + RepositoryEntry re = repositoryManager.lookupRepositoryEntry(repoEntryKey); + if(re == null) { + return Response.serverError().status(Status.NOT_FOUND).build(); + } + VFSContainer container = SharedFolderManager.getInstance().getNamedSharedFolder(re, true); + if(container == null) { + return Response.serverError().status(Status.NOT_FOUND).build(); + } + if (!repositoryManager.isAllowedToLaunch(RestSecurityHelper.getIdentity(httpRequest), RestSecurityHelper.getRoles(httpRequest), re)) { + return Response.serverError().status(Status.UNAUTHORIZED).build(); + } + + VFSLeaf leaf = null; + for(PathSegment seg:path) { + VFSItem item = container.resolve(seg.getPath()); + if(item instanceof VFSLeaf) { + leaf = (VFSLeaf)item; + break; + } else if (item instanceof VFSContainer) { + container = (VFSContainer)item; + } + } + + if(leaf != null) { + Date lastModified = new Date(leaf.getLastModified()); + Response.ResponseBuilder response = request.evaluatePreconditions(lastModified); + if(response == null) { + String mimeType = WebappHelper.getMimeType(leaf.getName()); + if (mimeType == null) mimeType = MediaType.APPLICATION_OCTET_STREAM; + response = Response.ok(leaf.getInputStream(), mimeType).lastModified(lastModified).cacheControl(cc); + } + return response.build(); + } + + List<VFSItem> items = container.getItems(new SystemItemFilter()); + int count=0; + LinkVO[] links = new LinkVO[items.size()]; + for(VFSItem item:items) { + UriBuilder baseUriBuilder = uriInfo.getBaseUriBuilder(); + UriBuilder repoUri = baseUriBuilder.path(SharedFolderWebService.class).path(repoEntryKey.toString()).path("files"); + for(PathSegment pathSegment:path) { + repoUri.path(pathSegment.getPath()); + } + String uri = repoUri.path(item.getName()).build().toString(); + links[count++] = new LinkVO("self", uri, item.getName()); + } + + return Response.ok(links).build(); + } +} diff --git a/src/main/java/org/olat/restapi/repository/course/CourseResourceFolderWebService.java b/src/main/java/org/olat/restapi/repository/course/CourseResourceFolderWebService.java index 8b59e655ee7a711c9ca66bfe00440fe35bc1c5d9..feabc75290ae4b69809adae21fd6d1c72bef158f 100644 --- a/src/main/java/org/olat/restapi/repository/course/CourseResourceFolderWebService.java +++ b/src/main/java/org/olat/restapi/repository/course/CourseResourceFolderWebService.java @@ -61,9 +61,16 @@ import org.olat.core.util.vfs.VFSContainer; import org.olat.core.util.vfs.VFSItem; import org.olat.core.util.vfs.VFSLeaf; import org.olat.core.util.vfs.VFSLockManager; +import org.olat.core.util.vfs.callbacks.ReadOnlyCallback; import org.olat.core.util.vfs.filters.SystemItemFilter; import org.olat.core.util.vfs.version.Versionable; import org.olat.course.ICourse; +import org.olat.course.config.CourseConfig; +import org.olat.modules.sharedfolder.SharedFolderManager; +import org.olat.repository.RepositoryEntry; +import org.olat.repository.RepositoryService; +import org.olat.resource.OLATResource; +import org.olat.restapi.repository.SharedFolderWebService; import org.olat.restapi.security.RestSecurityHelper; import org.olat.restapi.support.MultipartReader; import org.olat.restapi.support.vo.LinkVO; @@ -81,22 +88,22 @@ import org.olat.restapi.support.vo.LinkVO; */ @Path("repo/courses/{courseId}/resourcefolders") public class CourseResourceFolderWebService { - + private static final OLog log = Tracing.createLoggerFor(CourseResourceFolderWebService.class); private static final String VERSION = "1.0"; - + public static CacheControl cc = new CacheControl(); - + static { cc.setMaxAge(-1); } - + /** * The version of the resources folders Web Service - * @response.representation.200.mediaType text/plain - * @response.representation.200.doc The version of this specific Web Service - * @response.representation.200.example 1.0 + * @response.representation.200.mediaType text/plain + * @response.representation.200.doc The version of this specific Web Service + * @response.representation.200.example 1.0 * @return */ @GET @@ -105,12 +112,12 @@ public class CourseResourceFolderWebService { public Response getVersion() { return Response.ok(VERSION).build(); } - + /** * This retrieves the files in the shared folder - * @response.representation.200.doc The list of files + * @response.representation.200.doc The list of files * @response.representation.401.doc The roles of the authenticated user are not sufficient - * @response.representation.404.doc The course or the shared folder not found + * @response.representation.404.doc The course or the shared folder not found * @param courseId The course resourceable's id * @param uri The uri infos * @param httpRequest The HTTP request @@ -123,13 +130,13 @@ public class CourseResourceFolderWebService { @Context HttpServletRequest httpRequest, @Context Request request) { return getFiles(courseId, Collections.<PathSegment>emptyList(), FolderType.SHARED_FOLDER, uriInfo, httpRequest, request); } - + /** * This retrieves the files in the shared folder - * @response.representation.200.doc The list of files + * @response.representation.200.doc The list of files * @response.representation.401.doc The roles of the authenticated user are not sufficient - * @response.representation.404.doc The course or the file not found - * @response.representation.406.doc The course node is not acceptable to copy a file + * @response.representation.404.doc The course or the file not found + * @response.representation.406.doc The course node is not acceptable to copy a file * @param courseId The course resourceable's id * @param path The path of the file or directory * @param uri The uri infos @@ -142,15 +149,15 @@ public class CourseResourceFolderWebService { @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_HTML, MediaType.APPLICATION_OCTET_STREAM}) public Response getSharedFiles(@PathParam("courseId") Long courseId, @PathParam("path") List<PathSegment> path, @Context UriInfo uriInfo, @Context HttpServletRequest httpRequest, @Context Request request) { - return getFiles(courseId, path, FolderType.COURSE_FOLDER, uriInfo, httpRequest, request); + return getFiles(courseId, path, FolderType.SHARED_FOLDER, uriInfo, httpRequest, request); } - - + + /** * This retrieves the files in the course folder - * @response.representation.200.doc The list of files + * @response.representation.200.doc The list of files * @response.representation.401.doc The roles of the authenticated user are not sufficient - * @response.representation.404.doc The course not found + * @response.representation.404.doc The course not found * @param courseId The course resourceable's id * @param uri The uri infos * @param httpRequest The HTTP request @@ -163,13 +170,13 @@ public class CourseResourceFolderWebService { @Context HttpServletRequest httpRequest, @Context Request request) { return getFiles(courseId, Collections.<PathSegment>emptyList(), FolderType.COURSE_FOLDER, uriInfo, httpRequest, request); } - + /** * This retrieves the files in the course folder - * @response.representation.200.doc The list of files + * @response.representation.200.doc The list of files * @response.representation.401.doc The roles of the authenticated user are not sufficient - * @response.representation.404.doc The course or the file not found - * @response.representation.406.doc The course node is not acceptable to copy a file + * @response.representation.404.doc The course or the file not found + * @response.representation.406.doc The course node is not acceptable to copy a file * @param courseId The course resourceable's id * @param path The path of the file or directory * @param uri The uri infos @@ -184,15 +191,15 @@ public class CourseResourceFolderWebService { @Context UriInfo uriInfo, @Context HttpServletRequest httpRequest, @Context Request request) { return getFiles(courseId, path, FolderType.COURSE_FOLDER, uriInfo, httpRequest, request); } - + /** * This attaches the uploaded file(s) to the supplied folder id. - * @response.representation.mediaType multipart/form-data - * @response.representation.doc The file - * @response.representation.200.doc The file is correctly saved + * @response.representation.mediaType multipart/form-data + * @response.representation.doc The file + * @response.representation.200.doc The file is correctly saved * @response.representation.401.doc The roles of the authenticated user are not sufficient - * @response.representation.404.doc The course or course node not found - * @response.representation.406.doc The course node is not acceptable to copy a file + * @response.representation.404.doc The course or course node not found + * @response.representation.406.doc The course node is not acceptable to copy a file * @param courseId The course resourceable's id * @param filename The filename * @param file The file resource to upload @@ -206,15 +213,15 @@ public class CourseResourceFolderWebService { @Context HttpServletRequest request) { return attachFileToCourseFolder(courseId, Collections.<PathSegment>emptyList(), request); } - + /** * This attaches the uploaded file(s) to the supplied folder id at the specified path. - * @response.representation.mediaType multipart/form-data - * @response.representation.doc The file - * @response.representation.200.doc The file is correctly saved + * @response.representation.mediaType multipart/form-data + * @response.representation.doc The file + * @response.representation.200.doc The file is correctly saved * @response.representation.401.doc The roles of the authenticated user are not sufficient - * @response.representation.404.doc The course or course node not found - * @response.representation.406.doc The course node is not acceptable to copy a file + * @response.representation.404.doc The course or course node not found + * @response.representation.406.doc The course node is not acceptable to copy a file * @param courseId The course resourceable's id * @param path The path of the file * @param filename The filename @@ -229,15 +236,15 @@ public class CourseResourceFolderWebService { @Context HttpServletRequest request) { return attachFileToCourseFolder(courseId, path, request); } - + /** * This attaches the uploaded file(s) to the supplied folder id at the root level - * @response.representation.mediaType multipart/form-data - * @response.representation.doc The file - * @response.representation.200.doc The file is correctly saved + * @response.representation.mediaType multipart/form-data + * @response.representation.doc The file + * @response.representation.200.doc The file is correctly saved * @response.representation.401.doc The roles of the authenticated user are not sufficient - * @response.representation.404.doc The course or course node not found - * @response.representation.406.doc The course node is not acceptable to copy a file + * @response.representation.404.doc The course or course node not found + * @response.representation.406.doc The course node is not acceptable to copy a file * @param courseId The course resourceable's id * @param nodeId The id for the folder that will contain the file(s) * @param filename The filename @@ -252,15 +259,15 @@ public class CourseResourceFolderWebService { @Context HttpServletRequest request) { return attachFileToCourseFolder(courseId, Collections.<PathSegment>emptyList(), request); } - + /** * This attaches the uploaded file(s) to the supplied folder id at the specified path - * @response.representation.mediaType multipart/form-data - * @response.representation.doc The file - * @response.representation.200.doc The file is correctly saved + * @response.representation.mediaType multipart/form-data + * @response.representation.doc The file + * @response.representation.200.doc The file is correctly saved * @response.representation.401.doc The roles of the authenticated user are not sufficient - * @response.representation.404.doc The course or course node not found - * @response.representation.406.doc The course node is not acceptable to copy a file + * @response.representation.404.doc The course or course node not found + * @response.representation.406.doc The course node is not acceptable to copy a file * @param courseId The course resourceable's id * @param nodeId The id for the folder that will contain the file(s) * @param filename The filename @@ -275,7 +282,7 @@ public class CourseResourceFolderWebService { @Context HttpServletRequest request) { return attachFileToCourseFolder(courseId, path, request); } - + private Response attachFileToCourseFolder(Long courseId, List<PathSegment> path, HttpServletRequest request) { MultipartReader partsReader = null; @@ -292,17 +299,17 @@ public class CourseResourceFolderWebService { MultipartReader.closeQuietly(partsReader); } } - + private Response attachFileToCourseFolder(Long courseId, List<PathSegment> path, String filename, InputStream file, HttpServletRequest request) { if(!isAuthor(request)) { return Response.serverError().status(Status.UNAUTHORIZED).build(); } - + ICourse course = CoursesWebService.loadCourse(courseId); if(course == null) { return Response.serverError().status(Status.NOT_FOUND).build(); } - + VFSContainer container = course.getCourseFolderContainer(); for(PathSegment segment:path) { VFSItem item = container.resolve(segment.getPath()); @@ -329,7 +336,7 @@ public class CourseResourceFolderWebService { if(locked) { return Response.serverError().status(Status.UNAUTHORIZED).build(); } - + if (existingVFSItem instanceof Versionable && ((Versionable)existingVFSItem).getVersions().isVersioned()) { Versionable existingVersionableItem = (Versionable)existingVFSItem; boolean ok = existingVersionableItem.getVersions().addVersion(ureq.getIdentity(), "REST upload", file); @@ -354,7 +361,7 @@ public class CourseResourceFolderWebService { } else { newFile = container.createChildContainer(filename); } - + if(newFile instanceof MetaTagged && ((MetaTagged)newFile).getMetaInfo() != null) { MetaInfo infos = ((MetaTagged)newFile).getMetaInfo(); infos.setAuthor(ureq.getIdentity()); @@ -363,31 +370,43 @@ public class CourseResourceFolderWebService { return Response.ok().build(); } - + public Response getFiles(Long courseId, List<PathSegment> path, FolderType type, UriInfo uriInfo, HttpServletRequest httpRequest, Request request) { if(!isAuthor(httpRequest)) { return Response.serverError().status(Status.UNAUTHORIZED).build(); } - + ICourse course = CoursesWebService.loadCourse(courseId); if(course == null) { return Response.serverError().status(Status.NOT_FOUND).build(); } - + VFSContainer container = null; + RepositoryEntry re = null; switch(type) { case COURSE_FOLDER: container = course.getCourseFolderContainer(); break; - case SHARED_FOLDER: + case SHARED_FOLDER: { container = null; + String sfSoftkey = course.getCourseConfig().getSharedFolderSoftkey(); + OLATResource sharedResource = CoreSpringFactory.getImpl(RepositoryService.class).loadRepositoryEntryResourceBySoftKey(sfSoftkey); + if (sharedResource != null) { + re = CoreSpringFactory.getImpl(RepositoryService.class).loadByResourceKey(sharedResource.getKey()); + container = SharedFolderManager.getInstance().getNamedSharedFolder(re, true); + CourseConfig courseConfig = course.getCourseConfig(); + if(courseConfig.isSharedFolderReadOnlyMount()) { + container.setLocalSecurityCallback(new ReadOnlyCallback()); + } + } break; + } } - + if(container == null) { return Response.serverError().status(Status.NOT_FOUND).build(); } - + VFSLeaf leaf = null; for(PathSegment seg:path) { VFSItem item = container.resolve(seg.getPath()); @@ -398,7 +417,7 @@ public class CourseResourceFolderWebService { container = (VFSContainer)item; } } - + if(leaf != null) { Date lastModified = new Date(leaf.getLastModified()); Response.ResponseBuilder response = request.evaluatePreconditions(lastModified); @@ -416,16 +435,19 @@ public class CourseResourceFolderWebService { for(VFSItem item:items) { UriBuilder baseUriBuilder = uriInfo.getBaseUriBuilder(); UriBuilder repoUri = baseUriBuilder.path(CourseResourceFolderWebService.class).path("files"); + if (type.equals(FolderType.SHARED_FOLDER) && re != null) { + repoUri = baseUriBuilder.replacePath("restapi").path(SharedFolderWebService.class).path(re.getKey().toString()).path("files"); + } for(PathSegment pathSegment:path) { repoUri.path(pathSegment.getPath()); } String uri = repoUri.path(item.getName()).build(courseId).toString(); links[count++] = new LinkVO("self", uri, item.getName()); } - + return Response.ok(links).build(); } - + public enum FolderType { COURSE_FOLDER, SHARED_FOLDER diff --git a/src/main/java/org/olat/restapi/support/vo/FileVO.java b/src/main/java/org/olat/restapi/support/vo/FileVO.java index 475c29259a4088c5c43a17543c13f0fa0bffb799..9c625e934e11017d743991207f9ab0530e27e35d 100644 --- a/src/main/java/org/olat/restapi/support/vo/FileVO.java +++ b/src/main/java/org/olat/restapi/support/vo/FileVO.java @@ -32,7 +32,6 @@ import javax.xml.bind.annotation.XmlRootElement; * Initial Date: 27 jan. 2011 <br> * @author srosse, stephane.rosse@frentix.com, www.frentix.com */ -//fxdiff Folder @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "link") public class FileVO extends LinkVO { diff --git a/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml b/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml index 433af65ae44df473b6c36d697c91f55c5cbab12b..6dc91bcec10bdce6b6e85f1c85dc902e647e264f 100644 --- a/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml +++ b/src/main/java/org/olat/upgrade/_spring/databaseUpgradeContext.xml @@ -136,6 +136,10 @@ <constructor-arg index="0" value="OLAT_11.3.0" /> <property name="alterDbStatements" value="alter_11_2_x_to_11_3_0.sql" /> </bean> + <bean id="database_upgrade_11_5_0" class="org.olat.upgrade.DatabaseUpgrade"> + <constructor-arg index="0" value="OLAT_11.5.0" /> + <property name="alterDbStatements" value="alter_11_4_x_to_11_5_0.sql" /> + </bean> </list> </property> </bean> diff --git a/src/main/resources/META-INF/persistence.xml b/src/main/resources/META-INF/persistence.xml index af690253fee95350bb7bbd3a21675e8349507a11..5afa943412c9708cfc306f61fb7e16fce5eae1ff 100644 --- a/src/main/resources/META-INF/persistence.xml +++ b/src/main/resources/META-INF/persistence.xml @@ -32,14 +32,6 @@ <mapping-file>org/olat/course/assessment/model/UserEfficiencyStatementImpl.hbm.xml</mapping-file> <mapping-file>org/olat/modules/openmeetings/model/OpenMeetingsReference.hbm.xml</mapping-file> <mapping-file>org/olat/properties/Property.hbm.xml</mapping-file> - <mapping-file>org/olat/course/statistic/daily/DailyStat.hbm.xml</mapping-file> - <mapping-file>org/olat/course/statistic/dayofweek/DayOfWeekStat.hbm.xml</mapping-file> - <mapping-file>org/olat/course/statistic/hourofday/HourOfDayStat.hbm.xml</mapping-file> - <mapping-file>org/olat/course/statistic/studylevel/StudyLevelStat.hbm.xml</mapping-file> - <mapping-file>org/olat/course/statistic/studybranch3/StudyBranch3Stat.hbm.xml</mapping-file> - <mapping-file>org/olat/course/statistic/weekly/WeeklyStat.hbm.xml</mapping-file> - <mapping-file>org/olat/course/statistic/homeorg/HomeOrgStat.hbm.xml</mapping-file> - <mapping-file>org/olat/course/statistic/orgtype/OrgTypeStat.hbm.xml</mapping-file> <mapping-file>org/olat/portfolio/model/artefacts/AbstractArtefact.hbm.xml</mapping-file> <mapping-file>org/olat/modules/fo/portfolio/ForumArtefact.hbm.xml</mapping-file> <mapping-file>org/olat/modules/wiki/portfolio/WikiArtefact.hbm.xml</mapping-file> @@ -106,6 +98,14 @@ <class>org.olat.course.certificate.model.CertificateStandalone</class> <class>org.olat.course.certificate.model.CertificateLightImpl</class> <class>org.olat.course.certificate.model.CertificateTemplateImpl</class> + <class>org.olat.course.statistic.daily.DailyStat</class> + <class>org.olat.course.statistic.dayofweek.DayOfWeekStat</class> + <class>org.olat.course.statistic.homeorg.HomeOrgStat</class> + <class>org.olat.course.statistic.hourofday.HourOfDayStat</class> + <class>org.olat.course.statistic.orgtype.OrgTypeStat</class> + <class>org.olat.course.statistic.studybranch3.StudyBranch3Stat</class> + <class>org.olat.course.statistic.studylevel.StudyLevelStat</class> + <class>org.olat.course.statistic.weekly.WeeklyStat</class> <class>org.olat.group.model.ContactView</class> <class>org.olat.group.model.ContactViewExtended</class> <class>org.olat.group.model.BusinessGroupShortImpl</class> diff --git a/src/main/resources/database/mysql/alter_11_4_x_to_11_5_0.sql b/src/main/resources/database/mysql/alter_11_4_x_to_11_5_0.sql new file mode 100644 index 0000000000000000000000000000000000000000..58b507fe8bf9aaca29f4dbc9582dee876eed8b45 --- /dev/null +++ b/src/main/resources/database/mysql/alter_11_4_x_to_11_5_0.sql @@ -0,0 +1,3 @@ +alter table o_qti_assessmentitem_session add column q_coach_comment mediumtext; + +alter table o_as_entry add column a_num_assessment_docs bigint not null default 0; \ No newline at end of file diff --git a/src/main/resources/database/mysql/setupDatabase.sql b/src/main/resources/database/mysql/setupDatabase.sql index ec353d4e2f686ef9467f4d19e8afb344ac98413f..2191658e6e8b0c356d912a459d6cd7479b82f8ae 100644 --- a/src/main/resources/database/mysql/setupDatabase.sql +++ b/src/main/resources/database/mysql/setupDatabase.sql @@ -1171,6 +1171,7 @@ create table o_as_entry ( a_completion float(65,30), a_comment text, a_coach_comment text, + a_num_assessment_docs bigint not null default 0, fk_entry bigint not null, a_subident varchar(64), fk_reference_entry bigint, @@ -1316,8 +1317,8 @@ create table o_vid_transcoding ( create table o_vid_metadata ( id bigint not null auto_increment, - creationdate timestamp not null, - lastmodified timestamp not null, + creationdate datetime not null, + lastmodified datetime not null, vid_width bigint default null, vid_height bigint default null, vid_size bigint default null, @@ -1420,7 +1421,7 @@ create table o_mapper ( expirationdate datetime, mapper_uuid varchar(64), orig_session_id varchar(64), - xml_config TEXT, + xml_config text, primary key (id) ); @@ -1457,6 +1458,7 @@ create table o_qti_assessmentitem_session ( q_duration bigint, q_score float(65,30) default null, q_manual_score float(65,30) default null, + q_coach_comment mediumtext default null, q_passed bit default null, q_storage varchar(1024), fk_assessmenttest_session bigint not null, diff --git a/src/main/resources/database/oracle/alter_11_4_x_to_11_5_0.sql b/src/main/resources/database/oracle/alter_11_4_x_to_11_5_0.sql new file mode 100644 index 0000000000000000000000000000000000000000..f3522e7696971685f5ad9f3c715ceb7e38d382d4 --- /dev/null +++ b/src/main/resources/database/oracle/alter_11_4_x_to_11_5_0.sql @@ -0,0 +1,3 @@ +alter table o_qti_assessmentitem_session add q_coach_comment CLOB; + +alter table o_as_entry add a_num_assessment_docs number(20) default 0 not null; \ No newline at end of file diff --git a/src/main/resources/database/oracle/setupDatabase.sql b/src/main/resources/database/oracle/setupDatabase.sql index 29db00010194e95f4ee5aacb532705767d835c96..d758091c722bbac0cd796df1ff4beb7c71803f77 100644 --- a/src/main/resources/database/oracle/setupDatabase.sql +++ b/src/main/resources/database/oracle/setupDatabase.sql @@ -1199,6 +1199,7 @@ create table o_as_entry ( a_completion float, a_comment clob, a_coach_comment clob, + a_num_assessment_docs number(20) default 0 not null, fk_entry number(20) not null, a_subident varchar2(64 char), fk_reference_entry number(20), @@ -1329,17 +1330,17 @@ create table o_goto_registrant ( ); create table o_vid_transcoding ( - id int8 not null, + id number(20) not null, creationdate timestamp not null, lastmodified timestamp not null, - vid_resolution int8 default null, - vid_width int8 default null, - vid_height int8 default null, - vid_size int8 default null, + vid_resolution number(20) default null, + vid_width number(20) default null, + vid_height number(20) default null, + vid_size number(20) default null, vid_format varchar(128) default null, - vid_status int8 default null, + vid_status number(20) default null, vid_transcoder varchar(128) default null, - fk_resource_id int8 not null, + fk_resource_id number(20) not null, primary key (id) ); @@ -1484,6 +1485,7 @@ create table o_qti_assessmentitem_session ( q_duration number(20), q_score decimal default null, q_manual_score decimal default null, + q_coach_comment CLOB, q_passed number default null, q_storage varchar2(1024 char), fk_assessmenttest_session number(20) not null, @@ -1898,11 +1900,11 @@ create table o_rem_reminder ( ); create table o_rem_sent_reminder ( - id int8 not null, + id number(20) not null, creationdate timestamp not null, r_status varchar(16), - fk_identity int8 not null, - fk_reminder int8 not null, + fk_identity number(20) not null, + fk_reminder number(20) not null, primary key (id) ); diff --git a/src/main/resources/database/postgresql/alter_11_4_x_to_11_5_0.sql b/src/main/resources/database/postgresql/alter_11_4_x_to_11_5_0.sql new file mode 100644 index 0000000000000000000000000000000000000000..361dcd324e1afedc03d6f8ed08a1b8a024f55e5d --- /dev/null +++ b/src/main/resources/database/postgresql/alter_11_4_x_to_11_5_0.sql @@ -0,0 +1,3 @@ +alter table o_qti_assessmentitem_session add column q_coach_comment text; + +alter table o_as_entry add column a_num_assessment_docs int8 not null default 0; \ No newline at end of file diff --git a/src/main/resources/database/postgresql/setupDatabase.sql b/src/main/resources/database/postgresql/setupDatabase.sql index 0910aee819ba9c3f166fa7ce89878a97fa35f810..cb98cf9c9e72447f457effee3d801c8e7480d9fa 100644 --- a/src/main/resources/database/postgresql/setupDatabase.sql +++ b/src/main/resources/database/postgresql/setupDatabase.sql @@ -1169,6 +1169,7 @@ create table o_as_entry ( a_completion float(24), a_comment text, a_coach_comment text, + a_num_assessment_docs int8 not null default 0, fk_entry int8 not null, a_subident varchar(64), fk_reference_entry int8, @@ -1456,6 +1457,7 @@ create table o_qti_assessmentitem_session ( q_duration int8, q_score decimal default null, q_manual_score decimal default null, + q_coach_comment text default null, q_passed bool default null, q_storage varchar(1024), fk_assessmenttest_session int8 not null, diff --git a/src/main/resources/serviceconfig/olat.properties b/src/main/resources/serviceconfig/olat.properties index fdc08015bc411153b32b2d9852ad559fc0b78813..4fdd1e4406d85b51708a4346b0251f1bd481eb1b 100644 --- a/src/main/resources/serviceconfig/olat.properties +++ b/src/main/resources/serviceconfig/olat.properties @@ -1032,8 +1032,8 @@ ldap.learningResourceManagerRoleValue= # Build properties ##### application.name=OpenOLAT -build.version=11.4.3 -build.identifier=openolat1143-dev +build.version=11.5.0 +build.identifier=openolat1150-dev build.repo.revision=local-devel ##### @@ -1219,6 +1219,16 @@ vc.openmeetings.customerid=1 vc.gotomeetings.enabled=false vc.gotomeetings.consumerKey= +######################################## +# Options for card2brain +######################################## +card2brain.enabled=false +card2brain.enterpriseLoginEnabled=false +card2brain.privateLoginEnabled=false +card2brain.baseUrl=https://card2brain.ch/grails/SSO/lti.dispatch?alias=%s +card2brain.peekViewUrl=https://card2brain.ch/box/%s/embed +card2brain.verifyLtiUrl=https://card2brain.ch/grails/SSO/verifyLti.dispatch + ######################################## # Options for monitoring ######################################## diff --git a/src/main/webapp/static/js/iframeResizer/iframeResizer.min.js b/src/main/webapp/static/js/iframeResizer/iframeResizer.min.js new file mode 100644 index 0000000000000000000000000000000000000000..7fe4b743404ea61938abf1caf120528d19df4b2b --- /dev/null +++ b/src/main/webapp/static/js/iframeResizer/iframeResizer.min.js @@ -0,0 +1,9 @@ +/*! iFrame Resizer (iframeSizer.min.js ) - v3.5.14 - 2017-03-30 + * Desc: Force cross domain iframes to size to content. + * Requires: iframeResizer.contentWindow.min.js to be loaded into the target frame. + * Copyright: (c) 2017 David J. Bradshaw - dave@bradshaw.net + * License: MIT + */ + +!function(a){"use strict";function b(a,b,c){"addEventListener"in window?a.addEventListener(b,c,!1):"attachEvent"in window&&a.attachEvent("on"+b,c)}function c(a,b,c){"removeEventListener"in window?a.removeEventListener(b,c,!1):"detachEvent"in window&&a.detachEvent("on"+b,c)}function d(){var a,b=["moz","webkit","o","ms"];for(a=0;a<b.length&&!N;a+=1)N=window[b[a]+"RequestAnimationFrame"];N||h("setup","RequestAnimationFrame not supported")}function e(a){var b="Host page: "+a;return window.top!==window.self&&(b=window.parentIFrame&&window.parentIFrame.getId?window.parentIFrame.getId()+": "+a:"Nested host page: "+a),b}function f(a){return K+"["+e(a)+"]"}function g(a){return P[a]?P[a].log:G}function h(a,b){k("log",a,b,g(a))}function i(a,b){k("info",a,b,g(a))}function j(a,b){k("warn",a,b,!0)}function k(a,b,c,d){!0===d&&"object"==typeof window.console&&console[a](f(b),c)}function l(a){function d(){function a(){s(U),p(V),I("resizedCallback",U)}f("Height"),f("Width"),t(a,U,"init")}function e(){var a=T.substr(L).split(":");return{iframe:P[a[0]].iframe,id:a[0],height:a[1],width:a[2],type:a[3]}}function f(a){var b=Number(P[V]["max"+a]),c=Number(P[V]["min"+a]),d=a.toLowerCase(),e=Number(U[d]);h(V,"Checking "+d+" is in range "+c+"-"+b),c>e&&(e=c,h(V,"Set "+d+" to min value")),e>b&&(e=b,h(V,"Set "+d+" to max value")),U[d]=""+e}function g(){function b(){function a(){var a=0,b=!1;for(h(V,"Checking connection is from allowed list of origins: "+d);a<d.length;a++)if(d[a]===c){b=!0;break}return b}function b(){var a=P[V].remoteHost;return h(V,"Checking connection is from: "+a),c===a}return d.constructor===Array?a():b()}var c=a.origin,d=P[V].checkOrigin;if(d&&""+c!="null"&&!b())throw new Error("Unexpected message received from: "+c+" for "+U.iframe.id+". Message was: "+a.data+". This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.");return!0}function k(){return K===(""+T).substr(0,L)&&T.substr(L).split(":")[0]in P}function l(){var a=U.type in{"true":1,"false":1,undefined:1};return a&&h(V,"Ignoring init message from meta parent page"),a}function w(a){return T.substr(T.indexOf(":")+J+a)}function y(a){h(V,"MessageCallback passed: {iframe: "+U.iframe.id+", message: "+a+"}"),I("messageCallback",{iframe:U.iframe,message:JSON.parse(a)}),h(V,"--")}function z(){var a=document.body.getBoundingClientRect(),b=U.iframe.getBoundingClientRect();return JSON.stringify({iframeHeight:b.height,iframeWidth:b.width,clientHeight:Math.max(document.documentElement.clientHeight,window.innerHeight||0),clientWidth:Math.max(document.documentElement.clientWidth,window.innerWidth||0),offsetTop:parseInt(b.top-a.top,10),offsetLeft:parseInt(b.left-a.left,10),scrollTop:window.pageYOffset,scrollLeft:window.pageXOffset})}function A(a,b){function c(){u("Send Page Info","pageInfo:"+z(),a,b)}x(c,32)}function B(){function a(a,b){function c(){P[f]?A(P[f].iframe,f):d()}["scroll","resize"].forEach(function(d){h(f,a+d+" listener for sendPageInfo"),b(window,d,c)})}function d(){a("Remove ",c)}function e(){a("Add ",b)}var f=V;e(),P[f].stopPageInfo=d}function C(){P[V]&&P[V].stopPageInfo&&(P[V].stopPageInfo(),delete P[V].stopPageInfo)}function D(){var a=!0;return null===U.iframe&&(j(V,"IFrame ("+U.id+") not found"),a=!1),a}function E(a){var b=a.getBoundingClientRect();return o(V),{x:Math.floor(Number(b.left)+Number(M.x)),y:Math.floor(Number(b.top)+Number(M.y))}}function F(a){function b(){M=f,G(),h(V,"--")}function c(){return{x:Number(U.width)+e.x,y:Number(U.height)+e.y}}function d(){window.parentIFrame?window.parentIFrame["scrollTo"+(a?"Offset":"")](f.x,f.y):j(V,"Unable to scroll to requested position, window.parentIFrame not found")}var e=a?E(U.iframe):{x:0,y:0},f=c();h(V,"Reposition requested from iFrame (offset x:"+e.x+" y:"+e.y+")"),window.top!==window.self?d():b()}function G(){!1!==I("scrollCallback",M)?p(V):q()}function H(a){function b(){var a=E(f);h(V,"Moving to in page link (#"+d+") at x: "+a.x+" y: "+a.y),M={x:a.x,y:a.y},G(),h(V,"--")}function c(){window.parentIFrame?window.parentIFrame.moveToAnchor(d):h(V,"In page link #"+d+" not found and window.parentIFrame not found")}var d=a.split("#")[1]||"",e=decodeURIComponent(d),f=document.getElementById(e)||document.getElementsByName(e)[0];f?b():window.top!==window.self?c():h(V,"In page link #"+d+" not found")}function I(a,b){return m(V,a,b)}function N(){switch(P[V].firstRun&&S(),U.type){case"close":n(U.iframe);break;case"message":y(w(6));break;case"scrollTo":F(!1);break;case"scrollToOffset":F(!0);break;case"pageInfo":A(P[V].iframe,V),B();break;case"pageInfoStop":C();break;case"inPageLink":H(w(9));break;case"reset":r(U);break;case"init":d(),I("initCallback",U.iframe);break;default:d()}}function O(a){var b=!0;return P[a]||(b=!1,j(U.type+" No settings for "+a+". Message was: "+T)),b}function Q(){for(var a in P)u("iFrame requested init",v(a),document.getElementById(a),a)}function S(){P[V].firstRun=!1}var T=a.data,U={},V=null;"[iFrameResizerChild]Ready"===T?Q():k()?(U=e(),V=R=U.id,P[V].loaded=!0,!l()&&O(V)&&(h(V,"Received: "+T),D()&&g()&&N())):i(V,"Ignored: "+T)}function m(a,b,c){var d=null,e=null;if(P[a]){if(d=P[a][b],"function"!=typeof d)throw new TypeError(b+" on iFrame["+a+"] is not a function");e=d(c)}return e}function n(a){var b=a.id;h(b,"Removing iFrame: "+b),a.parentNode&&a.parentNode.removeChild(a),m(b,"closedCallback",b),h(b,"--"),delete P[b]}function o(b){null===M&&(M={x:window.pageXOffset!==a?window.pageXOffset:document.documentElement.scrollLeft,y:window.pageYOffset!==a?window.pageYOffset:document.documentElement.scrollTop},h(b,"Get page position: "+M.x+","+M.y))}function p(a){null!==M&&(window.scrollTo(M.x,M.y),h(a,"Set page position: "+M.x+","+M.y),q())}function q(){M=null}function r(a){function b(){s(a),u("reset","reset",a.iframe,a.id)}h(a.id,"Size reset requested by "+("init"===a.type?"host page":"iFrame")),o(a.id),t(b,a,"reset")}function s(a){function b(b){a.iframe.style[b]=a[b]+"px",h(a.id,"IFrame ("+e+") "+b+" set to "+a[b]+"px")}function c(b){H||"0"!==a[b]||(H=!0,h(e,"Hidden iFrame detected, creating visibility listener"),y())}function d(a){b(a),c(a)}var e=a.iframe.id;P[e]&&(P[e].sizeHeight&&d("height"),P[e].sizeWidth&&d("width"))}function t(a,b,c){c!==b.type&&N?(h(b.id,"Requesting animation frame"),N(a)):a()}function u(a,b,c,d,e){function f(){var e=P[d].targetOrigin;h(d,"["+a+"] Sending msg to iframe["+d+"] ("+b+") targetOrigin: "+e),c.contentWindow.postMessage(K+b,e)}function g(){j(d,"["+a+"] IFrame("+d+") not found")}function i(){c&&"contentWindow"in c&&null!==c.contentWindow?f():g()}function k(){function a(){!P[d]||P[d].loaded||l||(l=!0,j(d,"IFrame has not responded within "+P[d].warningTimeout/1e3+" seconds. Check iFrameResizer.contentWindow.js has been loaded in iFrame. This message can be ingored if everything is working, or you can set the warningTimeout option to a higher value or zero to suppress this warning."))}e&&P[d].warningTimeout&&(P[d].msgTimeout=setTimeout(a,P[d].warningTimeout))}var l=!1;d=d||c.id,P[d]&&(i(),k())}function v(a){return a+":"+P[a].bodyMarginV1+":"+P[a].sizeWidth+":"+P[a].log+":"+P[a].interval+":"+P[a].enablePublicMethods+":"+P[a].autoResize+":"+P[a].bodyMargin+":"+P[a].heightCalculationMethod+":"+P[a].bodyBackground+":"+P[a].bodyPadding+":"+P[a].tolerance+":"+P[a].inPageLinks+":"+P[a].resizeFrom+":"+P[a].widthCalculationMethod}function w(c,d){function e(){function a(a){1/0!==P[x][a]&&0!==P[x][a]&&(c.style[a]=P[x][a]+"px",h(x,"Set "+a+" = "+P[x][a]+"px"))}function b(a){if(P[x]["min"+a]>P[x]["max"+a])throw new Error("Value for min"+a+" can not be greater than max"+a)}b("Height"),b("Width"),a("maxHeight"),a("minHeight"),a("maxWidth"),a("minWidth")}function f(){var a=d&&d.id||S.id+F++;return null!==document.getElementById(a)&&(a+=F++),a}function g(a){return R=a,""===a&&(c.id=a=f(),G=(d||{}).log,R=a,h(a,"Added missing iframe ID: "+a+" ("+c.src+")")),a}function i(){switch(h(x,"IFrame scrolling "+(P[x].scrolling?"enabled":"disabled")+" for "+x),c.style.overflow=!1===P[x].scrolling?"hidden":"auto",P[x].scrolling){case!0:c.scrolling="yes";break;case!1:c.scrolling="no";break;default:c.scrolling=P[x].scrolling}}function k(){("number"==typeof P[x].bodyMargin||"0"===P[x].bodyMargin)&&(P[x].bodyMarginV1=P[x].bodyMargin,P[x].bodyMargin=""+P[x].bodyMargin+"px")}function l(){var a=P[x].firstRun,b=P[x].heightCalculationMethod in O;!a&&b&&r({iframe:c,height:0,width:0,type:"init"})}function m(){Function.prototype.bind&&(P[x].iframe.iFrameResizer={close:n.bind(null,P[x].iframe),resize:u.bind(null,"Window resize","resize",P[x].iframe),moveToAnchor:function(a){u("Move to anchor","moveToAnchor:"+a,P[x].iframe,x)},sendMessage:function(a){a=JSON.stringify(a),u("Send Message","message:"+a,P[x].iframe,x)}})}function o(d){function e(){u("iFrame.onload",d,c,a,!0),l()}b(c,"load",e),u("init",d,c,a,!0)}function p(a){if("object"!=typeof a)throw new TypeError("Options is not an object")}function q(a){for(var b in S)S.hasOwnProperty(b)&&(P[x][b]=a.hasOwnProperty(b)?a[b]:S[b])}function s(a){return""===a||"file://"===a?"*":a}function t(a){a=a||{},P[x]={firstRun:!0,iframe:c,remoteHost:c.src.split("/").slice(0,3).join("/")},p(a),q(a),P[x].targetOrigin=!0===P[x].checkOrigin?s(P[x].remoteHost):"*"}function w(){return x in P&&"iFrameResizer"in c}var x=g(c.id);w()?j(x,"Ignored iFrame, already setup."):(t(d),i(),e(),k(),o(v(x)),m())}function x(a,b){null===Q&&(Q=setTimeout(function(){Q=null,a()},b))}function y(){function a(){function a(a){function b(b){return"0px"===P[a].iframe.style[b]}function c(a){return null!==a.offsetParent}c(P[a].iframe)&&(b("height")||b("width"))&&u("Visibility change","resize",P[a].iframe,a)}for(var b in P)a(b)}function b(b){h("window","Mutation observed: "+b[0].target+" "+b[0].type),x(a,16)}function c(){var a=document.querySelector("body"),c={attributes:!0,attributeOldValue:!1,characterData:!0,characterDataOldValue:!1,childList:!0,subtree:!0},e=new d(b);e.observe(a,c)}var d=window.MutationObserver||window.WebKitMutationObserver;d&&c()}function z(a){function b(){B("Window "+a,"resize")}h("window","Trigger event: "+a),x(b,16)}function A(){function a(){B("Tab Visable","resize")}"hidden"!==document.visibilityState&&(h("document","Trigger event: Visiblity change"),x(a,16))}function B(a,b){function c(a){return"parent"===P[a].resizeFrom&&P[a].autoResize&&!P[a].firstRun}for(var d in P)c(d)&&u(a,b,document.getElementById(d),d)}function C(){b(window,"message",l),b(window,"resize",function(){z("resize")}),b(document,"visibilitychange",A),b(document,"-webkit-visibilitychange",A),b(window,"focusin",function(){z("focus")}),b(window,"focus",function(){z("focus")})}function D(){function b(a,b){function c(){if(!b.tagName)throw new TypeError("Object is not a valid DOM element");if("IFRAME"!==b.tagName.toUpperCase())throw new TypeError("Expected <IFRAME> tag, found <"+b.tagName+">")}b&&(c(),w(b,a),e.push(b))}function c(a){a&&a.enablePublicMethods&&j("enablePublicMethods option has been removed, public methods are now always available in the iFrame")}var e;return d(),C(),function(d,f){switch(e=[],c(d),typeof f){case"undefined":case"string":Array.prototype.forEach.call(document.querySelectorAll(f||"iframe"),b.bind(a,d));break;case"object":b(d,f);break;default:throw new TypeError("Unexpected data type ("+typeof f+")")}return e}}function E(a){a.fn?a.fn.iFrameResize||(a.fn.iFrameResize=function(a){function b(b,c){w(c,a)}return this.filter("iframe").each(b).end()}):i("","Unable to bind to jQuery, it is not fully loaded.")}if("undefined"!=typeof window){var F=0,G=!1,H=!1,I="message",J=I.length,K="[iFrameSizer]",L=K.length,M=null,N=window.requestAnimationFrame,O={max:1,scroll:1,bodyScroll:1,documentElementScroll:1},P={},Q=null,R="Host Page",S={autoResize:!0,bodyBackground:null,bodyMargin:null,bodyMarginV1:8,bodyPadding:null,checkOrigin:!0,inPageLinks:!1,enablePublicMethods:!0,heightCalculationMethod:"bodyOffset",id:"iFrameResizer",interval:32,log:!1,maxHeight:1/0,maxWidth:1/0,minHeight:0,minWidth:0,resizeFrom:"parent",scrolling:!1,sizeHeight:!0,sizeWidth:!1,warningTimeout:5e3,tolerance:0,widthCalculationMethod:"scroll",closedCallback:function(){},initCallback:function(){},messageCallback:function(){j("MessageCallback function not defined")},resizedCallback:function(){},scrollCallback:function(){return!0}};window.jQuery&&E(window.jQuery),"function"==typeof define&&define.amd?define([],D):"object"==typeof module&&"object"==typeof module.exports?module.exports=D():window.iFrameResize=window.iFrameResize||D()}}(); +//# sourceMappingURL=iframeResizer.map \ No newline at end of file diff --git a/src/main/webapp/static/js/jquery/qti/jquery.match_dnd.js b/src/main/webapp/static/js/jquery/qti/jquery.match_dnd.js new file mode 100644 index 0000000000000000000000000000000000000000..7236f1823f5fd9def644a49388210fcb9e546a8c --- /dev/null +++ b/src/main/webapp/static/js/jquery/qti/jquery.match_dnd.js @@ -0,0 +1,311 @@ +(function ($) { + $.fn.matchInteractionDnd = function(options) { + var settings = $.extend({ + responseIdentifier: null, + formDispatchFieldId: null, + maxAssociations: 1, + responseValue: null, + opened: false + }, options ); + + try { + if(typeof settings.responseValue != "undefined" && settings.responseValue.length > 0) { + drawMatch(this, settings); + } + if(settings.opened) { + match(this, settings); + } + } catch(e) { + if(window.console) console.log(e); + } + return this; + }; + + function drawMatch($obj, settings) { + var containerId = $obj.attr('id'); + var associationPairs = settings.responseValue.split(','); + var associationEls = jQuery('#' + containerId); + for(var i=0; i<associationPairs.length; i++) { + var associationPair = associationPairs[i].split(' '); + var sourceId = associationPair[0]; + var targetId = associationPair[1]; + + var sourceEl = jQuery("#" + containerId + " .o_match_dnd_sources li[data-qti-id='" + sourceId + "']"); + if(needToBeAvailable(sourceEl, containerId)) { + sourceEl = jQuery(sourceEl).clone(); + } + var targetEl = jQuery("#" + containerId + " .o_match_dnd_targets ul[data-qti-id='" + targetId + "']"); + + jQuery(sourceEl).addClass('oo-choosed'); + jQuery(targetEl).addClass('oo-choosed'); + jQuery(targetEl) + .addClass('oo-filled') + .append(sourceEl); + } + + recalculate(containerId, settings); + + if(settings.unrestricted && settings.opened) { + addNewAssociationBoxAndEvents(containerId, settings); + } + }; + + function match($obj, settings) { + var containerId = $obj.attr('id'); + initializeSourcePanelEvents(containerId, settings); + var sources = jQuery("#" + containerId + " .o_match_dnd_source"); + initializeSourceEvents(sources, containerId, settings); + var targets = jQuery("#" + containerId + " .o_match_dnd_target"); + initializeTargetEvents(targets, containerId, settings); + }; + + initializeSourcePanelEvents = function(containerId, settings) { + jQuery("#" + containerId + " .o_match_dnd_sources").droppable({ + tolerance: 'pointer', + over: function(event, ui) { + jQuery(this).addClass('oo-accepted'); + }, + out: function(event, ui) { + jQuery(this).removeClass('oo-accepted'); + }, + drop: function(event, ui) { + var box = jQuery(this); + box.removeClass('oo-accepted'); + + var choiceEl = jQuery(ui.draggable) + var choiceQtiId = choiceEl.data('qti-id'); + var choiceInSources = box.find("li[data-qti-id='" + choiceQtiId + "']"); + if(choiceInSources.size() > 0) { + if(choiceEl.parents(".o_match_dnd_sources").size() == 0) { + choiceEl.remove(); + } + } else { + choiceEl.appendTo(box); + } + recalculate(containerId, settings); + setFlexiFormDirty(settings.formDispatchFieldId, false); + } + }).on('click', {formId: settings.formDispatchFieldId}, setFlexiFormDirtyByListener); + + } + + initializeSourceEvents = function(jElements, containerId, settings) { + jElements.on('click', function(e, el) { + var itemEl = jQuery(this); + if(!itemEl.hasClass('oo-choosed') && !itemEl.hasClass('oo-selected')) { + jQuery("#" + containerId + " .o_match_dnd_sources .o_match_dnd_source").each(function(index, el) { + jQuery(el).removeClass('oo-selected'); + }); + itemEl.addClass('oo-selected'); + } else if(itemEl.parents(".o_match_dnd_targets").size() > 0 && !itemEl.hasClass('oo-dropped-mrk')) { + removeSourceFromTarget(itemEl, containerId); + recalculate(containerId, settings); + setFlexiFormDirty(settings.formDispatchFieldId, false); + } + }).draggable({ + containment: "#" + containerId, + scroll: false, + revert: "invalid", + cursorAt: { left: 5, top: 5 }, + start: function(event, ui) { + jQuery(ui.helper).removeClass('oo-dropped-mrk'); + }, + stop: function(event, ui) { + jQuery(this).css({'left': '0px', 'top': '0px', 'z-index': '' }); + jQuery(ui.helper).removeClass('oo-drag'); + }, + helper: function() { + var choiceEl = jQuery(this); + var boxed = choiceEl.parent('.o_match_dnd_target').size() > 0; + if(!boxed && needToBeAvailable(this, containerId)) { + choiceEl.removeClass('oo-selected'); + var cloned = choiceEl.clone();// need some click / drag listeners + jQuery(cloned) + .attr('id', 'n' + guid()) + .data('qti-cloned','true') + .addClass('oo-drag') + .addClass('oo-drag-mrk') + .css('z-index', 10) + .css('width', choiceEl.width()) + .css('height', choiceEl.height()); + return cloned; + } + choiceEl + .addClass('oo-drag') + .addClass('oo-drag-mrk') + .css('z-index', 10); + return choiceEl; + } + }).on('click', {formId: settings.formDispatchFieldId}, setFlexiFormDirtyByListener); + } + + needToBeAvailable = function(selectedEl, containerId) { + var choiceEl = jQuery(selectedEl); + if(choiceEl.parents(".o_match_dnd_target").size() > 0) { + return false; + } + var matchMax = choiceEl.data("qti-match-max"); + var gapId = choiceEl.data("qti-id"); + var currentUsed = jQuery("#" + containerId + " .o_match_dnd_targets li[data-qti-id='" + gapId + "']").size(); + return (matchMax == 0 || currentUsed + 1 < matchMax); + } + + initializeTargetEvents = function(jElements, containerId, settings) { + jElements.on('click', function(e, el) { + var box = jQuery(this); + var hasItems = jQuery(".o_associate_item", this).size(); + if(hasItems == 0) { + jQuery("#" + containerId + " .o_match_dnd_sources .oo-selected").each(function(index, selectedEl) { + var choiceEl = jQuery(selectedEl); + if(needToBeAvailable(selectedEl, containerId)) { + choiceEl.removeClass('oo-selected'); + moveSourceToTarget(choiceEl.clone(), box, containerId); + } else { + moveSourceToTarget(choiceEl, box, containerId); + } + }); + } + recalculate(containerId, settings); + setFlexiFormDirty(settings.formDispatchFieldId, false); + }).droppable({ + tolerance: "pointer", + accept: function(el) { + var choiceQtiId = jQuery(el).data('qti-id'); + //check if the source is already in the target + var dropAllowed = jQuery(".o_match_dnd_source[data-qti-id='" + choiceQtiId + "']", this).size() == 0; + if(dropAllowed) { + var targetMatchMax = jQuery(this).data("qti-match-max"); + if(targetMatchMax > 0) { + var filled = jQuery(".o_match_dnd_source", this).size(); + if(filled >= targetMatchMax) { + dropAllowed = false; + } + } + } + return dropAllowed; + }, + over: function(event, ui) { + jQuery(this).addClass('oo-accepted'); + }, + out: function(event, ui) { + jQuery(this).removeClass('oo-accepted'); + }, + drop: function(event, ui) { + var box = jQuery(this); + box.removeClass('oo-accepted'); + + var choiceEl= jQuery(ui.draggable); + //prevent 2x the same source + var choiceQtiId = choiceEl.data('qti-id'); + var currentItems = jQuery(".o_match_dnd_source[data-qti-id='" + choiceQtiId + "']", this).size(); + if(currentItems > 0) { + return; + } + + if(ui.helper != null && jQuery(ui.helper).data('qti-cloned') == 'true') { + choiceEl + .removeClass('oo-selected') + .removeClass('oo-drag'); + choiceEl = choiceEl.clone() + initializeSourceEvents(choiceEl, containerId, settings); + moveSourceToTarget(choiceEl, box, containerId); + } else { + choiceEl + .removeClass('oo-selected') + .removeClass('oo-drag'); + moveSourceToTarget(choiceEl, box, containerId); + } + //add (and remove later) drop marker to prevent click event with Firefox + choiceEl.addClass('oo-dropped-mrk'); + setTimeout(function() { + choiceEl.removeClass('oo-dropped-mrk'); + }, 100); + + recalculate(containerId, settings); + setFlexiFormDirty(settings.formDispatchFieldId, false); + } + }).on('click', {formId: settings.formDispatchFieldId}, setFlexiFormDirtyByListener); + }; + + moveSourceToTarget = function(sourceEl, box, containerId) { + var container = box.find("ul.o_match_dnd_target_drop_zone"); + sourceEl + .removeClass('oo-selected') + .css({'width' : 'auto', 'left': '0px', 'top': '0px', 'z-index': '' }) + .addClass('oo-choosed') + .appendTo(container); + box.addClass('oo-filled'); + }; + + removeSourceFromTarget = function(selectedEl, containerId) { + var jSelectedEl = jQuery(selectedEl); + jSelectedEl + .removeClass('oo-choosed'); + + var gapId = jSelectedEl.data('qti-id'); + var availableSources = jQuery("#" + containerId + " .o_match_dnd_sources li[data-qti-id='" + gapId + "']").size(); + if(availableSources == 0) { + jSelectedEl + .css({'width' : 'auto', 'left': '0px', 'top': '0px', 'z-index': '' }) + .appendTo(jQuery('#' + containerId +' .o_match_dnd_sources')); + } else { + jSelectedEl.remove(); + } + }; + + recalculate = function(containerId, settings) { + settings.matchCount = 0; + settings.matched = {}; + for(var key in settings.leftMap) { + settings.leftMap[key].matchCount = 0; + } + for(var key in settings.rightMap) { + settings.rightMap[key].matchCount = 0; + } + + var divContainer = jQuery('#' + containerId); + divContainer.find("input[type='hidden']").remove(); + jQuery("#" + containerId + " .o_match_dnd_target_drop_zone").each(function(index, dropBoxEl) { + jQuery(dropBoxEl).find('.o_match_dnd_source').each(function(jndex, droppedEl) { + var sourceId = jQuery(droppedEl).data('qti-id'); + var targetId = jQuery(dropBoxEl).data('qti-id'); + var inputElement = jQuery('<input type="hidden"/>') + .attr('name', 'qtiworks_response_' + settings.responseIdentifier) + .attr('value', sourceId + " " + targetId); + divContainer.prepend(inputElement); + }); + }); + }; + + function checkMatch(settings, inputElement) { + withCheckbox(settings, inputElement, function(inputElement, directedPair, left, right) { + if (inputElement.checked){ + var incremented = false; + if (left.matchMax != 0 && left.matchMax <= left.matchCount) { + inputElement.checked = false; + } + else { + left.matchCount++; + settings.matchCount++; + incremented = true; + } + + if (right.matchMax != 0 && right.matchMax <= right.matchCount) { + inputElement.checked = false; + } + else { + right.matchCount++; + if (!incremented) { + settings.matchCount++; + } + } + } + else { + settings.matchCount--; + left.matchCount--; + right.matchCount--; + } + updateDisabledStates(settings); + }); + } +}( jQuery )); \ No newline at end of file diff --git a/src/main/webapp/static/js/jquery/qti/jquery.qti.min.js b/src/main/webapp/static/js/jquery/qti/jquery.qti.min.js new file mode 100644 index 0000000000000000000000000000000000000000..4dd7274bd7065bdf829cc11a7a9656747a3b7cb2 --- /dev/null +++ b/src/main/webapp/static/js/jquery/qti/jquery.qti.min.js @@ -0,0 +1 @@ +(function(a){a.fn.associateInteraction=function(b){var c=a.extend({responseIdentifier:null,formDispatchFieldId:null,responseValue:null,opened:false,unrestricted:false},b);try{if(typeof c.responseValue!="undefined"&&c.responseValue.length>0){drawAssociations(this,c)}if(c.opened){associate(this,c)}}catch(d){if(window.console){console.log(d)}}return this};drawAssociations=function(b,f){var j=b.attr("id");var m=f.responseValue.split(",");var k=jQuery("#"+j+"_panel .association");for(var g=0;g<m.length;g++){var e=m[g].split(" ");var h=jQuery(k.get(g));if(h.size()==0){var l=newAssociationBox(j,f);h=jQuery("#"+l)}var d=jQuery("#"+j+"_items div[data-qti-id='"+e[0]+"']");if(needToBeAvailable(d,j)){d=jQuery(d).clone()}var c=jQuery("#"+j+"_items div[data-qti-id='"+e[1]+"']");if(needToBeAvailable(c,j)){c=jQuery(c).clone()}jQuery(d).addClass("oo-choosed");jQuery(c).addClass("oo-choosed");jQuery(h.find(".association_box.left")).addClass("oo-filled").append(d);jQuery(h.find(".association_box.right")).addClass("oo-filled").append(c)}recalculate(j,f);if(f.unrestricted&&f.opened){addNewAssociationBoxAndEvents(j,f)}};associate=function(f,d){var b=f.attr("id");var c=jQuery("#"+b+" .o_associate_item");initializeGapEvents(c,b,d);var e=jQuery("#"+b+"_panel .association_box");initializeAssociationBoxEvents(e,b,d)};initializeGapEvents=function(c,b,d){c.on("click",function(h,g){var f=jQuery(this);if(!f.hasClass("oo-choosed")&&!f.hasClass("oo-selected")){f.addClass("oo-selected")}}).draggable({containment:"#"+b,scroll:false,revert:"invalid",stop:function(e,f){jQuery(this).css({left:"0px",top:"0px"});jQuery(f.helper).removeClass("oo-drag")},helper:function(){var f=jQuery(this);var g=f.parent(".association_box").size()>0;if(!g&&needToBeAvailable(this,b)){f.removeClass("oo-selected");var e=f.clone();jQuery(e).attr("id","n"+guid()).data("qti-cloned","true").addClass("oo-drag");return e}f.addClass("oo-drag");return f}}).on("click",{formId:d.formDispatchFieldId},setFlexiFormDirtyByListener)};needToBeAvailable=function(g,c){var f=jQuery(g);var e=f.data("qti-match-max");var b=f.data("qti-id");var d=jQuery("#"+c+"_panel div[data-qti-id='"+b+"']").size();return(e==0||d+1<e)};initializeAssociationBoxEvents=function(c,b,d){c.on("click",function(h,f){var g=jQuery(this);var i=jQuery(".o_associate_item",this).size();if(i==1){jQuery(".o_associate_item",this).each(function(e,j){removeGap(j,g,b)})}else{jQuery("#"+b+"_items .o_associate_item.oo-selected").each(function(e,k){var j=jQuery(k);if(needToBeAvailable(k,b)){j.removeClass("oo-selected");moveGap(j.clone(),g,b)}else{moveGap(j,g,b)}})}recalculate(b,d);setFlexiFormDirty(d.formDispatchFieldId,false)}).droppable({drop:function(g,h){var f=jQuery(this);var i=jQuery(".o_associate_item",this).size();if(i>0){jQuery(".o_associate_item",this).each(function(j,k){removeGap(k,f,b)})}var e;if(h.helper!=null&&jQuery(h.helper).data("qti-cloned")=="true"){var e=jQuery(h.draggable);e.removeClass("oo-selected").removeClass("oo-drag");e=e.clone();initializeGapEvents(e,b,d);moveGap(e,f,b)}else{var e=jQuery(h.draggable);e.removeClass("oo-selected").removeClass("oo-drag");moveGap(e,f,b)}recalculate(b,d);setFlexiFormDirty(d.formDispatchFieldId,false)}}).on("click",{formId:d.formDispatchFieldId},setFlexiFormDirtyByListener)};moveGap=function(d,c,b){d.removeClass("oo-selected").css({left:"0px",top:"0px"}).addClass("oo-choosed").appendTo(c);c.addClass("oo-filled")};removeGap=function(g,f,c){f.removeClass("oo-filled");var e=jQuery(g);e.removeClass("oo-choosed");var b=e.data("qti-id");var d=jQuery("#"+c+"_items div[data-qti-id='"+b+"']").size();if(d==0){e.appendTo(jQuery("#"+c+"_items"))}else{e.remove()}};guid=function(){function b(){return Math.floor((1+Math.random())*65536).toString(16).substring(1)}return b()+b()+b()+b()+b()+b()+b()};recalculate=function(b,d){var c=jQuery("#"+b+"_panel");c.find("input[type='hidden']").remove();jQuery("#"+b+"_panel .association").each(function(e,j){var g=jQuery(j).find(".o_associate_item");if(g.length==2){var h=jQuery(g.get(0)).data("qti-id");var f=jQuery(g.get(1)).data("qti-id");var i=jQuery('<input type="hidden"/>').attr("name","qtiworks_response_"+d.responseIdentifier).attr("value",h+" "+f);c.prepend(i)}else{if(g.length==0&&d.unrestricted){j.remove()}else{jQuery(j).find(".association_box").each(function(m,l){var k=jQuery(l).find(".o_associate_item").size();if(k==0&&jQuery(l).hasClass("oo-filled")){jQuery(l).removeClass("oo-filled")}})}}});addNewAssociationBoxAndEvents(b,d)};addNewAssociationBoxAndEvents=function(b,e){if(!e.unrestricted||!e.opened){return}var c=jQuery("#"+b+"_panel");var d=true;jQuery("#"+b+"_panel .association").each(function(h,j){var i=jQuery(j).find(".o_associate_item");if(i.length!=2){d=false}});if(d){var g=newAssociationBox(b,e);var f=jQuery("#"+g+" .association_box");initializeAssociationBoxEvents(f,b,e)}};newAssociationBox=function(b,c){var d=guid();var e='<div id="'+d+'" class="association" style="">\n <div class="association_box left" style="width: 100px; height:50px; float:left;"></div>\n <div class="association_box right" style="width: 100px; height:50px; float:right;"></div>\n <div style="clear:both; "></div>\n</div>\n';jQuery("#"+b+"_panel").append(e);jQuery("#"+b+"_panel").append('<div style="clear:both; "></div>\n');return d}}(jQuery));(function(f){f.fn.gapMatchInteraction=function(h){var j=f.extend({responseIdentifier:null,formDispatchFieldId:null,gapChoiceData:{},gapData:{},opened:false,gapChoiceMap:{},gapMap:{},matched:{}},h);for(var i in j.gapChoiceData){var k=jQuery("#qtiworks_id_"+j.responseIdentifier+"_"+i);j.gapChoiceMap[i]={matchMax:j.gapChoiceData[i],matchCount:0,query:k,text:k.text()}}for(var i in j.gapData){var k=jQuery("#qtiworks_id_"+j.responseIdentifier+"_"+i);j.gapMap[i]={required:j.gapData[i],matched:false,matchedGapChoice:null,query:k,label:k.text()}}try{d(this,j)}catch(l){if(window.console){console.log(l)}}return this};function b(j,k,n){var m=k.value;var i=m.split(" ");var h=j.gapChoiceMap[i[0]];var l=j.gapMap[i[1]];n(j,k,m,h,l)}function d(i,h){if(h.opened){e(h.responseIdentifier).on("click",function(){a(h,this);setFlexiFormDirty(h.formDispatchFieldId)})}c(h);g(h)}function e(h){return jQuery("input[name=qtiworks_response_"+h+"]")}function c(j){j.matchCount=0;for(var i in j.gapChoiceMap){j.gapChoiceMap[i].matchCount=0}for(var i in j.gapMap){j.gapMap[i].matched=false;j.gapMap[i].matchedGapChoice=null}e(j.responseIdentifier).each(function(l,m){b(j,this,function(o,p,r,n,q){if(p.checked){n.matchCount++;q.matched=true;q.matchedGapChoice=n;o.matched[r]=true}})});for(var i in j.gapMap){var k=j.gapMap[i];var h;if(k.matched){h=k.matchedGapChoice.text}else{h=k.label}k.query.text(h)}}function g(h){e(h.responseIdentifier).each(function(){b(h,this,function(j,k,m,i,l){if(!j.opened){k.disabled=true}else{if(k.checked){k.disabled=false}else{if(l.matched||(i.matchMax!=0&&i.matchCount>=i.matchMax)){k.disabled=true}else{k.disabled=false}}}})})}function a(h,i){b(h,i,function(k,l,n,j,m){if(l.checked){if(m.matched||(j.matchMax!=0&&j.matchMax<=j.matchCount)){l.checked=false}else{j.matchCount++;m.matched=true;m.matchedGapChoice=j}m.query.text(j.text)}else{j.matchCount--;m.matched=false;m.matchedGapChoice=null;m.query.text(m.label)}g(k)})}}(jQuery));(function(d){d.fn.graphicAssociateInteraction=function(g){var h=d.extend({responseIdentifier:null,formDispatchFieldId:null,responseValue:null,maxAssociations:1,opened:false},g);try{if(!(typeof h.responseValue==="undefined")&&h.responseValue.length>0){e(this,h.responseValue,h.responseIdentifier)}if(h.opened){c(this,h.maxAssociations,h.responseIdentifier)}}catch(j){if(window.console){console.log(j)}}return this};function c(k,j,h){var g=k.attr("id");jQuery("#"+g+"_container area").on("click",function(t){var l=8;var q=jQuery("#"+g+"_container").data("openolat")||{};if(q.listOfPairs==undefined){q.currentSpot="";q.listOfPairs=[];jQuery("#"+g+"_container").data("openolat",q)}var w=jQuery(this).data("qti-id");if(q.currentSpot==""||q.currentSpot==w){q.currentSpot=w}else{var A=[q.currentSpot,w];q.listOfPairs.push(A);q.currentSpot=""}var m=document.getElementById(g+"_canvas");var u=m.getContext("2d");u.clearRect(0,0,jQuery(m).width(),jQuery(m).height());var B=jQuery("#"+g+"_container");B.find("input[type='hidden']").remove();var z=[];if(q.currentSpot!=""){b(u,"ac_"+h+"_"+q.currentSpot);z.push(q.currentSpot)}for(var p=q.listOfPairs.length;p-->0;){var o=q.listOfPairs[p];for(var n=o.length;n-->0;){if(0>z.indexOf(o[n])){b(u,"ac_"+h+"_"+o[n]);z.push(o[n])}}var s=jQuery("#ac_"+h+"_"+o[1]);var v=jQuery("#ac_"+h+"_"+o[0]);var C=f(s);var y=f(v);u.beginPath();u.moveTo(C[0],C[1]);u.lineTo(y[0],y[1]);u.lineWidth=3;u.stroke();var x=jQuery('<input type="hidden"/>').attr("name","qtiworks_response_"+h).attr("value",v.data("qti-id")+" "+s.data("qti-id"));B.prepend(x)}})}function e(g,v,t){var o=g.attr("id");var x=jQuery("#"+o+"_container");var k=document.getElementById(o+"_canvas");var q=k.getContext("2d");q.clearRect(0,0,jQuery(k).width(),jQuery(k).height());var w=[];var h=v.split(",");for(var n=h.length;n-->0;){var m=h[n].split(" ");for(var l=m.length;l-->0;){if(0>w.indexOf(m[l])){b(q,"ac_"+t+"_"+m[l]);w.push(m[l])}}if(m.length==2){var p=jQuery("#ac_"+t+"_"+m[1]);var r=jQuery("#ac_"+t+"_"+m[0]);var y=f(p);var u=f(r);q.beginPath();q.moveTo(y[0],y[1]);q.lineTo(u[0],u[1]);q.lineWidth=3;q.stroke();var s=jQuery('<input type="hidden"/>').attr("name","qtiworks_response_"+t).attr("value",r.data("qti-id")+" "+p.data("qti-id"));x.prepend(s)}}}function b(h,g){jQuery("#"+g).each(function(k,m){var l=jQuery(m);var n=f(l);var j=l.attr("shape");a(h,j,n,0,0)})}function a(j,g,k,h,l){h=h||0;l=l||0;j.beginPath();if(g=="rect"){j.rect(k[0]+h,k[1]+l,k[2]-k[0],k[3]-k[1])}else{if(g=="poly"){j.moveTo(k[0]+h,k[1]+l);for(i=2;i<k.length;i+=2){j.lineTo(k[i]+h,k[i+1]+l)}}else{if(g=="circ"||g=="circle"){j.arc(k[0]+h,k[1]+l,k[2]-2,0,Math.PI*2,false)}}}j.closePath();j.lineWidth=4;j.strokeStyle="#003300";j.stroke();j.fillStyle="green";j.fill()}function f(g){var h=g.attr("coords").split(",");for(i=h.length;i-->0;){h[i]=parseFloat(h[i])}return h}}(jQuery));(function(f){f.fn.graphicGapInteraction=function(j){var k=f.extend({maphilight:null,responseIdentifier:null,formDispatchFieldId:null,responseValue:null,opened:false},j);try{if(!(typeof k.responseValue==="undefined")&&k.responseValue.length>0){b(this,k)}if(k.opened){c(this,k)}}catch(l){if(window.console){console.log(l)}}return this};function b(j,m){var q=j.attr("id");var v=jQuery("#"+q);var l=m.responseValue.split(",");for(var n=l.length;n-->0;){var k=l[n].split(" ");var p=jQuery("#ac_"+m.responseIdentifier+"_"+k[0]);var o=jQuery("#ac_"+m.responseIdentifier+"_"+k[1]);var r,u;if(p.hasClass("gap_item")){r=p;u=o}else{r=o;u=p}var s=g(u);r.css("position","absolute");r.css("left",s[0]+"px");r.css("top",s[1]+"px");r.addClass("oo-choosed");var t=jQuery('<input type="hidden"/>').attr("name","qtiworks_response_"+m.responseIdentifier).attr("value",r.data("qti-id")+" "+u.data("qti-id"));v.prepend(t)}}function c(l,k){var j=l.attr("id");jQuery(".gap_item").on("click",function(q,p){var o=jQuery(this);if(o.hasClass("oo-choosed")){var n=o.data("drop-timestamp");if(!(typeof n==="undefined")&&n!=null){if((Date.now()-n)<1500){o.data("drop-timestamp",null);return}}o.removeClass("oo-choosed");var m=o.data("qti-id");jQuery("#"+j).find("input[type='hidden']").each(function(r,s){var t=jQuery(s).val();if(t.indexOf(m+" ")==0){jQuery(s).remove()}});o.css({position:"relative",left:"0px",top:"0px"})}else{o.addClass("oo-selected")}}).draggable({containment:"#"+j,scroll:false,revert:"invalid",stop:function(m,n){if(!jQuery(this).hasClass("oo-choosed")){jQuery(this).css({position:"relative",left:"0px",top:"0px"})}}}).mousemove(function(m,s){var u=jQuery(this);if(u.hasClass("ui-draggable-dragging")){var q=jQuery("#"+j+"_img");var p=q.offset();var o=u.offset();var n=o.left+(u.width()/2)-p.left;var t=o.top+(u.height()/2)-p.top;var r=h(n,t,j);if("invalid"!=r){jQuery("#"+j+" area").each(function(v,x){var w=jQuery(x);var y=w.attr("id");if(r==y){w.mouseover()}else{w.mouseout()}});jQuery("#"+r).mouseover()}else{jQuery("#"+j+" area").each(function(v,w){jQuery(w).mouseout()})}}});jQuery("#"+j).droppable({drop:function(m,t){var r=jQuery("#"+j+"_img");var p=r.offset();var u=jQuery(t.draggable);var o=u.offset();var n=o.left+(u.width()/2)-p.left;var w=o.top+(u.height()/2)-p.top;var s=h(n,w,j);if("invalid"!=s){var z=jQuery("#"+s);var v=g(z);var x=z.data("qti-id");var q=u.data("qti-id");u.css("position","absolute");u.css("left",v[0]+"px");u.css("top",v[1]+"px");u.css("border","none");u.removeClass("oo-selected");u.addClass("oo-choosed");var y=jQuery('<input type="hidden"/>').attr("name","qtiworks_response_"+k.responseIdentifier).attr("value",q+" "+x);jQuery(this).prepend(y);jQuery(z).mouseout();u.data("drop-timestamp",Date.now())}}});jQuery("#"+j+" area").on("click",function(o,n){var m=jQuery(this);jQuery(".gap_item.oo-selected").each(function(q,s){var r=jQuery(s);var t=g(m);var w=m.data("qti-id");var v=r.data("qti-id");r.css("position","absolute");r.css("left",t[0]+"px");r.css("top",t[1]+"px");r.css("border","none");r.removeClass("oo-selected");r.addClass("oo-choosed");var p=jQuery("#"+j);var u=jQuery('<input type="hidden"/>').attr("name","qtiworks_response_"+k.responseIdentifier).attr("value",v+" "+w);p.prepend(u)})})}function h(l,k,j){var m="invalid";jQuery("#"+j+" area").each(function(r,o){var v=jQuery(o);var u=v.attr("id");var t=v.attr("coords");var s=v.attr("shape");var w=g(v);if("circle"==s){if(a(l,k,w[0],w[1],w[2])){m=u}}else{if("rect"==s){if(d(l,k,w[0],w[1],w[2],w[3])){m=u}}else{if("poly"==s){var n={};n.x=[];n.y=[];var q=w.length/2;var p=0;for(ix=0;ix<q;ix++){n.x[ix]=w[p];n.y[ix]=w[p+1];p+=2}for(i=0;i<n.length;i++){if(e(n.x.length,n.x,n.y,l,k)){m=n.id;break}}}}}});return m}function a(k,o,m,l,j){var n=Math.pow(k-m,2)+Math.pow(o-l,2);return Math.pow(j,2)>=n}function d(j,o,n,l,k,m){if((n<=j)&&(j<=k)&&(l<=o)&&(o<=m)){return true}else{return false}}function e(l,p,o,k,r){var n,m,q=false;for(n=0,m=l-1;n<l;m=n++){if(((o[n]>r)!=(o[m]>r))&&(k<(p[m]-p[n])*(r-o[n])/(o[m]-o[n])+p[n])){q=!q}}return q}function g(j){var k=j.attr("coords").split(",");for(i=k.length;i-->0;){k[i]=parseFloat(k[i])}return k}}(jQuery));(function(c){c.fn.graphicOrderInteraction=function(d){var f=c.extend({responseIdentifier:null,formDispatchFieldId:null,responseValue:null,maxChoices:1,opened:false},d);try{if(!(typeof f.responseValue==="undefined")&&f.responseValue.length>0){b(this,f)}if(f.opened){a(this,f)}}catch(g){if(window.console){console.log(g)}}return this};function b(d,h){var m=d.attr("id");var r=jQuery("#"+m+"_container");var e=document.getElementById(m+"_canvas");var o=e.getContext("2d");o.clearRect(0,0,jQuery(e).width(),jQuery(e).height());var n=h.responseValue.split(",");for(var k=n.length;k-->0;){if(n[k].length==0){continue}var q=jQuery("#ac_"+h.responseIdentifier+"_"+n[k]);var f=q.data("qti-id");var l=q.attr("coords").split(",");var j=l[0];var g=l[1];o.font="16px Arial";o.fillText(""+(k+1),j,g);var p=jQuery('<input type="hidden"/>').attr("name","qtiworks_response_"+h.responseIdentifier).attr("value",f);r.prepend(p)}}function a(f,e){var d=f.attr("id");jQuery("#"+d+"_container area").on("click",function(v){var h=8;var x=jQuery(this).attr("id");var l=jQuery(this).data("qti-id");var u=jQuery(this).attr("coords").split(",");var o=u[0];var n=u[1];var t=jQuery("#"+d+"_container").data("openolat")||{};if(t.listOfPoints==undefined){t.listOfPoints=[];jQuery("#"+d+"_container").data("openolat",t)}var s=false;var m=[];for(var q=t.listOfPoints.length;q-->0;){var j=t.listOfPoints[q];var g=((j.x-o)*(j.x-o))+((j.y-n)*(j.y-n));if(h*h>g){s=true}else{m.push(j)}}if(s){t.listOfPoints=m}else{if(t.listOfPoints.length>=e.maxChoices){return false}else{t.listOfPoints.push({x:o,y:n,areaId:x,spotQtiId:l})}}var k=document.getElementById(d+"_canvas");var w=k.getContext("2d");w.clearRect(0,0,jQuery(k).width(),jQuery(k).height());var z=jQuery("#"+d+"_container");z.find("input[type='hidden']").remove();for(var q=t.listOfPoints.length;q-->0;){var j=t.listOfPoints[q];w.font="16px Arial";w.fillText(""+(q+1),j.x,j.y);var y=jQuery('<input type="hidden"/>').attr("name","qtiworks_response_"+e.responseIdentifier).attr("value",j.spotQtiId);z.prepend(y)}})}}(jQuery));(function(c){c.fn.hotspotInteraction=function(f){var g=c.extend({responseIdentifier:null,formDispatchFieldId:null,maxChoices:1,responseValue:null,opened:false},f);try{if(!(typeof g.responseValue==="undefined")&&g.responseValue.length>0){a(this,g)}if(g.opened){e(this,g)}}catch(h){if(window.console){console.log(h)}}return this};function a(n,k){var f=n.attr("id");var g=jQuery("#"+f);var j=k.responseValue.split(",");for(i=j.length;i-->0;){var h=jQuery("#ac_"+k.responseIdentifier+"_"+j[i]);var l=h.data("maphilight")||{};l.selectedOn=true;b(l);h.data("maphilight",l).trigger("alwaysOn.maphilight");var m=jQuery('<input type="hidden"/>').attr("name","qtiworks_response_"+k.responseIdentifier).attr("value",h.data("qti-id"));g.append(m)}}function e(h,g){var f=h.attr("id");jQuery("#"+f+" map area").each(function(j,k){jQuery(k).on("click",function(){d(this,f,g.responseIdentifier,g.maxChoices)})})}function d(l,j,n,k){var m=jQuery(l);var h=m.data("maphilight")||{};if((typeof h.selectedOn==="undefined")||!h.selectedOn){var f=k;if(f>0){var g=0;jQuery("area","map[name='"+j+"_map']").each(function(p,r){var q=jQuery(r).data("maphilight")||{};if(q.selectedOn){g++}});if(g>=f){return false}}}if(typeof h.selectedOn==="undefined"){h.selectedOn=true}else{h.selectedOn=!h.selectedOn}b(h);m.data("maphilight",h).trigger("alwaysOn.maphilight");var o=jQuery("#"+j);o.find("input[type='hidden']").remove();jQuery("area","map[name='"+j+"_map']").each(function(p,r){var s=jQuery(r);var q=s.data("maphilight")||{};if(q.selectedOn){var t=jQuery('<input type="hidden"/>').attr("name","qtiworks_response_"+n).attr("value",s.data("qti-id"));o.append(t)}})}function b(f){if(f.selectedOn){f.fillColor="0000ff";f.fillOpacity=0.5;f.strokeColor="0000ff";f.strokeOpacity=1;f.shadow=true;f.shadowX=0;f.shadowY=0;f.shadowRadius=7;f.shadowColor="000000";f.shadowOpacity=0.8;f.shadowPosition="outside"}else{f.fillColor="bbbbbb";f.fillOpacity=0.5;f.strokeColor="666666";f.strokeOpacity=0.8;f.shadow=false}}}(jQuery));(function(f){f.fn.matchInteraction=function(h){var j=f.extend({responseIdentifier:null,formDispatchFieldId:null,maxAssociations:1,leftData:{},rightData:{},leftMap:{},rightMap:{},matched:[]},h);for(var i in j.leftData){j.leftMap[i]={matchMax:j.leftData[i],matchCount:0}}for(var i in j.rightData){j.rightMap[i]={matchMax:j.rightData[i],matchCount:0}}try{d(this,j)}catch(k){if(window.console){console.log(k)}}return this};function d(i,h){e(h.responseIdentifier).on("click",function(){a(h,this)});c(h);g(h)}function e(h){return jQuery("input[name=qtiworks_response_"+h+"]")}function b(j,l,n){var m=l.value;var h=m.split(" ");var k=j.leftMap[h[0]];var i=j.rightMap[h[1]];n(l,m,k,i)}function c(i){i.matchCount=0;i.matched={};for(var h in i.leftMap){i.leftMap[h].matchCount=0}for(var h in i.rightMap){i.rightMap[h].matchCount=0}e(i.responseIdentifier).each(function(){b(i,this,function(l,m,k,j){if(l.checked){i.matchCount++;k.matchCount++;j.matchCount++;i.matched[m]=true}})})}function g(h){e(h.responseIdentifier).each(function(){b(h,this,function(k,l,j,i){if(k.checked){k.disabled=false}else{if((h.maxAssociations!=0&&h.matchCount>=h.maxAssociations)||(j.matchMax!=0&&j.matchCount>=j.matchMax)||(i.matchMax!=0&&i.matchCount>=i.matchMax)){k.disabled=true}else{k.disabled=false}}})})}function a(h,i){b(h,i,function(m,n,l,k){if(m.checked){var j=false;if(l.matchMax!=0&&l.matchMax<=l.matchCount){m.checked=false}else{l.matchCount++;h.matchCount++;j=true}if(k.matchMax!=0&&k.matchMax<=k.matchCount){m.checked=false}else{k.matchCount++;if(!j){h.matchCount++}}}else{h.matchCount--;l.matchCount--;k.matchCount--}g(h)})}}(jQuery));(function(c){c.fn.orderInteraction=function(d){var f=c.extend({responseIdentifier:null,formDispatchFieldId:null,initialSourceOrder:null,initialTargetOrder:null,responseValue:null,minChoices:null,maxChoices:null},d);try{a(this,f)}catch(g){if(window.console){console.log(g)}}return this};function a(k,f){var j=jQuery("#qtiworks_response_"+f.responseIdentifier);var d=jQuery("#qtiworks_response_"+f.responseIdentifier+" div.target");var g=jQuery("#qtiworks_response_"+f.responseIdentifier+" div.source ul");var i=jQuery("#qtiworks_response_"+f.responseIdentifier+" div.target ul");var e=jQuery("#qtiworks_response_"+f.responseIdentifier+" div.hiddenInputContainer");var h="#qtiworks_response_"+f.responseIdentifier+" ul";g.sortable({connectWith:h,stop:function(){b(f);setFlexiFormDirty(f.formDispatchFieldId)}});g.disableSelection();i.sortable({connectWith:h,stop:function(){b(f);setFlexiFormDirty(f.formDispatchFieldId)}});i.disableSelection()}function b(f){var g=jQuery("#qtiworks_response_"+f.responseIdentifier+" div.source ul");var h=jQuery("#qtiworks_response_"+f.responseIdentifier+" div.target ul");var e=h.children("li").size();if(f.minChoices!=null&&f.maxChoices!=null){if(e<f.minChoices||e>f.maxChoices){if(f.minChoices!=f.maxChoices){alert("You must select and order between "+f.minChoices+" and "+f.maxChoices+" items")}else{alert("You must select and order exactly "+f.minChoices+" item"+(minChoices>1?"s":""))}targetBox.toggleClass("highlight",true);return false}else{targetBox.toggleClass("highlight",false)}}var d=jQuery("#qtiworks_response_"+f.responseIdentifier+" div.hiddenInputContainer");d.empty();h.children("li").each(function(j){var i=this.id.substring("qtiworks_response_".length);var k=jQuery('<input type="hidden">');k.attr("name","qtiworks_response_"+f.responseIdentifier);k.attr("value",i);d.append(k)})}}(jQuery));(function(b){b.fn.positionObjectStage=function(f){var g=b.extend({responseIdentifier:null,formDispatchFieldId:null,responseValue:null,maxChoices:1,opened:false},f);try{var d=this.attr("id");jQuery("#"+d+" .items_container .o_item.o_"+g.responseIdentifier).each(function(e,i){jQuery(i).attr("id","object-item-"+e)});if(!(typeof g.responseValue==="undefined")&&g.responseValue.length>0){c(this,g)}if(g.opened){a(this,g)}}catch(h){if(window.console){console.log(h)}}return this};function c(d,f){var k=d.attr("id");var r=jQuery("#"+k);var j=f.responseValue.split(":");var l=jQuery("#"+k+" .items_container .o_item.o_"+f.responseIdentifier);for(var h=j.length;h-->0;){var n=j[h].split(" ");var g=n[0];var e=n[1];var q=jQuery(l.get(h));q.css("position","absolute");q.css("top",e+"px");q.css("left",g+"px");var m=q.attr("id");var o="in-"+m+"-"+f.responseIdentifier;var p=jQuery('<input type="hidden"/>').attr("id",o).attr("name","qtiworks_response_"+f.responseIdentifier).attr("value",g+" "+e);r.prepend(p)}}function a(g,f){var d=g.attr("id");var e=jQuery("#"+d);jQuery("#"+d+" .items_container .o_item.o_"+f.responseIdentifier).draggable({containment:"#"+d,scroll:false,stop:function(h,p){var i=jQuery("#"+d+"_img");var k=jQuery(i).offset().top-jQuery(window).scrollTop();var n=jQuery(i).offset().left-jQuery(window).scrollLeft();var m=jQuery(this).offset().top-jQuery(window).scrollTop();var q=jQuery(this).offset().left-jQuery(window).scrollLeft();var l=Math.round((q-n));var j=Math.round((m-k));var o=jQuery(this).attr("id");var r="in-"+o+"-"+f.responseIdentifier;var s=e.find("#"+r);if(s.length==0){var t=jQuery('<input type="hidden"/>').attr("id",r).attr("name","qtiworks_response_"+f.responseIdentifier).attr("value",l+" "+j);e.prepend(t)}else{s.val(l+" "+j)}setFlexiFormDirty(f.formDispatchFieldId)}})}}(jQuery));(function(a){a.fn.qtiAutosave=function(b){var c=a.extend({responseUniqueId:null,formName:null,dispIdField:null,dispId:null,eventIdField:null},b);var f=this.attr("id");var e=jQuery.periodic({period:60000,decay:1,max_period:Number.MAX_VALUE},function(){try{var j=jQuery("#"+f).data("auto-save-periodic");if(jQuery("#"+f).length>0&&(typeof e.dateNowMarker==="undefined"||j==e.dateNowMarker)){var g=new Object();g.dispatchuri=c.dispId;g.dispatchevent="2";g.cid="tmpResponse";g.tmpResponse="qtiworks_presented_"+c.responseUniqueId;g["qtiworks_presented_"+c.responseUniqueId]="1";g["qtiworks_response_"+c.responseUniqueId]=jQuery("#oo_"+c.responseUniqueId).val();var i=jQuery("#"+c.formName).attr("action");jQuery.ajax(i,{type:"POST",data:g,cache:false,dataType:"json",success:function(q,r,o){var m=new Date();var k=m.getHours();var n=m.getMinutes();var l=k+":"+(n<10?"0":"")+n;var p=jQuery("#"+f).parent().get(0);jQuery("div.o_qti_essay_last_save",p).css("display","block");jQuery("span.o_qti_essay_last_save-time",p).html(l)}})}else{e.cancel()}}catch(h){if(window.console){console.log(h)}}});var d=Date.now();e.dateNowMarker=d;jQuery("#"+f).data("auto-save-periodic",d);return this}}(jQuery));(function(e){e.fn.qtiTimer=function(h){var j=e.extend({startTime:null,availableTime:null,formName:null,dispIdField:null,dispId:null,eventIdField:null},h);if(!(typeof window.qti21TestTimer==="undefined")){window.qti21TestTimer.cancel()}var m=this.attr("id");var i=Date.now()-j.startTime;var l=i+j.availableTime;var g=l-Date.now();a(m,j.availableTime,g);var k=jQuery.periodic({period:1000,decay:1,max_period:g+1000},function(){g=l-Date.now();if(g>=0){a(m,j.availableTime,g)}else{k.cancel();f(j)}});window.qti21TestTimer=k;return this};function f(g){jQuery(".o_sel_assessment_item_submit").prop("disabled","true");jQuery(".o_qti_times_up").css("display","inline");c();if(jQuery("#o_qti_run").length>0){o_ffXHREvent(g.formName,g.dispIdField,g.dispId,g.eventIdField,"2",false,false,false,"cid","timesUp")}}function a(k,j,g){var i=b(j);jQuery("#"+k+" .o_qti_timer_duration").html(i);if(g<0){g=0}var h=b(g);jQuery("#"+k+" .o_qti_timer").html(h);if(g<1*60*1000){d(k,"o_panic")}else{if(g<5*60*1000){d(k,"o_5_minutes")}else{if(g<10*60*1000){d(k,"o_10_minutes")}}}}function d(i,h){var g=jQuery("#"+i);if(!g.hasClass(h)){c();g.removeClass("o_10_minutes").removeClass("o_5_minutes").removeClass("o_panic");g.addClass(h);jQuery(".o_qti_times_message."+h).css("display","inline")}}function c(){jQuery(".o_qti_times_message.o_10_minutes").css("display","none");jQuery(".o_qti_times_message.o_5_minutes").css("display","none");jQuery(".o_qti_times_message.o_panic").css("display","none")}function b(i){var j=Math.floor(i/1000);var h=Math.floor(j/60);j=j-(h*60);var g=Math.floor(h/60);h=h-(g*60);return(g<10?"0":"")+g+(h<10?":0":":")+h+(j<10?":0":":")+j}}(jQuery));(function(a){a.fn.selectPointInteraction=function(d){var f=a.extend({responseIdentifier:null,formDispatchFieldId:null,responseValue:null,maxChoices:1,opened:false},d);try{if(!(typeof f.responseValue==="undefined")&&f.responseValue.length>0){b(this,f)}if(f.opened){c(this,f)}}catch(g){if(window.console){console.log(g)}}return this};function b(d,h){var e=8;var j=d.attr("id");var q=jQuery("#"+j);var n=h.responseValue.split(":");var g=document.getElementById(j+"_canvas");var k=g.getContext("2d");k.clearRect(0,0,jQuery(g).width(),jQuery(g).height());for(i=n.length;i-->0;){if(n[i].length==0){continue}var f=n[i].split(" ");var m=f[0];var l=f[1];k.beginPath();k.arc(m,l,e,0,Math.PI*2,false);k.stroke();k.closePath();var o=jQuery('<input type="hidden"/>').attr("name","qtiworks_response_"+h.responseIdentifier).attr("value",m+" "+l);q.append(o)}}function c(f,e){var d=f.attr("id");jQuery("#"+d+"_canvas").on("click",function(u,z){var h=8;var q=jQuery(this).offset().top-jQuery(window).scrollTop();var w=jQuery(this).offset().left-jQuery(window).scrollLeft();var n=Math.round((u.clientX-w));var m=Math.round((u.clientY-q));var s=jQuery("#"+d).data("openolat")||{};if(s.listOfPoints==undefined){s.listOfPoints=[];jQuery("#"+d).data("openolat",s)}var o=false;var l=[];for(i=s.listOfPoints.length;i-->0;){var j=s.listOfPoints[i];var g=((j.x-n)*(j.x-n))+((j.y-m)*(j.y-m));if(Math.pow(h,2)>g){o=true}else{l.push(j)}}if(o){s.listOfPoints=l}else{if(s.listOfPoints.length>=e.maxChoices){return false}else{s.listOfPoints.push({x:n,y:m})}}var k=document.getElementById(d+"_canvas");var v=k.getContext("2d");v.clearRect(0,0,jQuery(k).width(),jQuery(k).height());var y=jQuery("#"+d);y.find("input[type='hidden']").remove();for(i=s.listOfPoints.length;i-->0;){var j=s.listOfPoints[i];v.beginPath();v.arc(j.x,j.y,h,0,Math.PI*2,false);v.stroke();v.closePath();var x=jQuery('<input type="hidden"/>').attr("name","qtiworks_response_"+e.responseIdentifier).attr("value",j.x+" "+j.y);y.append(x)}setFlexiFormDirty(e.formDispatchFieldId)})}}(jQuery));(function(b){b.fn.sliderInteraction=function(c){var d=b.extend({responseIdentifier:null,formDispatchFieldId:null,responseValue:null,min:1,max:1,step:1,orientation:null,isReversed:false,isDiscrete:false,opened:false,initialValue:null},c);try{a(this,d)}catch(f){if(window.console){console.log(f)}}return this};function a(g,d){var e=jQuery("#qtiworks_id_slider_"+d.responseIdentifier);var f=jQuery('input[name="qtiworks_response_'+d.responseIdentifier+'"]');var c=f.get(0).value||d.min;e.slider({value:c,step:d.step,disabled:!d.opened,orientation:d.orientation,min:d.isReversed?-d.max:d.min,max:d.isReversed?-d.min:d.max,slide:function(h,j){var i=d.isReversed?-j.value:j.value;var l=jQuery("#qtiworks_id_slidervalue_"+d.responseIdentifier);var k=jQuery('input[name="qtiworks_response_'+d.responseIdentifier+'"]');k.get(0).value=i;l.text(i);e.slider("value",d.isReversed?-i:i);setFlexiFormDirty(d.formDispatchFieldId)}})}}(jQuery)); \ No newline at end of file diff --git a/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/css/content.css b/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/css/content.css index 73b3a4d3c691a2e16a773072b274eeea4d5c2d72..61c3a9569bb725cbee243af3864f575db9b35c7a 100644 --- a/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/css/content.css +++ b/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/css/content.css @@ -1,7 +1,24 @@ .textentryinteraction { - background-position:center; - background-repeat:no-repeat; - background-image: url(../img/placeholder.png); + background-color: #eee; + border-radius: 4px; + border-left: 3px solid #eee; + padding: 2px 4px 2px 1px; + font-weight: bold; +} +.textentryinteraction.error { + background-color: #f2dede; + border-left: 3px solid #a94442; +} +.textentryinteraction a.o_ops:before { + padding-left: 5px; + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); + content: '\f141' } span.hottext { @@ -10,7 +27,7 @@ span.hottext { padding: 2px 4px; font-weight: bold; } -.hottext a:before { +.hottext a.o_check:before { padding-left: 1px; display: inline-block; font: normal normal normal 14px/1 FontAwesome; @@ -21,7 +38,6 @@ span.hottext { transform: translate(0, 0); content: '\f096' } -.hottext a.checked:before { +.hottext a.o_check.checked:before { content: '\f046'; } - diff --git a/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.js b/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.js index 8b91df2beb96cef0b89dbd1feafaa3092f2c183c..c9e0e52ac34c3717edc6794d5082111dd25a6db3 100644 --- a/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.js +++ b/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.js @@ -14,7 +14,7 @@ author : 'frentix GmbH', authorurl : 'http://www.frentix.com', infourl : 'http://www.frentix.com', - version : '1.1.5' + version : '1.2.6' }; }, @@ -71,16 +71,19 @@ } function showDialog(e, gapType) { - var newEntry = false; - var newSelectedText = null; - var responseIdentifier; + var ffxhrevent = ed.getParam("ffxhrevent"); if(typeof lastSelectedGap != 'undefined') { - responseIdentifier = jQuery(lastSelectedGap).attr('data-qti-response-identifier') + var textEntryEl = jQuery(lastSelectedGap).closest("span[data-qti='textentryinteraction']"); + var responseIdentifier = textEntryEl.attr('data-qti-response-identifier'); + var solution = jQuery(textEntryEl).children().html(); + var emptySolution = (solution == "" || solution == " " ? "true" : "false"); + o_ffXHREvent(ffxhrevent.formNam, ffxhrevent.dispIdField, ffxhrevent.dispId, ffxhrevent.eventIdField, 2, false, false, false, + 'cmd', 'gapentry', 'responseIdentifier', responseIdentifier, 'selectedText', solution, 'emptySolution', emptySolution, 'newEntry', false); } else { var counter = 1; - newSelectedText = ed.selection.getContent({format: 'text'}) + var newSelectedText = ed.selection.getContent({format: 'text'}) - tinymce.each(ed.dom.select("img[data-qti]"), function(node) { + tinymce.each(ed.dom.select("span[data-qti]"), function(node) { var identifier = jQuery(node).attr('data-qti-response-identifier'); if(identifier.lastIndexOf("RESPONSE_", 0) == 0) { var id = parseInt(identifier.substring(9, identifier.length)); @@ -91,15 +94,17 @@ }); var responseIdentifier = "RESPONSE_" + (counter + 1); - var placeholder = createPlaceholder(responseIdentifier, 'textentryinteraction', gapType); + if(typeof newSelectedText === "undefined" || newSelectedText.length == 0) { + newSelectedText = "gap"; + } + + var placeholder = createTextEntryPlaceholder(responseIdentifier, newSelectedText, 'textentryinteraction', gapType); var holderHtml = new tinymce.html.Serializer().serialize(placeholder); ed.insertContent(holderHtml); - newEntry = true; + + o_ffXHREvent(ffxhrevent.formNam, ffxhrevent.dispIdField, ffxhrevent.dispId, ffxhrevent.eventIdField, 2, false, false, false, + 'cmd', 'gapentry', 'responseIdentifier', responseIdentifier, 'newEntry', true, 'selectedText', newSelectedText, 'gapType', gapType); } - - var ffxhrevent = ed.getParam("ffxhrevent"); - o_ffXHREvent(ffxhrevent.formNam, ffxhrevent.dispIdField, ffxhrevent.dispId, ffxhrevent.eventIdField, 2, false, false, false, - 'cmd', 'gapentry', 'responseIdentifier', responseIdentifier, 'newEntry', newEntry, 'selectedText', newSelectedText, 'gapType', gapType); ed.setDirty(true); } @@ -142,14 +147,14 @@ ed.addButton('olatqtifibtext', { title : translator().translate('new.fib'), icon : 'gaptext', - stateSelector: ['img[data-qti-gap-type=string]', 'span[data-qti-gap-type=string]'], + stateSelector: ['span[data-qti-gap-type=string]'], onclick: showTextDialog }); ed.addButton('olatqtifibnumerical', { title : translator().translate('new.fib') + ' Numerical', icon : 'gapnumerical', - stateSelector: ['img[data-qti-gap-type=float]', 'span[data-qti-gap-type=float]'], + stateSelector: ['span[data-qti-gap-type=float]'], onclick: showNumericalDialog }); @@ -169,14 +174,14 @@ ed.addMenuItem('olatqtifibtext', { text : translator().translate('new.fib'), icon : 'gapnumerical', - stateSelector: ['img[data-qti-gap-type=string]', 'span[data-qti-gap-type=string]'], + stateSelector: ['span[data-qti-gap-type=string]'], onclick: showNumericalDialog }); ed.addMenuItem('olatqtifibnumerical', { text : translator().translate('new.fib.numerical') + ' Numerical', icon : 'gaptext', - stateSelector: ['img[data-qti-gap-type=float]', 'span[data-qti-gap-type=float]'], + stateSelector: ['span[data-qti-gap-type=float]'], onclick: showTextDialog }); @@ -195,40 +200,111 @@ lastSelectedHottext = undefined; } - if (ed.dom.is(e.element, 'img[data-qti]')) { + if (ed.dom.is(e.element, 'span[data-qti=textentryinteraction]')) { + lastSelectedGap = e.element; + } else if (jQuery(e.element).parent("span[data-qti='textentryinteraction']").size() > 0) { lastSelectedGap = e.element; } if (jQuery(e.element).parent('span.hottext').size() > 0) { lastSelectedHottext = e.element; } + + jQuery(e.element).parent("span[data-qti-gap-type=float]").each(function(index, el) { + if(jQuery(e.element).prop("tagName").toLowerCase() == "span") { + var solution = jQuery(e.element).text(); + if(!jQuery.isNumeric(solution)) { + jQuery(el).addClass('error'); + } else { + jQuery(el).removeClass('error'); + } + } + }); + + jQuery("span.hottext[data-copy='needlistener']", e.element).each(function(index, el) { + if(jQuery("a.o_check", el).size() == 0) { + var checked = jQuery(el).attr('data-qti-checked'); + jQuery(el).prepend("<a class='o_check " + ("true" == checked ? "checked" : "") + "' contenteditable='false'><i contenteditable='false'> </i></a>"); + } + + //remove the placeholder for Firefox + if(jQuery("span[contenteditable='true']", el).text() == "x-y-x" && jQuery(el).attr('data-qti-empty') == "true") { + jQuery("span[contenteditable='true']", el).text(""); + jQuery(el).attr('data-qti-empty', 'false'); + } - jQuery("span.hottext[data-copy='needlistener'] a", e.element).each(function(index, el) { - var hottext = jQuery(el).parent("span.hottext").attr('data-copy','blues'); - var ev = jQuery._data(el, 'events'); - if(ev && ev.click) { - //double check - } else { - correctHottextEvent(el); + jQuery("a.o_check", jQuery(el)).each(function(aIndex, aEl) { + var ev = jQuery._data(aEl, 'events'); + if(ev && ev.click) { + /* double check */ + } else { + correctHottextEvent(aEl); + //confirm by sending the setting to the server + if(jQuery(aEl).hasClass('checked')) { + var ffxhrevent = ed.getParam("ffxhrevent"); + var identifier = jQuery(el).data('qti-identifier'); + o_ffXHRNFEvent(ffxhrevent.formNam, ffxhrevent.dispIdField, ffxhrevent.dispId, ffxhrevent.eventIdField, 2, + 'cmd', 'hottext', 'identifier', identifier, 'correct', 'true'); + } + } + }); + }); + + jQuery("span.textentryinteraction[data-copy='needlistener']", e.element).each(function(index, el) { + if(jQuery("a.o_ops", el).size() == 0) { + jQuery(el).append("<a class='o_ops' contenteditable='false'><i contenteditable='false'> </i></a>"); } + + //remove the placeholder for Firefox + if(jQuery("span[contenteditable='true']", el).text() == "x-y-x" && jQuery(el).attr('data-qti-empty') == "true") { + jQuery("span[contenteditable='true']", el).text(""); + jQuery(el).attr('data-qti-empty', 'false'); + }s + + jQuery("a.o_ops", jQuery(el)).each(function(aIndex, aEl) { + var ev = jQuery._data(aEl, 'events'); + if(ev && ev.click) { + //double check + } else { + textEntryEvent(el); + } + }); }); }); - function createPlaceholder(responseIdentifier, interaction, gapType) { - var placeholder = new tinymce.html.Node('img', 1); + function createTextEntryPlaceholder(responseIdentifier, content, interaction, gapType) { + var placeholder = new tinymce.html.Node('span', 1); placeholder.attr({ - width: "32", - height: "16", - src : tinymce.Env.transparentSrc, - id : guid(), "data-qti": interaction, "data-qti-response-identifier": responseIdentifier, + "data-qti-solution" : content, "data-qti-gap-type": gapType, "data-mce-placeholder": "", - "data-mce-resize" : "false", "data-textentryinteraction": "empty", - "class": "mce-shim " + interaction + "class": interaction, + "contenteditable": "false" }); + + var readonly = ed.getParam("readonly"); + var editable = readonly == "1" ? "false" : "true"; + var contentholder = new tinymce.html.Node('span', 1); + contentholder.attr({ "contenteditable": editable }); + var textNode = new tinymce.html.Node('#text', 3); + textNode.raw = true; + textNode.value = content; + contentholder.append(textNode); + placeholder.append(contentholder); + + var aHolder = new tinymce.html.Node('a', 1); + aHolder.attr({ "contenteditable": "false", "class": "o_ops" }); + var aTextHolder = new tinymce.html.Node('i', 1); + aTextHolder.attr({ "contenteditable": "false" }); + var aTextNode = new tinymce.html.Node('#text', 3); + aTextNode.raw = true; + aTextNode.value = ' '; + aTextHolder.append(aTextNode); + aHolder.append(aTextHolder); + placeholder.append(aHolder); return placeholder; } @@ -237,6 +313,7 @@ placeholder.attr({ "data-qti": interaction, "data-qti-identifier": identifier, + "data-qti-checked": (correct ? "true": "false"), "class": interaction, "contenteditable": "false" }); @@ -247,7 +324,7 @@ var checkHolder = new tinymce.html.Node('a', 1); checkHolder.attr({ "contenteditable": "false", - "class": (correct ? "checked": "") + "class": "o_check " + (correct ? "checked": "") }); var aTextHolder = new tinymce.html.Node('i', 1); aTextHolder.attr({ "contenteditable": "false" }); @@ -260,10 +337,25 @@ var contentholder = new tinymce.html.Node('span', 1); contentholder.attr({ "contenteditable": editable }); - var textNode = new tinymce.html.Node('#text', 3); - textNode.raw = true; - textNode.value = content; - contentholder.append(textNode); + if(typeof content === "string") { + var textNode = new tinymce.html.Node('#text', 3); + textNode.raw = true; + textNode.value = content; + contentholder.append(textNode); + } else { + var node, collection = []; + for (node = content.firstChild; node; node = node.walk()) { + if(node.parent == content) { + collection.push(node); + } + if(node == content.lastChild) { + break; + } + } + for(var i=0; i<collection.length; i++) { + contentholder.append(collection[i]); + } + } placeholder.append(contentholder); return placeholder; } @@ -277,13 +369,27 @@ 'cmd', 'hottext', 'identifier', identifier, 'correct', jLinkEl.hasClass('checked') ? "false" : "true"); if(jLinkEl.hasClass('checked')) { jLinkEl.removeClass('checked'); + jLinkEl.parent("span.hottext").attr('data-qti-checked', "false"); } else { jLinkEl.addClass('checked'); + jLinkEl.parent("span.hottext").attr('data-qti-checked', "true"); } ed.setDirty(true); }); } + function textEntryEvent(textEntryEl) { + jQuery("a.o_ops", textEntryEl).click(function() { + var ffxhrevent = ed.getParam("ffxhrevent"); + var responseIdentifier = jQuery(textEntryEl).attr('data-qti-response-identifier'); + var solution = jQuery(textEntryEl).children().html(); + var emptySolution = (solution == "" || solution == " " ? "true" : "false"); + o_ffXHREvent(ffxhrevent.formNam, ffxhrevent.dispIdField, ffxhrevent.dispId, ffxhrevent.eventIdField, 2, false, false, false, + 'cmd', 'gapentry', 'responseIdentifier', responseIdentifier, 'selectedText', solution, 'emptySolution', emptySolution); + ed.setDirty(true); + }); + } + function getTextContent(node) { var content = ''; var walker = new tinymce.dom.TreeWalker(node); @@ -299,30 +405,39 @@ } return content; } + + ed.addCommand('qtiUpdateTextEntry', function (ui, value) { + var val = eval(value); + var responseIdentifier = val['responseIdentifier']; + var solution = val['data-qti-solution']; + jQuery("span[data-qti-response-identifier='" + responseIdentifier+ "']>span", ed.getBody()).each(function(index, el) { + jQuery(el).text(solution); + }); + + jQuery("span[data-qti-response-identifier='" + responseIdentifier+ "']", ed.getBody()).each(function(index, el) { + textEntryEvent(jQuery(el)); + }); + }); // Load Content CSS upon initialization ed.on('init', function() { if (ed.settings.content_css !== false) { ed.dom.loadCSS(url + "/css/content.css"); } - jQuery("img.textentryinteraction", ed.getBody()).each(function(index, el) { - var imgEl = el; - jQuery(imgEl).click(function() { - var ffxhrevent = ed.getParam("ffxhrevent"); - var responseIdentifier = jQuery(imgEl).attr('data-qti-response-identifier'); - o_ffXHREvent(ffxhrevent.formNam, ffxhrevent.dispIdField, ffxhrevent.dispId, ffxhrevent.eventIdField, 2, false, false, false, - 'cmd', 'gapentry', 'responseIdentifier', responseIdentifier); - ed.setDirty(true); - }); + jQuery(".textentryinteraction", ed.getBody()).each(function(index, el) { + textEntryEvent(el); }); - jQuery("span.hottext a", ed.getBody()).each(function(index, el) { + jQuery("span.hottext a.o_check", ed.getBody()).each(function(index, el) { correctHottextEvent(el); }); }); - - + /** + * Replace on load the special XML tags of QTI to some placeholders + * useable by TinyMCE. + * + */ ed.on('preInit', function() { ed.parser.addNodeFilter('textentryinteraction,hottext', function(nodes) { var i = nodes.length, node, placeHolder, videoScript; @@ -331,17 +446,20 @@ if (node.name == 'textentryinteraction') { var responseIdentifier = node.attr('responseidentifier'); var gapType = node.attr('openolattype'); + var solution = node.attr('data-qti-solution'); + if(typeof solution === "undefined") { + solution = " "; + } if(typeof gapType === "undefined") { gapType = "string"; } - var placeHolder = createPlaceholder(responseIdentifier, 'textentryinteraction', gapType); + var placeHolder = createTextEntryPlaceholder(responseIdentifier, solution, 'textentryinteraction', gapType); node.replace(placeHolder); } else if (node.name == 'hottext') { - var identifier = node.attr('identifier'); var correctHottexts = ed.getParam("correctHottexts"); var correct = jQuery.inArray(identifier, correctHottexts) >= 0; - var content = getTextContent(node); + var content = node; var placeHolder = createHottextPlaceholder(identifier, content, correct, 'hottext', 'hottext'); node.replace(placeHolder); } @@ -350,13 +468,17 @@ }); /** - * This onSetContent handler is used to convert the comments to placeholder images (e.g. when loading). + * This event is catch to convert the content of the editor in something useable for + * OpenOLAT, e.g. replace all placeholders with real HTML/XML QTI code. */ ed.on('PreProcess', function(e) { - tinymce.each(ed.dom.select("img[data-qti=textentryinteraction]"), function(node) { + tinymce.each(ed.dom.select("span[data-qti=textentryinteraction]"), function(node) { var identifier = jQuery(node).attr('data-qti-response-identifier'); - var textNode = ed.dom.create("textentryinteraction", { - responseIdentifier: identifier + var solution = jQuery(node).children().html(); + var textNode = ed.dom.create("textEntryInteraction", { + responseIdentifier: identifier, + "data-qti-solution": solution, + "data-qti-solution-empty": (solution == "" || solution == " " ? "true" : "false") }); var alone = node.previousSibling == null && (node.nextSibling == null || jQuery(node.nextSibling).attr("type") == "_moz"); @@ -368,14 +490,25 @@ tinymce.each(ed.dom.select("span[data-qti=hottext]"), function(node) { var identifier = jQuery(node).data('qti-identifier'); - var textNode = ed.dom.create("hottext", { identifier: identifier }); - var hottext = jQuery('span[contenteditable="true"]', node).html(); - textNode.textContent = hottext; - ed.dom.replace(textNode, node, false); + var hottextNode = ed.dom.create("hottext", { identifier: identifier }); + var hottextContent = jQuery('span[contenteditable="true"]', node); + jQuery(hottextNode).append(hottextContent.contents()); + ed.dom.replace(hottextNode, node, false); }); }); ed.on('PastePreProcess', function (e) { + var selectedNode = ed.selection.getNode(); + if(selectedNode != null && + (jQuery(selectedNode).parent("span.hottext").size() > 0 || jQuery(selectedNode).parent("span.textentryinteraction").size() > 0)) { + + // paste in an hottext or a textEntryInteraction -> only text + var wrappedContent = '<div id="' + guid() + '">' + e.content + '</div>'; + var htmlContent = jQuery(wrappedContent); + e.content = jQuery(htmlContent).text(); + return; + } + var replace = false; var wrappedContent = '<div id="' + guid() + '">' + e.content + '</div>'; var htmlContent = jQuery(wrappedContent); @@ -384,6 +517,36 @@ var hotId = 'ht' + guid(); jQuery(el).attr('data-qti-identifier', hotId); jQuery(el).attr('data-copy', 'needlistener'); + jQuery(el).attr('data-copy-empty', 'false'); + + var empty = jQuery("span[contenteditable='true']", el).text(); + if(empty == null || empty.length == 0) { + jQuery("span[contenteditable='true']", el).text("x-y-x"); + jQuery(el).attr('data-copy-empty', 'true'); + } + replace = true; + }); + + jQuery(htmlContent).find("span[data-qti='textentryinteraction']").each(function(index, el) { + var entryId = 'te' + guid(); + jQuery(el).attr('data-qti-response-identifier', entryId); + jQuery(el).attr('data-copy', 'needlistener'); + jQuery(el).attr('data-copy-empty', 'false'); + + var gapType = jQuery(el).attr("data-qti-gap-type"); + var solution = jQuery(el).attr("data-qti-solution"); + var ffxhrevent = ed.getParam("ffxhrevent"); + o_ffXHRNFEvent(ffxhrevent.formNam, ffxhrevent.dispIdField, ffxhrevent.dispId, ffxhrevent.eventIdField, 2, + 'cmd', 'copy-gapentry', 'responseIdentifier', entryId, 'newEntry', true, 'selectedText', solution, 'gapType', gapType); + //add it because tiny delete it + jQuery("a.o_ops", el).append(jQuery("<i class='visible'> </i>")); + + var empty = jQuery("span[contenteditable='true']", el).text(); + if(empty == null || empty.length == 0) { + jQuery("span[contenteditable='true']", el).text("x-y-x"); + jQuery(el).attr('data-copy-empty', 'true'); + } + replace = true; }); diff --git a/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.min.js b/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.min.js index 8b91df2beb96cef0b89dbd1feafaa3092f2c183c..bb70fc83724805d7b59b7924cc301da0042b4333 100644 --- a/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.min.js +++ b/src/main/webapp/static/js/tinymce4/tinymce/plugins/olatqti/plugin.min.js @@ -1,399 +1 @@ -(function() { - tinymce.create('org.olat.ims.qti21.ui.editor', { - - /** - * Returns information about the plugin as a name/value array. - * The current keys are longname, author, authorurl, infourl and version. - * - * @returns Name/value array containing information about the plugin. - * @type Array - */ - getInfo : function() { - return { - longname : 'OpenOLATQTI', - author : 'frentix GmbH', - authorurl : 'http://www.frentix.com', - infourl : 'http://www.frentix.com', - version : '1.1.5' - }; - }, - - /** - * Not used, adButton used instead - */ - createControl : function(n, cm) { - return null; - }, - - /** - * Initializes the plugin, this will be executed after the plugin has been created. - * This call is done before the editor instance has finished it's initialization so use the onInit event - * of the editor instance to intercept that event. - * - * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. - * @param {string} url Absolute URL to where the plugin is located. - */ - init : function(ed, url) { - - var $ = ed.$, selection = ed.selection; - var cachedTrans, cachedCoreTrans; - var cachedHelp; - var lastSelectedGap, lastSelectedHottext; - - // Load the OLAT translator. - function translator() { - if(cachedTrans) return cachedTrans; - var mainWin = o_getMainWin(); - if (mainWin) { - cachedTrans = jQuery(document).ooTranslator().getTranslator(mainWin.o_info.locale, 'org.olat.ims.qti21.ui.editor'); - } else { - cachedTrans = { translate : function(key) { return key; } } - } - return cachedTrans; - } - function coreTranslator() { - if(cachedCoreTrans) return cachedCoreTrans; - var mainWin = o_getMainWin(); - if (mainWin) { - cachedCoreTrans = jQuery(document).ooTranslator().getTranslator(mainWin.o_info.locale, 'org.olat.core'); - } else { - cachedCoreTrans = { translate : function(key) { return key; } } - } - return cachedCoreTrans; - } - - function showTextDialog(e) { - showDialog(e, "string") - } - - function showNumericalDialog(e) { - showDialog(e, "float") - } - - function showDialog(e, gapType) { - var newEntry = false; - var newSelectedText = null; - var responseIdentifier; - if(typeof lastSelectedGap != 'undefined') { - responseIdentifier = jQuery(lastSelectedGap).attr('data-qti-response-identifier') - } else { - var counter = 1; - newSelectedText = ed.selection.getContent({format: 'text'}) - - tinymce.each(ed.dom.select("img[data-qti]"), function(node) { - var identifier = jQuery(node).attr('data-qti-response-identifier'); - if(identifier.lastIndexOf("RESPONSE_", 0) == 0) { - var id = parseInt(identifier.substring(9, identifier.length)); - if(id > counter) { - counter = id; - } - } - }); - - var responseIdentifier = "RESPONSE_" + (counter + 1); - var placeholder = createPlaceholder(responseIdentifier, 'textentryinteraction', gapType); - var holderHtml = new tinymce.html.Serializer().serialize(placeholder); - ed.insertContent(holderHtml); - newEntry = true; - } - - var ffxhrevent = ed.getParam("ffxhrevent"); - o_ffXHREvent(ffxhrevent.formNam, ffxhrevent.dispIdField, ffxhrevent.dispId, ffxhrevent.eventIdField, 2, false, false, false, - 'cmd', 'gapentry', 'responseIdentifier', responseIdentifier, 'newEntry', newEntry, 'selectedText', newSelectedText, 'gapType', gapType); - ed.setDirty(true); - } - - function guid() { - function s4() { - return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1); - } - return s4() + s4() + s4() + s4() + s4() + s4() + s4(); - } - - function createHottext(e) { - var responseIdentifier; - if(typeof lastSelectedHottext != 'undefined') { - responseIdentifier = jQuery(lastSelectedHottext).data('data-identifier') - } else { - var counter = 1; - var selectedText = ed.selection.getContent({format: 'text'}); - var preSelect = false; - if(selectedText == null || selectedText.length == 0) { - selectedText = "text"; - preSelect = true; - } - - var identifier = "ht" + guid(); - var placeholder = createHottextPlaceholder(identifier, selectedText, false, 'hottext'); - var holderHtml = new tinymce.html.Serializer().serialize(placeholder); - ed.insertContent(holderHtml); - - if(preSelect) { - var selectedNode = ed.dom.select("span[data-qti-identifier=" + identifier + "] span[contenteditable=true]"); - ed.selection.select(selectedNode[0], true); - } - - jQuery("span.hottext[data-qti-identifier='" + identifier + "'] a", ed.getBody()).each(function(index, el) { - correctHottextEvent(el); - }); - } - } - - ed.addButton('olatqtifibtext', { - title : translator().translate('new.fib'), - icon : 'gaptext', - stateSelector: ['img[data-qti-gap-type=string]', 'span[data-qti-gap-type=string]'], - onclick: showTextDialog - }); - - ed.addButton('olatqtifibnumerical', { - title : translator().translate('new.fib') + ' Numerical', - icon : 'gapnumerical', - stateSelector: ['img[data-qti-gap-type=float]', 'span[data-qti-gap-type=float]'], - onclick: showNumericalDialog - }); - - ed.addButton('olatqtihottext', { - title : translator().translate('new.hottext'), - icon : 'hottext', - stateSelector: ['span[data-qti=hottext]'], - onclick: createHottext - }); - - ed.addButton('editgap', { - title: 'edit', - icon: 'edit', - onclick: showDialog - }); - - ed.addMenuItem('olatqtifibtext', { - text : translator().translate('new.fib'), - icon : 'gapnumerical', - stateSelector: ['img[data-qti-gap-type=string]', 'span[data-qti-gap-type=string]'], - onclick: showNumericalDialog - }); - - ed.addMenuItem('olatqtifibnumerical', { - text : translator().translate('new.fib.numerical') + ' Numerical', - icon : 'gaptext', - stateSelector: ['img[data-qti-gap-type=float]', 'span[data-qti-gap-type=float]'], - onclick: showTextDialog - }); - - ed.addMenuItem('olatqtihottext', { - text : translator().translate('new.hottext'), - icon : 'hottext', - stateSelector: ['span[data-qti=hottext]'], - onclick: createHottext - }); - - ed.on('NodeChange', function(e) { - if (lastSelectedGap && lastSelectedGap.id != e.element.src) { - lastSelectedGap = undefined; - } - if (lastSelectedHottext && lastSelectedHottext.id != e.element.src) { - lastSelectedHottext = undefined; - } - - if (ed.dom.is(e.element, 'img[data-qti]')) { - lastSelectedGap = e.element; - } - - if (jQuery(e.element).parent('span.hottext').size() > 0) { - lastSelectedHottext = e.element; - } - - jQuery("span.hottext[data-copy='needlistener'] a", e.element).each(function(index, el) { - var hottext = jQuery(el).parent("span.hottext").attr('data-copy','blues'); - var ev = jQuery._data(el, 'events'); - if(ev && ev.click) { - //double check - } else { - correctHottextEvent(el); - } - }); - }); - - function createPlaceholder(responseIdentifier, interaction, gapType) { - var placeholder = new tinymce.html.Node('img', 1); - placeholder.attr({ - width: "32", - height: "16", - src : tinymce.Env.transparentSrc, - id : guid(), - "data-qti": interaction, - "data-qti-response-identifier": responseIdentifier, - "data-qti-gap-type": gapType, - "data-mce-placeholder": "", - "data-mce-resize" : "false", - "data-textentryinteraction": "empty", - "class": "mce-shim " + interaction - }); - return placeholder; - } - - function createHottextPlaceholder(identifier, content, correct, interaction) { - var placeholder = new tinymce.html.Node('span', 1); - placeholder.attr({ - "data-qti": interaction, - "data-qti-identifier": identifier, - "class": interaction, - "contenteditable": "false" - }); - - var readonly = ed.getParam("readonly"); - var editable = readonly == "1" ? "false" : "true"; - - var checkHolder = new tinymce.html.Node('a', 1); - checkHolder.attr({ - "contenteditable": "false", - "class": (correct ? "checked": "") - }); - var aTextHolder = new tinymce.html.Node('i', 1); - aTextHolder.attr({ "contenteditable": "false" }); - var aTextNode = new tinymce.html.Node('#text', 3); - aTextNode.raw = true; - aTextNode.value = ' '; - aTextHolder.append(aTextNode); - checkHolder.append(aTextHolder); - placeholder.append(checkHolder); - - var contentholder = new tinymce.html.Node('span', 1); - contentholder.attr({ "contenteditable": editable }); - var textNode = new tinymce.html.Node('#text', 3); - textNode.raw = true; - textNode.value = content; - contentholder.append(textNode); - placeholder.append(contentholder); - return placeholder; - } - - function correctHottextEvent(linkEl) { - jQuery(linkEl).click(function() { - var ffxhrevent = ed.getParam("ffxhrevent"); - var jLinkEl = jQuery(linkEl); - var identifier = jLinkEl.parent("span.hottext").data('qti-identifier'); - o_ffXHRNFEvent(ffxhrevent.formNam, ffxhrevent.dispIdField, ffxhrevent.dispId, ffxhrevent.eventIdField, 2, - 'cmd', 'hottext', 'identifier', identifier, 'correct', jLinkEl.hasClass('checked') ? "false" : "true"); - if(jLinkEl.hasClass('checked')) { - jLinkEl.removeClass('checked'); - } else { - jLinkEl.addClass('checked'); - } - ed.setDirty(true); - }); - } - - function getTextContent(node) { - var content = ''; - var walker = new tinymce.dom.TreeWalker(node); - var textNode; - while ((textNode = walker.next())) { - if (textNode.type == 3) { - if(content.length > 0) content += ' '; - content += textNode.value; - } else if(textNode.nodeType == 3) { - if(content.length > 0) content += ' '; - content += textNode.nodeValue; - } - } - return content; - } - - // Load Content CSS upon initialization - ed.on('init', function() { - if (ed.settings.content_css !== false) { - ed.dom.loadCSS(url + "/css/content.css"); - } - jQuery("img.textentryinteraction", ed.getBody()).each(function(index, el) { - var imgEl = el; - jQuery(imgEl).click(function() { - var ffxhrevent = ed.getParam("ffxhrevent"); - var responseIdentifier = jQuery(imgEl).attr('data-qti-response-identifier'); - o_ffXHREvent(ffxhrevent.formNam, ffxhrevent.dispIdField, ffxhrevent.dispId, ffxhrevent.eventIdField, 2, false, false, false, - 'cmd', 'gapentry', 'responseIdentifier', responseIdentifier); - ed.setDirty(true); - }); - }); - - jQuery("span.hottext a", ed.getBody()).each(function(index, el) { - correctHottextEvent(el); - }); - }); - - - - ed.on('preInit', function() { - ed.parser.addNodeFilter('textentryinteraction,hottext', function(nodes) { - var i = nodes.length, node, placeHolder, videoScript; - while (i--) { - node = nodes[i]; - if (node.name == 'textentryinteraction') { - var responseIdentifier = node.attr('responseidentifier'); - var gapType = node.attr('openolattype'); - if(typeof gapType === "undefined") { - gapType = "string"; - } - var placeHolder = createPlaceholder(responseIdentifier, 'textentryinteraction', gapType); - node.replace(placeHolder); - } else if (node.name == 'hottext') { - - var identifier = node.attr('identifier'); - var correctHottexts = ed.getParam("correctHottexts"); - var correct = jQuery.inArray(identifier, correctHottexts) >= 0; - var content = getTextContent(node); - var placeHolder = createHottextPlaceholder(identifier, content, correct, 'hottext', 'hottext'); - node.replace(placeHolder); - } - } - }); - }); - - /** - * This onSetContent handler is used to convert the comments to placeholder images (e.g. when loading). - */ - ed.on('PreProcess', function(e) { - tinymce.each(ed.dom.select("img[data-qti=textentryinteraction]"), function(node) { - var identifier = jQuery(node).attr('data-qti-response-identifier'); - var textNode = ed.dom.create("textentryinteraction", { - responseIdentifier: identifier - }); - - var alone = node.previousSibling == null && (node.nextSibling == null || jQuery(node.nextSibling).attr("type") == "_moz"); - ed.dom.replace(textNode, node, false); - if(alone) { - jQuery(textNode).after(String.fromCharCode(160)); - } - }); - - tinymce.each(ed.dom.select("span[data-qti=hottext]"), function(node) { - var identifier = jQuery(node).data('qti-identifier'); - var textNode = ed.dom.create("hottext", { identifier: identifier }); - var hottext = jQuery('span[contenteditable="true"]', node).html(); - textNode.textContent = hottext; - ed.dom.replace(textNode, node, false); - }); - }); - - ed.on('PastePreProcess', function (e) { - var replace = false; - var wrappedContent = '<div id="' + guid() + '">' + e.content + '</div>'; - var htmlContent = jQuery(wrappedContent); - - jQuery(htmlContent).find("span[data-qti='hottext']").each(function(index, el) { - var hotId = 'ht' + guid(); - jQuery(el).attr('data-qti-identifier', hotId); - jQuery(el).attr('data-copy', 'needlistener'); - replace = true; - }); - - if(replace) { - e.content = jQuery(htmlContent).html(); - } - }); - } - }); - - // Register plugin - tinymce.PluginManager.add('olatqti', org.olat.ims.qti21.ui.editor); -})(); \ No newline at end of file +(function(){tinymce.create("org.olat.ims.qti21.ui.editor",{getInfo:function(){return{longname:"OpenOLATQTI",author:"frentix GmbH",authorurl:"http://www.frentix.com",infourl:"http://www.frentix.com",version:"1.2.6"}},createControl:function(n,cm){return null},init:function(ed,url){var $=ed.$,selection=ed.selection;var cachedTrans,cachedCoreTrans;var cachedHelp;var lastSelectedGap,lastSelectedHottext;function translator(){if(cachedTrans){return cachedTrans}var mainWin=o_getMainWin();if(mainWin){cachedTrans=jQuery(document).ooTranslator().getTranslator(mainWin.o_info.locale,"org.olat.ims.qti21.ui.editor")}else{cachedTrans={translate:function(key){return key}}}return cachedTrans}function coreTranslator(){if(cachedCoreTrans){return cachedCoreTrans}var mainWin=o_getMainWin();if(mainWin){cachedCoreTrans=jQuery(document).ooTranslator().getTranslator(mainWin.o_info.locale,"org.olat.core")}else{cachedCoreTrans={translate:function(key){return key}}}return cachedCoreTrans}function showTextDialog(e){showDialog(e,"string")}function showNumericalDialog(e){showDialog(e,"float")}function showDialog(e,gapType){var ffxhrevent=ed.getParam("ffxhrevent");if(typeof lastSelectedGap!="undefined"){var textEntryEl=jQuery(lastSelectedGap).closest("span[data-qti='textentryinteraction']");var responseIdentifier=textEntryEl.attr("data-qti-response-identifier");var solution=jQuery(textEntryEl).children().html();var emptySolution=(solution==""||solution==" "?"true":"false");o_ffXHREvent(ffxhrevent.formNam,ffxhrevent.dispIdField,ffxhrevent.dispId,ffxhrevent.eventIdField,2,false,false,false,"cmd","gapentry","responseIdentifier",responseIdentifier,"selectedText",solution,"emptySolution",emptySolution,"newEntry",false)}else{var counter=1;var newSelectedText=ed.selection.getContent({format:"text"});tinymce.each(ed.dom.select("span[data-qti]"),function(node){var identifier=jQuery(node).attr("data-qti-response-identifier");if(identifier.lastIndexOf("RESPONSE_",0)==0){var id=parseInt(identifier.substring(9,identifier.length));if(id>counter){counter=id}}});var responseIdentifier="RESPONSE_"+(counter+1);if(typeof newSelectedText==="undefined"||newSelectedText.length==0){newSelectedText="gap"}var placeholder=createTextEntryPlaceholder(responseIdentifier,newSelectedText,"textentryinteraction",gapType);var holderHtml=new tinymce.html.Serializer().serialize(placeholder);ed.insertContent(holderHtml);o_ffXHREvent(ffxhrevent.formNam,ffxhrevent.dispIdField,ffxhrevent.dispId,ffxhrevent.eventIdField,2,false,false,false,"cmd","gapentry","responseIdentifier",responseIdentifier,"newEntry",true,"selectedText",newSelectedText,"gapType",gapType)}ed.setDirty(true)}function guid(){function s4(){return Math.floor((1+Math.random())*65536).toString(16).substring(1)}return s4()+s4()+s4()+s4()+s4()+s4()+s4()}function createHottext(e){var responseIdentifier;if(typeof lastSelectedHottext!="undefined"){responseIdentifier=jQuery(lastSelectedHottext).data("data-identifier")}else{var counter=1;var selectedText=ed.selection.getContent({format:"text"});var preSelect=false;if(selectedText==null||selectedText.length==0){selectedText="text";preSelect=true}var identifier="ht"+guid();var placeholder=createHottextPlaceholder(identifier,selectedText,false,"hottext");var holderHtml=new tinymce.html.Serializer().serialize(placeholder);ed.insertContent(holderHtml);if(preSelect){var selectedNode=ed.dom.select("span[data-qti-identifier="+identifier+"] span[contenteditable=true]");ed.selection.select(selectedNode[0],true)}jQuery("span.hottext[data-qti-identifier='"+identifier+"'] a",ed.getBody()).each(function(index,el){correctHottextEvent(el)})}}ed.addButton("olatqtifibtext",{title:translator().translate("new.fib"),icon:"gaptext",stateSelector:["span[data-qti-gap-type=string]"],onclick:showTextDialog});ed.addButton("olatqtifibnumerical",{title:translator().translate("new.fib")+" Numerical",icon:"gapnumerical",stateSelector:["span[data-qti-gap-type=float]"],onclick:showNumericalDialog});ed.addButton("olatqtihottext",{title:translator().translate("new.hottext"),icon:"hottext",stateSelector:["span[data-qti=hottext]"],onclick:createHottext});ed.addButton("editgap",{title:"edit",icon:"edit",onclick:showDialog});ed.addMenuItem("olatqtifibtext",{text:translator().translate("new.fib"),icon:"gapnumerical",stateSelector:["span[data-qti-gap-type=string]"],onclick:showNumericalDialog});ed.addMenuItem("olatqtifibnumerical",{text:translator().translate("new.fib.numerical")+" Numerical",icon:"gaptext",stateSelector:["span[data-qti-gap-type=float]"],onclick:showTextDialog});ed.addMenuItem("olatqtihottext",{text:translator().translate("new.hottext"),icon:"hottext",stateSelector:["span[data-qti=hottext]"],onclick:createHottext});ed.on("NodeChange",function(e){if(lastSelectedGap&&lastSelectedGap.id!=e.element.src){lastSelectedGap=undefined}if(lastSelectedHottext&&lastSelectedHottext.id!=e.element.src){lastSelectedHottext=undefined}if(ed.dom.is(e.element,"span[data-qti=textentryinteraction]")){lastSelectedGap=e.element}else{if(jQuery(e.element).parent("span[data-qti='textentryinteraction']").size()>0){lastSelectedGap=e.element}}if(jQuery(e.element).parent("span.hottext").size()>0){lastSelectedHottext=e.element}jQuery(e.element).parent("span[data-qti-gap-type=float]").each(function(index,el){if(jQuery(e.element).prop("tagName").toLowerCase()=="span"){var solution=jQuery(e.element).text();if(!jQuery.isNumeric(solution)){jQuery(el).addClass("error")}else{jQuery(el).removeClass("error")}}});jQuery("span.hottext[data-copy='needlistener']",e.element).each(function(index,el){if(jQuery("a.o_check",el).size()==0){var checked=jQuery(el).attr("data-qti-checked");jQuery(el).prepend("<a class='o_check "+("true"==checked?"checked":"")+"' contenteditable='false'><i contenteditable='false'> </i></a>")}if(jQuery("span[contenteditable='true']",el).text()=="x-y-x"&&jQuery(el).attr("data-qti-empty")=="true"){jQuery("span[contenteditable='true']",el).text("");jQuery(el).attr("data-qti-empty","false")}jQuery("a.o_check",jQuery(el)).each(function(aIndex,aEl){var ev=jQuery._data(aEl,"events");if(ev&&ev.click){}else{correctHottextEvent(aEl);if(jQuery(aEl).hasClass("checked")){var ffxhrevent=ed.getParam("ffxhrevent");var identifier=jQuery(el).data("qti-identifier");o_ffXHRNFEvent(ffxhrevent.formNam,ffxhrevent.dispIdField,ffxhrevent.dispId,ffxhrevent.eventIdField,2,"cmd","hottext","identifier",identifier,"correct","true")}}})});jQuery("span.textentryinteraction[data-copy='needlistener']",e.element).each(function(index,el){if(jQuery("a.o_ops",el).size()==0){jQuery(el).append("<a class='o_ops' contenteditable='false'><i contenteditable='false'> </i></a>")}if(jQuery("span[contenteditable='true']",el).text()=="x-y-x"&&jQuery(el).attr("data-qti-empty")=="true"){jQuery("span[contenteditable='true']",el).text("");jQuery(el).attr("data-qti-empty","false")}s;jQuery("a.o_ops",jQuery(el)).each(function(aIndex,aEl){var ev=jQuery._data(aEl,"events");if(ev&&ev.click){}else{textEntryEvent(el)}})})});function createTextEntryPlaceholder(responseIdentifier,content,interaction,gapType){var placeholder=new tinymce.html.Node("span",1);placeholder.attr({"data-qti":interaction,"data-qti-response-identifier":responseIdentifier,"data-qti-solution":content,"data-qti-gap-type":gapType,"data-mce-placeholder":"","data-textentryinteraction":"empty","class":interaction,contenteditable:"false"});var readonly=ed.getParam("readonly");var editable=readonly=="1"?"false":"true";var contentholder=new tinymce.html.Node("span",1);contentholder.attr({contenteditable:editable});var textNode=new tinymce.html.Node("#text",3);textNode.raw=true;textNode.value=content;contentholder.append(textNode);placeholder.append(contentholder);var aHolder=new tinymce.html.Node("a",1);aHolder.attr({contenteditable:"false","class":"o_ops"});var aTextHolder=new tinymce.html.Node("i",1);aTextHolder.attr({contenteditable:"false"});var aTextNode=new tinymce.html.Node("#text",3);aTextNode.raw=true;aTextNode.value=" ";aTextHolder.append(aTextNode);aHolder.append(aTextHolder);placeholder.append(aHolder);return placeholder}function createHottextPlaceholder(identifier,content,correct,interaction){var placeholder=new tinymce.html.Node("span",1);placeholder.attr({"data-qti":interaction,"data-qti-identifier":identifier,"data-qti-checked":(correct?"true":"false"),"class":interaction,contenteditable:"false"});var readonly=ed.getParam("readonly");var editable=readonly=="1"?"false":"true";var checkHolder=new tinymce.html.Node("a",1);checkHolder.attr({contenteditable:"false","class":"o_check "+(correct?"checked":"")});var aTextHolder=new tinymce.html.Node("i",1);aTextHolder.attr({contenteditable:"false"});var aTextNode=new tinymce.html.Node("#text",3);aTextNode.raw=true;aTextNode.value=" ";aTextHolder.append(aTextNode);checkHolder.append(aTextHolder);placeholder.append(checkHolder);var contentholder=new tinymce.html.Node("span",1);contentholder.attr({contenteditable:editable});if(typeof content==="string"){var textNode=new tinymce.html.Node("#text",3);textNode.raw=true;textNode.value=content;contentholder.append(textNode)}else{var node,collection=[];for(node=content.firstChild;node;node=node.walk()){if(node.parent==content){collection.push(node)}if(node==content.lastChild){break}}for(var i=0;i<collection.length;i++){contentholder.append(collection[i])}}placeholder.append(contentholder);return placeholder}function correctHottextEvent(linkEl){jQuery(linkEl).click(function(){var ffxhrevent=ed.getParam("ffxhrevent");var jLinkEl=jQuery(linkEl);var identifier=jLinkEl.parent("span.hottext").data("qti-identifier");o_ffXHRNFEvent(ffxhrevent.formNam,ffxhrevent.dispIdField,ffxhrevent.dispId,ffxhrevent.eventIdField,2,"cmd","hottext","identifier",identifier,"correct",jLinkEl.hasClass("checked")?"false":"true");if(jLinkEl.hasClass("checked")){jLinkEl.removeClass("checked");jLinkEl.parent("span.hottext").attr("data-qti-checked","false")}else{jLinkEl.addClass("checked");jLinkEl.parent("span.hottext").attr("data-qti-checked","true")}ed.setDirty(true)})}function textEntryEvent(textEntryEl){jQuery("a.o_ops",textEntryEl).click(function(){var ffxhrevent=ed.getParam("ffxhrevent");var responseIdentifier=jQuery(textEntryEl).attr("data-qti-response-identifier");var solution=jQuery(textEntryEl).children().html();var emptySolution=(solution==""||solution==" "?"true":"false");o_ffXHREvent(ffxhrevent.formNam,ffxhrevent.dispIdField,ffxhrevent.dispId,ffxhrevent.eventIdField,2,false,false,false,"cmd","gapentry","responseIdentifier",responseIdentifier,"selectedText",solution,"emptySolution",emptySolution);ed.setDirty(true)})}function getTextContent(node){var content="";var walker=new tinymce.dom.TreeWalker(node);var textNode;while((textNode=walker.next())){if(textNode.type==3){if(content.length>0){content+=" "}content+=textNode.value}else{if(textNode.nodeType==3){if(content.length>0){content+=" "}content+=textNode.nodeValue}}}return content}ed.addCommand("qtiUpdateTextEntry",function(ui,value){var val=eval(value);var responseIdentifier=val.responseIdentifier;var solution=val["data-qti-solution"];jQuery("span[data-qti-response-identifier='"+responseIdentifier+"']>span",ed.getBody()).each(function(index,el){jQuery(el).text(solution)});jQuery("span[data-qti-response-identifier='"+responseIdentifier+"']",ed.getBody()).each(function(index,el){textEntryEvent(jQuery(el))})});ed.on("init",function(){if(ed.settings.content_css!==false){ed.dom.loadCSS(url+"/css/content.css")}jQuery(".textentryinteraction",ed.getBody()).each(function(index,el){textEntryEvent(el)});jQuery("span.hottext a.o_check",ed.getBody()).each(function(index,el){correctHottextEvent(el)})});ed.on("preInit",function(){ed.parser.addNodeFilter("textentryinteraction,hottext",function(nodes){var i=nodes.length,node,placeHolder,videoScript;while(i--){node=nodes[i];if(node.name=="textentryinteraction"){var responseIdentifier=node.attr("responseidentifier");var gapType=node.attr("openolattype");var solution=node.attr("data-qti-solution");if(typeof solution==="undefined"){solution=" "}if(typeof gapType==="undefined"){gapType="string"}var placeHolder=createTextEntryPlaceholder(responseIdentifier,solution,"textentryinteraction",gapType);node.replace(placeHolder)}else{if(node.name=="hottext"){var identifier=node.attr("identifier");var correctHottexts=ed.getParam("correctHottexts");var correct=jQuery.inArray(identifier,correctHottexts)>=0;var content=node;var placeHolder=createHottextPlaceholder(identifier,content,correct,"hottext","hottext");node.replace(placeHolder)}}}})});ed.on("PreProcess",function(e){tinymce.each(ed.dom.select("span[data-qti=textentryinteraction]"),function(node){var identifier=jQuery(node).attr("data-qti-response-identifier");var solution=jQuery(node).children().html();var textNode=ed.dom.create("textEntryInteraction",{responseIdentifier:identifier,"data-qti-solution":solution,"data-qti-solution-empty":(solution==""||solution==" "?"true":"false")});var alone=node.previousSibling==null&&(node.nextSibling==null||jQuery(node.nextSibling).attr("type")=="_moz");ed.dom.replace(textNode,node,false);if(alone){jQuery(textNode).after(String.fromCharCode(160))}});tinymce.each(ed.dom.select("span[data-qti=hottext]"),function(node){var identifier=jQuery(node).data("qti-identifier");var hottextNode=ed.dom.create("hottext",{identifier:identifier});var hottextContent=jQuery('span[contenteditable="true"]',node);jQuery(hottextNode).append(hottextContent.contents());ed.dom.replace(hottextNode,node,false)})});ed.on("PastePreProcess",function(e){var selectedNode=ed.selection.getNode();if(selectedNode!=null&&(jQuery(selectedNode).parent("span.hottext").size()>0||jQuery(selectedNode).parent("span.textentryinteraction").size()>0)){var wrappedContent='<div id="'+guid()+'">'+e.content+"</div>";var htmlContent=jQuery(wrappedContent);e.content=jQuery(htmlContent).text();return}var replace=false;var wrappedContent='<div id="'+guid()+'">'+e.content+"</div>";var htmlContent=jQuery(wrappedContent);jQuery(htmlContent).find("span[data-qti='hottext']").each(function(index,el){var hotId="ht"+guid();jQuery(el).attr("data-qti-identifier",hotId);jQuery(el).attr("data-copy","needlistener");jQuery(el).attr("data-copy-empty","false");var empty=jQuery("span[contenteditable='true']",el).text();if(empty==null||empty.length==0){jQuery("span[contenteditable='true']",el).text("x-y-x");jQuery(el).attr("data-copy-empty","true")}replace=true});jQuery(htmlContent).find("span[data-qti='textentryinteraction']").each(function(index,el){var entryId="te"+guid();jQuery(el).attr("data-qti-response-identifier",entryId);jQuery(el).attr("data-copy","needlistener");jQuery(el).attr("data-copy-empty","false");var gapType=jQuery(el).attr("data-qti-gap-type");var solution=jQuery(el).attr("data-qti-solution");var ffxhrevent=ed.getParam("ffxhrevent");o_ffXHRNFEvent(ffxhrevent.formNam,ffxhrevent.dispIdField,ffxhrevent.dispId,ffxhrevent.eventIdField,2,"cmd","copy-gapentry","responseIdentifier",entryId,"newEntry",true,"selectedText",solution,"gapType",gapType);jQuery("a.o_ops",el).append(jQuery("<i class='visible'> </i>"));var empty=jQuery("span[contenteditable='true']",el).text();if(empty==null||empty.length==0){jQuery("span[contenteditable='true']",el).text("x-y-x");jQuery(el).attr("data-copy-empty","true")}replace=true});if(replace){e.content=jQuery(htmlContent).html()}})}});tinymce.PluginManager.add("olatqti",org.olat.ims.qti21.ui.editor)})(); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/bigplay.fw.png b/src/main/webapp/static/movie/mediaelementjs/bigplay.fw.png deleted file mode 100644 index 66d0e3cb73ceec0b1ffc7cdd4c1bc5edaf960556..0000000000000000000000000000000000000000 Binary files a/src/main/webapp/static/movie/mediaelementjs/bigplay.fw.png and /dev/null differ diff --git a/src/main/webapp/static/movie/mediaelementjs/bigplay.png b/src/main/webapp/static/movie/mediaelementjs/bigplay.png deleted file mode 100644 index 694553e31c387188b6bde397a5200c212aff2dc5..0000000000000000000000000000000000000000 Binary files a/src/main/webapp/static/movie/mediaelementjs/bigplay.png and /dev/null differ diff --git a/src/main/webapp/static/movie/mediaelementjs/bigplay.svg b/src/main/webapp/static/movie/mediaelementjs/bigplay.svg deleted file mode 100644 index 2b7817005d90d5b2357616d7dd210c14819d2178..0000000000000000000000000000000000000000 --- a/src/main/webapp/static/movie/mediaelementjs/bigplay.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" standalone="no"?> -<svg id="bigplay" viewBox="0 0 100 200" style="background-color:#ffffff00" version="1.1" - xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" - x="0px" y="0px" width="100px" height="200px" -> - <g id="dark"> - <path id="Polygon" d="M 72.5 49.5 L 38.75 68.9856 L 38.75 30.0144 L 72.5 49.5 Z" fill="#ffffff" opacity="0.75" /> - <path id="Ellipse" d="M 13 50.5 C 13 29.7891 29.7891 13 50.5 13 C 71.2109 13 88 29.7891 88 50.5 C 88 71.2109 71.2109 88 50.5 88 C 29.7891 88 13 71.2109 13 50.5 Z" stroke="#ffffff" stroke-width="5" fill="none" opacity="0.75"/> - </g> - <g id="light"> - <path id="Polygon2" d="M 72.5 149.5 L 38.75 168.9856 L 38.75 130.0144 L 72.5 149.5 Z" fill="#ffffff" opacity="1.0" /> - <path id="Ellipse2" d="M 13 150.5 C 13 129.7891 29.7891 113 50.5 113 C 71.2109 113 88 129.7891 88 150.5 C 88 171.211 71.2109 188 50.5 188 C 29.7891 188 13 171.211 13 150.5 Z" stroke="#ffffff" stroke-width="5" fill="none" opacity="1.0"/> - </g> -</svg> \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/controls.fw.png b/src/main/webapp/static/movie/mediaelementjs/controls.fw.png deleted file mode 100644 index e27682ae107408748ac91805eee0e1554d618cd5..0000000000000000000000000000000000000000 Binary files a/src/main/webapp/static/movie/mediaelementjs/controls.fw.png and /dev/null differ diff --git a/src/main/webapp/static/movie/mediaelementjs/controls.png b/src/main/webapp/static/movie/mediaelementjs/controls.png deleted file mode 100644 index f6a857d800b64264443af4609e0ebf7175593d8f..0000000000000000000000000000000000000000 Binary files a/src/main/webapp/static/movie/mediaelementjs/controls.png and /dev/null differ diff --git a/src/main/webapp/static/movie/mediaelementjs/controls.svg b/src/main/webapp/static/movie/mediaelementjs/controls.svg deleted file mode 100644 index af3bd41606ae3f0f8d20d213f9e8819569bb7715..0000000000000000000000000000000000000000 --- a/src/main/webapp/static/movie/mediaelementjs/controls.svg +++ /dev/null @@ -1 +0,0 @@ -<?xml version="1.0" standalone="no"?> <!-- Generator: Adobe Fireworks CS6, Export SVG Extension by Aaron Beall (http://fireworks.abeall.com) . Version: 0.6.1 --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg id="controls.fw-Page%201" viewBox="0 0 144 32" style="background-color:#ffffff00" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" x="0px" y="0px" width="144px" height="32px" > <defs> <radialGradient id="gradient1" cx="50%" cy="50%" r="50%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#f2f2f2" stop-opacity="0.2" offset="100%"/> </radialGradient> <linearGradient id="gradient2" x1="50%" y1="-7.8652%" x2="50%" y2="249.6629%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient3" x1="50%" y1="0%" x2="50%" y2="238.75%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient4" x1="50%" y1="0%" x2="50%" y2="100%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient5" x1="50%" y1="-33.3333%" x2="50%" y2="152.0833%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient6" x1="50%" y1="0%" x2="50%" y2="100%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient7" x1="50%" y1="-33.3333%" x2="50%" y2="152.0833%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient8" x1="50%" y1="0%" x2="50%" y2="100%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient9" x1="50%" y1="0%" x2="50%" y2="100%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient10" x1="50%" y1="0%" x2="50%" y2="100%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient11" x1="50%" y1="0%" x2="50%" y2="100%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient12" x1="50%" y1="0%" x2="50%" y2="238.75%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient13" x1="40%" y1="-140%" x2="40%" y2="98.75%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient14" x1="50%" y1="0%" x2="50%" y2="238.75%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient15" x1="60%" y1="-140%" x2="60%" y2="98.75%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient16" x1="50%" y1="0%" x2="50%" y2="298.4375%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient17" x1="50%" y1="0%" x2="50%" y2="238.75%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient18" x1="50%" y1="-200%" x2="50%" y2="100%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient19" x1="50%" y1="-200%" x2="50%" y2="110.9375%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient20" x1="55%" y1="0%" x2="55%" y2="100%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="100%"/> </linearGradient> <linearGradient id="gradient21" x1="50%" y1="0%" x2="50%" y2="100%"> <stop stop-color="#ffffff" stop-opacity="1" offset="0%"/> <stop stop-color="#c8c8c8" stop-opacity="1" offset="99.4444%"/> </linearGradient> </defs> <g id="BG"> </g> <g id="controls"> <path id="Line" d="M 98.5 7.5 L 109.5 7.5 " stroke="#ffffff" stroke-width="1" fill="none"/> <path id="Line2" d="M 98.5 3.5 L 109.5 3.5 " stroke="#ffffff" stroke-width="1" fill="none"/> <path id="Line3" d="M 98.5 11.5 L 109.5 11.5 " stroke="#ffffff" stroke-width="1" fill="none"/> <path id="Ellipse" d="M 108 11.5 C 108 10.6716 108.4477 10 109 10 C 109.5523 10 110 10.6716 110 11.5 C 110 12.3284 109.5523 13 109 13 C 108.4477 13 108 12.3284 108 11.5 Z" fill="#ffffff"/> <path id="Ellipse2" d="M 104 7.5 C 104 6.6716 104.4477 6 105 6 C 105.5523 6 106 6.6716 106 7.5 C 106 8.3284 105.5523 9 105 9 C 104.4477 9 104 8.3284 104 7.5 Z" fill="#ffffff"/> <path id="Ellipse3" d="M 108 3.5 C 108 2.6716 108.4477 2 109 2 C 109.5523 2 110 2.6716 110 3.5 C 110 4.3284 109.5523 5 109 5 C 108.4477 5 108 4.3284 108 3.5 Z" fill="#ffffff"/> </g> <g id="backlight"> <g id="off"> <rect x="83" y="21" width="10" height="6" stroke="#ffffff" stroke-width="1" fill="#333333"/> </g> <g id="on"> <path id="Ellipse4" d="M 81 8 C 81 5.2385 84.134 3 88 3 C 91.866 3 95 5.2385 95 8 C 95 10.7615 91.866 13 88 13 C 84.134 13 81 10.7615 81 8 Z" fill="url(#gradient1)"/> <rect x="83" y="5" width="10" height="6" stroke="#ffffff" stroke-width="1" fill="#333333"/> </g> </g> <g id="loop"> <g id="on2"> <path d="M 73.795 4.205 C 75.2155 4.8785 76.2 6.3234 76.2 8 C 76.2 10.3196 74.3196 12.2 72 12.2 C 69.6804 12.2 67.8 10.3196 67.8 8 C 67.8 6.3234 68.7845 4.8785 70.205 4.205 L 68.875 2.875 C 67.1501 3.9289 66 5.8306 66 8 C 66 11.3138 68.6862 14 72 14 C 75.3138 14 78 11.3138 78 8 C 78 5.8306 76.8499 3.9289 75.125 2.875 L 73.795 4.205 Z" fill="url(#gradient2)"/> <path d="M 71 2 L 66 2 L 71 7 L 71 2 Z" fill="url(#gradient3)"/> </g> <g id="off2"> <path d="M 73.795 20.205 C 75.2155 20.8785 76.2 22.3234 76.2 24 C 76.2 26.3196 74.3196 28.2 72 28.2 C 69.6804 28.2 67.8 26.3196 67.8 24 C 67.8 22.3234 68.7845 20.8785 70.205 20.205 L 68.875 18.875 C 67.1501 19.9289 66 21.8306 66 24 C 66 27.3138 68.6862 30 72 30 C 75.3138 30 78 27.3138 78 24 C 78 21.8306 76.8499 19.9289 75.125 18.875 L 73.795 20.205 Z" fill="#a8a8b7"/> <path d="M 71 18 L 66 18 L 71 23 L 71 18 Z" fill="#a8a8b7"/> </g> </g> <g id="cc"> <rect visibility="hidden" x="49" y="2" width="14" height="12" stroke="#b0b0b0" stroke-width="1" fill="none"/> <text visibility="hidden" x="49" y="17" width="14" fill="#ffffff" style="font-size: 10px; color: #ffffff; font-family: Arial; text-align: center; "><tspan><![CDATA[cc]]></tspan></text> <path d="M 55 7 C 50.2813 3.7813 50.063 12.9405 55 10 " stroke="#ffffff" stroke-width="1" fill="none"/> <path d="M 60 7 C 55.2813 3.7813 55.063 12.9405 60 10 " stroke="#ffffff" stroke-width="1" fill="none"/> <path d="M 50 3 L 62 3 L 62 13 L 50 13 L 50 3 ZM 49 2 L 49 14 L 63 14 L 63 2 L 49 2 Z" fill="url(#gradient4)"/> <rect x="49" y="2" width="14" height="12" fill="none"/> </g> <g id="volume"> <g id="no%20sound"> <rect x="17" y="5" width="5" height="6" fill="url(#gradient5)"/> <path d="M 21 5 L 25 2 L 25 14 L 21 11.0625 L 21 5 Z" fill="url(#gradient6)"/> </g> <g id="sound%20bars"> <rect x="17" y="21" width="5" height="6" fill="url(#gradient7)"/> <path d="M 21 21 L 25 18 L 25 30 L 21 27.0625 L 21 21 Z" fill="url(#gradient8)"/> <path d="M 27 18 C 27 18 30.0625 17.375 30 24 C 29.9375 30.625 27 30 27 30 " stroke="#ffffff" stroke-width="1" fill="none"/> <path d="M 26 21.0079 C 26 21.0079 28.041 20.6962 27.9994 24 C 27.9577 27.3038 26 26.9921 26 26.9921 " stroke="#ffffff" stroke-width="1" fill="none"/> </g> </g> <g id="play/pause"> <g id="play"> <path id="Polygon" d="M 14 8.5 L 3 14 L 3 3 L 14 8.5 Z" fill="url(#gradient9)"/> </g> <g id="pause"> <rect x="3" y="18" width="3" height="12" fill="url(#gradient10)"/> <rect x="10" y="18" width="3" height="12" fill="url(#gradient11)"/> </g> </g> <g id="fullscreen"> <g id="enter%201"> <path d="M 34 2 L 39 2 L 34 7 L 34 2 Z" fill="url(#gradient12)"/> <path d="M 34 14 L 39 14 L 34 9 L 34 14 Z" fill="url(#gradient13)"/> <path d="M 46 2 L 41 2 L 46 7 L 46 2 Z" fill="url(#gradient14)"/> <path d="M 46 14 L 41 14 L 46 9 L 46 14 Z" fill="url(#gradient15)"/> </g> <g id="exit"> <path d="M 42 22 L 46 22 L 42 18 L 42 22 Z" fill="url(#gradient16)"/> <path d="M 38 22 L 38 18 L 34 22 L 38 22 Z" fill="url(#gradient17)"/> <path d="M 38 26 L 34 26 L 38 30 L 38 26 Z" fill="url(#gradient18)"/> <path d="M 42 26 L 42 30 L 46 26 L 42 26 Z" fill="url(#gradient19)"/> </g> </g> <g id="stop"> <rect x="115" y="3" width="10" height="10" fill="url(#gradient20)"/> </g> <g id="chooser"> <path d="M 135.2346 6.1522 C 136.2551 5.7295 137.4251 6.2141 137.8478 7.2346 C 138.2704 8.2551 137.7859 9.425 136.7654 9.8478 C 135.7449 10.2705 134.5749 9.7859 134.1522 8.7654 C 133.7295 7.7449 134.2141 6.5749 135.2346 6.1522 ZM 133.2735 1.4176 L 136 4.0054 L 138.7265 1.4176 L 138.8246 5.1754 L 142.5824 5.2735 L 139.9946 8 L 142.5824 10.7265 L 138.8246 10.8246 L 138.7265 14.5824 L 136 11.9946 L 133.2735 14.5824 L 133.1754 10.8246 L 129.4176 10.7265 L 132.0054 8 L 129.4176 5.2735 L 133.1754 5.1754 L 133.2735 1.4176 Z" fill="url(#gradient21)"/> </g> </svg> \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/settings.png b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/settings.png new file mode 100755 index 0000000000000000000000000000000000000000..0e60d4cc6b91e16de17a1452cb225ca8450e365b Binary files /dev/null and b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/settings.png differ diff --git a/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/settings.svg b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/settings.svg new file mode 100755 index 0000000000000000000000000000000000000000..9b537d90ced8cfc6d13dc6f5061ffc5df076409b --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/settings.svg @@ -0,0 +1 @@ +<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="17" height="17" viewBox="0 0 16.91 17.1"><defs><style>.cls-1{fill:#fff;}</style></defs><title>3</title><g id="settings"><path class="cls-1" d="M58.5,9.6a1.19,1.19,0,0,0-1-1.2l-1.8-.5a0.76,0.76,0,0,1-.6-0.8c0-.1.1-0.2,0.1-0.3l1-1.6A1.38,1.38,0,0,0,56,3.6h0a1.36,1.36,0,0,0-1.6-.2l-1.6,1a0.68,0.68,0,0,1-1-.2,0.37,0.37,0,0,1-.1-0.3L51.3,2a1.36,1.36,0,0,0-1.2-1h0a1.19,1.19,0,0,0-1.2,1L48.4,3.8a0.76,0.76,0,0,1-.8.6c-0.1,0-.2-0.1-0.3-0.1l-1.6-1a1.38,1.38,0,0,0-1.6.2h0a1.36,1.36,0,0,0-.2,1.6l1,1.6a0.68,0.68,0,0,1-.2,1,0.37,0.37,0,0,1-.3.1l-1.8.5a1.36,1.36,0,0,0-1,1.2h0a1.19,1.19,0,0,0,1,1.2l1.8,0.5a0.76,0.76,0,0,1,.6.8c0,0.1-.1.2-0.1,0.3l-1,1.6a1.38,1.38,0,0,0,.2,1.6h0a1.36,1.36,0,0,0,1.6.2l1.6-1a0.68,0.68,0,0,1,1,.2,0.37,0.37,0,0,1,.1.3l0.5,1.9a1.36,1.36,0,0,0,1.2,1h0a1.19,1.19,0,0,0,1.2-1l0.5-1.9a0.76,0.76,0,0,1,.8-0.6c0.1,0,.2.1,0.3,0.1l1.6,1a1.38,1.38,0,0,0,1.6-.2h0a1.36,1.36,0,0,0,.2-1.6l-1-1.6a0.68,0.68,0,0,1,.2-1,0.37,0.37,0,0,1,.3-0.1l1.8-.5a1.07,1.07,0,0,0,.9-1.1h0Zm-5.6,0a2.8,2.8,0,0,1-2.8,2.8,2.86,2.86,0,0,1-2.8-2.8,2.86,2.86,0,0,1,2.8-2.8h0a2.73,2.73,0,0,1,2.8,2.8h0Z" transform="translate(-41.6 -1)"/></g></svg> \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser-i18n.js b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser-i18n.js new file mode 100755 index 0000000000000000000000000000000000000000..a6800c0a8c6873606d45e794034b34b37c05cd76 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser-i18n.js @@ -0,0 +1,65 @@ +'use strict'; + +if (mejs.i18n.ca !== undefined) { + // mejs.i18n.ca["mejs.source-chooser"]= "Source Chooser"; +} +if (mejs.i18n.cs !== undefined) { + // mejs.i18n.cs["mejs.source-chooser"]= "Source Chooser"; +} +if (mejs.i18n.de !== undefined) { + mejs.i18n.de["mejs.source-chooser"]= "Quellenauswahl"; +} +if (mejs.i18n.es !== undefined) { + mejs.i18n.es["mejs.source-chooser"]= "Selector de media"; +} +if (mejs.i18n.fr !== undefined) { + mejs.i18n.fr["mejs.source-chooser"]= "Sélecteur de média"; +} +if (mejs.i18n.hr !== undefined) { + mejs.i18n.hr["mejs.source-chooser"]= "Obabir izvora"; +} +if (mejs.i18n.hu !== undefined) { + //mejs.i18n.hu["mejs.source-chooser"]= "Source Chooser"; +} +if (mejs.i18n.it !== undefined) { + //mejs.i18n.it["mejs.source-chooser"]= "Source Chooser"; +} +if (mejs.i18n.ja !== undefined) { + //mejs.i18n.ja["mejs.source-chooser"]= "Source Chooser"; +} +if (mejs.i18n.ko !== undefined) { + //mejs.i18n.ko["mejs.source-chooser"]= "Source Chooser"; +} +if (mejs.i18n.nl !== undefined) { + mejs.i18n.nl["mejs.source-chooser"]= "Bronkeuze"; +} +if (mejs.i18n.pl !== undefined) { + mejs.i18n.pl["mejs.source-chooser"]= "Wybór źródÅ‚a"; +} +if (mejs.i18n.pt !== undefined) { + //mejs.i18n.pt["mejs.source-chooser"]= "Source Chooser"; +} +if (mejs.i18n['pt-BR'] !== undefined) { + //mejs.i18n['pt-BR']["mejs.source-chooser"]= "Source Chooser"; +} +if (mejs.i18n.ro !== undefined) { + //mejs.i18n.ro["mejs.source-chooser"]= "Source Chooser"; +} +if (mejs.i18n.ru !== undefined) { + mejs.i18n.ru["mejs.source-chooser"]= "Переключатель иÑточника"; +} +if (mejs.i18n.sk !== undefined) { + // mejs.i18n.sk["mejs.source-chooser"]= "Source Chooser"; +} +if (mejs.i18n.sv !== undefined) { + mejs.i18n.sv["mejs.source-chooser"]= "Välj källa"; +} +if (mejs.i18n.uk !== undefined) { + mejs.i18n.uk["mejs.source-chooser"]= "Вибір джерела"; +} +if (mejs.i18n.zh !== undefined) { + //mejs.i18n.zh["mejs.source-chooser"]= "Source Chooser"; +} +if (mejs.i18n['zh-CN'] !== undefined) { + //mejs.i18n['zh-CN']["mejs.source-chooser"]= "Source Chooser"; +} \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser-i18n.min.js b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser-i18n.min.js new file mode 100644 index 0000000000000000000000000000000000000000..b5d0b8122ad590216a2d8e39cccb77b979a98b0f --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser-i18n.min.js @@ -0,0 +1 @@ +"use strict";if(mejs.i18n.ca!==undefined){}if(mejs.i18n.cs!==undefined){}if(mejs.i18n.de!==undefined){mejs.i18n.de["mejs.source-chooser"]="Quellenauswahl"}if(mejs.i18n.es!==undefined){mejs.i18n.es["mejs.source-chooser"]="Selector de media"}if(mejs.i18n.fr!==undefined){mejs.i18n.fr["mejs.source-chooser"]="Sélecteur de média"}if(mejs.i18n.hr!==undefined){mejs.i18n.hr["mejs.source-chooser"]="Obabir izvora"}if(mejs.i18n.hu!==undefined){}if(mejs.i18n.it!==undefined){}if(mejs.i18n.ja!==undefined){}if(mejs.i18n.ko!==undefined){}if(mejs.i18n.nl!==undefined){mejs.i18n.nl["mejs.source-chooser"]="Bronkeuze"}if(mejs.i18n.pl!==undefined){mejs.i18n.pl["mejs.source-chooser"]="Wybór źródÅ‚a"}if(mejs.i18n.pt!==undefined){}if(mejs.i18n["pt-BR"]!==undefined){}if(mejs.i18n.ro!==undefined){}if(mejs.i18n.ru!==undefined){mejs.i18n.ru["mejs.source-chooser"]="Переключатель иÑточника"}if(mejs.i18n.sk!==undefined){}if(mejs.i18n.sv!==undefined){mejs.i18n.sv["mejs.source-chooser"]="Välj källa"}if(mejs.i18n.uk!==undefined){mejs.i18n.uk["mejs.source-chooser"]="Вибір джерела"}if(mejs.i18n.zh!==undefined){}if(mejs.i18n["zh-CN"]!==undefined){}; \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser.css b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser.css new file mode 100755 index 0000000000000000000000000000000000000000..e06429f72d49471583dbe5b8be70ea0f2d5941c8 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser.css @@ -0,0 +1,57 @@ +.mejs__sourcechooser-button, .mejs-sourcechooser-button { + position: relative; +} + +.mejs__sourcechooser-button > button, .mejs-sourcechooser-button > button { + background: url("settings.svg") transparent no-repeat; + background-position: 0 1px; +} + +.mejs__sourcechooser-button .mejs__sourcechooser-selector, .mejs-sourcechooser-button .mejs-sourcechooser-selector { + position: absolute; + bottom: 40px; + right: -10px; + width: 130px; + height: 100px; + background: rgba(50,50,50,0.7); + border: solid 1px transparent; + padding: 0; + overflow: hidden; + border-radius: 0; +} + +.mejs__sourcechooser-selector ul, .mejs-sourcechooser-selector ul { + margin: 0; + padding: 0; + display: block; + list-style-type: none !important; + overflow: hidden; +} + +.mejs__sourcechooser-selector li, .mejs-sourcechooser-selector li { + margin: 0; + padding: 5px 0; + list-style-type: none !important; + display: block; + color: #fff; + overflow: hidden; +} +.mejs__sourcechooser-selector li:hover, .mejs-sourcechooser-selector li:hover { + cursor: pointer; + background-color: rgba(255, 255, 255, .2); +} + +.mejs__sourcechooser-selector input, .mejs-sourcechooser-selector input { + clear: both; + float: left; + margin: 3px 3px 0 0; +} + +.mejs__sourcechooser-selector label, .mejs-sourcechooser-selector label { + width: 100px; + display: inline-block; + float: left; + padding: 4px 0 0 0; + line-height: 15px; + font-size: 12px; +} \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser.js b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser.js new file mode 100755 index 0000000000000000000000000000000000000000..9421e157d91c960a2e174e88788fa3a78f60929c --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser.js @@ -0,0 +1,255 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ +'use strict'; + +/** + * Source chooser button + * + * This feature creates a button to speed media in different levels. + */ + +// Translations (English required) + +mejs.i18n.en["mejs.source-chooser"] = "Source Chooser"; + +// Feature configuration +Object.assign(mejs.MepDefaults, { + /** + * @type {?String} + */ + sourcechooserText: null +}); + +Object.assign(MediaElementPlayer.prototype, { + + /** + * Feature constructor. + * + * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list + * @param {MediaElementPlayer} player + * @param {HTMLElement} controls + * @param {HTMLElement} layers + * @param {HTMLElement} media + */ + buildsourcechooser: function buildsourcechooser(player, controls, layers, media) { + + var t = this, + sourceTitle = mejs.Utils.isString(t.options.sourcechooserText) ? t.options.sourcechooserText : mejs.i18n.t('mejs.source-chooser'), + sources = [], + children = t.mediaFiles ? t.mediaFiles : t.node.childNodes; + + // add to list + var hoverTimeout = void 0; + + for (var i = 0, total = children.length; i < total; i++) { + var s = children[i]; + + if (t.mediaFiles) { + sources.push(s); + } else if (s.nodeName === 'SOURCE') { + sources.push(s); + } + } + + if (sources.length <= 1) { + return; + } + + player.sourcechooserButton = document.createElement('div'); + player.sourcechooserButton.className = t.options.classPrefix + "button " + t.options.classPrefix + "sourcechooser-button"; + player.sourcechooserButton.innerHTML = "<button type=\"button\" role=\"button\" aria-haspopup=\"true\" aria-owns=\"" + t.id + "\" title=\"" + sourceTitle + "\" aria-label=\"" + sourceTitle + "\" tabindex=\"0\"></button>" + ("<div class=\"" + t.options.classPrefix + "sourcechooser-selector " + t.options.classPrefix + "offscreen\" role=\"menu\" aria-expanded=\"false\" aria-hidden=\"true\"><ul></ul></div>"); + + t.addControlElement(player.sourcechooserButton, 'sourcechooser'); + + for (var _i = 0, _total = sources.length; _i < _total; _i++) { + var src = sources[_i]; + if (src.type !== undefined && typeof media.canPlayType === 'function') { + player.addSourceButton(src.src, src.title, src.type, media.src === src.src); + } + } + + // hover + player.sourcechooserButton.addEventListener('mouseover', function () { + clearTimeout(hoverTimeout); + player.showSourcechooserSelector(); + }); + player.sourcechooserButton.addEventListener('mouseout', function () { + hoverTimeout = setTimeout(function () { + player.hideSourcechooserSelector(); + }, 0); + }); + + // keyboard menu activation + player.sourcechooserButton.addEventListener('keydown', function (e) { + + if (t.options.keyActions.length) { + var keyCode = e.which || e.keyCode || 0; + + switch (keyCode) { + case 32: + // space + if (!mejs.MediaFeatures.isFirefox) { + // space sends the click event in Firefox + player.showSourcechooserSelector(); + } + player.sourcechooserButton.querySelector('input[type=radio]:checked').focus(); + break; + case 13: + // enter + player.showSourcechooserSelector(); + player.sourcechooserButton.querySelector('input[type=radio]:checked').focus(); + break; + case 27: + // esc + player.hideSourcechooserSelector(); + player.sourcechooserButton.querySelector('button').focus(); + break; + default: + return true; + } + + e.preventDefault(); + e.stopPropagation(); + } + }); + + // close menu when tabbing away + player.sourcechooserButton.addEventListener('focusout', mejs.Utils.debounce(function () { + // Safari triggers focusout multiple times + // Firefox does NOT support e.relatedTarget to see which element + // just lost focus, so wait to find the next focused element + setTimeout(function () { + var parent = document.activeElement.closest("." + t.options.classPrefix + "sourcechooser-selector"); + if (!parent) { + // focus is outside the control; close menu + player.hideSourcechooserSelector(); + } + }, 0); + }, 100)); + + var radios = player.sourcechooserButton.querySelectorAll('input[type=radio]'); + + for (var _i2 = 0, _total2 = radios.length; _i2 < _total2; _i2++) { + // handle clicks to the source radio buttons + radios[_i2].addEventListener('click', function () { + // set aria states + this.setAttribute('aria-selected', true); + this.checked = true; + + var otherRadios = this.closest("." + t.options.classPrefix + "sourcechooser-selector").querySelectorAll('input[type=radio]'); + + for (var j = 0, radioTotal = otherRadios.length; j < radioTotal; j++) { + if (otherRadios[j] !== this) { + otherRadios[j].setAttribute('aria-selected', 'false'); + otherRadios[j].removeAttribute('checked'); + } + } + + var src = this.value; + + if (media.getSrc() !== src) { + var currentTime = media.currentTime; + + var paused = media.paused, + canPlayAfterSourceSwitchHandler = function canPlayAfterSourceSwitchHandler() { + if (!paused) { + media.setCurrentTime(currentTime); + media.play(); + } + media.removeEventListener('canplay', canPlayAfterSourceSwitchHandler); + }; + + media.pause(); + media.setSrc(src); + media.load(); + media.addEventListener('canplay', canPlayAfterSourceSwitchHandler); + } + }); + } + + // Handle click so that screen readers can toggle the menu + player.sourcechooserButton.querySelector('button').addEventListener('click', function () { + if (mejs.Utils.hasClass(mejs.Utils.siblings(this, "." + t.options.classPrefix + "sourcechooser-selector"), t.options.classPrefix + "offscreen")) { + player.showSourcechooserSelector(); + player.sourcechooserButton.querySelector('input[type=radio]:checked').focus(); + } else { + player.hideSourcechooserSelector(); + } + }); + }, + + /** + * + * @param {String} src + * @param {String} label + * @param {String} type + * @param {Boolean} isCurrent + */ + addSourceButton: function addSourceButton(src, label, type, isCurrent) { + var t = this; + if (label === '' || label === undefined) { + label = src; + } + type = type.split('/')[1]; + + t.sourcechooserButton.querySelector('ul').innerHTML += "<li>" + ("<input type=\"radio\" name=\"" + t.id + "_sourcechooser\" id=\"" + t.id + "_sourcechooser_" + label + type + "\" ") + ("role=\"menuitemradio\" value=\"" + src + "\" " + (isCurrent ? 'checked="checked"' : '') + " aria-selected=\"" + isCurrent + "\"/>") + ("<label for=\"" + t.id + "_sourcechooser_" + label + type + "\" aria-hidden=\"true\">" + label + " (" + type + ")</label>") + "</li>"; + + t.adjustSourcechooserBox(); + }, + + /** + * + */ + adjustSourcechooserBox: function adjustSourcechooserBox() { + var t = this; + // adjust the size of the outer box + t.sourcechooserButton.querySelector("." + t.options.classPrefix + "sourcechooser-selector").style.height = parseFloat(t.sourcechooserButton.querySelector("." + t.options.classPrefix + "sourcechooser-selector ul").offsetHeight) + "px"; + }, + + /** + * + */ + hideSourcechooserSelector: function hideSourcechooserSelector() { + + var t = this; + + if (t.sourcechooserButton === undefined || !t.sourcechooserButton.querySelector('input[type=radio]')) { + return; + } + + var selector = t.sourcechooserButton.querySelector("." + t.options.classPrefix + "sourcechooser-selector"), + radios = selector.querySelectorAll('input[type=radio]'); + selector.setAttribute('aria-expanded', 'false'); + selector.setAttribute('aria-hidden', 'true'); + mejs.Utils.addClass(selector, t.options.classPrefix + "offscreen"); + + // make radios not focusable + for (var i = 0, total = radios.length; i < total; i++) { + radios[i].setAttribute('tabindex', '-1'); + } + }, + + /** + * + */ + showSourcechooserSelector: function showSourcechooserSelector() { + + var t = this; + + if (t.sourcechooserButton === undefined || !t.sourcechooserButton.querySelector('input[type=radio]')) { + return; + } + + var selector = t.sourcechooserButton.querySelector("." + t.options.classPrefix + "sourcechooser-selector"), + radios = selector.querySelectorAll('input[type=radio]'); + selector.setAttribute('aria-expanded', 'true'); + selector.setAttribute('aria-hidden', 'false'); + mejs.Utils.removeClass(selector, t.options.classPrefix + "offscreen"); + + // make radios not focusable + for (var i = 0, total = radios.length; i < total; i++) { + radios[i].setAttribute('tabindex', '0'); + } + } +}); + +},{}]},{},[1]); diff --git a/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser.min.css b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser.min.css new file mode 100644 index 0000000000000000000000000000000000000000..2fc187724ad34a9b6d91392e8c25a8ce4d9275c3 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser.min.css @@ -0,0 +1 @@ +.mejs__sourcechooser-button,.mejs-sourcechooser-button{position:relative}.mejs__sourcechooser-button>button,.mejs-sourcechooser-button>button{background:url("settings.svg") transparent no-repeat;background-position:0 1px}.mejs__sourcechooser-button .mejs__sourcechooser-selector,.mejs-sourcechooser-button .mejs-sourcechooser-selector{position:absolute;bottom:40px;right:-10px;width:130px;height:100px;background:rgba(50,50,50,0.7);border:solid 1px transparent;padding:0;overflow:hidden;border-radius:0}.mejs__sourcechooser-selector ul,.mejs-sourcechooser-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs__sourcechooser-selector li,.mejs-sourcechooser-selector li{margin:0;padding:5px 0;list-style-type:none!important;display:block;color:#fff;overflow:hidden}.mejs__sourcechooser-selector li:hover,.mejs-sourcechooser-selector li:hover{cursor:pointer;background-color:rgba(255,255,255,.2)}.mejs__sourcechooser-selector input,.mejs-sourcechooser-selector input{clear:both;float:left;margin:3px 3px 0 0}.mejs__sourcechooser-selector label,.mejs-sourcechooser-selector label{width:100px;display:inline-block;float:left;padding:4px 0 0 0;line-height:15px;font-size:12px} \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser.min.js b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser.min.js new file mode 100644 index 0000000000000000000000000000000000000000..d4172912f2a066786a0ce5d0ac743b1777e920c5 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/source-chooser/source-chooser.min.js @@ -0,0 +1 @@ +(function e(b,g,d){function c(m,j){if(!g[m]){if(!b[m]){var i=typeof require=="function"&&require;if(!j&&i){return i(m,!0)}if(a){return a(m,!0)}var k=new Error("Cannot find module '"+m+"'");throw k.code="MODULE_NOT_FOUND",k}var h=g[m]={exports:{}};b[m][0].call(h.exports,function(l){var o=b[m][1][l];return c(o?o:l)},h,h.exports,e,b,g,d)}return g[m].exports}var a=typeof require=="function"&&require;for(var f=0;f<d.length;f++){c(d[f])}return c})({1:[function(i,h,f){mejs.i18n.en["mejs.source-chooser"]="Source Chooser";Object.assign(mejs.MepDefaults,{sourcechooserText:null});Object.assign(MediaElementPlayer.prototype,{buildsourcechooser:function c(y,w,q,o){var u=this,B=mejs.Utils.isString(u.options.sourcechooserText)?u.options.sourcechooserText:mejs.i18n.t("mejs.source-chooser"),j=[],n=u.mediaFiles?u.mediaFiles:u.node.childNodes;var r=void 0;for(var A=0,C=n.length;A<C;A++){var v=n[A];if(u.mediaFiles){j.push(v)}else{if(v.nodeName==="SOURCE"){j.push(v)}}}if(j.length<=1){return}y.sourcechooserButton=document.createElement("div");y.sourcechooserButton.className=u.options.classPrefix+"button "+u.options.classPrefix+"sourcechooser-button";y.sourcechooserButton.innerHTML='<button type="button" role="button" aria-haspopup="true" aria-owns="'+u.id+'" title="'+B+'" aria-label="'+B+'" tabindex="0"></button>'+('<div class="'+u.options.classPrefix+"sourcechooser-selector "+u.options.classPrefix+'offscreen" role="menu" aria-expanded="false" aria-hidden="true"><ul></ul></div>');u.addControlElement(y.sourcechooserButton,"sourcechooser");for(var k=0,x=j.length;k<x;k++){var p=j[k];if(p.type!==undefined&&typeof o.canPlayType==="function"){y.addSourceButton(p.src,p.title,p.type,o.src===p.src)}}y.sourcechooserButton.addEventListener("mouseover",function(){clearTimeout(r);y.showSourcechooserSelector()});y.sourcechooserButton.addEventListener("mouseout",function(){r=setTimeout(function(){y.hideSourcechooserSelector()},0)});y.sourcechooserButton.addEventListener("keydown",function(t){if(u.options.keyActions.length){var s=t.which||t.keyCode||0;switch(s){case 32:if(!mejs.MediaFeatures.isFirefox){y.showSourcechooserSelector()}y.sourcechooserButton.querySelector("input[type=radio]:checked").focus();break;case 13:y.showSourcechooserSelector();y.sourcechooserButton.querySelector("input[type=radio]:checked").focus();break;case 27:y.hideSourcechooserSelector();y.sourcechooserButton.querySelector("button").focus();break;default:return true}t.preventDefault();t.stopPropagation()}});y.sourcechooserButton.addEventListener("focusout",mejs.Utils.debounce(function(){setTimeout(function(){var s=document.activeElement.closest("."+u.options.classPrefix+"sourcechooser-selector");if(!s){y.hideSourcechooserSelector()}},0)},100));var l=y.sourcechooserButton.querySelectorAll("input[type=radio]");for(var m=0,z=l.length;m<z;m++){l[m].addEventListener("click",function(){this.setAttribute("aria-selected",true);this.checked=true;var F=this.closest("."+u.options.classPrefix+"sourcechooser-selector").querySelectorAll("input[type=radio]");for(var D=0,s=F.length;D<s;D++){if(F[D]!==this){F[D].setAttribute("aria-selected","false");F[D].removeAttribute("checked")}}var H=this.value;if(o.getSrc()!==H){var G=o.currentTime;var E=o.paused,t=function t(){if(!E){o.setCurrentTime(G);o.play()}o.removeEventListener("canplay",t)};o.pause();o.setSrc(H);o.load();o.addEventListener("canplay",t)}})}y.sourcechooserButton.querySelector("button").addEventListener("click",function(){if(mejs.Utils.hasClass(mejs.Utils.siblings(this,"."+u.options.classPrefix+"sourcechooser-selector"),u.options.classPrefix+"offscreen")){y.showSourcechooserSelector();y.sourcechooserButton.querySelector("input[type=radio]:checked").focus()}else{y.hideSourcechooserSelector()}})},addSourceButton:function d(n,k,m,j){var l=this;if(k===""||k===undefined){k=n}m=m.split("/")[1];l.sourcechooserButton.querySelector("ul").innerHTML+="<li>"+('<input type="radio" name="'+l.id+'_sourcechooser" id="'+l.id+"_sourcechooser_"+k+m+'" ')+('role="menuitemradio" value="'+n+'" '+(j?'checked="checked"':"")+' aria-selected="'+j+'"/>')+('<label for="'+l.id+"_sourcechooser_"+k+m+'" aria-hidden="true">'+k+" ("+m+")</label>")+"</li>";l.adjustSourcechooserBox()},adjustSourcechooserBox:function b(){var j=this;j.sourcechooserButton.querySelector("."+j.options.classPrefix+"sourcechooser-selector").style.height=parseFloat(j.sourcechooserButton.querySelector("."+j.options.classPrefix+"sourcechooser-selector ul").offsetHeight)+"px"},hideSourcechooserSelector:function a(){var l=this;if(l.sourcechooserButton===undefined||!l.sourcechooserButton.querySelector("input[type=radio]")){return}var j=l.sourcechooserButton.querySelector("."+l.options.classPrefix+"sourcechooser-selector"),n=j.querySelectorAll("input[type=radio]");j.setAttribute("aria-expanded","false");j.setAttribute("aria-hidden","true");mejs.Utils.addClass(j,l.options.classPrefix+"offscreen");for(var k=0,m=n.length;k<m;k++){n[k].setAttribute("tabindex","-1")}},showSourcechooserSelector:function g(){var l=this;if(l.sourcechooserButton===undefined||!l.sourcechooserButton.querySelector("input[type=radio]")){return}var j=l.sourcechooserButton.querySelector("."+l.options.classPrefix+"sourcechooser-selector"),n=j.querySelectorAll("input[type=radio]");j.setAttribute("aria-expanded","true");j.setAttribute("aria-hidden","false");mejs.Utils.removeClass(j,l.options.classPrefix+"offscreen");for(var k=0,m=n.length;k<m;k++){n[k].setAttribute("tabindex","0")}}})},{}]},{},[1]); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/features/speed/speed-i18n.js b/src/main/webapp/static/movie/mediaelementjs/features/speed/speed-i18n.js new file mode 100755 index 0000000000000000000000000000000000000000..957cbd7a737f32a78a0f5b05167c880ab64eec37 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/speed/speed-i18n.js @@ -0,0 +1,65 @@ +'use strict'; + +if (mejs.i18n.ca !== undefined) { + // mejs.i18n.ca["mejs.speed-rate"] = "Speed Rate"; +} +if (mejs.i18n.cs !== undefined) { + // mejs.i18n.cs["mejs.speed-rate"] = "Speed Rate"; +} +if (mejs.i18n.de !== undefined) { + mejs.i18n.de["mejs.speed-rate"] = "Geschwindigkeitsrate"; +} +if (mejs.i18n.es !== undefined) { + mejs.i18n.es["mejs.speed-rate"] = "Tasa de velocidad"; +} +if (mejs.i18n.fr !== undefined) { + mejs.i18n.fr["mejs.speed-rate"] = "Vitesse"; +} +if (mejs.i18n.hr !== undefined) { + mejs.i18n.hr["mejs.speed-rate"] = "Brzina reprodukcije"; +} +if (mejs.i18n.hu !== undefined) { + //mejs.i18n.hu["mejs.speed-rate"] = "Speed Rate"; +} +if (mejs.i18n.it !== undefined) { + //mejs.i18n.it["mejs.speed-rate"] = "Speed Rate"; +} +if (mejs.i18n.ja !== undefined) { + //mejs.i18n.ja["mejs.speed-rate"] = "Speed Rate"; +} +if (mejs.i18n.ko !== undefined) { + //mejs.i18n.ko["mejs.speed-rate"] = "Speed Rate"; +} +if (mejs.i18n.nl !== undefined) { + // mejs.i18n.nl["mejs.speed-rate"] = "Speed Rate"; +} +if (mejs.i18n.pl !== undefined) { + mejs.i18n.pl["mejs.speed-rate"] = "PrÄ™dkość"; +} +if (mejs.i18n.pt !== undefined) { + //mejs.i18n.pt["mejs.speed-rate"] = "Speed Rate"; +} +if (mejs.i18n['pt-BR'] !== undefined) { + //mejs.i18n['pt-BR']["mejs.speed-rate"] = "Speed Rate"; +} +if (mejs.i18n.ro !== undefined) { + //mejs.i18n.ro["mejs.speed-rate"] = "Speed Rate"; +} +if (mejs.i18n.ru !== undefined) { + mejs.i18n.ru["mejs.speed-rate"] = "СкороÑть воÑпроизведениÑ"; +} +if (mejs.i18n.sk !== undefined) { + //mejs.i18n.sk["mejs.speed-rate"] = "Speed Rate"; +} +if (mejs.i18n.sv !== undefined) { + mejs.i18n.sv["mejs.speed-rate"] = "Hastighet"; +} +if (mejs.i18n.uk !== undefined) { + mejs.i18n.uk["mejs.speed-rate"] = "ШвидкіÑть відтвореннÑ"; +} +if (mejs.i18n.zh !== undefined) { + //mejs.i18n.zh["mejs.speed-rate"] = "Speed Rate"; +} +if (mejs.i18n['zh-CN'] !== undefined) { + //mejs.i18n['zh-CN']["mejs.speed-rate"] = "Speed Rate"; +} \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/features/speed/speed-i18n.min.js b/src/main/webapp/static/movie/mediaelementjs/features/speed/speed-i18n.min.js new file mode 100644 index 0000000000000000000000000000000000000000..398576d19ecf2a108eac51027dd9f083e5ecf02a --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/speed/speed-i18n.min.js @@ -0,0 +1 @@ +"use strict";if(mejs.i18n.ca!==undefined){}if(mejs.i18n.cs!==undefined){}if(mejs.i18n.de!==undefined){mejs.i18n.de["mejs.speed-rate"]="Geschwindigkeitsrate"}if(mejs.i18n.es!==undefined){mejs.i18n.es["mejs.speed-rate"]="Tasa de velocidad"}if(mejs.i18n.fr!==undefined){mejs.i18n.fr["mejs.speed-rate"]="Vitesse"}if(mejs.i18n.hr!==undefined){mejs.i18n.hr["mejs.speed-rate"]="Brzina reprodukcije"}if(mejs.i18n.hu!==undefined){}if(mejs.i18n.it!==undefined){}if(mejs.i18n.ja!==undefined){}if(mejs.i18n.ko!==undefined){}if(mejs.i18n.nl!==undefined){}if(mejs.i18n.pl!==undefined){mejs.i18n.pl["mejs.speed-rate"]="PrÄ™dkość"}if(mejs.i18n.pt!==undefined){}if(mejs.i18n["pt-BR"]!==undefined){}if(mejs.i18n.ro!==undefined){}if(mejs.i18n.ru!==undefined){mejs.i18n.ru["mejs.speed-rate"]="СкороÑть воÑпроизведениÑ"}if(mejs.i18n.sk!==undefined){}if(mejs.i18n.sv!==undefined){mejs.i18n.sv["mejs.speed-rate"]="Hastighet"}if(mejs.i18n.uk!==undefined){mejs.i18n.uk["mejs.speed-rate"]="ШвидкіÑть відтвореннÑ"}if(mejs.i18n.zh!==undefined){}if(mejs.i18n["zh-CN"]!==undefined){}; \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/features/speed/speed.css b/src/main/webapp/static/movie/mediaelementjs/features/speed/speed.css new file mode 100755 index 0000000000000000000000000000000000000000..d617a32ca4603e14b3809e6aa3ed69bbd04844f8 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/speed/speed.css @@ -0,0 +1,82 @@ +.mejs__speed-button, .mejs-speed-button { + position: relative; +} + +.mejs__speed-button > button, .mejs-speed-button > button { + background: transparent; + width: 36px; + margin: 11px 0 0 0; + font-size: 11px; + line-height: normal; + color: #ffffff; +} + +.mejs__speed-selector, .mejs-speed-selector { + visibility: hidden; + position: absolute; + top: -100px; + left: -10px; + width: 60px; + height: 100px; + background: rgba(50, 50, 50, 0.7); + border: solid 1px transparent; + padding: 0; + overflow: hidden; + border-radius: 0; +} + +.mejs__speed-selector, .mejs-speed-selector { + visibility: visible; +} + +.mejs__speed-selector-list, .mejs-speed-selector-list { + margin: 0; + padding: 0; + display: block; + list-style-type: none !important; + overflow: hidden; +} + +.mejs__speed-selector-list-item, .mejs-speed-selector-list-item { + margin: 0 0 6px 0; + padding: 0 10px; + list-style-type: none !important; + display: block; + color: #fff; + overflow: hidden; +} + +.mejs__speed-selector-list-item:hover, .mejs-speed-selector-list-item:hover { + background-color: rgb(200, 200, 200) !important; + background-color: rgba(255, 255, 255, 0.4) !important; +} + +.mejs__speed-selector-input, .mejs-speed-selector-input { + clear: both; + float: left; + margin: 3px 3px 0 5px; + position: absolute; + left: -1000px; +} + +.mejs__speed-selector-label, .mejs-speed-selector-label { + width: 60px; + float: left; + padding: 4px 0 0 0; + line-height: 15px; + font-size: 11px; + color: white; + margin-left: 5px; + cursor: pointer; +} + +.mejs__speed-selected, .mejs-speed-selected { + color: rgba(33, 248, 248, 1); +} + +.mejs__speed-selector, .mejs-speed-selector { + visibility: hidden; +} +.mejs__speed-button:hover .mejs__speed-selector, .mejs-speed-button:hover .mejs-speed-selector { + visibility: visible; +} \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/features/speed/speed.js b/src/main/webapp/static/movie/mediaelementjs/features/speed/speed.js new file mode 100755 index 0000000000000000000000000000000000000000..d5b58a66637d631f83bbbe83e0b75505b4bb9974 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/speed/speed.js @@ -0,0 +1,208 @@ +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ +'use strict'; + +/** + * Speed button + * + * This feature creates a button to speed media in different levels. + */ + +// Translations (English required) + +mejs.i18n.en["mejs.speed-rate"] = "Speed Rate"; + +// Feature configuration +Object.assign(mejs.MepDefaults, { + /** + * The speeds media can be accelerated + * + * Supports an array of float values or objects with format + * [{name: 'Slow', value: '0.75'}, {name: 'Normal', value: '1.00'}, ...] + * @type {{String[]|Object[]}} + */ + speeds: ['2.00', '1.50', '1.25', '1.00', '0.75'], + /** + * @type {String} + */ + defaultSpeed: '1.00', + /** + * @type {String} + */ + speedChar: 'x', + /** + * @type {?String} + */ + speedText: null +}); + +Object.assign(MediaElementPlayer.prototype, { + + /** + * Feature constructor. + * + * Always has to be prefixed with `build` and the name that will be used in MepDefaults.features list + * @param {MediaElementPlayer} player + * @param {HTMLElement} controls + * @param {HTMLElement} layers + * @param {HTMLElement} media + */ + buildspeed: function buildspeed(player, controls, layers, media) { + var t = this, + isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName); + + if (!isNative) { + return; + } + + var speeds = [], + speedTitle = mejs.Utils.isString(t.options.speedText) ? t.options.speedText : mejs.i18n.t('mejs.speed-rate'), + getSpeedNameFromValue = function getSpeedNameFromValue(value) { + for (var i = 0, total = speeds.length; i < total; i++) { + if (speeds[i].value === value) { + return speeds[i].name; + } + } + }; + + var playbackSpeed = void 0, + defaultInArray = false; + + for (var i = 0, total = t.options.speeds.length; i < total; i++) { + var s = t.options.speeds[i]; + + if (typeof s === 'string') { + speeds.push({ + name: "" + s + t.options.speedChar, + value: s + }); + + if (s === t.options.defaultSpeed) { + defaultInArray = true; + } + } else { + speeds.push(s); + if (s.value === t.options.defaultSpeed) { + defaultInArray = true; + } + } + } + + if (!defaultInArray) { + speeds.push({ + name: t.options.defaultSpeed + t.options.speedChar, + value: t.options.defaultSpeed + }); + } + + speeds.sort(function (a, b) { + return parseFloat(b.value) - parseFloat(a.value); + }); + + t.clearspeed(player); + + player.speedButton = document.createElement('div'); + player.speedButton.className = t.options.classPrefix + "button " + t.options.classPrefix + "speed-button"; + player.speedButton.innerHTML = "<button type=\"button\" aria-controls=\"" + t.id + "\" title=\"" + speedTitle + "\" " + ("aria-label=\"" + speedTitle + "\" tabindex=\"0\">" + getSpeedNameFromValue(t.options.defaultSpeed) + "</button>") + ("<div class=\"" + t.options.classPrefix + "speed-selector " + t.options.classPrefix + "offscreen\">") + ("<ul class=\"" + t.options.classPrefix + "speed-selector-list\"></ul>") + "</div>"; + + t.addControlElement(player.speedButton, 'speed'); + + for (var _i = 0, _total = speeds.length; _i < _total; _i++) { + + var inputId = t.id + "-speed-" + speeds[_i].value; + + player.speedButton.querySelector('ul').innerHTML += "<li class=\"" + t.options.classPrefix + "speed-selector-list-item\">" + ("<input class=\"" + t.options.classPrefix + "speed-selector-input\" type=\"radio\" name=\"" + t.id + "_speed\"") + ("disabled=\"disabled\" value=\"" + speeds[_i].value + "\" id=\"" + inputId + "\" ") + ((speeds[_i].value === t.options.defaultSpeed ? ' checked="checked"' : '') + "/>") + ("<label for=\"" + inputId + "\" class=\"" + t.options.classPrefix + "speed-selector-label") + ((speeds[_i].value === t.options.defaultSpeed ? " " + t.options.classPrefix + "speed-selected" : '') + "\">") + (speeds[_i].name + "</label>") + "</li>"; + } + + playbackSpeed = t.options.defaultSpeed; + + player.speedSelector = player.speedButton.querySelector("." + t.options.classPrefix + "speed-selector"); + + var inEvents = ['mouseenter', 'focusin'], + outEvents = ['mouseleave', 'focusout'], + + + // Enable inputs after they have been appended to controls to avoid tab and up/down arrow focus issues + radios = player.speedButton.querySelectorAll('input[type="radio"]'), + labels = player.speedButton.querySelectorAll("." + t.options.classPrefix + "speed-selector-label"); + + // hover or keyboard focus + for (var _i2 = 0, _total2 = inEvents.length; _i2 < _total2; _i2++) { + player.speedButton.addEventListener(inEvents[_i2], function () { + mejs.Utils.removeClass(player.speedSelector, t.options.classPrefix + "offscreen"); + player.speedSelector.style.height = player.speedSelector.querySelector('ul').offsetHeight; + player.speedSelector.style.top = -1 * parseFloat(player.speedSelector.offsetHeight) + "px"; + }); + } + + for (var _i3 = 0, _total3 = outEvents.length; _i3 < _total3; _i3++) { + player.speedSelector.addEventListener(outEvents[_i3], function () { + mejs.Utils.addClass(this, t.options.classPrefix + "offscreen"); + }); + } + + for (var _i4 = 0, _total4 = radios.length; _i4 < _total4; _i4++) { + var radio = radios[_i4]; + radio.disabled = false; + radio.addEventListener('click', function () { + var self = this, + newSpeed = self.value; + + playbackSpeed = newSpeed; + media.playbackRate = parseFloat(newSpeed); + player.speedButton.querySelector('button').innerHTML = getSpeedNameFromValue(newSpeed); + var selected = player.speedButton.querySelectorAll("." + t.options.classPrefix + "speed-selected"); + for (var _i5 = 0, _total5 = selected.length; _i5 < _total5; _i5++) { + mejs.Utils.removeClass(selected[_i5], t.options.classPrefix + "speed-selected"); + } + + self.checked = true; + var siblings = mejs.Utils.siblings(self, function (el) { + return mejs.Utils.hasClass(el, t.options.classPrefix + "speed-selector-label"); + }); + for (var j = 0, _total6 = siblings.length; j < _total6; j++) { + mejs.Utils.addClass(siblings[j], t.options.classPrefix + "speed-selected"); + } + }); + } + + for (var _i6 = 0, _total7 = labels.length; _i6 < _total7; _i6++) { + labels[_i6].addEventListener('click', function () { + var radio = mejs.Utils.siblings(this, function (el) { + return el.tagName === 'INPUT'; + })[0], + event = mejs.Utils.createEvent('click', radio); + radio.dispatchEvent(event); + }); + } + + //Allow up/down arrow to change the selected radio without changing the volume. + player.speedSelector.addEventListener('keydown', function (e) { + e.stopPropagation(); + }); + + media.addEventListener('loadedmetadata', function () { + if (playbackSpeed) { + media.playbackRate = parseFloat(playbackSpeed); + } + }); + }, + + /** + * Feature destructor. + * + * Always has to be prefixed with `clean` and the name that was used in MepDefaults.features list + * @param {MediaElementPlayer} player + */ + clearspeed: function clearspeed(player) { + if (player) { + if (player.speedButton) { + player.speedButton.parentNode.removeChild(player.speedButton); + } + if (player.speedSelector) { + player.speedSelector.parentNode.removeChild(player.speedSelector); + } + } + } +}); + +},{}]},{},[1]); diff --git a/src/main/webapp/static/movie/mediaelementjs/features/speed/speed.min.css b/src/main/webapp/static/movie/mediaelementjs/features/speed/speed.min.css new file mode 100644 index 0000000000000000000000000000000000000000..09e5a5eadf261cd1912d48fdc9e8210c1ae2ad13 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/speed/speed.min.css @@ -0,0 +1 @@ +.mejs__speed-button,.mejs-speed-button{position:relative}.mejs__speed-button>button,.mejs-speed-button>button{background:transparent;width:36px;margin:11px 0 0 0;font-size:11px;line-height:normal;color:#fff}.mejs__speed-selector,.mejs-speed-selector{visibility:hidden;position:absolute;top:-100px;left:-10px;width:60px;height:100px;background:rgba(50,50,50,0.7);border:solid 1px transparent;padding:0;overflow:hidden;border-radius:0}.mejs__speed-selector,.mejs-speed-selector{visibility:visible}.mejs__speed-selector-list,.mejs-speed-selector-list{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs__speed-selector-list-item,.mejs-speed-selector-list-item{margin:0 0 6px 0;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden}.mejs__speed-selector-list-item:hover,.mejs-speed-selector-list-item:hover{background-color:#c8c8c8!important;background-color:rgba(255,255,255,0.4)!important}.mejs__speed-selector-input,.mejs-speed-selector-input{clear:both;float:left;margin:3px 3px 0 5px;position:absolute;left:-1000px}.mejs__speed-selector-label,.mejs-speed-selector-label{width:60px;float:left;padding:4px 0 0 0;line-height:15px;font-size:11px;color:white;margin-left:5px;cursor:pointer}.mejs__speed-selected,.mejs-speed-selected{color:rgba(33,248,248,1)}.mejs__speed-selector,.mejs-speed-selector{visibility:hidden}.mejs__speed-button:hover .mejs__speed-selector,.mejs-speed-button:hover .mejs-speed-selector{visibility:visible} \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/features/speed/speed.min.js b/src/main/webapp/static/movie/mediaelementjs/features/speed/speed.min.js new file mode 100644 index 0000000000000000000000000000000000000000..2458f9a077d3a08bbe84cc61eb3976d8af6a5cb7 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/features/speed/speed.min.js @@ -0,0 +1 @@ +(function e(b,g,d){function c(m,j){if(!g[m]){if(!b[m]){var i=typeof require=="function"&&require;if(!j&&i){return i(m,!0)}if(a){return a(m,!0)}var k=new Error("Cannot find module '"+m+"'");throw k.code="MODULE_NOT_FOUND",k}var h=g[m]={exports:{}};b[m][0].call(h.exports,function(l){var o=b[m][1][l];return c(o?o:l)},h,h.exports,e,b,g,d)}return g[m].exports}var a=typeof require=="function"&&require;for(var f=0;f<d.length;f++){c(d[f])}return c})({1:[function(d,b,a){mejs.i18n.en["mejs.speed-rate"]="Speed Rate";Object.assign(mejs.MepDefaults,{speeds:["2.00","1.50","1.25","1.00","0.75"],defaultSpeed:"1.00",speedChar:"x",speedText:null});Object.assign(MediaElementPlayer.prototype,{buildspeed:function f(E,z,r,p){var x=this,l=x.media.rendererName!==null&&/(native|html5)/i.test(x.media.rendererName);if(!l){return}var G=[],o=mejs.Utils.isString(x.options.speedText)?x.options.speedText:mejs.i18n.t("mejs.speed-rate"),q=function q(N){for(var s=0,t=G.length;s<t;s++){if(G[s].value===N){return G[s].name}}};var u=void 0,w=false;for(var I=0,M=x.options.speeds.length;I<M;I++){var y=x.options.speeds[I];if(typeof y==="string"){G.push({name:""+y+x.options.speedChar,value:y});if(y===x.options.defaultSpeed){w=true}}else{G.push(y);if(y.value===x.options.defaultSpeed){w=true}}}if(!w){G.push({name:x.options.defaultSpeed+x.options.speedChar,value:x.options.defaultSpeed})}G.sort(function(s,i){return parseFloat(i.value)-parseFloat(s.value)});x.clearspeed(E);E.speedButton=document.createElement("div");E.speedButton.className=x.options.classPrefix+"button "+x.options.classPrefix+"speed-button";E.speedButton.innerHTML='<button type="button" aria-controls="'+x.id+'" title="'+o+'" '+('aria-label="'+o+'" tabindex="0">'+q(x.options.defaultSpeed)+"</button>")+('<div class="'+x.options.classPrefix+"speed-selector "+x.options.classPrefix+'offscreen">')+('<ul class="'+x.options.classPrefix+'speed-selector-list"></ul>')+"</div>";x.addControlElement(E.speedButton,"speed");for(var g=0,A=G.length;g<A;g++){var C=x.id+"-speed-"+G[g].value;E.speedButton.querySelector("ul").innerHTML+='<li class="'+x.options.classPrefix+'speed-selector-list-item">'+('<input class="'+x.options.classPrefix+'speed-selector-input" type="radio" name="'+x.id+'_speed"')+('disabled="disabled" value="'+G[g].value+'" id="'+C+'" ')+((G[g].value===x.options.defaultSpeed?' checked="checked"':"")+"/>")+('<label for="'+C+'" class="'+x.options.classPrefix+"speed-selector-label")+((G[g].value===x.options.defaultSpeed?" "+x.options.classPrefix+"speed-selected":"")+'">')+(G[g].name+"</label>")+"</li>"}u=x.options.defaultSpeed;E.speedSelector=E.speedButton.querySelector("."+x.options.classPrefix+"speed-selector");var L=["mouseenter","focusin"],J=["mouseleave","focusout"],j=E.speedButton.querySelectorAll('input[type="radio"]'),K=E.speedButton.querySelectorAll("."+x.options.classPrefix+"speed-selector-label");for(var n=0,H=L.length;n<H;n++){E.speedButton.addEventListener(L[n],function(){mejs.Utils.removeClass(E.speedSelector,x.options.classPrefix+"offscreen");E.speedSelector.style.height=E.speedSelector.querySelector("ul").offsetHeight;E.speedSelector.style.top=-1*parseFloat(E.speedSelector.offsetHeight)+"px"})}for(var m=0,F=J.length;m<F;m++){E.speedSelector.addEventListener(J[m],function(){mejs.Utils.addClass(this,x.options.classPrefix+"offscreen")})}for(var k=0,D=j.length;k<D;k++){var v=j[k];v.disabled=false;v.addEventListener("click",function(){var i=this,Q=i.value;u=Q;p.playbackRate=parseFloat(Q);E.speedButton.querySelector("button").innerHTML=q(Q);var O=E.speedButton.querySelectorAll("."+x.options.classPrefix+"speed-selected");for(var P=0,N=O.length;P<N;P++){mejs.Utils.removeClass(O[P],x.options.classPrefix+"speed-selected")}i.checked=true;var R=mejs.Utils.siblings(i,function(S){return mejs.Utils.hasClass(S,x.options.classPrefix+"speed-selector-label")});for(var t=0,s=R.length;t<s;t++){mejs.Utils.addClass(R[t],x.options.classPrefix+"speed-selected")}})}for(var h=0,B=K.length;h<B;h++){K[h].addEventListener("click",function(){var i=mejs.Utils.siblings(this,function(t){return t.tagName==="INPUT"})[0],s=mejs.Utils.createEvent("click",i);i.dispatchEvent(s)})}E.speedSelector.addEventListener("keydown",function(i){i.stopPropagation()});p.addEventListener("loadedmetadata",function(){if(u){p.playbackRate=parseFloat(u)}})},clearspeed:function c(g){if(g){if(g.speedButton){g.speedButton.parentNode.removeChild(g.speedButton)}if(g.speedSelector){g.speedSelector.parentNode.removeChild(g.speedSelector)}}}})},{}]},{},[1]); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/flashmediaelement-debug.swf b/src/main/webapp/static/movie/mediaelementjs/flashmediaelement-debug.swf deleted file mode 100644 index 74e77a3d59d8e8f05ea397b89f73ff0afea5dd3e..0000000000000000000000000000000000000000 Binary files a/src/main/webapp/static/movie/mediaelementjs/flashmediaelement-debug.swf and /dev/null differ diff --git a/src/main/webapp/static/movie/mediaelementjs/flashmediaelement.swf b/src/main/webapp/static/movie/mediaelementjs/flashmediaelement.swf deleted file mode 100644 index ff25d19a50743d1afaac893f080d6c8bb839afe2..0000000000000000000000000000000000000000 Binary files a/src/main/webapp/static/movie/mediaelementjs/flashmediaelement.swf and /dev/null differ diff --git a/src/main/webapp/static/movie/mediaelementjs/flv/README b/src/main/webapp/static/movie/mediaelementjs/flv/README new file mode 100644 index 0000000000000000000000000000000000000000..0709ebbbb7afabb4f886e678b9715bc45667bec8 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/flv/README @@ -0,0 +1,3 @@ +An HTML5 Flash Video (FLV) Player written in pure JavaScript without Flash. LONG LIVE FLV! + +https://github.com/Bilibili/flv.js \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/flv/flv.min.js b/src/main/webapp/static/movie/mediaelementjs/flv/flv.min.js new file mode 100644 index 0000000000000000000000000000000000000000..297d5862ce78de915ead82b54fbcdb67d8068389 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/flv/flv.min.js @@ -0,0 +1,6 @@ +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.flvjs=e()}}(function(){var e;return function e(t,n,i){function r(a,o){if(!n[a]){if(!t[a]){var u="function"==typeof require&&require;if(!o&&u)return u(a,!0);if(s)return s(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var d=n[a]={exports:{}};t[a][0].call(d.exports,function(e){var n=t[a][1][e];return r(n?n:e)},d,d.exports,e,t,n,i)}return n[a].exports}for(var s="function"==typeof require&&require,a=0;a<i.length;a++)r(i[a]);return r}({1:[function(t,n,i){(function(r,s){!function(t,r){"object"==typeof i&&void 0!==n?n.exports=r():"function"==typeof e&&e.amd?e(r):t.ES6Promise=r()}(this,function(){"use strict";function e(e){return"function"==typeof e||"object"==typeof e&&null!==e}function n(e){return"function"==typeof e}function i(e){q=e}function a(e){K=e}function o(){return void 0!==H?function(){H(l)}:u()}function u(){var e=setTimeout;return function(){return e(l,1)}}function l(){for(var e=0;e<z;e+=2){(0,J[e])(J[e+1]),J[e]=void 0,J[e+1]=void 0}z=0}function d(e,t){var n=arguments,i=this,r=new this.constructor(f);void 0===r[ee]&&C(r);var s=i._state;return s?function(){var e=n[s-1];K(function(){return O(s,r,e,i._result)})}():L(i,r,e,t),r}function h(e){var t=this;if(e&&"object"==typeof e&&e.constructor===t)return e;var n=new t(f);return E(n,e),n}function f(){}function c(){return new TypeError("You cannot resolve a promise with itself")}function _(){return new TypeError("A promises callback cannot return that same promise.")}function m(e){try{return e.then}catch(e){return re.error=e,re}}function p(e,t,n,i){try{e.call(t,n,i)}catch(e){return e}}function v(e,t,n){K(function(e){var i=!1,r=p(n,t,function(n){i||(i=!0,t!==n?E(e,n):S(e,n))},function(t){i||(i=!0,k(e,t))},"Settle: "+(e._label||" unknown promise"));!i&&r&&(i=!0,k(e,r))},e)}function g(e,t){t._state===ne?S(e,t._result):t._state===ie?k(e,t._result):L(t,void 0,function(t){return E(e,t)},function(t){return k(e,t)})}function y(e,t,i){t.constructor===e.constructor&&i===d&&t.constructor.resolve===h?g(e,t):i===re?(k(e,re.error),re.error=null):void 0===i?S(e,t):n(i)?v(e,t,i):S(e,t)}function E(t,n){t===n?k(t,c()):e(n)?y(t,n,m(n)):S(t,n)}function b(e){e._onerror&&e._onerror(e._result),w(e)}function S(e,t){e._state===te&&(e._result=t,e._state=ne,0!==e._subscribers.length&&K(w,e))}function k(e,t){e._state===te&&(e._state=ie,e._result=t,K(b,e))}function L(e,t,n,i){var r=e._subscribers,s=r.length;e._onerror=null,r[s]=t,r[s+ne]=n,r[s+ie]=i,0===s&&e._state&&K(w,e)}function w(e){var t=e._subscribers,n=e._state;if(0!==t.length){for(var i=void 0,r=void 0,s=e._result,a=0;a<t.length;a+=3)i=t[a],r=t[a+n],i?O(n,i,r,s):r(s);e._subscribers.length=0}}function R(){this.error=null}function A(e,t){try{return e(t)}catch(e){return se.error=e,se}}function O(e,t,i,r){var s=n(i),a=void 0,o=void 0,u=void 0,l=void 0;if(s){if(a=A(i,r),a===se?(l=!0,o=a.error,a.error=null):u=!0,t===a)return void k(t,_())}else a=r,u=!0;t._state!==te||(s&&u?E(t,a):l?k(t,o):e===ne?S(t,a):e===ie&&k(t,a))}function T(e,t){try{t(function(t){E(e,t)},function(t){k(e,t)})}catch(t){k(e,t)}}function I(){return ae++}function C(e){e[ee]=ae++,e._state=void 0,e._result=void 0,e._subscribers=[]}function x(e,t){this._instanceConstructor=e,this.promise=new e(f),this.promise[ee]||C(this.promise),V(t)?(this._input=t,this.length=t.length,this._remaining=t.length,this._result=new Array(this.length),0===this.length?S(this.promise,this._result):(this.length=this.length||0,this._enumerate(),0===this._remaining&&S(this.promise,this._result))):k(this.promise,M())}function M(){return new Error("Array Methods must be provided an Array")}function D(e){return new x(this,e).promise}function j(e){var t=this;return new t(V(e)?function(n,i){for(var r=e.length,s=0;s<r;s++)t.resolve(e[s]).then(n,i)}:function(e,t){return t(new TypeError("You must pass an array to race."))})}function P(e){var t=this,n=new t(f);return k(n,e),n}function B(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function U(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}function N(e){this[ee]=I(),this._result=this._state=void 0,this._subscribers=[],f!==e&&("function"!=typeof e&&B(),this instanceof N?T(this,e):U())}function F(){var e=void 0;if(void 0!==s)e=s;else if("undefined"!=typeof self)e=self;else try{e=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}var t=e.Promise;if(t){var n=null;try{n=Object.prototype.toString.call(t.resolve())}catch(e){}if("[object Promise]"===n&&!t.cast)return}e.Promise=N}var G=void 0;G=Array.isArray?Array.isArray:function(e){return"[object Array]"===Object.prototype.toString.call(e)};var V=G,z=0,H=void 0,q=void 0,K=function(e,t){J[z]=e,J[z+1]=t,2===(z+=2)&&(q?q(l):$())},W="undefined"!=typeof window?window:void 0,X=W||{},Y=X.MutationObserver||X.WebKitMutationObserver,Z="undefined"==typeof self&&void 0!==r&&"[object process]"==={}.toString.call(r),Q="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,J=new Array(1e3),$=void 0;$=Z?function(){return function(){return r.nextTick(l)}}():Y?function(){var e=0,t=new Y(l),n=document.createTextNode("");return t.observe(n,{characterData:!0}),function(){n.data=e=++e%2}}():Q?function(){var e=new MessageChannel;return e.port1.onmessage=l,function(){return e.port2.postMessage(0)}}():void 0===W&&"function"==typeof t?function(){try{var e=t,n=e("vertx");return H=n.runOnLoop||n.runOnContext,o()}catch(e){return u()}}():u();var ee=Math.random().toString(36).substring(16),te=void 0,ne=1,ie=2,re=new R,se=new R,ae=0;return x.prototype._enumerate=function(){for(var e=this.length,t=this._input,n=0;this._state===te&&n<e;n++)this._eachEntry(t[n],n)},x.prototype._eachEntry=function(e,t){var n=this._instanceConstructor,i=n.resolve;if(i===h){var r=m(e);if(r===d&&e._state!==te)this._settledAt(e._state,t,e._result);else if("function"!=typeof r)this._remaining--,this._result[t]=e;else if(n===N){var s=new n(f);y(s,e,r),this._willSettleAt(s,t)}else this._willSettleAt(new n(function(t){return t(e)}),t)}else this._willSettleAt(i(e),t)},x.prototype._settledAt=function(e,t,n){var i=this.promise;i._state===te&&(this._remaining--,e===ie?k(i,n):this._result[t]=n),0===this._remaining&&S(i,this._result)},x.prototype._willSettleAt=function(e,t){var n=this;L(e,void 0,function(e){return n._settledAt(ne,t,e)},function(e){return n._settledAt(ie,t,e)})},N.all=D,N.race=j,N.resolve=h,N.reject=P,N._setScheduler=i,N._setAsap=a,N._asap=K,N.prototype={constructor:N,then:d,catch:function(e){return this.then(null,e)}},N.polyfill=F,N.Promise=N,N})}).call(this,t("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:3}],2:[function(e,t,n){function i(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function s(e){return"number"==typeof e}function a(e){return"object"==typeof e&&null!==e}function o(e){return void 0===e}t.exports=i,i.EventEmitter=i,i.prototype._events=void 0,i.prototype._maxListeners=void 0,i.defaultMaxListeners=10,i.prototype.setMaxListeners=function(e){if(!s(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},i.prototype.emit=function(e){var t,n,i,s,u,l;if(this._events||(this._events={}),"error"===e&&(!this._events.error||a(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}if(n=this._events[e],o(n))return!1;if(r(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(a(n))for(s=Array.prototype.slice.call(arguments,1),l=n.slice(),i=l.length,u=0;u<i;u++)l[u].apply(this,s);return!0},i.prototype.addListener=function(e,t){var n;if(!r(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,r(t.listener)?t.listener:t),this._events[e]?a(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,a(this._events[e])&&!this._events[e].warned&&(n=o(this._maxListeners)?i.defaultMaxListeners:this._maxListeners)&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},i.prototype.on=i.prototype.addListener,i.prototype.once=function(e,t){function n(){this.removeListener(e,n),i||(i=!0,t.apply(this,arguments))}if(!r(t))throw TypeError("listener must be a function");var i=!1;return n.listener=t,this.on(e,n),this},i.prototype.removeListener=function(e,t){var n,i,s,o;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],s=n.length,i=-1,n===t||r(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(a(n)){for(o=s;o-- >0;)if(n[o]===t||n[o].listener&&n[o].listener===t){i=o;break}if(i<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},i.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],r(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},i.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},i.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},i.listenerCount=function(e,t){return e.listenerCount(t)}},{}],3:[function(e,t,n){function i(){throw new Error("setTimeout has not been defined")}function r(){throw new Error("clearTimeout has not been defined")}function s(e){if(h===setTimeout)return setTimeout(e,0);if((h===i||!h)&&setTimeout)return h=setTimeout,setTimeout(e,0);try{return h(e,0)}catch(t){try{return h.call(null,e,0)}catch(t){return h.call(this,e,0)}}}function a(e){if(f===clearTimeout)return clearTimeout(e);if((f===r||!f)&&clearTimeout)return f=clearTimeout,clearTimeout(e);try{return f(e)}catch(t){try{return f.call(null,e)}catch(t){return f.call(this,e)}}}function o(){p&&_&&(p=!1,_.length?m=_.concat(m):v=-1,m.length&&u())}function u(){if(!p){var e=s(o);p=!0;for(var t=m.length;t;){for(_=m,m=[];++v<t;)_&&_[v].run();v=-1,t=m.length}_=null,p=!1,a(e)}}function l(e,t){this.fun=e,this.array=t}function d(){}var h,f,c=t.exports={};!function(){try{h="function"==typeof setTimeout?setTimeout:i}catch(e){h=i}try{f="function"==typeof clearTimeout?clearTimeout:r}catch(e){f=r}}();var _,m=[],p=!1,v=-1;c.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];m.push(new l(e,t)),1!==m.length||p||s(u)},l.prototype.run=function(){this.fun.apply(null,this.array)},c.title="browser",c.browser=!0,c.env={},c.argv=[],c.version="",c.versions={},c.on=d,c.addListener=d,c.once=d,c.off=d,c.removeListener=d,c.removeAllListeners=d,c.emit=d,c.binding=function(e){throw new Error("process.binding is not supported")},c.cwd=function(){return"/"},c.chdir=function(e){throw new Error("process.chdir is not supported")},c.umask=function(){return 0}},{}],4:[function(e,t,n){var i=arguments[3],r=arguments[4],s=arguments[5],a=JSON.stringify;t.exports=function(e,t){function n(e){p[e]=!0;for(var t in r[e][1]){var i=r[e][1][t];p[i]||n(i)}}for(var o,u=Object.keys(s),l=0,d=u.length;l<d;l++){var h=u[l],f=s[h].exports;if(f===e||f&&f.default===e){o=h;break}}if(!o){o=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var c={},l=0,d=u.length;l<d;l++){var h=u[l];c[h]=h}r[o]=[Function(["require","module","exports"],"("+e+")(self)"),c]}var _=Math.floor(Math.pow(16,8)*Math.random()).toString(16),m={};m[o]=o,r[_]=[Function(["require"],"var f = require("+a(o)+");(f.default ? f.default : f)(self);"),m];var p={};n(_);var v="("+i+")({"+Object.keys(p).map(function(e){return a(e)+":["+r[e][0]+","+a(r[e][1])+"]"}).join(",")+"},{},["+a(_)+"])",g=window.URL||window.webkitURL||window.mozURL||window.msURL,y=new Blob([v],{type:"text/javascript"});if(t&&t.bare)return y;var E=g.createObjectURL(y),b=new Worker(E);return b.objectURL=E,b}},{}],5:[function(e,t,n){"use strict";function i(){return Object.assign({},r)}Object.defineProperty(n,"__esModule",{value:!0}),n.createDefaultConfig=i;var r=n.defaultConfig={enableWorker:!1,enableStashBuffer:!0,stashInitialSize:void 0,isLive:!1,lazyLoad:!0,lazyLoadMaxDuration:180,lazyLoadRecoverDuration:30,deferLoadAfterSourceOpen:!0,statisticsInfoReportInterval:600,accurateSeek:!1,seekType:"range",seekParamStart:"bstart",seekParamEnd:"bend",rangeLoadZeroStart:!1,customSeekHandler:void 0,reuseRedirectedURL:!1}},{}],6:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=e("../io/io-controller.js"),a=function(e){return e&&e.__esModule?e:{default:e}}(s),o=e("../config.js"),u=function(){function e(){i(this,e)}return r(e,null,[{key:"supportMSEH264Playback",value:function(){return window.MediaSource&&window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}},{key:"supportNetworkStreamIO",value:function(){var e=new a.default({},(0,o.createDefaultConfig)()),t=e.loaderType;return e.destroy(),"fetch-stream-loader"==t||"xhr-moz-chunked-loader"==t}},{key:"getNetworkLoaderTypeName",value:function(){var e=new a.default({},(0,o.createDefaultConfig)()),t=e.loaderType;return e.destroy(),t}},{key:"supportNativeMediaPlayback",value:function(t){void 0==e.videoElement&&(e.videoElement=window.document.createElement("video"));var n=e.videoElement.canPlayType(t);return"probably"===n||"maybe"==n}},{key:"getFeatureList",value:function(){var t={mseFlvPlayback:!1,mseLiveFlvPlayback:!1,networkStreamIO:!1,networkLoaderName:"",nativeMP4H264Playback:!1,nativeWebmVP8Playback:!1,nativeWebmVP9Playback:!1};return t.mseFlvPlayback=e.supportMSEH264Playback(),t.networkStreamIO=e.supportNetworkStreamIO(),t.networkLoaderName=e.getNetworkLoaderTypeName(),t.mseLiveFlvPlayback=t.mseFlvPlayback&&t.networkStreamIO,t.nativeMP4H264Playback=e.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),t.nativeWebmVP8Playback=e.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),t.nativeWebmVP9Playback=e.supportNativeMediaPlayback('video/webm; codecs="vp9"'),t}}]),e}();n.default=u},{"../config.js":5,"../io/io-controller.js":23}],7:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(){i(this,e),this.mimeType=null,this.duration=null,this.hasAudio=null,this.hasVideo=null,this.audioCodec=null,this.videoCodec=null,this.audioDataRate=null,this.videoDataRate=null,this.audioSampleRate=null,this.audioChannelCount=null,this.width=null,this.height=null,this.fps=null,this.profile=null,this.level=null,this.chromaFormat=null,this.sarNum=null,this.sarDen=null,this.metadata=null,this.segments=null,this.segmentCount=null,this.hasKeyframesIndex=null,this.keyframesIndex=null}return r(e,[{key:"isComplete",value:function(){var e=this.hasAudio===!1||this.hasAudio===!0&&null!=this.audioCodec&&null!=this.audioSampleRate&&null!=this.audioChannelCount,t=this.hasVideo===!1||this.hasVideo===!0&&null!=this.videoCodec&&null!=this.width&&null!=this.height&&null!=this.fps&&null!=this.profile&&null!=this.level&&null!=this.chromaFormat&&null!=this.sarNum&&null!=this.sarDen;return null!=this.mimeType&&null!=this.duration&&null!=this.metadata&&null!=this.hasKeyframesIndex&&e&&t}},{key:"isSeekable",value:function(){return this.hasKeyframesIndex===!0}},{key:"getNearestKeyframe",value:function(e){if(null==this.keyframesIndex)return null;var t=this.keyframesIndex,n=this._search(t.times,e);return{index:n,milliseconds:t.times[n],fileposition:t.filepositions[n]}}},{key:"_search",value:function(e,t){var n=0,i=e.length-1,r=0,s=0,a=i;for(t<e[0]&&(n=0,s=a+1);s<=a;){if((r=s+Math.floor((a-s)/2))===i||t>=e[r]&&t<e[r+1]){n=r;break}e[r]<t?s=r+1:a=r-1}return n}}]),e}();n.default=s},{}],8:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}();n.SampleInfo=function e(t,n,r,s,a){i(this,e),this.dts=t,this.pts=n,this.duration=r,this.originalDts=s,this.isSyncPoint=a,this.fileposition=null},n.MediaSegmentInfo=function(){function e(){i(this,e),this.beginDts=0,this.endDts=0,this.beginPts=0,this.endPts=0,this.originalBeginDts=0,this.originalEndDts=0,this.syncPoints=[],this.firstSample=null,this.lastSample=null}return r(e,[{key:"appendSyncPoint",value:function(e){e.isSyncPoint=!0,this.syncPoints.push(e)}}]),e}(),n.IDRSampleList=function(){function e(){i(this,e),this._list=[]}return r(e,[{key:"clear",value:function(){this._list=[]}},{key:"appendArray",value:function(e){var t=this._list;0!==e.length&&(t.length>0&&e[0].originalDts<t[t.length-1].originalDts&&this.clear(),Array.prototype.push.apply(t,e))}},{key:"getLastSyncPointBeforeDts",value:function(e){if(0==this._list.length)return null;var t=this._list,n=0,i=t.length-1,r=0,s=0,a=i;for(e<t[0].dts&&(n=0,s=a+1);s<=a;){if((r=s+Math.floor((a-s)/2))===i||e>=t[r].dts&&e<t[r+1].dts){n=r;break}t[r].dts<e?s=r+1:a=r-1}return this._list[n]}}]),e}(),n.MediaSegmentInfoList=function(){function e(t){i(this,e),this._type=t,this._list=[],this._lastAppendLocation=-1}return r(e,[{key:"isEmpty",value:function(){return 0===this._list.length}},{key:"clear",value:function(){this._list=[],this._lastAppendLocation=-1}},{key:"_searchNearestSegmentBefore",value:function(e){var t=this._list;if(0===t.length)return-2;var n=t.length-1,i=0,r=0,s=n,a=0;if(e<t[0].originalBeginDts)return a=-1;for(;r<=s;){if((i=r+Math.floor((s-r)/2))===n||e>t[i].lastSample.originalDts&&e<t[i+1].originalBeginDts){a=i;break}t[i].originalBeginDts<e?r=i+1:s=i-1}return a}},{key:"_searchNearestSegmentAfter",value:function(e){return this._searchNearestSegmentBefore(e)+1}},{key:"append",value:function(e){var t=this._list,n=e,i=this._lastAppendLocation,r=0;i!==-1&&i<t.length&&n.originalBeginDts>=t[i].lastSample.originalDts&&(i===t.length-1||i<t.length-1&&n.originalBeginDts<t[i+1].originalBeginDts)?r=i+1:t.length>0&&(r=this._searchNearestSegmentBefore(n.originalBeginDts)+1),this._lastAppendLocation=r,this._list.splice(r,0,n)}},{key:"getLastSegmentBefore",value:function(e){var t=this._searchNearestSegmentBefore(e);return t>=0?this._list[t]:null}},{key:"getLastSampleBefore",value:function(e){var t=this.getLastSegmentBefore(e);return null!=t?t.lastSample:null}},{key:"getLastSyncPointBefore",value:function(e){for(var t=this._searchNearestSegmentBefore(e),n=this._list[t].syncPoints;0===n.length&&t>0;)t--,n=this._list[t].syncPoints;return n.length>0?n[n.length-1]:null}},{key:"type",get:function(){return this._type}},{key:"length",get:function(){return this._list.length}}]),e}()},{}],9:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("events"),o=i(a),u=e("../utils/logger.js"),l=i(u),d=e("../utils/browser.js"),h=i(d),f=e("./mse-events.js"),c=i(f),_=e("./media-segment-info.js"),m=e("../utils/exception.js"),p=function(){function e(){r(this,e),this.TAG="MSEController",this._emitter=new o.default,this.e={onSourceOpen:this._onSourceOpen.bind(this),onSourceEnded:this._onSourceEnded.bind(this),onSourceClose:this._onSourceClose.bind(this),onSourceBufferError:this._onSourceBufferError.bind(this),onSourceBufferUpdateEnd:this._onSourceBufferUpdateEnd.bind(this)},this._mediaSource=null,this._mediaSourceObjectURL=null,this._mediaElement=null,this._isBufferFull=!1,this._hasPendingEos=!1,this._requireSetMediaDuration=!1,this._pendingMediaDuration=0,this._pendingSourceBufferInit=[],this._mimeTypes={video:null,audio:null},this._sourceBuffers={video:null,audio:null},this._lastInitSegments={video:null,audio:null},this._pendingSegments={video:[],audio:[]},this._pendingRemoveRanges={video:[],audio:[]},this._idrList=new _.IDRSampleList}return s(e,[{key:"destroy",value:function(){(this._mediaElement||this._mediaSource)&&this.detachMediaElement(),this.e=null,this._emitter.removeAllListeners(),this._emitter=null}},{key:"on",value:function(e,t){this._emitter.addListener(e,t)}},{key:"off",value:function(e,t){this._emitter.removeListener(e,t)}},{key:"attachMediaElement",value:function(e){if(this._mediaSource)throw new m.IllegalStateException("MediaSource has been attached to an HTMLMediaElement!");var t=this._mediaSource=new window.MediaSource;t.addEventListener("sourceopen",this.e.onSourceOpen),t.addEventListener("sourceended",this.e.onSourceEnded),t.addEventListener("sourceclose",this.e.onSourceClose),this._mediaElement=e,this._mediaSourceObjectURL=window.URL.createObjectURL(this._mediaSource),e.src=this._mediaSourceObjectURL}},{key:"detachMediaElement",value:function(){if(this._mediaSource){var e=this._mediaSource;for(var t in this._sourceBuffers){var n=this._pendingSegments[t];n.splice(0,n.length),this._pendingSegments[t]=null,this._pendingRemoveRanges[t]=null,this._lastInitSegments[t]=null;var i=this._sourceBuffers[t];i&&("closed"!==e.readyState&&(e.removeSourceBuffer(i),i.removeEventListener("error",this.e.onSourceBufferError),i.removeEventListener("updateend",this.e.onSourceBufferUpdateEnd)),this._mimeTypes[t]=null,this._sourceBuffers[t]=null)}if("open"===e.readyState)try{e.endOfStream()}catch(e){l.default.e(this.TAG,e.message)}e.removeEventListener("sourceopen",this.e.onSourceOpen),e.removeEventListener("sourceended",this.e.onSourceEnded),e.removeEventListener("sourceclose",this.e.onSourceClose),this._pendingSourceBufferInit=[],this._isBufferFull=!1,this._idrList.clear(),this._mediaSource=null}this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement=null),this._mediaSourceObjectURL&&(window.URL.revokeObjectURL(this._mediaSourceObjectURL),this._mediaSourceObjectURL=null)}},{key:"appendInitSegment",value:function(e,t){if(!this._mediaSource||"open"!==this._mediaSource.readyState)return this._pendingSourceBufferInit.push(e),void this._pendingSegments[e.type].push(e);var n=e,i=""+n.container;n.codec&&n.codec.length>0&&(i+=";codecs="+n.codec);var r=!1;if(l.default.v(this.TAG,"Received Initialization Segment, mimeType: "+i),this._lastInitSegments[n.type]=n,i!==this._mimeTypes[n.type]){if(this._mimeTypes[n.type])l.default.v(this.TAG,"Notice: "+n.type+" mimeType changed, origin: "+this._mimeTypes[n.type]+", target: "+i);else{r=!0;try{var s=this._sourceBuffers[n.type]=this._mediaSource.addSourceBuffer(i);s.addEventListener("error",this.e.onSourceBufferError),s.addEventListener("updateend",this.e.onSourceBufferUpdateEnd)}catch(e){return l.default.e(this.TAG,e.message),void this._emitter.emit(c.default.ERROR,{code:e.code,msg:e.message})}}this._mimeTypes[n.type]=i}t||this._pendingSegments[n.type].push(n),r||this._sourceBuffers[n.type]&&!this._sourceBuffers[n.type].updating&&this._doAppendSegments(),h.default.safari&&"audio/mpeg"===n.container&&n.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=n.mediaDuration/1e3,this._updateMediaSourceDuration())}},{key:"appendMediaSegment",value:function(e){var t=e;this._pendingSegments[t.type].push(t);var n=this._sourceBuffers[t.type];!n||n.updating||this._hasPendingRemoveRanges()||this._doAppendSegments()}},{key:"seek",value:function(e){for(var t in this._sourceBuffers)if(this._sourceBuffers[t]){var n=this._sourceBuffers[t];if("open"===this._mediaSource.readyState)try{n.abort()}catch(e){l.default.e(this.TAG,e.message)}this._idrList.clear();var i=this._pendingSegments[t];if(i.splice(0,i.length),"closed"!==this._mediaSource.readyState){for(var r=0;r<n.buffered.length;r++){var s=n.buffered.start(r),a=n.buffered.end(r);this._pendingRemoveRanges[t].push({start:s,end:a})}if(n.updating||this._doRemoveRanges(),h.default.safari){var o=this._lastInitSegments[t];o&&(this._pendingSegments[t].push(o),n.updating||this._doAppendSegments())}}}}},{key:"endOfStream",value:function(){var e=this._mediaSource,t=this._sourceBuffers;if(!e||"open"!==e.readyState)return void(e&&"closed"===e.readyState&&this._hasPendingSegments()&&(this._hasPendingEos=!0));t.video&&t.video.updating||t.audio&&t.audio.updating?this._hasPendingEos=!0:(this._hasPendingEos=!1,e.endOfStream())}},{key:"getNearestKeyframe",value:function(e){return this._idrList.getLastSyncPointBeforeDts(e)}},{key:"_updateMediaSourceDuration",value:function(){var e=this._sourceBuffers;if(0!==this._mediaElement.readyState&&"open"===this._mediaSource.readyState&&!(e.video&&e.video.updating||e.audio&&e.audio.updating)){var t=this._mediaSource.duration,n=this._pendingMediaDuration;n>0&&(isNaN(t)||n>t)&&(l.default.v(this.TAG,"Update MediaSource duration from "+t+" to "+n),this._mediaSource.duration=n),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}}},{key:"_doRemoveRanges",value:function(){for(var e in this._pendingRemoveRanges)if(this._sourceBuffers[e]&&!this._sourceBuffers[e].updating)for(var t=this._sourceBuffers[e],n=this._pendingRemoveRanges[e];n.length&&!t.updating;){var i=n.shift();t.remove(i.start,i.end)}}},{key:"_doAppendSegments",value:function(){var e=this._pendingSegments;for(var t in e)if(this._sourceBuffers[t]&&!this._sourceBuffers[t].updating&&e[t].length>0){var n=e[t].shift();if(n.timestampOffset){var i=this._sourceBuffers[t].timestampOffset,r=n.timestampOffset/1e3,s=Math.abs(i-r);s>.1&&(l.default.v(this.TAG,"Update MPEG audio timestampOffset from "+i+" to "+r),this._sourceBuffers[t].timestampOffset=r),delete n.timestampOffset}if(!n.data||0===n.data.byteLength)continue;try{this._sourceBuffers[t].appendBuffer(n.data),this._isBufferFull=!1,"video"===t&&n.hasOwnProperty("info")&&this._idrList.appendArray(n.info.syncPoints)}catch(e){this._pendingSegments[t].unshift(n),22===e.code?(this._isBufferFull||this._emitter.emit(c.default.BUFFER_FULL),this._isBufferFull=!0):(l.default.e(this.TAG,e.message),this._emitter.emit(c.default.ERROR,{code:e.code,msg:e.message}))}}}},{key:"_onSourceOpen",value:function(){if(l.default.v(this.TAG,"MediaSource onSourceOpen"),this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._pendingSourceBufferInit.length>0)for(var e=this._pendingSourceBufferInit;e.length;){var t=e.shift();this.appendInitSegment(t,!0)}this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(c.default.SOURCE_OPEN)}},{key:"_onSourceEnded",value:function(){l.default.v(this.TAG,"MediaSource onSourceEnded")}},{key:"_onSourceClose",value:function(){l.default.v(this.TAG,"MediaSource onSourceClose"),this._mediaSource&&null!=this.e&&(this._mediaSource.removeEventListener("sourceopen",this.e.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.e.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.e.onSourceClose))}},{key:"_hasPendingSegments",value:function(){var e=this._pendingSegments;return e.video.length>0||e.audio.length>0}},{key:"_hasPendingRemoveRanges",value:function(){var e=this._pendingRemoveRanges;return e.video.length>0||e.audio.length>0}},{key:"_onSourceBufferUpdateEnd",value:function(){this._requireSetMediaDuration?this._updateMediaSourceDuration():this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(c.default.UPDATE_END)}},{key:"_onSourceBufferError",value:function(e){l.default.e(this.TAG,"SourceBuffer Error: "+e)}}]),e}();n.default=p},{"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./media-segment-info.js":8,"./mse-events.js":10,events:2}],10:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={ERROR:"error",SOURCE_OPEN:"source_open",UPDATE_END:"update_end",BUFFER_FULL:"buffer_full"};n.default=i},{}],11:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("events"),o=i(a),u=e("../utils/logger.js"),l=i(u),d=e("../utils/logging-control.js"),h=i(d),f=e("./transmuxing-controller.js"),c=i(f),_=e("./transmuxing-events.js"),m=i(_),p=e("./transmuxing-worker.js"),v=i(p),g=e("./media-info.js"),y=i(g),E=function(){function t(n,i){if(r(this,t),this.TAG="Transmuxer",this._emitter=new o.default,i.enableWorker&&"undefined"!=typeof Worker)try{var s=e("webworkify");this._worker=s(v.default),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[n,i]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},h.default.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:h.default.getConfig()})}catch(e){l.default.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new c.default(n,i)}else this._controller=new c.default(n,i);if(this._controller){var a=this._controller;a.on(m.default.IO_ERROR,this._onIOError.bind(this)),a.on(m.default.DEMUX_ERROR,this._onDemuxError.bind(this)),a.on(m.default.INIT_SEGMENT,this._onInitSegment.bind(this)),a.on(m.default.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),a.on(m.default.LOADING_COMPLETE,this._onLoadingComplete.bind(this)), +a.on(m.default.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),a.on(m.default.MEDIA_INFO,this._onMediaInfo.bind(this)),a.on(m.default.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),a.on(m.default.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this))}}return s(t,[{key:"destroy",value:function(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),h.default.removeListener(this.e.onLoggingConfigChanged),this.e=null):(this._controller.destroy(),this._controller=null),this._emitter.removeAllListeners(),this._emitter=null}},{key:"on",value:function(e,t){this._emitter.addListener(e,t)}},{key:"off",value:function(e,t){this._emitter.removeListener(e,t)}},{key:"hasWorker",value:function(){return null!=this._worker}},{key:"open",value:function(){this._worker?this._worker.postMessage({cmd:"start"}):this._controller.start()}},{key:"close",value:function(){this._worker?this._worker.postMessage({cmd:"stop"}):this._controller.stop()}},{key:"seek",value:function(e){this._worker?this._worker.postMessage({cmd:"seek",param:e}):this._controller.seek(e)}},{key:"pause",value:function(){this._worker?this._worker.postMessage({cmd:"pause"}):this._controller.pause()}},{key:"resume",value:function(){this._worker?this._worker.postMessage({cmd:"resume"}):this._controller.resume()}},{key:"_onInitSegment",value:function(e,t){var n=this;Promise.resolve().then(function(){n._emitter.emit(m.default.INIT_SEGMENT,e,t)})}},{key:"_onMediaSegment",value:function(e,t){var n=this;Promise.resolve().then(function(){n._emitter.emit(m.default.MEDIA_SEGMENT,e,t)})}},{key:"_onLoadingComplete",value:function(){var e=this;Promise.resolve().then(function(){e._emitter.emit(m.default.LOADING_COMPLETE)})}},{key:"_onRecoveredEarlyEof",value:function(){var e=this;Promise.resolve().then(function(){e._emitter.emit(m.default.RECOVERED_EARLY_EOF)})}},{key:"_onMediaInfo",value:function(e){var t=this;Promise.resolve().then(function(){t._emitter.emit(m.default.MEDIA_INFO,e)})}},{key:"_onStatisticsInfo",value:function(e){var t=this;Promise.resolve().then(function(){t._emitter.emit(m.default.STATISTICS_INFO,e)})}},{key:"_onIOError",value:function(e,t){var n=this;Promise.resolve().then(function(){n._emitter.emit(m.default.IO_ERROR,e,t)})}},{key:"_onDemuxError",value:function(e,t){var n=this;Promise.resolve().then(function(){n._emitter.emit(m.default.DEMUX_ERROR,e,t)})}},{key:"_onRecommendSeekpoint",value:function(e){var t=this;Promise.resolve().then(function(){t._emitter.emit(m.default.RECOMMEND_SEEKPOINT,e)})}},{key:"_onLoggingConfigChanged",value:function(e){this._worker&&this._worker.postMessage({cmd:"logging_config",param:e})}},{key:"_onWorkerMessage",value:function(e){var t=e.data,n=t.data;if("destroyed"===t.msg||this._workerDestroying)return this._workerDestroying=!1,this._worker.terminate(),void(this._worker=null);switch(t.msg){case m.default.INIT_SEGMENT:case m.default.MEDIA_SEGMENT:this._emitter.emit(t.msg,n.type,n.data);break;case m.default.LOADING_COMPLETE:case m.default.RECOVERED_EARLY_EOF:this._emitter.emit(t.msg);break;case m.default.MEDIA_INFO:Object.setPrototypeOf(n,y.default.prototype),this._emitter.emit(t.msg,n);break;case m.default.STATISTICS_INFO:this._emitter.emit(t.msg,n);break;case m.default.IO_ERROR:case m.default.DEMUX_ERROR:this._emitter.emit(t.msg,n.type,n.info);break;case m.default.RECOMMEND_SEEKPOINT:this._emitter.emit(t.msg,n)}}}]),t}();n.default=E},{"../utils/logger.js":41,"../utils/logging-control.js":42,"./media-info.js":7,"./transmuxing-controller.js":12,"./transmuxing-events.js":13,"./transmuxing-worker.js":14,events:2,webworkify:4}],12:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("events"),o=i(a),u=e("../utils/logger.js"),l=i(u),d=e("../utils/browser.js"),h=i(d),f=e("./media-info.js"),c=i(f),_=e("../demux/flv-demuxer.js"),m=i(_),p=e("../remux/mp4-remuxer.js"),v=i(p),g=e("../demux/demux-errors.js"),y=i(g),E=e("../io/io-controller.js"),b=i(E),S=e("./transmuxing-events.js"),k=i(S),L=(e("../io/loader.js"),function(){function e(t,n){r(this,e),this.TAG="TransmuxingController",this._emitter=new o.default,this._config=n,t.segments||(t.segments=[{duration:t.duration,filesize:t.filesize,url:t.url}]),"boolean"!=typeof t.cors&&(t.cors=!0),"boolean"!=typeof t.withCredentials&&(t.withCredentials=!1),this._mediaDataSource=t,this._currentSegmentIndex=0;var i=0;this._mediaDataSource.segments.forEach(function(e){e.timestampBase=i,i+=e.duration,e.cors=t.cors,e.withCredentials=t.withCredentials}),isNaN(i)||this._mediaDataSource.duration===i||(this._mediaDataSource.duration=i),this._mediaInfo=null,this._demuxer=null,this._remuxer=null,this._ioctl=null,this._pendingSeekTime=null,this._pendingResolveSeekPoint=null,this._statisticsReporter=null}return s(e,[{key:"destroy",value:function(){this._mediaInfo=null,this._mediaDataSource=null,this._statisticsReporter&&this._disableStatisticsReporter(),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null),this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxer&&(this._remuxer.destroy(),this._remuxer=null),this._emitter.removeAllListeners(),this._emitter=null}},{key:"on",value:function(e,t){this._emitter.addListener(e,t)}},{key:"off",value:function(e,t){this._emitter.removeListener(e,t)}},{key:"start",value:function(){this._loadSegment(0),this._enableStatisticsReporter()}},{key:"_loadSegment",value:function(e,t){this._currentSegmentIndex=e;var n=this._mediaDataSource.segments[e],i=this._ioctl=new b.default(n,this._config,e);i.onError=this._onIOException.bind(this),i.onSeeked=this._onIOSeeked.bind(this),i.onComplete=this._onIOComplete.bind(this),i.onRedirect=this._onIORedirect.bind(this),i.onRecoveredEarlyEof=this._onIORecoveredEarlyEof.bind(this),t?this._demuxer.bindDataSource(this._ioctl):i.onDataArrival=this._onInitChunkArrival.bind(this),i.open(t)}},{key:"stop",value:function(){this._internalAbort(),this._disableStatisticsReporter()}},{key:"_internalAbort",value:function(){this._ioctl&&(this._ioctl.destroy(),this._ioctl=null)}},{key:"pause",value:function(){this._ioctl&&this._ioctl.isWorking()&&(this._ioctl.pause(),this._disableStatisticsReporter())}},{key:"resume",value:function(){this._ioctl&&this._ioctl.isPaused()&&(this._ioctl.resume(),this._enableStatisticsReporter())}},{key:"seek",value:function(e){if(null!=this._mediaInfo&&this._mediaInfo.isSeekable()){var t=this._searchSegmentIndexContains(e);if(t===this._currentSegmentIndex){var n=this._mediaInfo.segments[t];if(void 0==n)this._pendingSeekTime=e;else{var i=n.getNearestKeyframe(e);this._remuxer.seek(i.milliseconds),this._ioctl.seek(i.fileposition),this._pendingResolveSeekPoint=i.milliseconds}}else{var r=this._mediaInfo.segments[t];if(void 0==r)this._pendingSeekTime=e,this._internalAbort(),this._remuxer.seek(),this._remuxer.insertDiscontinuity(),this._loadSegment(t);else{var s=r.getNearestKeyframe(e);this._internalAbort(),this._remuxer.seek(e),this._remuxer.insertDiscontinuity(),this._demuxer.resetMediaInfo(),this._demuxer.timestampBase=this._mediaDataSource.segments[t].timestampBase,this._loadSegment(t,s.fileposition),this._pendingResolveSeekPoint=s.milliseconds,this._reportSegmentMediaInfo(t)}}this._enableStatisticsReporter()}}},{key:"_searchSegmentIndexContains",value:function(e){for(var t=this._mediaDataSource.segments,n=t.length-1,i=0;i<t.length;i++)if(e<t[i].timestampBase){n=i-1;break}return n}},{key:"_onInitChunkArrival",value:function(e,t){var n=this,i=null,r=0;if(t>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,r=this._demuxer.parseChunks(e,t);else if((i=m.default.probe(e)).match){this._demuxer=new m.default(i,this._config),this._remuxer||(this._remuxer=new v.default(this._config));var s=this._mediaDataSource;void 0==s.duration||isNaN(s.duration)||(this._demuxer.overridedDuration=s.duration),this._demuxer.timestampBase=s.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this),r=this._demuxer.parseChunks(e,t)}else i=null,l.default.e(this.TAG,"Non-FLV, Unsupported media type!"),Promise.resolve().then(function(){n._internalAbort()}),this._emitter.emit(k.default.DEMUX_ERROR,y.default.FORMAT_UNSUPPORTED,"Non-FLV, Unsupported media type"),r=0;return r}},{key:"_onMediaInfo",value:function(e){var t=this;null==this._mediaInfo&&(this._mediaInfo=Object.assign({},e),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,c.default.prototype));var n=Object.assign({},e);Object.setPrototypeOf(n,c.default.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=n,this._reportSegmentMediaInfo(this._currentSegmentIndex),null!=this._pendingSeekTime&&Promise.resolve().then(function(){var e=t._pendingSeekTime;t._pendingSeekTime=null,t.seek(e)})}},{key:"_onIOSeeked",value:function(){this._remuxer.insertDiscontinuity()}},{key:"_onIOComplete",value:function(e){var t=e,n=t+1;n<this._mediaDataSource.segments.length?(this._internalAbort(),this._loadSegment(n)):(this._emitter.emit(k.default.LOADING_COMPLETE),this._disableStatisticsReporter())}},{key:"_onIORedirect",value:function(e){var t=this._ioctl.extraData;this._mediaDataSource.segments[t].redirectedURL=e}},{key:"_onIORecoveredEarlyEof",value:function(){this._emitter.emit(k.default.RECOVERED_EARLY_EOF)}},{key:"_onIOException",value:function(e,t){l.default.e(this.TAG,"IOException: type = "+e+", code = "+t.code+", msg = "+t.msg),this._emitter.emit(k.default.IO_ERROR,e,t),this._disableStatisticsReporter()}},{key:"_onDemuxException",value:function(e,t){l.default.e(this.TAG,"DemuxException: type = "+e+", info = "+t),this._emitter.emit(k.default.DEMUX_ERROR,e,t)}},{key:"_onRemuxerInitSegmentArrival",value:function(e,t){this._emitter.emit(k.default.INIT_SEGMENT,e,t)}},{key:"_onRemuxerMediaSegmentArrival",value:function(e,t){if(null==this._pendingSeekTime&&(this._emitter.emit(k.default.MEDIA_SEGMENT,e,t),null!=this._pendingResolveSeekPoint&&"video"===e)){var n=t.info.syncPoints,i=this._pendingResolveSeekPoint;this._pendingResolveSeekPoint=null,h.default.safari&&n.length>0&&n[0].originalDts===i&&(i=n[0].pts),this._emitter.emit(k.default.RECOMMEND_SEEKPOINT,i)}}},{key:"_enableStatisticsReporter",value:function(){null==this._statisticsReporter&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))}},{key:"_disableStatisticsReporter",value:function(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}},{key:"_reportSegmentMediaInfo",value:function(e){var t=this._mediaInfo.segments[e],n=Object.assign({},t);n.duration=this._mediaInfo.duration,n.segmentCount=this._mediaInfo.segmentCount,delete n.segments,delete n.keyframesIndex,this._emitter.emit(k.default.MEDIA_INFO,n)}},{key:"_reportStatisticsInfo",value:function(){var e={};e.url=this._ioctl.currentURL,e.hasRedirect=this._ioctl.hasRedirect,e.hasRedirect&&(e.redirectedURL=this._ioctl.currentRedirectedURL),e.speed=this._ioctl.currentSpeed,e.loaderType=this._ioctl.loaderType,e.currentSegmentIndex=this._currentSegmentIndex,e.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(k.default.STATISTICS_INFO,e)}}]),e}());n.default=L},{"../demux/demux-errors.js":16,"../demux/flv-demuxer.js":18,"../io/io-controller.js":23,"../io/loader.js":24,"../remux/mp4-remuxer.js":38,"../utils/browser.js":39,"../utils/logger.js":41,"./media-info.js":7,"./transmuxing-events.js":13,events:2}],13:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={IO_ERROR:"io_error",DEMUX_ERROR:"demux_error",INIT_SEGMENT:"init_segment",MEDIA_SEGMENT:"media_segment",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",STATISTICS_INFO:"statistics_info",RECOMMEND_SEEKPOINT:"recommend_seekpoint"};n.default=i},{}],14:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var r=e("../utils/logger.js"),s=(i(r),e("../utils/logging-control.js")),a=i(s),o=e("../utils/polyfill.js"),u=i(o),l=e("./transmuxing-controller.js"),d=i(l),h=e("./transmuxing-events.js"),f=i(h),c=function(e){function t(t,n){var i={msg:f.default.INIT_SEGMENT,data:{type:t,data:n}};e.postMessage(i,[n.data])}function n(t,n){var i={msg:f.default.MEDIA_SEGMENT,data:{type:t,data:n}};e.postMessage(i,[n.data])}function i(){var t={msg:f.default.LOADING_COMPLETE};e.postMessage(t)}function r(){var t={msg:f.default.RECOVERED_EARLY_EOF};e.postMessage(t)}function s(t){var n={msg:f.default.MEDIA_INFO,data:t};e.postMessage(n)}function o(t){var n={msg:f.default.STATISTICS_INFO,data:t};e.postMessage(n)}function l(t,n){e.postMessage({msg:f.default.IO_ERROR,data:{type:t,info:n}})}function h(t,n){e.postMessage({msg:f.default.DEMUX_ERROR,data:{type:t,info:n}})}function c(t){e.postMessage({msg:f.default.RECOMMEND_SEEKPOINT,data:t})}var _=null;u.default.install(),e.addEventListener("message",function(u){switch(u.data.cmd){case"init":_=new d.default(u.data.param[0],u.data.param[1]),_.on(f.default.IO_ERROR,l.bind(this)),_.on(f.default.DEMUX_ERROR,h.bind(this)),_.on(f.default.INIT_SEGMENT,t.bind(this)),_.on(f.default.MEDIA_SEGMENT,n.bind(this)),_.on(f.default.LOADING_COMPLETE,i.bind(this)),_.on(f.default.RECOVERED_EARLY_EOF,r.bind(this)),_.on(f.default.MEDIA_INFO,s.bind(this)),_.on(f.default.STATISTICS_INFO,o.bind(this)),_.on(f.default.RECOMMEND_SEEKPOINT,c.bind(this));break;case"destroy":_&&(_.destroy(),_=null),e.postMessage({msg:"destroyed"});break;case"start":_.start();break;case"stop":_.stop();break;case"seek":_.seek(u.data.param);break;case"pause":_.pause();break;case"resume":_.resume();break;case"logging_config":a.default.applyConfig(u.data.param)}})};n.default=c},{"../utils/logger.js":41,"../utils/logging-control.js":42,"../utils/polyfill.js":43,"./transmuxing-controller.js":12,"./transmuxing-events.js":13}],15:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("../utils/logger.js"),o=i(a),u=e("../utils/utf8-conv.js"),l=i(u),d=e("../utils/exception.js"),h=function(){var e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}(),f=function(){function e(){r(this,e)}return s(e,null,[{key:"parseScriptData",value:function(t,n,i){var r={};try{var s=e.parseValue(t,n,i),a=e.parseValue(t,n+s.size,i-s.size);r[s.data]=a.data}catch(e){o.default.e("AMF",e.toString())}return r}},{key:"parseObject",value:function(t,n,i){if(i<3)throw new d.IllegalStateException("Data not enough when parse ScriptDataObject");var r=e.parseString(t,n,i),s=e.parseValue(t,n+r.size,i-r.size),a=s.objectEnd;return{data:{name:r.data,value:s.data},size:r.size+s.size,objectEnd:a}}},{key:"parseVariable",value:function(t,n,i){return e.parseObject(t,n,i)}},{key:"parseString",value:function(e,t,n){if(n<2)throw new d.IllegalStateException("Data not enough when parse String");var i=new DataView(e,t,n),r=i.getUint16(0,!h),s=void 0;return s=r>0?(0,l.default)(new Uint8Array(e,t+2,r)):"",{data:s,size:2+r}}},{key:"parseLongString",value:function(e,t,n){if(n<4)throw new d.IllegalStateException("Data not enough when parse LongString");var i=new DataView(e,t,n),r=i.getUint32(0,!h),s=void 0;return s=r>0?(0,l.default)(new Uint8Array(e,t+4,r)):"",{data:s,size:4+r}}},{key:"parseDate",value:function(e,t,n){if(n<10)throw new d.IllegalStateException("Data size invalid when parse Date");var i=new DataView(e,t,n),r=i.getFloat64(0,!h);return r+=60*i.getInt16(8,!h)*1e3,{data:new Date(r),size:10}}},{key:"parseValue",value:function(t,n,i){if(i<1)throw new d.IllegalStateException("Data not enough when parse Value");var r=new DataView(t,n,i),s=1,a=r.getUint8(0),u=void 0,l=!1;try{switch(a){case 0:u=r.getFloat64(1,!h),s+=8;break;case 1:u=!!r.getUint8(1),s+=1;break;case 2:var f=e.parseString(t,n+1,i-1);u=f.data,s+=f.size;break;case 3:u={};var c=0;for(9==(16777215&r.getUint32(i-4,!h))&&(c=3);s<i-4;){var _=e.parseObject(t,n+s,i-s-c);if(_.objectEnd)break;u[_.data.name]=_.data.value,s+=_.size}if(s<=i-3){9===(16777215&r.getUint32(s-1,!h))&&(s+=3)}break;case 8:u={},s+=4;var m=0;for(9==(16777215&r.getUint32(i-4,!h))&&(m=3);s<i-8;){var p=e.parseVariable(t,n+s,i-s-m);if(p.objectEnd)break;u[p.data.name]=p.data.value,s+=p.size}if(s<=i-3){9===(16777215&r.getUint32(s-1,!h))&&(s+=3)}break;case 9:u=void 0,s=1,l=!0;break;case 10:u=[];var v=r.getUint32(1,!h);s+=4;for(var g=0;g<v;g++){var y=e.parseValue(t,n+s,i-s);u.push(y.data),s+=y.size}break;case 11:var E=e.parseDate(t,n+1,i-1);u=E.data,s+=E.size;break;case 12:var b=e.parseString(t,n+1,i-1);u=b.data,s+=b.size;break;default:s=i,o.default.w("AMF","Unsupported AMF value type "+a)}}catch(e){o.default.e("AMF",e.toString())}return{data:u,size:s,objectEnd:l}}}]),e}();n.default=f},{"../utils/exception.js":40,"../utils/logger.js":41,"../utils/utf8-conv.js":44}],16:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={OK:"OK",FORMAT_ERROR:"FormatError",FORMAT_UNSUPPORTED:"FormatUnsupported",CODEC_UNSUPPORTED:"CodecUnsupported"};n.default=i},{}],17:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=e("../utils/exception.js"),a=function(){function e(t){i(this,e),this.TAG="ExpGolomb",this._buffer=t,this._buffer_index=0,this._total_bytes=t.byteLength,this._total_bits=8*t.byteLength,this._current_word=0,this._current_word_bits_left=0}return r(e,[{key:"destroy",value:function(){this._buffer=null}},{key:"_fillCurrentWord",value:function(){var e=this._total_bytes-this._buffer_index;if(e<=0)throw new s.IllegalStateException("ExpGolomb: _fillCurrentWord() but no bytes available");var t=Math.min(4,e),n=new Uint8Array(4);n.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(n.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=8*t}},{key:"readBits",value:function(e){if(e>32)throw new s.InvalidArgumentException("ExpGolomb: readBits() bits exceeded max 32bits!");if(e<=this._current_word_bits_left){var t=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,t}var n=this._current_word_bits_left?this._current_word:0;n>>>=32-this._current_word_bits_left;var i=e-this._current_word_bits_left;this._fillCurrentWord();var r=Math.min(i,this._current_word_bits_left),a=this._current_word>>>32-r;return this._current_word<<=r,this._current_word_bits_left-=r,n=n<<r|a}},{key:"readBool",value:function(){return 1===this.readBits(1)}},{key:"readByte",value:function(){return this.readBits(8)}},{key:"_skipLeadingZero",value:function(){var e=void 0;for(e=0;e<this._current_word_bits_left;e++)if(0!=(this._current_word&2147483648>>>e))return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}},{key:"readUEG",value:function(){var e=this._skipLeadingZero();return this.readBits(e+1)-1}},{key:"readSEG",value:function(){var e=this.readUEG();return 1&e?e+1>>>1:-1*(e>>>1)}}]),e}();n.default=a},{"../utils/exception.js":40}],18:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){return e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3]}Object.defineProperty(n,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=e("../utils/logger.js"),l=i(u),d=e("./amf-parser.js"),h=i(d),f=e("./sps-parser.js"),c=i(f),_=e("./demux-errors.js"),m=i(_),p=e("../core/media-info.js"),v=i(p),g=e("../utils/exception.js"),y=function(){function e(t,n){r(this,e),this.TAG="FLVDemuxer",this._config=n,this._onError=null,this._onMediaInfo=null,this._onTrackMetadata=null,this._onDataAvailable=null,this._dataOffset=t.dataOffset,this._firstParse=!0,this._dispatch=!1,this._hasAudio=t.hasAudioTrack,this._hasVideo=t.hasVideoTrack,this._audioInitialMetadataDispatched=!1,this._videoInitialMetadataDispatched=!1,this._mediaInfo=new v.default,this._mediaInfo.hasAudio=this._hasAudio,this._mediaInfo.hasVideo=this._hasVideo,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._naluLengthSize=4,this._timestampBase=0,this._timescale=1e3,this._duration=0,this._durationOverrided=!1,this._referenceFrameRate={fixed:!0,fps:23.976,fps_num:23976,fps_den:1e3},this._flvSoundRateTable=[5500,11025,22050,44100,48e3],this._mpegSamplingRates=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],this._mpegAudioV10SampleRateTable=[44100,48e3,32e3,0],this._mpegAudioV20SampleRateTable=[22050,24e3,16e3,0],this._mpegAudioV25SampleRateTable=[11025,12e3,8e3,0],this._mpegAudioL1BitRateTable=[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1],this._mpegAudioL2BitRateTable=[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1],this._mpegAudioL3BitRateTable=[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1],this._videoTrack={type:"video",id:1,sequenceNumber:0,samples:[],length:0},this._audioTrack={type:"audio",id:2,sequenceNumber:0,samples:[],length:0},this._littleEndian=function(){var e=new ArrayBuffer(2);return new DataView(e).setInt16(0,256,!0),256===new Int16Array(e)[0]}()}return o(e,[{key:"destroy",value:function(){this._mediaInfo=null,this._metadata=null,this._audioMetadata=null,this._videoMetadata=null,this._videoTrack=null,this._audioTrack=null,this._onError=null,this._onMediaInfo=null,this._onTrackMetadata=null,this._onDataAvailable=null}},{key:"bindDataSource",value:function(e){return e.onDataArrival=this.parseChunks.bind(this),this}},{key:"resetMediaInfo",value:function(){this._mediaInfo=new v.default}},{key:"_isInitialMetadataDispatched",value:function(){return this._hasAudio&&this._hasVideo?this._audioInitialMetadataDispatched&&this._videoInitialMetadataDispatched:this._hasAudio&&!this._hasVideo?this._audioInitialMetadataDispatched:!(this._hasAudio||!this._hasVideo)&&this._videoInitialMetadataDispatched}},{key:"parseChunks",value:function(t,n){if(!(this._onError&&this._onMediaInfo&&this._onTrackMetadata&&this._onDataAvailable))throw new g.IllegalStateException("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");var i=0,r=this._littleEndian;if(0===n){if(!(t.byteLength>13))return 0;var s=e.probe(t);i=s.dataOffset,n=s.dataOffset}if(this._firstParse){this._firstParse=!1,n!==this._dataOffset&&l.default.w(this.TAG,"First time parsing but chunk byteStart invalid!");0!==new DataView(t,i).getUint32(0,!r)&&l.default.w(this.TAG,"PrevTagSize0 !== 0 !!!"),i+=4}for(;i<t.byteLength;){this._dispatch=!0;var a=new DataView(t,i);if(i+11+4>t.byteLength)break;var o=a.getUint8(0),u=16777215&a.getUint32(0,!r);if(i+11+u+4>t.byteLength)break;if(8===o||9===o||18===o){var d=a.getUint8(4),h=a.getUint8(5),f=a.getUint8(6),c=a.getUint8(7),_=f|h<<8|d<<16|c<<24;0!==(16777215&a.getUint32(7,!r))&&l.default.w(this.TAG,"Meet tag which has StreamID != 0!");var m=i+11;switch(o){case 8:this._parseAudioData(t,m,u,_);break;case 9:this._parseVideoData(t,m,u,_,n+i);break;case 18:this._parseScriptData(t,m,u)}var p=a.getUint32(11+u,!r);p!==11+u&&l.default.w(this.TAG,"Invalid PrevTagSize "+p),i+=11+u+4}else l.default.w(this.TAG,"Unsupported tag type "+o+", skipped"),i+=11+u+4}return this._isInitialMetadataDispatched()&&this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack),i}},{key:"_parseScriptData",value:function(e,t,n){var i=h.default.parseScriptData(e,t,n);if(i.hasOwnProperty("onMetaData")){this._metadata&&l.default.w(this.TAG,"Found another onMetaData tag!"),this._metadata=i;var r=this._metadata.onMetaData;if("boolean"==typeof r.hasAudio&&(this._hasAudio=r.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),"boolean"==typeof r.hasVideo&&(this._hasVideo=r.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),"number"==typeof r.audiodatarate&&(this._mediaInfo.audioDataRate=r.audiodatarate),"number"==typeof r.videodatarate&&(this._mediaInfo.videoDataRate=r.videodatarate),"number"==typeof r.width&&(this._mediaInfo.width=r.width),"number"==typeof r.height&&(this._mediaInfo.height=r.height),"number"==typeof r.duration){if(!this._durationOverrided){var s=Math.floor(r.duration*this._timescale);this._duration=s,this._mediaInfo.duration=s}}else this._mediaInfo.duration=0;if("number"==typeof r.framerate){var o=Math.floor(1e3*r.framerate);if(o>0){var u=o/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=u,this._referenceFrameRate.fps_num=o,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=u}}if("object"===a(r.keyframes)){this._mediaInfo.hasKeyframesIndex=!0;var d=r.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(d),r.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._dispatch=!1,this._mediaInfo.metadata=r,l.default.v(this.TAG,"Parsed onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}}},{key:"_parseKeyframesIndex",value:function(e){for(var t=[],n=[],i=1;i<e.times.length;i++){var r=this._timestampBase+Math.floor(1e3*e.times[i]);t.push(r),n.push(e.filepositions[i])}return{times:t,filepositions:n}}},{key:"_parseAudioData",value:function(e,t,n,i){if(n<=1)return void l.default.w(this.TAG,"Flv: Invalid audio packet, missing SoundData payload!");var r=(this._littleEndian,new DataView(e,t,n)),s=r.getUint8(0),a=s>>>4;if(2!==a&&10!==a)return void this._onError(m.default.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+a);var o=0,u=(12&s)>>>2;if(!(u>=0&&u<=4))return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+u);o=this._flvSoundRateTable[u];var d=1&s,h=this._audioMetadata,f=this._audioTrack;if(h||(this._hasAudio===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),h=this._audioMetadata={},h.type="audio",h.id=f.id,h.timescale=this._timescale,h.duration=this._duration,h.audioSampleRate=o,h.channelCount=0===d?1:2),10===a){var c=this._parseAACAudioData(e,t+1,n-1);if(void 0==c)return;if(0===c.packetType){h.config&&l.default.w(this.TAG,"Found another AudioSpecificConfig!");var _=c.data;h.audioSampleRate=_.samplingRate,h.channelCount=_.channelCount,h.codec=_.codec,h.config=_.config,h.refSampleDuration=Math.floor(1024/h.audioSampleRate*h.timescale),l.default.v(this.TAG,"Parsed AudioSpecificConfig"),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._audioInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("audio",h);var p=this._mediaInfo;p.audioCodec="mp4a.40."+_.originalAudioObjectType,p.audioSampleRate=h.audioSampleRate,p.audioChannelCount=h.channelCount,p.hasVideo?null!=p.videoCodec&&(p.mimeType='video/x-flv; codecs="'+p.videoCodec+","+p.audioCodec+'"'):p.mimeType='video/x-flv; codecs="'+p.audioCodec+'"',p.isComplete()&&this._onMediaInfo(p)}else if(1===c.packetType){var v=this._timestampBase+i,g={unit:c.data,dts:v,pts:v};f.samples.push(g),f.length+=c.data.length}else l.default.e(this.TAG,"Flv: Unsupported AAC data type "+c.packetType)}else if(2===a){if(!h.codec){var y=this._parseMP3AudioData(e,t+1,n-1,!0);if(void 0==y)return;h.audioSampleRate=y.samplingRate,h.channelConfig=y.channelCount,h.codec=y.codec,h.refSampleDuration=Math.floor(1152/h.audioSampleRate*h.timescale),l.default.v(this.TAG,"Parsed MPEG Audio Frame Header"),this._audioInitialMetadataDispatched=!0,this._onTrackMetadata("audio",h);var E=this._mediaInfo;E.audioCodec=h.codec,E.audioSampleRate=h.audioSampleRate,E.audioChannelCount=h.channelCount,E.audioDataRate=y.bitRate,E.hasVideo?null!=E.videoCodec&&(E.mimeType='video/x-flv; codecs="'+E.videoCodec+","+E.audioCodec+'"'):E.mimeType='video/x-flv; codecs="'+E.audioCodec+'"',E.isComplete()&&this._onMediaInfo(E)}var b=this._parseMP3AudioData(e,t+1,n-1,!1);if(void 0==b)return;var S=this._timestampBase+i,k={unit:b,dts:S,pts:S};f.samples.push(k),f.length+=b.length}}},{key:"_parseAACAudioData",value:function(e,t,n){if(n<=1)return void l.default.w(this.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!");var i={},r=new Uint8Array(e,t,n);return i.packetType=r[0],0===r[0]?i.data=this._parseAACAudioSpecificConfig(e,t+1,n-1):i.data=r.subarray(1),i}},{key:"_parseAACAudioSpecificConfig",value:function(e,t,n){var i=new Uint8Array(e,t,n),r=null,s=0,a=0,o=0,u=null;if(s=a=i[0]>>>3,(o=(7&i[0])<<1|i[1]>>>7)<0||o>=this._mpegSamplingRates.length)return void this._onError(m.default.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");var l=this._mpegSamplingRates[o],d=(120&i[1])>>>3;if(d<0||d>=8)return void this._onError(m.default.FORMAT_ERROR,"Flv: AAC invalid channel configuration");5===s&&(u=(7&i[1])<<1|i[2]>>>7,i[2]);var h=self.navigator.userAgent.toLowerCase();return h.indexOf("firefox")!==-1?o>=6?(s=5,r=new Array(4),u=o-3):(s=2,r=new Array(2),u=o):h.indexOf("android")!==-1?(s=2,r=new Array(2),u=o):(s=5,u=o,r=new Array(4),o>=6?u=o-3:1===d&&(s=2,r=new Array(2),u=o)),r[0]=s<<3,r[0]|=(15&o)>>>1,r[1]=(15&o)<<7,r[1]|=(15&d)<<3,5===s&&(r[1]|=(15&u)>>>1,r[2]=(1&u)<<7,r[2]|=8,r[3]=0),{config:r,samplingRate:l,channelCount:d,codec:"mp4a.40."+s,originalAudioObjectType:a}}},{key:"_parseMP3AudioData",value:function(e,t,n,i){if(n<4)return void l.default.w(this.TAG,"Flv: Invalid MP3 packet, header missing!");var r=(this._littleEndian,new Uint8Array(e,t,n)),s=null;if(i){if(255!==r[0])return;var a=r[1]>>>3&3,o=(6&r[1])>>1,u=(240&r[2])>>>4,d=(12&r[2])>>>2,h=r[3]>>>6&3,f=3!==h?2:1,c=0,_=0;switch(a){case 0:c=this._mpegAudioV25SampleRateTable[d];break;case 2:c=this._mpegAudioV20SampleRateTable[d];break;case 3:c=this._mpegAudioV10SampleRateTable[d]}switch(o){case 1:34,u<this._mpegAudioL3BitRateTable.length&&(_=this._mpegAudioL3BitRateTable[u]);break;case 2:33,u<this._mpegAudioL2BitRateTable.length&&(_=this._mpegAudioL2BitRateTable[u]);break;case 3:32,u<this._mpegAudioL1BitRateTable.length&&(_=this._mpegAudioL1BitRateTable[u])}s={bitRate:_,samplingRate:c,channelCount:f,codec:"mp3"}}else s=r;return s}},{key:"_parseVideoData",value:function(e,t,n,i,r){ +if(n<=1)return void l.default.w(this.TAG,"Flv: Invalid video packet, missing VideoData payload!");var s=new Uint8Array(e,t,n)[0],a=(240&s)>>>4,o=15&s;if(7!==o)return void this._onError(m.default.CODEC_UNSUPPORTED,"Flv: Unsupported codec in video frame: "+o);this._parseAVCVideoPacket(e,t+1,n-1,i,r,a)}},{key:"_parseAVCVideoPacket",value:function(e,t,n,i,r,s){if(n<4)return void l.default.w(this.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");var a=this._littleEndian,o=new DataView(e,t,n),u=o.getUint8(0),d=16777215&o.getUint32(0,!a);if(0===u)this._parseAVCDecoderConfigurationRecord(e,t+4,n-4);else if(1===u)this._parseAVCVideoData(e,t+4,n-4,i,r,s,d);else if(2!==u)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid video packet type "+u)}},{key:"_parseAVCDecoderConfigurationRecord",value:function(e,t,n){if(n<7)return void l.default.w(this.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");var i=this._videoMetadata,r=this._videoTrack,s=this._littleEndian,a=new DataView(e,t,n);i?void 0!==i.avcc&&l.default.w(this.TAG,"Found another AVCDecoderConfigurationRecord!"):(this._hasVideo===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),i=this._videoMetadata={},i.type="video",i.id=r.id,i.timescale=this._timescale,i.duration=this._duration);var o=a.getUint8(0),u=a.getUint8(1);a.getUint8(2),a.getUint8(3);if(1!==o||0===u)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord");if(this._naluLengthSize=1+(3&a.getUint8(4)),3!==this._naluLengthSize&&4!==this._naluLengthSize)return void this._onError(m.default.FORMAT_ERROR,"Flv: Strange NaluLengthSizeMinusOne: "+(this._naluLengthSize-1));var d=31&a.getUint8(5);if(0===d)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS");d>1&&l.default.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: SPS Count = "+d);for(var h=6,f=0;f<d;f++){var _=a.getUint16(h,!s);if(h+=2,0!==_){var p=new Uint8Array(e,t+h,_);h+=_;var v=c.default.parseSPS(p);if(0===f){i.codecWidth=v.codec_size.width,i.codecHeight=v.codec_size.height,i.presentWidth=v.present_size.width,i.presentHeight=v.present_size.height,i.profile=v.profile_string,i.level=v.level_string,i.bitDepth=v.bit_depth,i.chromaFormat=v.chroma_format,i.sarRatio=v.sar_ratio,i.frameRate=v.frame_rate,v.frame_rate.fixed!==!1&&0!==v.frame_rate.fps_num&&0!==v.frame_rate.fps_den||(i.frameRate=this._referenceFrameRate);var g=i.frameRate.fps_den,y=i.frameRate.fps_num;i.refSampleDuration=Math.floor(i.timescale*(g/y));for(var E=p.subarray(1,4),b="avc1.",S=0;S<3;S++){var k=E[S].toString(16);k.length<2&&(k="0"+k),b+=k}i.codec=b;var L=this._mediaInfo;L.width=i.codecWidth,L.height=i.codecHeight,L.fps=i.frameRate.fps,L.profile=i.profile,L.level=i.level,L.chromaFormat=v.chroma_format_string,L.sarNum=i.sarRatio.width,L.sarDen=i.sarRatio.height,L.videoCodec=b,L.hasAudio?null!=L.audioCodec&&(L.mimeType='video/x-flv; codecs="'+L.videoCodec+","+L.audioCodec+'"'):L.mimeType='video/x-flv; codecs="'+L.videoCodec+'"',L.isComplete()&&this._onMediaInfo(L)}}}var w=a.getUint8(h);if(0===w)return void this._onError(m.default.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No PPS");w>1&&l.default.w(this.TAG,"Flv: Strange AVCDecoderConfigurationRecord: PPS Count = "+w),h++;for(var R=0;R<w;R++){var A=a.getUint16(h,!s);h+=2,0!==A&&(h+=A)}i.avcc=new Uint8Array(n),i.avcc.set(new Uint8Array(e,t,n),0),l.default.v(this.TAG,"Parsed AVCDecoderConfigurationRecord"),this._isInitialMetadataDispatched()?this._dispatch&&(this._audioTrack.length||this._videoTrack.length)&&this._onDataAvailable(this._audioTrack,this._videoTrack):this._videoInitialMetadataDispatched=!0,this._dispatch=!1,this._onTrackMetadata("video",i)}},{key:"_parseAVCVideoData",value:function(e,t,n,i,r,s,a){for(var o=this._littleEndian,u=new DataView(e,t,n),d=[],h=0,f=0,c=this._naluLengthSize,_=this._timestampBase+i,m=1===s;f<n;){if(f+4>=n){l.default.w(this.TAG,"Malformed Nalu near timestamp "+_+", offset = "+f+", dataSize = "+n);break}var p=u.getUint32(f,!o);if(3===c&&(p>>>=8),p>n-c)return void l.default.w(this.TAG,"Malformed Nalus near timestamp "+_+", NaluSize > DataSize!");var v=31&u.getUint8(f+c);5===v&&(m=!0);var g=new Uint8Array(e,t+f,c+p),y={type:v,data:g};d.push(y),h+=g.byteLength,f+=c+p}if(d.length){var E=this._videoTrack,b={units:d,length:h,isKeyframe:m,dts:_,cts:a,pts:_+a};m&&(b.fileposition=r),E.samples.push(b),E.length+=h}}},{key:"onTrackMetadata",get:function(){return this._onTrackMetadata},set:function(e){this._onTrackMetadata=e}},{key:"onMediaInfo",get:function(){return this._onMediaInfo},set:function(e){this._onMediaInfo=e}},{key:"onError",get:function(){return this._onError},set:function(e){this._onError=e}},{key:"onDataAvailable",get:function(){return this._onDataAvailable},set:function(e){this._onDataAvailable=e}},{key:"timestampBase",get:function(){return this._timestampBase},set:function(e){this._timestampBase=e}},{key:"overridedDuration",get:function(){return this._duration},set:function(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e}}],[{key:"probe",value:function(e){var t=new Uint8Array(e),n={match:!1};if(70!==t[0]||76!==t[1]||86!==t[2]||1!==t[3])return n;var i=(4&t[4])>>>2!=0,r=0!=(1&t[4]),a=s(t,5);return a<9?n:{match:!0,consumed:a,dataOffset:a,hasAudioTrack:i,hasVideoTrack:r}}}]),e}();n.default=y},{"../core/media-info.js":7,"../utils/exception.js":40,"../utils/logger.js":41,"./amf-parser.js":15,"./demux-errors.js":16,"./sps-parser.js":19}],19:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=e("./exp-golomb.js"),a=function(e){return e&&e.__esModule?e:{default:e}}(s),o=function(){function e(){i(this,e)}return r(e,null,[{key:"_ebsp2rbsp",value:function(e){for(var t=e,n=t.byteLength,i=new Uint8Array(n),r=0,s=0;s<n;s++)s>=2&&3===t[s]&&0===t[s-1]&&0===t[s-2]||(i[r]=t[s],r++);return new Uint8Array(i.buffer,0,r)}},{key:"parseSPS",value:function(t){var n=e._ebsp2rbsp(t),i=new a.default(n);i.readByte();var r=i.readByte();i.readByte();var s=i.readByte();i.readUEG();var o=e.getProfileString(r),u=e.getLevelString(s),l=1,d=420,h=[0,420,422,444],f=8;if((100===r||110===r||122===r||244===r||44===r||83===r||86===r||118===r||128===r||138===r||144===r)&&(l=i.readUEG(),3===l&&i.readBits(1),l<=3&&(d=h[l]),f=i.readUEG()+8,i.readUEG(),i.readBits(1),i.readBool()))for(var c=3!==l?8:12,_=0;_<c;_++)i.readBool()&&(_<6?e._skipScalingList(i,16):e._skipScalingList(i,64));i.readUEG();var m=i.readUEG();if(0===m)i.readUEG();else if(1===m){i.readBits(1),i.readSEG(),i.readSEG();for(var p=i.readUEG(),v=0;v<p;v++)i.readSEG()}i.readUEG(),i.readBits(1);var g=i.readUEG(),y=i.readUEG(),E=i.readBits(1);0===E&&i.readBits(1),i.readBits(1);var b=0,S=0,k=0,L=0;i.readBool()&&(b=i.readUEG(),S=i.readUEG(),k=i.readUEG(),L=i.readUEG());var w=1,R=1,A=0,O=!0,T=0,I=0;if(i.readBool()){if(i.readBool()){var C=i.readByte(),x=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],M=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];C>0&&C<16?(w=x[C-1],R=M[C-1]):255===C&&(w=i.readByte()<<8|i.readByte(),R=i.readByte()<<8|i.readByte())}if(i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(4),i.readBool()&&i.readBits(24)),i.readBool()&&(i.readUEG(),i.readUEG()),i.readBool()){var D=i.readBits(32),j=i.readBits(32);O=i.readBool(),T=j,I=2*D,A=T/I}}var P=1;1===w&&1===R||(P=w/R);var B=0,U=0;if(0===l)B=1,U=2-E;else{var N=3===l?1:2,F=1===l?2:1;B=N,U=F*(2-E)}var G=16*(g+1),V=16*(y+1)*(2-E);G-=(b+S)*B,V-=(k+L)*U;var z=Math.ceil(G*P);return i.destroy(),i=null,{profile_string:o,level_string:u,bit_depth:f,chroma_format:d,chroma_format_string:e.getChromaFormatString(d),frame_rate:{fixed:O,fps:A,fps_den:I,fps_num:T},sar_ratio:{width:w,height:R},codec_size:{width:G,height:V},present_size:{width:z,height:V}}}},{key:"_skipScalingList",value:function(e,t){for(var n=8,i=8,r=0,s=0;s<t;s++)0!==i&&(r=e.readSEG(),i=(n+r+256)%256),n=0===i?n:i}},{key:"getProfileString",value:function(e){switch(e){case 66:return"Baseline";case 77:return"Main";case 88:return"Extended";case 100:return"High";case 110:return"High10";case 122:return"High422";case 244:return"High444";default:return"Unknown"}}},{key:"getLevelString",value:function(e){return(e/10).toFixed(1)}},{key:"getChromaFormatString",value:function(e){switch(e){case 420:return"4:2:0";case 422:return"4:2:2";case 444:return"4:4:4";default:return"Unknown"}}}]),e}();n.default=o},{"./exp-golomb.js":17}],20:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){var n=e;if(null==n||"object"!==(void 0===n?"undefined":o(n)))throw new b.InvalidArgumentException("MediaDataSource must be an javascript object!");if(!n.hasOwnProperty("type"))throw new b.InvalidArgumentException("MediaDataSource must has type field to indicate video file type!");switch(n.type){case"flv":return new c.default(n,t);default:return new m.default(n,t)}}function s(){return h.default.supportMSEH264Playback()}function a(){return h.default.getFeatureList()}Object.defineProperty(n,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u=e("./utils/polyfill.js"),l=i(u),d=e("./core/features.js"),h=i(d),f=e("./player/flv-player.js"),c=i(f),_=e("./player/native-player.js"),m=i(_),p=e("./player/player-events.js"),v=i(p),g=e("./player/player-errors.js"),y=e("./utils/logging-control.js"),E=i(y),b=e("./utils/exception.js");l.default.install();var S={};S.createPlayer=r,S.isSupported=s,S.getFeatureList=a,S.Events=v.default,S.ErrorTypes=g.ErrorTypes,S.ErrorDetails=g.ErrorDetails,S.FlvPlayer=c.default,S.NativePlayer=m.default,S.LoggingControl=E.default,Object.defineProperty(S,"version",{enumerable:!0,get:function(){return"1.2.0"}}),n.default=S},{"./core/features.js":6,"./player/flv-player.js":32,"./player/native-player.js":33,"./player/player-errors.js":34,"./player/player-events.js":35,"./utils/exception.js":40,"./utils/logging-control.js":42,"./utils/polyfill.js":43}],21:[function(e,t,n){"use strict";t.exports=e("./flv.js").default},{"./flv.js":20}],22:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,n,i)}if("value"in r)return r.value;var a=r.get;if(void 0!==a)return a.call(i)},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),d=e("../utils/logger.js"),h=(i(d),e("../utils/browser.js")),f=i(h),c=e("./loader.js"),_=e("../utils/exception.js"),m=function(e){function t(e,n){r(this,t);var i=s(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"fetch-stream-loader"));return i.TAG="FetchStreamLoader",i._seekHandler=e,i._config=n,i._needStash=!0,i._requestAbort=!1,i._contentLength=null,i._receivedLength=0,i}return a(t,e),l(t,null,[{key:"isSupported",value:function(){try{var e=f.default.msedge&&f.default.version.minor>=15048,t=!f.default.msedge||e;return self.fetch&&self.ReadableStream&&t}catch(e){return!1}}}]),l(t,[{key:"destroy",value:function(){this.isWorking()&&this.abort(),u(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"open",value:function(e,t){var n=this;this._dataSource=e,this._range=t;var i=e.url;this._config.reuseRedirectedURL&&void 0!=e.redirectedURL&&(i=e.redirectedURL);var r=this._seekHandler.getConfig(i,t),s=new self.Headers;if("object"===o(r.headers)){var a=r.headers;for(var u in a)a.hasOwnProperty(u)&&s.append(u,a[u])}var l={method:"GET",headers:s,mode:"cors",cache:"default"};e.cors===!1&&(l.mode="same-origin"),e.withCredentials&&(l.credentials="include"),this._status=c.LoaderStatus.kConnecting,self.fetch(r.url,l).then(function(e){if(n._requestAbort)return n._requestAbort=!1,void(n._status=c.LoaderStatus.kIdle);if(e.ok&&e.status>=200&&e.status<=299){if(e.url!==r.url&&n._onURLRedirect){var t=n._seekHandler.removeURLParameters(e.url);n._onURLRedirect(t)}var i=e.headers.get("Content-Length");return null!=i&&(n._contentLength=parseInt(i),0!==n._contentLength&&n._onContentLengthKnown&&n._onContentLengthKnown(n._contentLength)),n._pump.call(n,e.body.getReader())}if(n._status=c.LoaderStatus.kError,!n._onError)throw new _.RuntimeException("FetchStreamLoader: Http code invalid, "+e.status+" "+e.statusText);n._onError(c.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:e.status,msg:e.statusText})}).catch(function(e){if(n._status=c.LoaderStatus.kError,!n._onError)throw e;n._onError(c.LoaderErrors.EXCEPTION,{code:-1,msg:e.message})})}},{key:"abort",value:function(){this._requestAbort=!0}},{key:"_pump",value:function(e){var t=this;return e.read().then(function(n){if(!n.done){if(t._requestAbort===!0)return t._requestAbort=!1,t._status=c.LoaderStatus.kComplete,e.cancel();t._status=c.LoaderStatus.kBuffering;var i=n.value.buffer,r=t._range.from+t._receivedLength;return t._receivedLength+=i.byteLength,t._onDataArrival&&t._onDataArrival(i,r,t._receivedLength),t._pump(e)}t._status=c.LoaderStatus.kComplete,t._onComplete&&t._onComplete(t._range.from,t._range.from+t._receivedLength-1)}).catch(function(e){if(11!==e.code||!f.default.msedge){t._status=c.LoaderStatus.kError;var n=0,i=null;if(19!==e.code&&"network error"!==e.message||!(null===t._contentLength||null!==t._contentLength&&t._receivedLength<t._contentLength)?(n=c.LoaderErrors.EXCEPTION,i={code:e.code,msg:e.message}):(n=c.LoaderErrors.EARLY_EOF,i={code:e.code,msg:"Fetch stream meet Early-EOF"}),!t._onError)throw new _.RuntimeException(i.msg);t._onError(n,i)}})}}]),t}(c.BaseLoader);n.default=m},{"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24}],23:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("../utils/logger.js"),o=i(a),u=e("./speed-sampler.js"),l=i(u),d=e("./loader.js"),h=e("./fetch-stream-loader.js"),f=i(h),c=e("./xhr-moz-chunked-loader.js"),_=i(c),m=e("./xhr-msstream-loader.js"),p=(i(m),e("./xhr-range-loader.js")),v=i(p),g=e("./websocket-loader.js"),y=i(g),E=e("./range-seek-handler.js"),b=i(E),S=e("./param-seek-handler.js"),k=i(S),L=e("../utils/exception.js"),w=function(){function e(t,n,i){r(this,e),this.TAG="IOController",this._config=n,this._extraData=i,this._stashInitialSize=393216,void 0!=n.stashInitialSize&&n.stashInitialSize>0&&(this._stashInitialSize=n.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=3145728,this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,n.enableStashBuffer===!1&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=t,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(t.url),this._refTotalLength=t.filesize?t.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new l.default,this._speedNormalizeList=[64,128,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}return s(e,[{key:"destroy",value:function(){this._loader.isWorking()&&this._loader.abort(),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null}},{key:"isWorking",value:function(){return this._loader&&this._loader.isWorking()&&!this._paused}},{key:"isPaused",value:function(){return this._paused}},{key:"_selectSeekHandler",value:function(){var e=this._config;if("range"===e.seekType)this._seekHandler=new b.default(this._config.rangeLoadZeroStart);else if("param"===e.seekType){var t=e.seekParamStart||"bstart",n=e.seekParamEnd||"bend";this._seekHandler=new k.default(t,n)}else{if("custom"!==e.seekType)throw new L.InvalidArgumentException("Invalid seekType in config: "+e.seekType);if("function"!=typeof e.customSeekHandler)throw new L.InvalidArgumentException("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}}},{key:"_selectLoader",value:function(){if(this._isWebSocketURL)this._loaderClass=y.default;else if(f.default.isSupported())this._loaderClass=f.default;else if(_.default.isSupported())this._loaderClass=_.default;else{if(!v.default.isSupported())throw new L.RuntimeException("Your browser doesn't support xhr with arraybuffer responseType!");this._loaderClass=v.default}}},{key:"_createLoader",value:function(){this._loader=new this._loaderClass(this._seekHandler,this._config),this._loader.needStashBuffer===!1&&(this._enableStash=!1),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)}},{key:"open",value:function(e){this._currentRange={from:0,to:-1},e&&(this._currentRange.from=e),this._speedSampler.reset(),e||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))}},{key:"abort",value:function(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)}},{key:"pause",value:function(){this.isWorking()&&(this._loader.abort(),0!==this._stashUsed?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)}},{key:"resume",value:function(){if(this._paused){this._paused=!1;var e=this._resumeFrom;this._resumeFrom=0,this._internalSeek(e,!0)}}},{key:"seek",value:function(e){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(e,!0)}},{key:"_internalSeek",value:function(e,t){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(t),this._loader.destroy(),this._loader=null;var n={from:e,to:-1};this._currentRange={from:n.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,n),this._onSeeked&&this._onSeeked()}},{key:"updateUrl",value:function(e){if(!e||"string"!=typeof e||0===e.length)throw new L.InvalidArgumentException("Url must be a non-empty string!");this._dataSource.url=e}},{key:"_expandBuffer",value:function(e){for(var t=this._stashSize;t+1048576<e;)t*=2;if((t+=1048576)!==this._bufferSize){var n=new ArrayBuffer(t);if(this._stashUsed>0){var i=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(n,0,t).set(i,0)}this._stashBuffer=n,this._bufferSize=t}}},{key:"_normalizeSpeed",value:function(e){var t=this._speedNormalizeList,n=t.length-1,i=0,r=0,s=n;if(e<t[0])return t[0];for(;r<=s;){if((i=r+Math.floor((s-r)/2))===n||e>=t[i]&&e<t[i+1])return t[i];t[i]<e?r=i+1:s=i-1}}},{key:"_adjustStashSize",value:function(e){var t=0;(t=this._config.isLive?e:e<512?e:e>=512&&e<=1024?Math.floor(1.5*e):2*e)>8192&&(t=8192);var n=1024*t+1048576;this._bufferSize<n&&this._expandBuffer(n),this._stashSize=1024*t}},{key:"_dispatchChunks",value:function(e,t){return this._currentRange.to=t+e.byteLength-1,this._onDataArrival(e,t)}},{key:"_onURLRedirect",value:function(e){this._redirectedURL=e,this._onRedirect&&this._onRedirect(e)}},{key:"_onContentLengthKnown",value:function(e){e&&this._fullRequestFlag&&(this._totalLength=e,this._fullRequestFlag=!1)}},{key:"_onLoaderChunkArrival",value:function(e,t,n){if(!this._onDataArrival)throw new L.IllegalStateException("IOController: No existing consumer (onDataArrival) callback!");if(!this._paused){this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,this._onRecoveredEarlyEof&&this._onRecoveredEarlyEof()),this._speedSampler.addBytes(e.byteLength);var i=this._speedSampler.lastSecondKBps;if(0!==i){var r=this._normalizeSpeed(i);this._speedNormalized!==r&&(this._speedNormalized=r,this._adjustStashSize(r))}if(this._enableStash)if(0===this._stashUsed&&0===this._stashByteStart&&(this._stashByteStart=t),this._stashUsed+e.byteLength<=this._stashSize){var s=new Uint8Array(this._stashBuffer,0,this._stashSize);s.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{var a=new Uint8Array(this._stashBuffer,0,this._bufferSize);if(this._stashUsed>0){var o=this._stashBuffer.slice(0,this._stashUsed),u=this._dispatchChunks(o,this._stashByteStart);if(u<o.byteLength){if(u>0){var l=new Uint8Array(o,u);a.set(l,0),this._stashUsed=l.byteLength,this._stashByteStart+=u}}else this._stashUsed=0,this._stashByteStart+=u;this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{var d=this._dispatchChunks(e,t);if(d<e.byteLength){var h=e.byteLength-d;h>this._bufferSize&&(this._expandBuffer(h),a=new Uint8Array(this._stashBuffer,0,this._bufferSize)),a.set(new Uint8Array(e,d),0),this._stashUsed+=h,this._stashByteStart=t+d}}}else if(0===this._stashUsed){var f=this._dispatchChunks(e,t);if(f<e.byteLength){var c=e.byteLength-f;c>this._bufferSize&&this._expandBuffer(c);var _=new Uint8Array(this._stashBuffer,0,this._bufferSize);_.set(new Uint8Array(e,f),0),this._stashUsed+=c,this._stashByteStart=t+f}}else{this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength);var m=new Uint8Array(this._stashBuffer,0,this._bufferSize);m.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength;var p=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart);if(p<this._stashUsed&&p>0){var v=new Uint8Array(this._stashBuffer,p);m.set(v,0)}this._stashUsed-=p,this._stashByteStart+=p}}}},{key:"_flushStashBuffer",value:function(e){if(this._stashUsed>0){var t=this._stashBuffer.slice(0,this._stashUsed),n=this._dispatchChunks(t,this._stashByteStart),i=t.byteLength-n;if(n<t.byteLength){if(!e){if(n>0){var r=new Uint8Array(this._stashBuffer,0,this._bufferSize),s=new Uint8Array(t,n);r.set(s,0),this._stashUsed=s.byteLength,this._stashByteStart+=n}return 0}o.default.w(this.TAG,i+" bytes unconsumed data remain when flush buffer, dropped")}return this._stashUsed=0,this._stashByteStart=0,i}return 0}},{key:"_onLoaderComplete",value:function(e,t){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)}},{key:"_onLoaderError",value:function(e,t){switch(o.default.e(this.TAG,"Loader error, code = "+t.code+", msg = "+t.msg),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=d.LoaderErrors.UNRECOVERABLE_EARLY_EOF),e){case d.LoaderErrors.EARLY_EOF:if(!this._config.isLive&&this._totalLength){var n=this._currentRange.to+1;return void(n<this._totalLength&&(o.default.w(this.TAG,"Connection lost, trying reconnect..."),this._isEarlyEofReconnecting=!0,this._internalSeek(n,!1)))}e=d.LoaderErrors.UNRECOVERABLE_EARLY_EOF;break;case d.LoaderErrors.UNRECOVERABLE_EARLY_EOF:case d.LoaderErrors.CONNECTING_TIMEOUT:case d.LoaderErrors.HTTP_STATUS_CODE_INVALID:case d.LoaderErrors.EXCEPTION:}if(!this._onError)throw new L.RuntimeException("IOException: "+t.msg);this._onError(e,t)}},{key:"status",get:function(){return this._loader.status}},{key:"extraData",get:function(){return this._extraData},set:function(e){this._extraData=e}},{key:"onDataArrival",get:function(){return this._onDataArrival},set:function(e){this._onDataArrival=e}},{key:"onSeeked",get:function(){return this._onSeeked},set:function(e){this._onSeeked=e}},{key:"onError",get:function(){return this._onError},set:function(e){this._onError=e}},{key:"onComplete",get:function(){return this._onComplete},set:function(e){this._onComplete=e}},{key:"onRedirect",get:function(){return this._onRedirect},set:function(e){this._onRedirect=e}},{key:"onRecoveredEarlyEof",get:function(){return this._onRecoveredEarlyEof},set:function(e){this._onRecoveredEarlyEof=e}},{key:"currentURL",get:function(){return this._dataSource.url}},{key:"hasRedirect",get:function(){return null!=this._redirectedURL||void 0!=this._dataSource.redirectedURL}},{key:"currentRedirectedURL",get:function(){return this._redirectedURL||this._dataSource.redirectedURL}},{key:"currentSpeed",get:function(){return this._loaderClass===v.default?this._loader.currentSpeed:this._speedSampler.lastSecondKBps}},{key:"loaderType",get:function(){return this._loader.type}}]),e}();n.default=w},{"../utils/exception.js":40,"../utils/logger.js":41,"./fetch-stream-loader.js":22,"./loader.js":24,"./param-seek-handler.js":25,"./range-seek-handler.js":26,"./speed-sampler.js":27,"./websocket-loader.js":28,"./xhr-moz-chunked-loader.js":29,"./xhr-msstream-loader.js":30,"./xhr-range-loader.js":31}],24:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.BaseLoader=n.LoaderErrors=n.LoaderStatus=void 0;var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=e("../utils/exception.js"),a=n.LoaderStatus={kIdle:0,kConnecting:1,kBuffering:2,kError:3,kComplete:4};n.LoaderErrors={OK:"OK",EXCEPTION:"Exception",HTTP_STATUS_CODE_INVALID:"HttpStatusCodeInvalid",CONNECTING_TIMEOUT:"ConnectingTimeout",EARLY_EOF:"EarlyEof",UNRECOVERABLE_EARLY_EOF:"UnrecoverableEarlyEof"},n.BaseLoader=function(){function e(t){i(this,e),this._type=t||"undefined",this._status=a.kIdle,this._needStash=!1,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}return r(e,[{key:"destroy",value:function(){this._status=a.kIdle,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}},{key:"isWorking",value:function(){return this._status===a.kConnecting||this._status===a.kBuffering}},{key:"open",value:function(e,t){throw new s.NotImplementedException("Unimplemented abstract function!")}},{key:"abort",value:function(){throw new s.NotImplementedException("Unimplemented abstract function!")}},{key:"type",get:function(){return this._type}},{key:"status",get:function(){return this._status}},{key:"needStashBuffer",get:function(){return this._needStash}},{key:"onContentLengthKnown",get:function(){return this._onContentLengthKnown},set:function(e){this._onContentLengthKnown=e}},{key:"onURLRedirect",get:function(){return this._onURLRedirect},set:function(e){this._onURLRedirect=e}},{key:"onDataArrival",get:function(){return this._onDataArrival},set:function(e){this._onDataArrival=e}},{key:"onError",get:function(){return this._onError},set:function(e){this._onError=e}},{key:"onComplete",get:function(){return this._onComplete},set:function(e){this._onComplete=e}}]),e}()},{"../utils/exception.js":40}],25:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(t,n){i(this,e),this._startName=t,this._endName=n}return r(e,[{key:"getConfig",value:function(e,t){var n=e;if(0!==t.from||t.to!==-1){var i=!0;n.indexOf("?")===-1&&(n+="?",i=!1),i&&(n+="&"),n+=this._startName+"="+t.from.toString(),t.to!==-1&&(n+="&"+this._endName+"="+t.to.toString())}return{url:n,headers:{}}}},{key:"removeURLParameters",value:function(e){var t=e.split("?")[0],n=void 0,i=e.indexOf("?");i!==-1&&(n=e.substring(i+1));var r="";if(void 0!=n&&n.length>0)for(var s=n.split("&"),a=0;a<s.length;a++){var o=s[a].split("="),u=a>0;o[0]!==this._startName&&o[0]!==this._endName&&(u&&(r+="&"),r+=s[a])}return 0===r.length?t:t+"?"+r}}]),e}();n.default=s},{}],26:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(t){i(this,e),this._zeroStart=t||!1}return r(e,[{key:"getConfig",value:function(e,t){var n={};if(0!==t.from||t.to!==-1){var i=void 0;i=t.to!==-1?"bytes="+t.from.toString()+"-"+t.to.toString():"bytes="+t.from.toString()+"-",n.Range=i}else this._zeroStart&&(n.Range="bytes=0-");return{url:e,headers:n}}},{key:"removeURLParameters",value:function(e){return e}}]),e}();n.default=s},{}],27:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(){i(this,e),this._firstCheckpoint=0,this._lastCheckpoint=0,this._intervalBytes=0,this._totalBytes=0,this._lastSecondBytes=0,self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now}return r(e,[{key:"reset",value:function(){this._firstCheckpoint=this._lastCheckpoint=0,this._totalBytes=this._intervalBytes=0, +this._lastSecondBytes=0}},{key:"addBytes",value:function(e){0===this._firstCheckpoint?(this._firstCheckpoint=this._now(),this._lastCheckpoint=this._firstCheckpoint,this._intervalBytes+=e,this._totalBytes+=e):this._now()-this._lastCheckpoint<1e3?(this._intervalBytes+=e,this._totalBytes+=e):(this._lastSecondBytes=this._intervalBytes,this._intervalBytes=e,this._totalBytes+=e,this._lastCheckpoint=this._now())}},{key:"currentKBps",get:function(){this.addBytes(0);var e=(this._now()-this._lastCheckpoint)/1e3;return 0==e&&(e=1),this._intervalBytes/e/1024}},{key:"lastSecondKBps",get:function(){return this.addBytes(0),0!==this._lastSecondBytes?this._lastSecondBytes/1024:this._now()-this._lastCheckpoint>=500?this.currentKBps:0}},{key:"averageKBps",get:function(){var e=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/e/1024}}]),e}();n.default=s},{}],28:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var a=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,n,i)}if("value"in r)return r.value;var a=r.get;if(void 0!==a)return a.call(i)},o=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),u=e("../utils/logger.js"),l=(function(e){e&&e.__esModule?e:{default:e}}(u),e("./loader.js")),d=e("../utils/exception.js"),h=function(e){function t(){i(this,t);var e=r(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"websocket-loader"));return e.TAG="WebSocketLoader",e._needStash=!0,e._ws=null,e._requestAbort=!1,e._receivedLength=0,e}return s(t,e),o(t,null,[{key:"isSupported",value:function(){try{return void 0!==self.WebSocket}catch(e){return!1}}}]),o(t,[{key:"destroy",value:function(){this._ws&&this.abort(),a(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"open",value:function(e){try{var t=this._ws=new self.WebSocket(e.url);t.binaryType="arraybuffer",t.onopen=this._onWebSocketOpen.bind(this),t.onclose=this._onWebSocketClose.bind(this),t.onmessage=this._onWebSocketMessage.bind(this),t.onerror=this._onWebSocketError.bind(this),this._status=l.LoaderStatus.kConnecting}catch(e){this._status=l.LoaderStatus.kError;var n={code:e.code,msg:e.message};if(!this._onError)throw new d.RuntimeException(n.msg);this._onError(l.LoaderErrors.EXCEPTION,n)}}},{key:"abort",value:function(){var e=this._ws;!e||0!==e.readyState&&1!==e.readyState||(this._requestAbort=!0,e.close()),this._ws=null,this._status=l.LoaderStatus.kComplete}},{key:"_onWebSocketOpen",value:function(e){this._status=l.LoaderStatus.kBuffering}},{key:"_onWebSocketClose",value:function(e){if(this._requestAbort===!0)return void(this._requestAbort=!1);this._status=l.LoaderStatus.kComplete,this._onComplete&&this._onComplete(0,this._receivedLength-1)}},{key:"_onWebSocketMessage",value:function(e){var t=this;if(e.data instanceof ArrayBuffer)this._dispatchArrayBuffer(e.data);else if(e.data instanceof Blob){var n=new FileReader;n.onload=function(){t._dispatchArrayBuffer(n.result)},n.readAsArrayBuffer(e.data)}else{this._status=l.LoaderStatus.kError;var i={code:-1,msg:"Unsupported WebSocket message type: "+e.data.constructor.name};if(!this._onError)throw new d.RuntimeException(i.msg);this._onError(l.LoaderErrors.EXCEPTION,i)}}},{key:"_dispatchArrayBuffer",value:function(e){var t=e,n=this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,n,this._receivedLength)}},{key:"_onWebSocketError",value:function(e){this._status=l.LoaderStatus.kError;var t={code:e.code,msg:e.message};if(!this._onError)throw new d.RuntimeException(t.msg);this._onError(l.LoaderErrors.EXCEPTION,t)}}]),t}(l.BaseLoader);n.default=h},{"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24}],29:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,n,i)}if("value"in r)return r.value;var a=r.get;if(void 0!==a)return a.call(i)},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=e("../utils/logger.js"),d=function(e){return e&&e.__esModule?e:{default:e}}(l),h=e("./loader.js"),f=e("../utils/exception.js"),c=function(e){function t(e,n){i(this,t);var s=r(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"xhr-moz-chunked-loader"));return s.TAG="MozChunkedLoader",s._seekHandler=e,s._config=n,s._needStash=!0,s._xhr=null,s._requestAbort=!1,s._contentLength=null,s._receivedLength=0,s}return s(t,e),u(t,null,[{key:"isSupported",value:function(){try{var e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="moz-chunked-arraybuffer","moz-chunked-arraybuffer"===e.responseType}catch(e){return d.default.w("MozChunkedLoader",e.message),!1}}}]),u(t,[{key:"destroy",value:function(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onloadend=null,this._xhr.onerror=null,this._xhr=null),o(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"open",value:function(e,t){this._dataSource=e,this._range=t;var n=e.url;this._config.reuseRedirectedURL&&void 0!=e.redirectedURL&&(n=e.redirectedURL);var i=this._seekHandler.getConfig(n,t);this._requestURL=i.url;var r=this._xhr=new XMLHttpRequest;if(r.open("GET",i.url,!0),r.responseType="moz-chunked-arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onloadend=this._onLoadEnd.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&r.withCredentials&&(r.withCredentials=!0),"object"===a(i.headers)){var s=i.headers;for(var o in s)s.hasOwnProperty(o)&&r.setRequestHeader(o,s[o])}this._status=h.LoaderStatus.kConnecting,r.send()}},{key:"abort",value:function(){this._requestAbort=!0,this._xhr&&this._xhr.abort(),this._status=h.LoaderStatus.kComplete}},{key:"_onReadyStateChange",value:function(e){var t=e.target;if(2===t.readyState){if(void 0!=t.responseURL&&t.responseURL!==this._requestURL&&this._onURLRedirect){var n=this._seekHandler.removeURLParameters(t.responseURL);this._onURLRedirect(n)}if(0!==t.status&&(t.status<200||t.status>299)){if(this._status=h.LoaderStatus.kError,!this._onError)throw new f.RuntimeException("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(h.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else this._status=h.LoaderStatus.kBuffering}}},{key:"_onProgress",value:function(e){null===this._contentLength&&null!==e.total&&0!==e.total&&(this._contentLength=e.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));var t=e.target.response,n=this._range.from+this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,n,this._receivedLength)}},{key:"_onLoadEnd",value:function(e){if(this._requestAbort===!0)return void(this._requestAbort=!1);this._status!==h.LoaderStatus.kError&&(this._status=h.LoaderStatus.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))}},{key:"_onXhrError",value:function(e){this._status=h.LoaderStatus.kError;var t=0,n=null;if(this._contentLength&&e.loaded<this._contentLength?(t=h.LoaderErrors.EARLY_EOF,n={code:-1,msg:"Moz-Chunked stream meet Early-Eof"}):(t=h.LoaderErrors.EXCEPTION,n={code:-1,msg:e.constructor.name+" "+e.type}),!this._onError)throw new f.RuntimeException(n.msg);this._onError(t,n)}}]),t}(h.BaseLoader);n.default=c},{"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24}],30:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,n,i)}if("value"in r)return r.value;var a=r.get;if(void 0!==a)return a.call(i)},u=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),l=e("../utils/logger.js"),d=function(e){return e&&e.__esModule?e:{default:e}}(l),h=e("./loader.js"),f=e("../utils/exception.js"),c=function(e){function t(e,n){i(this,t);var s=r(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"xhr-msstream-loader"));return s.TAG="MSStreamLoader",s._seekHandler=e,s._config=n,s._needStash=!0,s._xhr=null,s._reader=null,s._totalRange=null,s._currentRange=null,s._currentRequestURL=null,s._currentRedirectedURL=null,s._contentLength=null,s._receivedLength=0,s._bufferLimit=16777216,s._lastTimeBufferSize=0,s._isReconnecting=!1,s}return s(t,e),u(t,null,[{key:"isSupported",value:function(){try{if(void 0===self.MSStream||void 0===self.MSStreamReader)return!1;var e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="ms-stream","ms-stream"===e.responseType}catch(e){return d.default.w("MSStreamLoader",e.message),!1}}}]),u(t,[{key:"destroy",value:function(){this.isWorking()&&this.abort(),this._reader&&(this._reader.onprogress=null,this._reader.onload=null,this._reader.onerror=null,this._reader=null),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr=null),o(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"open",value:function(e,t){this._internalOpen(e,t,!1)}},{key:"_internalOpen",value:function(e,t,n){this._dataSource=e,n?this._currentRange=t:this._totalRange=t;var i=e.url;this._config.reuseRedirectedURL&&(void 0!=this._currentRedirectedURL?i=this._currentRedirectedURL:void 0!=e.redirectedURL&&(i=e.redirectedURL));var r=this._seekHandler.getConfig(i,t);this._currentRequestURL=r.url;var s=this._reader=new self.MSStreamReader;s.onprogress=this._msrOnProgress.bind(this),s.onload=this._msrOnLoad.bind(this),s.onerror=this._msrOnError.bind(this);var o=this._xhr=new XMLHttpRequest;if(o.open("GET",r.url,!0),o.responseType="ms-stream",o.onreadystatechange=this._xhrOnReadyStateChange.bind(this),o.onerror=this._xhrOnError.bind(this),e.withCredentials&&(o.withCredentials=!0),"object"===a(r.headers)){var u=r.headers;for(var l in u)u.hasOwnProperty(l)&&o.setRequestHeader(l,u[l])}this._isReconnecting?this._isReconnecting=!1:this._status=h.LoaderStatus.kConnecting,o.send()}},{key:"abort",value:function(){this._internalAbort(),this._status=h.LoaderStatus.kComplete}},{key:"_internalAbort",value:function(){this._reader&&(1===this._reader.readyState&&this._reader.abort(),this._reader.onprogress=null,this._reader.onload=null,this._reader.onerror=null,this._reader=null),this._xhr&&(this._xhr.abort(),this._xhr.onreadystatechange=null,this._xhr=null)}},{key:"_xhrOnReadyStateChange",value:function(e){var t=e.target;if(2===t.readyState)if(t.status>=200&&t.status<=299){if(this._status=h.LoaderStatus.kBuffering,void 0!=t.responseURL){var n=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&n!==this._currentRedirectedURL&&(this._currentRedirectedURL=n,this._onURLRedirect&&this._onURLRedirect(n))}var i=t.getResponseHeader("Content-Length");if(null!=i&&null==this._contentLength){var r=parseInt(i);r>0&&(this._contentLength=r,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength))}}else{if(this._status=h.LoaderStatus.kError,!this._onError)throw new f.RuntimeException("MSStreamLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(h.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}else if(3===t.readyState&&t.status>=200&&t.status<=299){this._status=h.LoaderStatus.kBuffering;var s=t.response;this._reader.readAsArrayBuffer(s)}}},{key:"_xhrOnError",value:function(e){this._status=h.LoaderStatus.kError;var t=h.LoaderErrors.EXCEPTION,n={code:-1,msg:e.constructor.name+" "+e.type};if(!this._onError)throw new f.RuntimeException(n.msg);this._onError(t,n)}},{key:"_msrOnProgress",value:function(e){var t=e.target,n=t.result;if(null==n)return void this._doReconnectIfNeeded();var i=n.slice(this._lastTimeBufferSize);this._lastTimeBufferSize=n.byteLength;var r=this._totalRange.from+this._receivedLength;this._receivedLength+=i.byteLength,this._onDataArrival&&this._onDataArrival(i,r,this._receivedLength),n.byteLength>=this._bufferLimit&&(d.default.v(this.TAG,"MSStream buffer exceeded max size near "+(r+i.byteLength)+", reconnecting..."),this._doReconnectIfNeeded())}},{key:"_doReconnectIfNeeded",value:function(){if(null==this._contentLength||this._receivedLength<this._contentLength){this._isReconnecting=!0,this._lastTimeBufferSize=0,this._internalAbort();var e={from:this._totalRange.from+this._receivedLength,to:-1};this._internalOpen(this._dataSource,e,!0)}}},{key:"_msrOnLoad",value:function(e){this._status=h.LoaderStatus.kComplete,this._onComplete&&this._onComplete(this._totalRange.from,this._totalRange.from+this._receivedLength-1)}},{key:"_msrOnError",value:function(e){this._status=h.LoaderStatus.kError;var t=0,n=null;if(this._contentLength&&this._receivedLength<this._contentLength?(t=h.LoaderErrors.EARLY_EOF,n={code:-1,msg:"MSStream meet Early-Eof"}):(t=h.LoaderErrors.EARLY_EOF,n={code:-1,msg:e.constructor.name+" "+e.type}),!this._onError)throw new f.RuntimeException(n.msg);this._onError(t,n)}}]),t}(h.BaseLoader);n.default=c},{"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24}],31:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},u=function e(t,n,i){null===t&&(t=Function.prototype);var r=Object.getOwnPropertyDescriptor(t,n);if(void 0===r){var s=Object.getPrototypeOf(t);return null===s?void 0:e(s,n,i)}if("value"in r)return r.value;var a=r.get;if(void 0!==a)return a.call(i)},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),d=e("../utils/logger.js"),h=i(d),f=e("./speed-sampler.js"),c=i(f),_=e("./loader.js"),m=e("../utils/exception.js"),p=function(e){function t(e,n){r(this,t);var i=s(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,"xhr-range-loader"));return i.TAG="RangeLoader",i._seekHandler=e,i._config=n,i._needStash=!1,i._chunkSizeKBList=[128,256,384,512,768,1024,1536,2048,3072,4096,5120,6144,7168,8192],i._currentChunkSizeKB=384,i._currentSpeedNormalized=0,i._zeroSpeedChunkCount=0,i._xhr=null,i._speedSampler=new c.default,i._requestAbort=!1,i._waitForTotalLength=!1,i._totalLengthReceived=!1,i._currentRequestURL=null,i._currentRedirectedURL=null,i._currentRequestRange=null,i._totalLength=null,i._contentLength=null,i._receivedLength=0,i._lastTimeLoaded=0,i}return a(t,e),l(t,null,[{key:"isSupported",value:function(){try{var e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="arraybuffer","arraybuffer"===e.responseType}catch(e){return h.default.w("RangeLoader",e.message),!1}}}]),l(t,[{key:"destroy",value:function(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr=null),u(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"destroy",this).call(this)}},{key:"open",value:function(e,t){this._dataSource=e,this._range=t,this._status=_.LoaderStatus.kConnecting,this._totalLengthReceived?this._openSubRange():(this._waitForTotalLength=!0,this._internalOpen(this._dataSource,{from:0,to:-1}))}},{key:"_openSubRange",value:function(){var e=1024*this._currentChunkSizeKB,t=this._range.from+this._receivedLength,n=t+e;null!=this._contentLength&&n-this._range.from>=this._contentLength&&(n=this._range.from+this._contentLength-1),this._currentRequestRange={from:t,to:n},this._internalOpen(this._dataSource,this._currentRequestRange)}},{key:"_internalOpen",value:function(e,t){this._lastTimeLoaded=0;var n=e.url;this._config.reuseRedirectedURL&&(void 0!=this._currentRedirectedURL?n=this._currentRedirectedURL:void 0!=e.redirectedURL&&(n=e.redirectedURL));var i=this._seekHandler.getConfig(n,t);this._currentRequestURL=i.url;var r=this._xhr=new XMLHttpRequest;if(r.open("GET",i.url,!0),r.responseType="arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onload=this._onLoad.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&r.withCredentials&&(r.withCredentials=!0),"object"===o(i.headers)){var s=i.headers;for(var a in s)s.hasOwnProperty(a)&&r.setRequestHeader(a,s[a])}r.send()}},{key:"abort",value:function(){this._requestAbort=!0,this._internalAbort(),this._status=_.LoaderStatus.kComplete}},{key:"_internalAbort",value:function(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)}},{key:"_onReadyStateChange",value:function(e){var t=e.target;if(2===t.readyState){if(void 0!=t.responseURL){var n=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&n!==this._currentRedirectedURL&&(this._currentRedirectedURL=n,this._onURLRedirect&&this._onURLRedirect(n))}if(t.status>=200&&t.status<=299){if(this._waitForTotalLength)return;this._status=_.LoaderStatus.kBuffering}else{if(this._status=_.LoaderStatus.kError,!this._onError)throw new m.RuntimeException("RangeLoader: Http code invalid, "+t.status+" "+t.statusText);this._onError(_.LoaderErrors.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText})}}}},{key:"_onProgress",value:function(e){if(null===this._contentLength){var t=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,t=!0;var n=e.total;this._internalAbort(),null!=n&0!==n&&(this._totalLength=n)}if(this._range.to===-1?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,t)return void this._openSubRange();this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}var i=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(i)}},{key:"_normalizeSpeed",value:function(e){var t=this._chunkSizeKBList,n=t.length-1,i=0,r=0,s=n;if(e<t[0])return t[0];for(;r<=s;){if((i=r+Math.floor((s-r)/2))===n||e>=t[i]&&e<t[i+1])return t[i];t[i]<e?r=i+1:s=i-1}}},{key:"_onLoad",value:function(e){if(this._waitForTotalLength)return void(this._waitForTotalLength=!1);this._lastTimeLoaded=0;var t=this._speedSampler.lastSecondKBps;if(0===t&&++this._zeroSpeedChunkCount>=3&&(t=this._speedSampler.currentKBps),0!==t){var n=this._normalizeSpeed(t);this._currentSpeedNormalized!==n&&(this._currentSpeedNormalized=n,this._currentChunkSizeKB=n)}var i=e.target.response,r=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength;var s=!1;null!=this._contentLength&&this._receivedLength<this._contentLength?this._openSubRange():s=!0,this._onDataArrival&&this._onDataArrival(i,r,this._receivedLength),s&&(this._status=_.LoaderStatus.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))}},{key:"_onXhrError",value:function(e){this._status=_.LoaderStatus.kError;var t=0,n=null;if(this._contentLength&&this._receivedLength>0&&this._receivedLength<this._contentLength?(t=_.LoaderErrors.EARLY_EOF,n={code:-1,msg:"RangeLoader meet Early-Eof"}):(t=_.LoaderErrors.EXCEPTION,n={code:-1,msg:e.constructor.name+" "+e.type}),!this._onError)throw new m.RuntimeException(n.msg);this._onError(t,n)}},{key:"currentSpeed",get:function(){return this._speedSampler.lastSecondKBps}}]),t}(_.BaseLoader);n.default=p},{"../utils/exception.js":40,"../utils/logger.js":41,"./loader.js":24,"./speed-sampler.js":27}],32:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=e("events"),u=i(o),l=e("../utils/logger.js"),d=i(l),h=e("../utils/browser.js"),f=i(h),c=e("./player-events.js"),_=i(c),m=e("../core/transmuxer.js"),p=i(m),v=e("../core/transmuxing-events.js"),g=i(v),y=e("../core/mse-controller.js"),E=i(y),b=e("../core/mse-events.js"),S=i(b),k=e("./player-errors.js"),L=e("../config.js"),w=e("../utils/exception.js"),R=function(){function e(t,n){if(r(this,e),this.TAG="FlvPlayer",this._type="FlvPlayer",this._emitter=new u.default,this._config=(0,L.createDefaultConfig)(),"object"===(void 0===n?"undefined":s(n))&&Object.assign(this._config,n),"flv"!==t.type.toLowerCase())throw new w.InvalidArgumentException("FlvPlayer requires an flv MediaDataSource input!");t.isLive===!0&&(this._config.isLive=!0),this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this),onvSeeking:this._onvSeeking.bind(this),onvCanPlay:this._onvCanPlay.bind(this),onvStalled:this._onvStalled.bind(this),onvProgress:this._onvProgress.bind(this)},self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now,this._pendingSeekTime=null,this._requestSetTime=!1,this._seekpointRecord=null,this._progressChecker=null,this._mediaDataSource=t,this._mediaElement=null,this._msectl=null,this._transmuxer=null,this._mseSourceOpened=!1,this._hasPendingLoad=!1,this._receivedCanPlay=!1,this._mediaInfo=null,this._statisticsInfo=null;var i=f.default.chrome&&(f.default.version.major<50||50===f.default.version.major&&f.default.version.build<2661);this._alwaysSeekKeyframe=!!(i||f.default.msedge||f.default.msie),this._alwaysSeekKeyframe&&(this._config.accurateSeek=!1)}return a(e,[{key:"destroy",value:function(){null!=this._progressChecker&&(window.clearInterval(this._progressChecker),this._progressChecker=null),this._transmuxer&&this.unload(),this._mediaElement&&this.detachMediaElement(),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null}},{key:"on",value:function(e,t){var n=this;e===_.default.MEDIA_INFO?null!=this._mediaInfo&&Promise.resolve().then(function(){n._emitter.emit(_.default.MEDIA_INFO,n.mediaInfo)}):e===_.default.STATISTICS_INFO&&null!=this._statisticsInfo&&Promise.resolve().then(function(){n._emitter.emit(_.default.STATISTICS_INFO,n.statisticsInfo)}),this._emitter.addListener(e,t)}},{key:"off",value:function(e,t){this._emitter.removeListener(e,t)}},{key:"attachMediaElement",value:function(e){var t=this;if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),e.addEventListener("seeking",this.e.onvSeeking),e.addEventListener("canplay",this.e.onvCanPlay),e.addEventListener("stalled",this.e.onvStalled),e.addEventListener("progress",this.e.onvProgress),this._msectl=new E.default,this._msectl.on(S.default.UPDATE_END,this._onmseUpdateEnd.bind(this)),this._msectl.on(S.default.BUFFER_FULL,this._onmseBufferFull.bind(this)),this._msectl.on(S.default.SOURCE_OPEN,function(){t._mseSourceOpened=!0,t._hasPendingLoad&&(t._hasPendingLoad=!1,t.load())}),this._msectl.on(S.default.ERROR,function(e){t._emitter.emit(_.default.ERROR,k.ErrorTypes.MEDIA_ERROR,k.ErrorDetails.MEDIA_MSE_ERROR,e)}),this._msectl.attachMediaElement(e),null!=this._pendingSeekTime)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(e){}}},{key:"detachMediaElement",value:function(){this._mediaElement&&(this._msectl.detachMediaElement(),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement.removeEventListener("seeking",this.e.onvSeeking),this._mediaElement.removeEventListener("canplay",this.e.onvCanPlay),this._mediaElement.removeEventListener("stalled",this.e.onvStalled),this._mediaElement.removeEventListener("progress",this.e.onvProgress),this._mediaElement=null),this._msectl&&(this._msectl.destroy(),this._msectl=null)}},{key:"load",value:function(){var e=this;if(!this._mediaElement)throw new w.IllegalStateException("HTMLMediaElement must be attached before load()!");if(this._transmuxer)throw new w.IllegalStateException("FlvPlayer.load() has been called, please call unload() first!");if(!this._hasPendingLoad){if(this._config.deferLoadAfterSourceOpen&&this._mseSourceOpened===!1)return void(this._hasPendingLoad=!0);this._mediaElement.readyState>0&&(this._requestSetTime=!0,this._mediaElement.currentTime=0),this._transmuxer=new p.default(this._mediaDataSource,this._config),this._transmuxer.on(g.default.INIT_SEGMENT,function(t,n){e._msectl.appendInitSegment(n)}),this._transmuxer.on(g.default.MEDIA_SEGMENT,function(t,n){if(e._msectl.appendMediaSegment(n),e._config.lazyLoad&&!e._config.isLive){var i=e._mediaElement.currentTime;n.info.endDts>=1e3*(i+e._config.lazyLoadMaxDuration)&&null==e._progressChecker&&(d.default.v(e.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),e._suspendTransmuxer())}}),this._transmuxer.on(g.default.LOADING_COMPLETE,function(){e._msectl.endOfStream(),e._emitter.emit(_.default.LOADING_COMPLETE)}),this._transmuxer.on(g.default.RECOVERED_EARLY_EOF,function(){e._emitter.emit(_.default.RECOVERED_EARLY_EOF)}),this._transmuxer.on(g.default.IO_ERROR,function(t,n){e._emitter.emit(_.default.ERROR,k.ErrorTypes.NETWORK_ERROR,t,n)}),this._transmuxer.on(g.default.DEMUX_ERROR,function(t,n){e._emitter.emit(_.default.ERROR,k.ErrorTypes.MEDIA_ERROR,t,{code:-1,msg:n})}),this._transmuxer.on(g.default.MEDIA_INFO,function(t){e._mediaInfo=t,e._emitter.emit(_.default.MEDIA_INFO,Object.assign({},t))}),this._transmuxer.on(g.default.STATISTICS_INFO,function(t){e._statisticsInfo=e._fillStatisticsInfo(t),e._emitter.emit(_.default.STATISTICS_INFO,Object.assign({},e._statisticsInfo))}),this._transmuxer.on(g.default.RECOMMEND_SEEKPOINT,function(t){e._mediaElement&&!e._config.accurateSeek&&(e._requestSetTime=!0,e._mediaElement.currentTime=t/1e3)}),this._transmuxer.open()}}},{key:"unload",value:function(){this._mediaElement&&this._mediaElement.pause(),this._msectl&&this._msectl.seek(0),this._transmuxer&&(this._transmuxer.close(),this._transmuxer.destroy(),this._transmuxer=null)}},{key:"play",value:function(){this._mediaElement.play()}},{key:"pause",value:function(){this._mediaElement.pause()}},{key:"_fillStatisticsInfo",value:function(e){if(e.playerType=this._type,!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,n=0,i=0;if(this._mediaElement.getVideoPlaybackQuality){var r=this._mediaElement.getVideoPlaybackQuality();n=r.totalVideoFrames,i=r.droppedVideoFrames}else void 0!=this._mediaElement.webkitDecodedFrameCount?(n=this._mediaElement.webkitDecodedFrameCount,i=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=n,e.droppedFrames=i),e}},{key:"_onmseUpdateEnd",value:function(){if(this._config.lazyLoad&&!this._config.isLive){for(var e=this._mediaElement.buffered,t=this._mediaElement.currentTime,n=0,i=0;i<e.length;i++){var r=e.start(i),s=e.end(i);if(r<=t&&t<s){r,n=s;break}}n>=t+this._config.lazyLoadMaxDuration&&null==this._progressChecker&&(d.default.v(this.TAG,"Maximum buffering duration exceeded, suspend transmuxing task"),this._suspendTransmuxer())}}},{key:"_onmseBufferFull",value:function(){d.default.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),null==this._progressChecker&&this._suspendTransmuxer()}},{key:"_suspendTransmuxer",value:function(){this._transmuxer&&(this._transmuxer.pause(),null==this._progressChecker&&(this._progressChecker=window.setInterval(this._checkProgressAndResume.bind(this),1e3)))}},{key:"_checkProgressAndResume",value:function(){for(var e=this._mediaElement.currentTime,t=this._mediaElement.buffered,n=!1,i=0;i<t.length;i++){var r=t.start(i),s=t.end(i);if(e>=r&&e<s){e>=s-this._config.lazyLoadRecoverDuration&&(n=!0);break}}n&&(window.clearInterval(this._progressChecker),this._progressChecker=null,n&&(d.default.v(this.TAG,"Continue loading from paused position"),this._transmuxer.resume()))}},{key:"_isTimepointBuffered",value:function(e){for(var t=this._mediaElement.buffered,n=0;n<t.length;n++){var i=t.start(n),r=t.end(n);if(e>=i&&e<r)return!0}return!1}},{key:"_internalSeek",value:function(e){var t=this._isTimepointBuffered(e),n=!1,i=0;if(e<1&&this._mediaElement.buffered.length>0){ +var r=this._mediaElement.buffered.start(0);(r<1&&e<r||f.default.safari)&&(n=!0,i=f.default.safari?.1:r)}if(n)this._requestSetTime=!0,this._mediaElement.currentTime=i;else if(t){if(this._alwaysSeekKeyframe){var s=this._msectl.getNearestKeyframe(Math.floor(1e3*e));this._requestSetTime=!0,this._mediaElement.currentTime=null!=s?s.dts/1e3:e}else this._requestSetTime=!0,this._mediaElement.currentTime=e;null!=this._progressChecker&&this._checkProgressAndResume()}else null!=this._progressChecker&&(window.clearInterval(this._progressChecker),this._progressChecker=null),this._msectl.seek(e),this._transmuxer.seek(Math.floor(1e3*e)),this._config.accurateSeek&&(this._requestSetTime=!0,this._mediaElement.currentTime=e)}},{key:"_checkAndApplyUnbufferedSeekpoint",value:function(){if(this._seekpointRecord)if(this._seekpointRecord.recordTime<=this._now()-100){var e=this._mediaElement.currentTime;this._seekpointRecord=null,this._isTimepointBuffered(e)||(null!=this._progressChecker&&(window.clearTimeout(this._progressChecker),this._progressChecker=null),this._msectl.seek(e),this._transmuxer.seek(Math.floor(1e3*e)),this._config.accurateSeek&&(this._requestSetTime=!0,this._mediaElement.currentTime=e))}else window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this),50)}},{key:"_checkAndResumeStuckPlayback",value:function(e){var t=this._mediaElement;if(e||!this._receivedCanPlay||t.readyState<2){var n=t.buffered;n.length>0&&t.currentTime<n.start(0)&&(d.default.w(this.TAG,"Playback seems stuck at "+t.currentTime+", seek to "+n.start(0)),this._requestSetTime=!0,this._mediaElement.currentTime=n.start(0),this._mediaElement.removeEventListener("progress",this.e.onvProgress))}else this._mediaElement.removeEventListener("progress",this.e.onvProgress)}},{key:"_onvLoadedMetadata",value:function(e){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null)}},{key:"_onvSeeking",value:function(e){var t=this._mediaElement.currentTime,n=this._mediaElement.buffered;if(this._requestSetTime)return void(this._requestSetTime=!1);if(t<1&&n.length>0){var i=n.start(0);if(i<1&&t<i||f.default.safari)return this._requestSetTime=!0,void(this._mediaElement.currentTime=f.default.safari?.1:i)}if(this._isTimepointBuffered(t)){if(this._alwaysSeekKeyframe){var r=this._msectl.getNearestKeyframe(Math.floor(1e3*t));null!=r&&(this._requestSetTime=!0,this._mediaElement.currentTime=r.dts/1e3)}return void(null!=this._progressChecker&&this._checkProgressAndResume())}this._seekpointRecord={seekPoint:t,recordTime:this._now()},window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this),50)}},{key:"_onvCanPlay",value:function(e){this._receivedCanPlay=!0,this._mediaElement.removeEventListener("canplay",this.e.onvCanPlay)}},{key:"_onvStalled",value:function(e){this._checkAndResumeStuckPlayback(!0)}},{key:"_onvProgress",value:function(e){this._checkAndResumeStuckPlayback()}},{key:"type",get:function(){return this._type}},{key:"buffered",get:function(){return this._mediaElement.buffered}},{key:"duration",get:function(){return this._mediaElement.duration}},{key:"volume",get:function(){return this._mediaElement.volume},set:function(e){this._mediaElement.volume=e}},{key:"muted",get:function(){return this._mediaElement.muted},set:function(e){this._mediaElement.muted=e}},{key:"currentTime",get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(e){this._mediaElement?this._internalSeek(e):this._pendingSeekTime=e}},{key:"mediaInfo",get:function(){return Object.assign({},this._mediaInfo)}},{key:"statisticsInfo",get:function(){return null==this._statisticsInfo&&(this._statisticsInfo={}),this._statisticsInfo=this._fillStatisticsInfo(this._statisticsInfo),Object.assign({},this._statisticsInfo)}}]),e}();n.default=R},{"../config.js":5,"../core/mse-controller.js":9,"../core/mse-events.js":10,"../core/transmuxer.js":11,"../core/transmuxing-events.js":13,"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./player-errors.js":34,"./player-events.js":35,events:2}],33:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=e("events"),u=i(o),l=e("./player-events.js"),d=i(l),h=e("../config.js"),f=e("../utils/exception.js"),c=function(){function e(t,n){if(r(this,e),this.TAG="NativePlayer",this._type="NativePlayer",this._emitter=new u.default,this._config=(0,h.createDefaultConfig)(),"object"===(void 0===n?"undefined":s(n))&&Object.assign(this._config,n),"flv"===t.type.toLowerCase())throw new f.InvalidArgumentException("NativePlayer does't support flv MediaDataSource input!");if(t.hasOwnProperty("segments"))throw new f.InvalidArgumentException("NativePlayer("+t.type+") doesn't support multipart playback!");this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this)},this._pendingSeekTime=null,this._statisticsReporter=null,this._mediaDataSource=t,this._mediaElement=null}return a(e,[{key:"destroy",value:function(){this._mediaElement&&(this.unload(),this.detachMediaElement()),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null}},{key:"on",value:function(e,t){var n=this;e===d.default.MEDIA_INFO?null!=this._mediaElement&&0!==this._mediaElement.readyState&&Promise.resolve().then(function(){n._emitter.emit(d.default.MEDIA_INFO,n.mediaInfo)}):e===d.default.STATISTICS_INFO&&null!=this._mediaElement&&0!==this._mediaElement.readyState&&Promise.resolve().then(function(){n._emitter.emit(d.default.STATISTICS_INFO,n.statisticsInfo)}),this._emitter.addListener(e,t)}},{key:"off",value:function(e,t){this._emitter.removeListener(e,t)}},{key:"attachMediaElement",value:function(e){if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),null!=this._pendingSeekTime)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(e){}}},{key:"detachMediaElement",value:function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement=null),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}},{key:"load",value:function(){if(!this._mediaElement)throw new f.IllegalStateException("HTMLMediaElement must be attached before load()!");this._mediaElement.src=this._mediaDataSource.url,this._mediaElement.readyState>0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)}},{key:"unload",value:function(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),null!=this._statisticsReporter&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}},{key:"play",value:function(){this._mediaElement.play()}},{key:"pause",value:function(){this._mediaElement.pause()}},{key:"_onvLoadedMetadata",value:function(e){null!=this._pendingSeekTime&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(d.default.MEDIA_INFO,this.mediaInfo)}},{key:"_reportStatisticsInfo",value:function(){this._emitter.emit(d.default.STATISTICS_INFO,this.statisticsInfo)}},{key:"type",get:function(){return this._type}},{key:"buffered",get:function(){return this._mediaElement.buffered}},{key:"duration",get:function(){return this._mediaElement.duration}},{key:"volume",get:function(){return this._mediaElement.volume},set:function(e){this._mediaElement.volume=e}},{key:"muted",get:function(){return this._mediaElement.muted},set:function(e){this._mediaElement.muted=e}},{key:"currentTime",get:function(){return this._mediaElement?this._mediaElement.currentTime:0},set:function(e){this._mediaElement?this._mediaElement.currentTime=e:this._pendingSeekTime=e}},{key:"mediaInfo",get:function(){var e=this._mediaElement instanceof HTMLAudioElement?"audio/":"video/",t={mimeType:e+this._mediaDataSource.type};return this._mediaElement&&(t.duration=Math.floor(1e3*this._mediaElement.duration),this._mediaElement instanceof HTMLVideoElement&&(t.width=this._mediaElement.videoWidth,t.height=this._mediaElement.videoHeight)),t}},{key:"statisticsInfo",get:function(){var e={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return e;var t=!0,n=0,i=0;if(this._mediaElement.getVideoPlaybackQuality){var r=this._mediaElement.getVideoPlaybackQuality();n=r.totalVideoFrames,i=r.droppedVideoFrames}else void 0!=this._mediaElement.webkitDecodedFrameCount?(n=this._mediaElement.webkitDecodedFrameCount,i=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=n,e.droppedFrames=i),e}}]),e}();n.default=c},{"../config.js":5,"../utils/exception.js":40,"./player-events.js":35,events:2}],34:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ErrorDetails=n.ErrorTypes=void 0;var i=e("../io/loader.js"),r=e("../demux/demux-errors.js"),s=function(e){return e&&e.__esModule?e:{default:e}}(r);n.ErrorTypes={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},n.ErrorDetails={NETWORK_EXCEPTION:i.LoaderErrors.EXCEPTION,NETWORK_STATUS_CODE_INVALID:i.LoaderErrors.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:i.LoaderErrors.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:i.LoaderErrors.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:s.default.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:s.default.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:s.default.CODEC_UNSUPPORTED}},{"../demux/demux-errors.js":16,"../io/loader.js":24}],35:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={ERROR:"error",LOADING_COMPLETE:"loading_complete",RECOVERED_EARLY_EOF:"recovered_early_eof",MEDIA_INFO:"media_info",STATISTICS_INFO:"statistics_info"};n.default=i},{}],36:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(){i(this,e)}return r(e,null,[{key:"getSilentFrame",value:function(e){return 1===e?new Uint8Array([0,200,0,128,35,128]):2===e?new Uint8Array([33,0,73,144,2,25,0,35,128]):3===e?new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]):4===e?new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]):5===e?new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]):6===e?new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224]):null}}]),e}();n.default=s},{}],37:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(){i(this,e)}return r(e,null,[{key:"init",value:function(){e.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],".mp3":[]};for(var t in e.types)e.types.hasOwnProperty(t)&&(e.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);var n=e.constants={};n.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]),n.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),n.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),n.STSC=n.STCO=n.STTS,n.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),n.HDLR_VIDEO=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),n.HDLR_AUDIO=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]),n.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),n.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),n.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}},{key:"box",value:function(e){for(var t=8,n=null,i=Array.prototype.slice.call(arguments,1),r=i.length,s=0;s<r;s++)t+=i[s].byteLength;n=new Uint8Array(t),n[0]=t>>>24&255,n[1]=t>>>16&255,n[2]=t>>>8&255,n[3]=255&t,n.set(e,4);for(var a=8,o=0;o<r;o++)n.set(i[o],a),a+=i[o].byteLength;return n}},{key:"generateInitSegment",value:function(t){var n=e.box(e.types.ftyp,e.constants.FTYP),i=e.moov(t),r=new Uint8Array(n.byteLength+i.byteLength);return r.set(n,0),r.set(i,n.byteLength),r}},{key:"moov",value:function(t){var n=e.mvhd(t.timescale,t.duration),i=e.trak(t),r=e.mvex(t);return e.box(e.types.moov,n,i,r)}},{key:"mvhd",value:function(t,n){return e.box(e.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}},{key:"trak",value:function(t){return e.box(e.types.trak,e.tkhd(t),e.mdia(t))}},{key:"tkhd",value:function(t){var n=t.id,i=t.duration,r=t.presentWidth,s=t.presentHeight;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,r>>>8&255,255&r,0,0,s>>>8&255,255&s,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t),e.hdlr(t),e.minf(t))}},{key:"mdhd",value:function(t){var n=t.timescale,i=t.duration;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,i>>>24&255,i>>>16&255,i>>>8&255,255&i,85,196,0,0]))}},{key:"hdlr",value:function(t){var n=null;return n="audio"===t.type?e.constants.HDLR_AUDIO:e.constants.HDLR_VIDEO,e.box(e.types.hdlr,n)}},{key:"minf",value:function(t){var n=null;return n="audio"===t.type?e.box(e.types.smhd,e.constants.SMHD):e.box(e.types.vmhd,e.constants.VMHD),e.box(e.types.minf,n,e.dinf(),e.stbl(t))}},{key:"dinf",value:function(){return e.box(e.types.dinf,e.box(e.types.dref,e.constants.DREF))}},{key:"stbl",value:function(t){return e.box(e.types.stbl,e.stsd(t),e.box(e.types.stts,e.constants.STTS),e.box(e.types.stsc,e.constants.STSC),e.box(e.types.stsz,e.constants.STSZ),e.box(e.types.stco,e.constants.STCO))}},{key:"stsd",value:function(t){return"audio"===t.type?"mp3"===t.codec?e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp3(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.mp4a(t)):e.box(e.types.stsd,e.constants.STSD_PREFIX,e.avc1(t))}},{key:"mp3",value:function(t){var n=t.channelCount,i=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return e.box(e.types[".mp3"],r)}},{key:"mp4a",value:function(t){var n=t.channelCount,i=t.audioSampleRate,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,n,0,16,0,0,0,0,i>>>8&255,255&i,0,0]);return e.box(e.types.mp4a,r,e.esds(t))}},{key:"esds",value:function(t){var n=t.config||[],i=n.length,r=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(n).concat([6,1,2]));return e.box(e.types.esds,r)}},{key:"avc1",value:function(t){var n=t.avcc,i=t.codecWidth,r=t.codecHeight,s=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,i>>>8&255,255&i,r>>>8&255,255&r,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return e.box(e.types.avc1,s,e.box(e.types.avcC,n))}},{key:"mvex",value:function(t){return e.box(e.types.mvex,e.trex(t))}},{key:"trex",value:function(t){var n=t.id,i=new Uint8Array([0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return e.box(e.types.trex,i)}},{key:"moof",value:function(t,n){return e.box(e.types.moof,e.mfhd(t.sequenceNumber),e.traf(t,n))}},{key:"mfhd",value:function(t){var n=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,255&t]);return e.box(e.types.mfhd,n)}},{key:"traf",value:function(t,n){var i=t.id,r=e.box(e.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,255&i])),s=e.box(e.types.tfdt,new Uint8Array([0,0,0,0,n>>>24&255,n>>>16&255,n>>>8&255,255&n])),a=e.sdtp(t),o=e.trun(t,a.byteLength+16+16+8+16+8+8);return e.box(e.types.traf,r,s,o,a)}},{key:"sdtp",value:function(t){for(var n=t.samples||[],i=n.length,r=new Uint8Array(4+i),s=0;s<i;s++){var a=n[s].flags;r[s+4]=a.isLeading<<6|a.dependsOn<<4|a.isDependedOn<<2|a.hasRedundancy}return e.box(e.types.sdtp,r)}},{key:"trun",value:function(t,n){var i=t.samples||[],r=i.length,s=12+16*r,a=new Uint8Array(s);n+=8+s,a.set([0,0,15,1,r>>>24&255,r>>>16&255,r>>>8&255,255&r,n>>>24&255,n>>>16&255,n>>>8&255,255&n],0);for(var o=0;o<r;o++){var u=i[o].duration,l=i[o].size,d=i[o].flags,h=i[o].cts;a.set([u>>>24&255,u>>>16&255,u>>>8&255,255&u,l>>>24&255,l>>>16&255,l>>>8&255,255&l,d.isLeading<<2|d.dependsOn,d.isDependedOn<<6|d.hasRedundancy<<4|d.isNonSync,0,0,h>>>24&255,h>>>16&255,h>>>8&255,255&h],12+16*o)}return e.box(e.types.trun,a)}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}}]),e}();s.init(),n.default=s},{}],38:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("../utils/logger.js"),o=i(a),u=e("./mp4-generator.js"),l=i(u),d=e("./aac-silent.js"),h=i(d),f=e("../utils/browser.js"),c=i(f),_=e("../core/media-segment-info.js"),m=e("../utils/exception.js"),p=function(){function e(t){r(this,e),this.TAG="MP4Remuxer",this._config=t,this._isLive=t.isLive===!0,this._dtsBase=-1,this._dtsBaseInited=!1,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=void 0,this._videoNextDts=void 0,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList=new _.MediaSegmentInfoList("audio"),this._videoSegmentInfoList=new _.MediaSegmentInfoList("video"),this._onInitSegment=null,this._onMediaSegment=null,this._forceFirstIDR=!(!c.default.chrome||!(c.default.version.major<50||50===c.default.version.major&&c.default.version.build<2661)),this._fillSilentAfterSeek=c.default.msedge||c.default.msie,this._mp3UseMpegAudio=!c.default.firefox}return s(e,[{key:"destroy",value:function(){this._dtsBase=-1,this._dtsBaseInited=!1,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList.clear(),this._audioSegmentInfoList=null,this._videoSegmentInfoList.clear(),this._videoSegmentInfoList=null,this._onInitSegment=null,this._onMediaSegment=null}},{key:"bindDataSource",value:function(e){return e.onDataAvailable=this.remux.bind(this),e.onTrackMetadata=this._onTrackMetadataReceived.bind(this),this}},{key:"insertDiscontinuity",value:function(){this._audioNextDts=this._videoNextDts=void 0}},{key:"seek",value:function(e){this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear()}},{key:"remux",value:function(e,t){if(!this._onMediaSegment)throw new m.IllegalStateException("MP4Remuxer: onMediaSegment callback must be specificed!");this._dtsBaseInited||this._calculateDtsBase(e,t),this._remuxVideo(t),this._remuxAudio(e)}},{key:"_onTrackMetadataReceived",value:function(e,t){var n=null,i="mp4",r=t.codec;if("audio"===e)this._audioMeta=t,"mp3"===t.codec&&this._mp3UseMpegAudio?(i="mpeg",r="",n=new Uint8Array):n=l.default.generateInitSegment(t);else{if("video"!==e)return;this._videoMeta=t,n=l.default.generateInitSegment(t)}if(!this._onInitSegment)throw new m.IllegalStateException("MP4Remuxer: onInitSegment callback must be specified!");this._onInitSegment(e,{type:e,data:n.buffer,codec:r,container:e+"/"+i,mediaDuration:t.duration})}},{key:"_calculateDtsBase",value:function(e,t){this._dtsBaseInited||(e.samples&&e.samples.length&&(this._audioDtsBase=e.samples[0].dts),t.samples&&t.samples.length&&(this._videoDtsBase=t.samples[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase),this._dtsBaseInited=!0)}},{key:"_remuxAudio",value:function(e){var t=e,n=t.samples,i=void 0,r=-1,s=-1,a="mp3"===this._audioMeta.codec&&this._mp3UseMpegAudio,o=this._dtsBaseInited&&void 0===this._audioNextDts,u=!1,d=-1;if(n&&0!==n.length){var h=0,f=0,c=null;a?(h=t.length,f=0,c=new Uint8Array(h)):(h=8+t.length,f=8,c=new Uint8Array(h),c[0]=h>>>24&255,c[1]=h>>>16&255,c[2]=h>>>8&255,c[3]=255&h,c.set(l.default.types.mdat,4));for(var m=[];n.length;){var p=n.shift(),v=p.unit,g=p.dts-this._dtsBase;if(void 0==i)if(void 0==this._audioNextDts)if(this._audioSegmentInfoList.isEmpty())i=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&"mp3"!==this._audioMeta.codec&&(u=!0);else{var y=this._audioSegmentInfoList.getLastSampleBefore(g);if(null!=y){var E=g-(y.originalDts+y.duration);E<=3&&(E=0);var b=y.dts+y.duration+E;i=g-b}else i=0}else i=g-this._audioNextDts;var S=g-i;if(u){var k=this._videoSegmentInfoList.getLastSegmentBefore(g);null!=k&&k.beginDts<S?(d=S-k.beginDts,S=k.beginDts):u=!1}if(r===-1&&(r=S),u){u=!1,n.unshift(p);var L=this._generateSilentAudio(S,d);if(null==L)continue;var w=L.mp4Sample,R=L.unit;m.push(w),h+=R.byteLength,c=new Uint8Array(h),c[0]=h>>>24&255,c[1]=h>>>16&255,c[2]=h>>>8&255,c[3]=255&h,c.set(l.default.types.mdat,4),c.set(R,f),f+=R.byteLength}else{var A=0;if(n.length>=1){A=n[0].dts-this._dtsBase-i-S}else A=m.length>=1?m[m.length-1].duration:this._audioMeta.refSampleDuration;var O={dts:S,pts:S,cts:0,size:v.byteLength,duration:A,originalDts:g,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};m.push(O),c.set(v,f),f+=v.byteLength}}var T=m[m.length-1];s=T.dts+T.duration,this._audioNextDts=s;var I=new _.MediaSegmentInfo;I.beginDts=r,I.endDts=s,I.beginPts=r,I.endPts=s,I.originalBeginDts=m[0].originalDts,I.originalEndDts=T.originalDts+T.duration,I.firstSample=new _.SampleInfo(m[0].dts,m[0].pts,m[0].duration,m[0].originalDts,!1),I.lastSample=new _.SampleInfo(T.dts,T.pts,T.duration,T.originalDts,!1),this._isLive||this._audioSegmentInfoList.append(I),t.samples=m,t.sequenceNumber++;var C=null;C=a?new Uint8Array:l.default.moof(t,r),t.samples=[],t.length=0;var x={type:"audio",data:this._mergeBoxes(C,c).buffer,sampleCount:m.length,info:I};a&&o&&(x.timestampOffset=r),this._onMediaSegment("audio",x)}}},{key:"_generateSilentAudio",value:function(e,t){o.default.v(this.TAG,"GenerateSilentAudio: dts = "+e+", duration = "+t);var n=h.default.getSilentFrame(this._audioMeta.channelCount);return null==n?(o.default.w(this.TAG,"Cannot generate silent aac frame for channelCount = "+this._audioMeta.channelCount),null):{unit:n,mp4Sample:{dts:e,pts:e,cts:0,size:n.byteLength,duration:t,originalDts:e,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}}}},{key:"_remuxVideo",value:function(e){var t=e,n=t.samples,i=void 0,r=-1,s=-1,a=-1,o=-1;if(n&&0!==n.length){var u=8+e.length,d=new Uint8Array(u);d[0]=u>>>24&255,d[1]=u>>>16&255,d[2]=u>>>8&255,d[3]=255&u,d.set(l.default.types.mdat,4);for(var h=8,f=[],c=new _.MediaSegmentInfo;n.length;){var m=n.shift(),p=m.isKeyframe,v=m.dts-this._dtsBase;if(void 0==i)if(void 0==this._videoNextDts)if(this._videoSegmentInfoList.isEmpty())i=0;else{var g=this._videoSegmentInfoList.getLastSampleBefore(v);if(null!=g){var y=v-(g.originalDts+g.duration);y<=3&&(y=0);var E=g.dts+g.duration+y;i=v-E}else i=0}else i=v-this._videoNextDts;var b=v-i,S=m.cts,k=b+S;r===-1&&(r=b,a=k);for(var L=0;m.units.length;){var w=m.units.shift(),R=w.data;d.set(R,h),h+=R.byteLength,L+=R.byteLength}var A=0;if(n.length>=1){A=n[0].dts-this._dtsBase-i-b}else A=f.length>=1?f[f.length-1].duration:this._videoMeta.refSampleDuration;if(p){var O=new _.SampleInfo(b,k,A,m.dts,!0);O.fileposition=m.fileposition,c.appendSyncPoint(O)}var T={dts:b,pts:k,cts:S,size:L,isKeyframe:p,duration:A,originalDts:v,flags:{isLeading:0,dependsOn:p?2:1,isDependedOn:p?1:0,hasRedundancy:0,isNonSync:p?0:1}};f.push(T)}var I=f[f.length-1];if(s=I.dts+I.duration,o=I.pts+I.duration,this._videoNextDts=s,c.beginDts=r,c.endDts=s,c.beginPts=a,c.endPts=o,c.originalBeginDts=f[0].originalDts,c.originalEndDts=I.originalDts+I.duration,c.firstSample=new _.SampleInfo(f[0].dts,f[0].pts,f[0].duration,f[0].originalDts,f[0].isKeyframe),c.lastSample=new _.SampleInfo(I.dts,I.pts,I.duration,I.originalDts,I.isKeyframe),this._isLive||this._videoSegmentInfoList.append(c),t.samples=f,t.sequenceNumber++,this._forceFirstIDR){var C=f[0].flags;C.dependsOn=2,C.isNonSync=0}var x=l.default.moof(t,r);t.samples=[],t.length=0,this._onMediaSegment("video",{type:"video",data:this._mergeBoxes(x,d).buffer,sampleCount:f.length,info:c})}}},{key:"_mergeBoxes",value:function(e,t){var n=new Uint8Array(e.byteLength+t.byteLength);return n.set(e,0),n.set(t,e.byteLength),n}},{key:"onInitSegment",get:function(){return this._onInitSegment},set:function(e){this._onInitSegment=e}},{key:"onMediaSegment",get:function(){return this._onMediaSegment},set:function(e){this._onMediaSegment=e}}]),e}();n.default=p},{"../core/media-segment-info.js":8,"../utils/browser.js":39,"../utils/exception.js":40,"../utils/logger.js":41,"./aac-silent.js":36,"./mp4-generator.js":37}],39:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i={};!function(){var e=self.navigator.userAgent.toLowerCase(),t=/(edge)\/([\w.]+)/.exec(e)||/(opr)[\/]([\w.]+)/.exec(e)||/(chrome)[ \/]([\w.]+)/.exec(e)||/(iemobile)[\/]([\w.]+)/.exec(e)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(e)||[],n=/(ipad)/.exec(e)||/(ipod)/.exec(e)||/(windows phone)/.exec(e)||/(iphone)/.exec(e)||/(kindle)/.exec(e)||/(android)/.exec(e)||/(windows)/.exec(e)||/(mac)/.exec(e)||/(linux)/.exec(e)||/(cros)/.exec(e)||[],r={browser:t[5]||t[3]||t[1]||"",version:t[2]||t[4]||"0",majorVersion:t[4]||t[2]||"0",platform:n[0]||""},s={};if(r.browser){s[r.browser]=!0;var a=r.majorVersion.split(".");s.version={major:parseInt(r.majorVersion,10),string:r.version},a.length>1&&(s.version.minor=parseInt(a[1],10)),a.length>2&&(s.version.build=parseInt(a[2],10))}r.platform&&(s[r.platform]=!0),(s.chrome||s.opr||s.safari)&&(s.webkit=!0),(s.rv||s.iemobile)&&(s.rv&&delete s.rv,r.browser="msie",s.msie=!0),s.edge&&(delete s.edge,r.browser="msedge",s.msedge=!0),s.opr&&(r.browser="opera",s.opera=!0),s.safari&&s.android&&(r.browser="android",s.android=!0),s.name=r.browser,s.platform=r.platform;for(var o in i)i.hasOwnProperty(o)&&delete i[o];Object.assign(i,s)}(),n.default=i},{}],40:[function(e,t,n){"use strict";function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),o=n.RuntimeException=function(){function e(t){s(this,e),this._message=t}return a(e,[{key:"toString",value:function(){return this.name+": "+this.message}},{key:"name",get:function(){return"RuntimeException"}},{key:"message",get:function(){return this._message}}]),e}();n.IllegalStateException=function(e){function t(e){return s(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return r(t,e),a(t,[{key:"name",get:function(){return"IllegalStateException"}}]),t}(o),n.InvalidArgumentException=function(e){function t(e){return s(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return r(t,e),a(t,[{key:"name",get:function(){return"InvalidArgumentException"}}]),t}(o),n.NotImplementedException=function(e){function t(e){return s(this,t),i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e))}return r(t,e),a(t,[{key:"name",get:function(){return"NotImplementedException"}}]),t}(o)},{}],41:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function e(){i(this,e)}return r(e,null,[{key:"e",value:function(t,n){if(e.ENABLE_ERROR){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;console.error?console.error(i):console.warn?console.warn(i):console.log(i)}}},{key:"i",value:function(t,n){if(e.ENABLE_INFO){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;console.info?console.info(i):console.log(i)}}},{key:"w",value:function(t,n){if(e.ENABLE_WARN){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;console.warn?console.warn(i):console.log(i)}}},{key:"d",value:function(t,n){if(e.ENABLE_DEBUG){t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG);var i="["+t+"] > "+n;console.debug?console.debug(i):console.log(i)}}},{key:"v",value:function(t,n){e.ENABLE_VERBOSE&&(t&&!e.FORCE_GLOBAL_TAG||(t=e.GLOBAL_TAG),console.log("["+t+"] > "+n))}}]),e}();s.GLOBAL_TAG="flv.js",s.FORCE_GLOBAL_TAG=!1,s.ENABLE_ERROR=!0,s.ENABLE_INFO=!0,s.ENABLE_WARN=!0,s.ENABLE_DEBUG=!0,s.ENABLE_VERBOSE=!0,n.default=s},{}],42:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),a=e("events"),o=i(a),u=e("./logger.js"),l=i(u),d=function(){function e(){r(this,e)}return s(e,null,[{key:"getConfig",value:function(){return{globalTag:l.default.GLOBAL_TAG,forceGlobalTag:l.default.FORCE_GLOBAL_TAG,enableVerbose:l.default.ENABLE_VERBOSE, +enableDebug:l.default.ENABLE_DEBUG,enableInfo:l.default.ENABLE_INFO,enableWarn:l.default.ENABLE_WARN,enableError:l.default.ENABLE_ERROR}}},{key:"applyConfig",value:function(e){l.default.GLOBAL_TAG=e.globalTag,l.default.FORCE_GLOBAL_TAG=e.forceGlobalTag,l.default.ENABLE_VERBOSE=e.enableVerbose,l.default.ENABLE_DEBUG=e.enableDebug,l.default.ENABLE_INFO=e.enableInfo,l.default.ENABLE_WARN=e.enableWarn,l.default.ENABLE_ERROR=e.enableError}},{key:"_notifyChange",value:function(){var t=e.emitter;if(t.listenerCount("change")>0){var n=e.getConfig();t.emit("change",n)}}},{key:"registerListener",value:function(t){e.emitter.addListener("change",t)}},{key:"removeListener",value:function(t){e.emitter.removeListener("change",t)}},{key:"forceGlobalTag",get:function(){return l.default.FORCE_GLOBAL_TAG},set:function(t){l.default.FORCE_GLOBAL_TAG=t,e._notifyChange()}},{key:"globalTag",get:function(){return l.default.GLOBAL_TAG},set:function(t){l.default.GLOBAL_TAG=t,e._notifyChange()}},{key:"enableAll",get:function(){return l.default.ENABLE_VERBOSE&&l.default.ENABLE_DEBUG&&l.default.ENABLE_INFO&&l.default.ENABLE_WARN&&l.default.ENABLE_ERROR},set:function(t){l.default.ENABLE_VERBOSE=t,l.default.ENABLE_DEBUG=t,l.default.ENABLE_INFO=t,l.default.ENABLE_WARN=t,l.default.ENABLE_ERROR=t,e._notifyChange()}},{key:"enableDebug",get:function(){return l.default.ENABLE_DEBUG},set:function(t){l.default.ENABLE_DEBUG=t,e._notifyChange()}},{key:"enableVerbose",get:function(){return l.default.ENABLE_VERBOSE},set:function(t){l.default.ENABLE_VERBOSE=t,e._notifyChange()}},{key:"enableInfo",get:function(){return l.default.ENABLE_INFO},set:function(t){l.default.ENABLE_INFO=t,e._notifyChange()}},{key:"enableWarn",get:function(){return l.default.ENABLE_WARN},set:function(t){l.default.ENABLE_WARN=t,e._notifyChange()}},{key:"enableError",get:function(){return l.default.ENABLE_ERROR},set:function(t){l.default.ENABLE_ERROR=t,e._notifyChange()}}]),e}();d.emitter=new o.default,n.default=d},{"./logger.js":41,events:2}],43:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=function(){function t(){i(this,t)}return r(t,null,[{key:"install",value:function(){Object.setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},Object.assign=Object.assign||function(e){if(void 0===e||null===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1;n<arguments.length;n++){var i=arguments[n];if(void 0!==i&&null!==i)for(var r in i)i.hasOwnProperty(r)&&(t[r]=i[r])}return t},"function"!=typeof self.Promise&&e("es6-promise").polyfill()}}]),t}();s.install(),n.default=s},{"es6-promise":1}],44:[function(e,t,n){"use strict";function i(e,t,n){var i=e;if(t+n<i.length){for(;n--;)if(128!=(192&i[++t]))return!1;return!0}return!1}function r(e){for(var t=[],n=e,r=0,s=e.length;r<s;)if(n[r]<128)t.push(String.fromCharCode(n[r])),++r;else{if(n[r]<192);else if(n[r]<224){if(i(n,r,1)){var a=(31&n[r])<<6|63&n[r+1];if(a>=128){t.push(String.fromCharCode(65535&a)),r+=2;continue}}}else if(n[r]<240){if(i(n,r,2)){var o=(15&n[r])<<12|(63&n[r+1])<<6|63&n[r+2];if(o>=2048&&55296!=(63488&o)){t.push(String.fromCharCode(65535&o)),r+=3;continue}}}else if(n[r]<248&&i(n,r,3)){var u=(7&n[r])<<18|(63&n[r+1])<<12|(63&n[r+2])<<6|63&n[r+3];if(u>65536&&u<1114112){u-=65536,t.push(String.fromCharCode(u>>>10|55296)),t.push(String.fromCharCode(1023&u|56320)),r+=4;continue}}t.push(String.fromCharCode(65533)),++r}return t.join("")}Object.defineProperty(n,"__esModule",{value:!0}),n.default=r},{}]},{},[21])(21)}); diff --git a/src/main/webapp/static/movie/mediaelementjs/hls/README b/src/main/webapp/static/movie/mediaelementjs/hls/README new file mode 100644 index 0000000000000000000000000000000000000000..894883367c79da463ab16ca21322e073a77c09a0 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/hls/README @@ -0,0 +1,5 @@ +hls.js is a JavaScript library which implements an HTTP Live Streaming client. It relies on HTML5 video and MediaSource Extensions for playback. + +Version latest from 2017-05-30 +https://github.com/video-dev/hls.js + diff --git a/src/main/webapp/static/movie/mediaelementjs/hls/hls.js b/src/main/webapp/static/movie/mediaelementjs/hls/hls.js new file mode 100644 index 0000000000000000000000000000000000000000..47b0eb030a55695c95f78a1e5b53be58850cb4ab --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/hls/hls.js @@ -0,0 +1,15858 @@ +(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Hls = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +// Backwards-compat with node 0.10.x +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +// By default EventEmitters will print a warning if more than 10 listeners are +// added to it. This is a useful default which helps finding memory leaks. +EventEmitter.defaultMaxListeners = 10; + +// Obviously not all Emitters should be limited to 10. This function allows +// that to be increased. Set to zero for unlimited. +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + // If there is no 'error' event listener then throw. + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + // At least give some kind of context to the user + var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); + err.context = er; + throw err; + } + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + // fast cases + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + // slower + default: + args = Array.prototype.slice.call(arguments, 1); + handler.apply(this, args); + } + } else if (isObject(handler)) { + args = Array.prototype.slice.call(arguments, 1); + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + // To avoid recursion in the case that type === "newListener"! Before + // adding it to the listeners, first emit "newListener". + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + // Optimize the case of one listener. Don't need the extra array object. + this._events[type] = listener; + else if (isObject(this._events[type])) + // If we've already got an array, just append. + this._events[type].push(listener); + else + // Adding the second element, need to change to array. + this._events[type] = [this._events[type], listener]; + + // Check for listener leak + if (isObject(this._events[type]) && !this._events[type].warned) { + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + // not supported in IE 10 + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +// emits a 'removeListener' event iff the listener was removed +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + // not listening for removeListener, no need to emit + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + // emit removeListener for all listeners on all events + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else if (listeners) { + // LIFO order + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.prototype.listenerCount = function(type) { + if (this._events) { + var evlistener = this._events[type]; + + if (isFunction(evlistener)) + return 1; + else if (evlistener) + return evlistener.length; + } + return 0; +}; + +EventEmitter.listenerCount = function(emitter, type) { + return emitter.listenerCount(type); +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],2:[function(_dereq_,module,exports){ +// see https://tools.ietf.org/html/rfc1808 + +/* jshint ignore:start */ +(function(root) { +/* jshint ignore:end */ + + var URL_REGEX = /^((?:[^\/;?#]+:)?)(\/\/[^\/\;?#]*)?(.*?)??(;.*?)?(\?.*?)?(#.*?)?$/; + var FIRST_SEGMENT_REGEX = /^([^\/;?#]*)(.*)$/; + var SLASH_DOT_REGEX = /(?:\/|^)\.(?=\/)/g; + var SLASH_DOT_DOT_REGEX = /(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g; + + var URLToolkit = { // jshint ignore:line + // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or // + // E.g + // With opts.alwaysNormalize = false (default, spec compliant) + // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g + // With opts.alwaysNormalize = true (default, not spec compliant) + // http://a.com/b/cd + /e/f/../g => http://a.com/e/g + buildAbsoluteURL: function(baseURL, relativeURL, opts) { + opts = opts || {}; + // remove any remaining space and CRLF + baseURL = baseURL.trim(); + relativeURL = relativeURL.trim(); + if (!relativeURL) { + // 2a) If the embedded URL is entirely empty, it inherits the + // entire base URL (i.e., is set equal to the base URL) + // and we are done. + if (!opts.alwaysNormalize) { + return baseURL; + } + var basePartsForNormalise = this.parseURL(baseURL); + if (!baseParts) { + throw new Error('Error trying to parse base URL.'); + } + basePartsForNormalise.path = URLToolkit.normalizePath(basePartsForNormalise.path); + return URLToolkit.buildURLFromParts(basePartsForNormalise); + } + var relativeParts = this.parseURL(relativeURL); + if (!relativeParts) { + throw new Error('Error trying to parse relative URL.'); + } + if (relativeParts.scheme) { + // 2b) If the embedded URL starts with a scheme name, it is + // interpreted as an absolute URL and we are done. + if (!opts.alwaysNormalize) { + return relativeURL; + } + relativeParts.path = URLToolkit.normalizePath(relativeParts.path); + return URLToolkit.buildURLFromParts(relativeParts); + } + var baseParts = this.parseURL(baseURL); + if (!baseParts) { + throw new Error('Error trying to parse base URL.'); + } + if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') { + // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc + // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a' + var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path); + baseParts.netLoc = pathParts[1]; + baseParts.path = pathParts[2]; + } + if (baseParts.netLoc && !baseParts.path) { + baseParts.path = '/'; + } + var builtParts = { + // 2c) Otherwise, the embedded URL inherits the scheme of + // the base URL. + scheme: baseParts.scheme, + netLoc: relativeParts.netLoc, + path: null, + params: relativeParts.params, + query: relativeParts.query, + fragment: relativeParts.fragment + }; + if (!relativeParts.netLoc) { + // 3) If the embedded URL's <net_loc> is non-empty, we skip to + // Step 7. Otherwise, the embedded URL inherits the <net_loc> + // (if any) of the base URL. + builtParts.netLoc = baseParts.netLoc; + // 4) If the embedded URL path is preceded by a slash "/", the + // path is not relative and we skip to Step 7. + if (relativeParts.path[0] !== '/') { + if (!relativeParts.path) { + // 5) If the embedded URL path is empty (and not preceded by a + // slash), then the embedded URL inherits the base URL path + builtParts.path = baseParts.path; + // 5a) if the embedded URL's <params> is non-empty, we skip to + // step 7; otherwise, it inherits the <params> of the base + // URL (if any) and + if (!relativeParts.params) { + builtParts.params = baseParts.params; + // 5b) if the embedded URL's <query> is non-empty, we skip to + // step 7; otherwise, it inherits the <query> of the base + // URL (if any) and we skip to step 7. + if (!relativeParts.query) { + builtParts.query = baseParts.query; + } + } + } else { + // 6) The last segment of the base URL's path (anything + // following the rightmost slash "/", or the entire path if no + // slash is present) is removed and the embedded URL's path is + // appended in its place. + var baseURLPath = baseParts.path; + var newPath = baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) + relativeParts.path; + builtParts.path = URLToolkit.normalizePath(newPath); + } + } + } + if (builtParts.path === null) { + builtParts.path = opts.alwaysNormalize ? URLToolkit.normalizePath(relativeParts.path) : relativeParts.path; + } + return URLToolkit.buildURLFromParts(builtParts); + }, + parseURL: function(url) { + var parts = URL_REGEX.exec(url); + if (!parts) { + return null; + } + return { + scheme: parts[1] || '', + netLoc: parts[2] || '', + path: parts[3] || '', + params: parts[4] || '', + query: parts[5] || '', + fragment: parts[6] || '' + }; + }, + normalizePath: function(path) { + // The following operations are + // then applied, in order, to the new path: + // 6a) All occurrences of "./", where "." is a complete path + // segment, are removed. + // 6b) If the path ends with "." as a complete path segment, + // that "." is removed. + path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, ''); + // 6c) All occurrences of "<segment>/../", where <segment> is a + // complete path segment not equal to "..", are removed. + // Removal of these path segments is performed iteratively, + // removing the leftmost matching pattern on each iteration, + // until no matching pattern remains. + // 6d) If the path ends with "<segment>/..", where <segment> is a + // complete path segment not equal to "..", that + // "<segment>/.." is removed. + while (path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length) {} // jshint ignore:line + return path.split('').reverse().join(''); + }, + buildURLFromParts: function(parts) { + return parts.scheme + parts.netLoc + parts.path + parts.params + parts.query + parts.fragment; + } + }; + +/* jshint ignore:start */ + if(typeof exports === 'object' && typeof module === 'object') + module.exports = URLToolkit; + else if(typeof define === 'function' && define.amd) + define([], function() { return URLToolkit; }); + else if(typeof exports === 'object') + exports["URLToolkit"] = URLToolkit; + else + root["URLToolkit"] = URLToolkit; +})(this); +/* jshint ignore:end */ + +},{}],3:[function(_dereq_,module,exports){ +var bundleFn = arguments[3]; +var sources = arguments[4]; +var cache = arguments[5]; + +var stringify = JSON.stringify; + +module.exports = function (fn, options) { + var wkey; + var cacheKeys = Object.keys(cache); + + for (var i = 0, l = cacheKeys.length; i < l; i++) { + var key = cacheKeys[i]; + var exp = cache[key].exports; + // Using babel as a transpiler to use esmodule, the export will always + // be an object with the default export as a property of it. To ensure + // the existing api and babel esmodule exports are both supported we + // check for both + if (exp === fn || exp && exp.default === fn) { + wkey = key; + break; + } + } + + if (!wkey) { + wkey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); + var wcache = {}; + for (var i = 0, l = cacheKeys.length; i < l; i++) { + var key = cacheKeys[i]; + wcache[key] = key; + } + sources[wkey] = [ + Function(['require','module','exports'], '(' + fn + ')(self)'), + wcache + ]; + } + var skey = Math.floor(Math.pow(16, 8) * Math.random()).toString(16); + + var scache = {}; scache[wkey] = wkey; + sources[skey] = [ + Function(['require'], ( + // try to call default if defined to also support babel esmodule + // exports + 'var f = require(' + stringify(wkey) + ');' + + '(f.default ? f.default : f)(self);' + )), + scache + ]; + + var workerSources = {}; + resolveSources(skey); + + function resolveSources(key) { + workerSources[key] = true; + + for (var depPath in sources[key][1]) { + var depKey = sources[key][1][depPath]; + if (!workerSources[depKey]) { + resolveSources(depKey); + } + } + } + + var src = '(' + bundleFn + ')({' + + Object.keys(workerSources).map(function (key) { + return stringify(key) + ':[' + + sources[key][0] + + ',' + stringify(sources[key][1]) + ']' + ; + }).join(',') + + '},{},[' + stringify(skey) + '])' + ; + + var URL = window.URL || window.webkitURL || window.mozURL || window.msURL; + + var blob = new Blob([src], { type: 'text/javascript' }); + if (options && options.bare) { return blob; } + var workerUrl = URL.createObjectURL(blob); + var worker = new Worker(workerUrl); + worker.objectURL = workerUrl; + return worker; +}; + +},{}],4:[function(_dereq_,module,exports){ +/** + * HLS config + */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.hlsDefaultConfig = undefined; + +var _abrController = _dereq_(5); + +var _abrController2 = _interopRequireDefault(_abrController); + +var _bufferController = _dereq_(8); + +var _bufferController2 = _interopRequireDefault(_bufferController); + +var _capLevelController = _dereq_(9); + +var _capLevelController2 = _interopRequireDefault(_capLevelController); + +var _fpsController = _dereq_(10); + +var _fpsController2 = _interopRequireDefault(_fpsController); + +var _xhrLoader = _dereq_(58); + +var _xhrLoader2 = _interopRequireDefault(_xhrLoader); + +var _audioTrackController = _dereq_(7); + +var _audioTrackController2 = _interopRequireDefault(_audioTrackController); + +var _audioStreamController = _dereq_(6); + +var _audioStreamController2 = _interopRequireDefault(_audioStreamController); + +var _cues = _dereq_(50); + +var _cues2 = _interopRequireDefault(_cues); + +var _timelineController = _dereq_(16); + +var _timelineController2 = _interopRequireDefault(_timelineController); + +var _subtitleTrackController = _dereq_(15); + +var _subtitleTrackController2 = _interopRequireDefault(_subtitleTrackController); + +var _subtitleStreamController = _dereq_(14); + +var _subtitleStreamController2 = _interopRequireDefault(_subtitleStreamController); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +//#endif + +//#endif + +//#if subtitle + +//import FetchLoader from './utils/fetch-loader'; +//#if altaudio +var hlsDefaultConfig = exports.hlsDefaultConfig = { + autoStartLoad: true, // used by stream-controller + startPosition: -1, // used by stream-controller + defaultAudioCodec: undefined, // used by stream-controller + debug: false, // used by logger + capLevelOnFPSDrop: false, // used by fps-controller + capLevelToPlayerSize: false, // used by cap-level-controller + initialLiveManifestSize: 1, // used by stream-controller + maxBufferLength: 30, // used by stream-controller + maxBufferSize: 60 * 1000 * 1000, // used by stream-controller + maxBufferHole: 0.5, // used by stream-controller + maxSeekHole: 2, // used by stream-controller + lowBufferWatchdogPeriod: 0.5, // used by stream-controller + highBufferWatchdogPeriod: 3, // used by stream-controller + nudgeOffset: 0.1, // used by stream-controller + nudgeMaxRetry: 3, // used by stream-controller + maxFragLookUpTolerance: 0.25, // used by stream-controller + liveSyncDurationCount: 3, // used by stream-controller + liveMaxLatencyDurationCount: Infinity, // used by stream-controller + liveSyncDuration: undefined, // used by stream-controller + liveMaxLatencyDuration: undefined, // used by stream-controller + maxMaxBufferLength: 600, // used by stream-controller + enableWorker: true, // used by demuxer + enableSoftwareAES: true, // used by decrypter + manifestLoadingTimeOut: 10000, // used by playlist-loader + manifestLoadingMaxRetry: 1, // used by playlist-loader + manifestLoadingRetryDelay: 1000, // used by playlist-loader + manifestLoadingMaxRetryTimeout: 64000, // used by playlist-loader + startLevel: undefined, // used by level-controller + levelLoadingTimeOut: 10000, // used by playlist-loader + levelLoadingMaxRetry: 4, // used by playlist-loader + levelLoadingRetryDelay: 1000, // used by playlist-loader + levelLoadingMaxRetryTimeout: 64000, // used by playlist-loader + fragLoadingTimeOut: 20000, // used by fragment-loader + fragLoadingMaxRetry: 6, // used by fragment-loader + fragLoadingRetryDelay: 1000, // used by fragment-loader + fragLoadingMaxRetryTimeout: 64000, // used by fragment-loader + fragLoadingLoopThreshold: 3, // used by stream-controller + startFragPrefetch: false, // used by stream-controller + fpsDroppedMonitoringPeriod: 5000, // used by fps-controller + fpsDroppedMonitoringThreshold: 0.2, // used by fps-controller + appendErrorMaxRetry: 3, // used by buffer-controller + loader: _xhrLoader2.default, + //loader: FetchLoader, + fLoader: undefined, + pLoader: undefined, + xhrSetup: undefined, + fetchSetup: undefined, + abrController: _abrController2.default, + bufferController: _bufferController2.default, + capLevelController: _capLevelController2.default, + fpsController: _fpsController2.default, + //#if altaudio + audioStreamController: _audioStreamController2.default, + audioTrackController: _audioTrackController2.default, + //#endif + //#if subtitle + subtitleStreamController: _subtitleStreamController2.default, + subtitleTrackController: _subtitleTrackController2.default, + timelineController: _timelineController2.default, + cueHandler: _cues2.default, + enableCEA708Captions: true, // used by timeline-controller + enableWebVTT: true, // used by timeline-controller + captionsTextTrack1Label: 'English', // used by timeline-controller + captionsTextTrack1LanguageCode: 'en', // used by timeline-controller + captionsTextTrack2Label: 'Spanish', // used by timeline-controller + captionsTextTrack2LanguageCode: 'es', // used by timeline-controller + //#endif + stretchShortVideoTrack: false, // used by mp4-remuxer + forceKeyFrameOnDiscontinuity: true, // used by ts-demuxer + abrEwmaFastLive: 3, // used by abr-controller + abrEwmaSlowLive: 9, // used by abr-controller + abrEwmaFastVoD: 3, // used by abr-controller + abrEwmaSlowVoD: 9, // used by abr-controller + abrEwmaDefaultEstimate: 5e5, // 500 kbps // used by abr-controller + abrBandWidthFactor: 0.95, // used by abr-controller + abrBandWidthUpFactor: 0.7, // used by abr-controller + abrMaxWithRealBitrate: false, // used by abr-controller + maxStarvationDelay: 4, // used by abr-controller + maxLoadingDelay: 4, // used by abr-controller + minAutoBitrate: 0 // used by hls +}; + +},{"10":10,"14":14,"15":15,"16":16,"5":5,"50":50,"58":58,"6":6,"7":7,"8":8,"9":9}],5:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _bufferHelper = _dereq_(37); + +var _bufferHelper2 = _interopRequireDefault(_bufferHelper); + +var _errors = _dereq_(33); + +var _logger = _dereq_(53); + +var _ewmaBandwidthEstimator = _dereq_(51); + +var _ewmaBandwidthEstimator2 = _interopRequireDefault(_ewmaBandwidthEstimator); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * simple ABR Controller + * - compute next level based on last fragment bw heuristics + * - implement an abandon rules triggered if we have less than 2 frag buffered and if computed bw shows that we risk buffer stalling + */ + +var AbrController = function (_EventHandler) { + _inherits(AbrController, _EventHandler); + + function AbrController(hls) { + _classCallCheck(this, AbrController); + + var _this = _possibleConstructorReturn(this, (AbrController.__proto__ || Object.getPrototypeOf(AbrController)).call(this, hls, _events2.default.FRAG_LOADING, _events2.default.FRAG_LOADED, _events2.default.FRAG_BUFFERED, _events2.default.ERROR)); + + _this.lastLoadedFragLevel = 0; + _this._nextAutoLevel = -1; + _this.hls = hls; + _this.onCheck = _this._abandonRulesCheck.bind(_this); + return _this; + } + + _createClass(AbrController, [{ + key: 'destroy', + value: function destroy() { + this.clearTimer(); + _eventHandler2.default.prototype.destroy.call(this); + } + }, { + key: 'onFragLoading', + value: function onFragLoading(data) { + var frag = data.frag; + if (frag.type === 'main') { + if (!this.timer) { + this.timer = setInterval(this.onCheck, 100); + } + // lazy init of bw Estimator, rationale is that we use different params for Live/VoD + // so we need to wait for stream manifest / playlist type to instantiate it. + if (!this._bwEstimator) { + var hls = this.hls, + level = data.frag.level, + isLive = hls.levels[level].details.live, + config = hls.config, + ewmaFast = void 0, + ewmaSlow = void 0; + + if (isLive) { + ewmaFast = config.abrEwmaFastLive; + ewmaSlow = config.abrEwmaSlowLive; + } else { + ewmaFast = config.abrEwmaFastVoD; + ewmaSlow = config.abrEwmaSlowVoD; + } + this._bwEstimator = new _ewmaBandwidthEstimator2.default(hls, ewmaSlow, ewmaFast, config.abrEwmaDefaultEstimate); + } + this.fragCurrent = frag; + } + } + }, { + key: '_abandonRulesCheck', + value: function _abandonRulesCheck() { + /* + monitor fragment retrieval time... + we compute expected time of arrival of the complete fragment. + we compare it to expected time of buffer starvation + */ + var hls = this.hls, + v = hls.media, + frag = this.fragCurrent, + loader = frag.loader, + minAutoLevel = hls.minAutoLevel; + + // if loader has been destroyed or loading has been aborted, stop timer and return + if (!loader || loader.stats && loader.stats.aborted) { + _logger.logger.warn('frag loader destroy or aborted, disarm abandonRules'); + this.clearTimer(); + return; + } + var stats = loader.stats; + /* only monitor frag retrieval time if + (video not paused OR first fragment being loaded(ready state === HAVE_NOTHING = 0)) AND autoswitching enabled AND not lowest level (=> means that we have several levels) */ + if (v && (!v.paused && v.playbackRate !== 0 || !v.readyState) && frag.autoLevel && frag.level) { + var requestDelay = performance.now() - stats.trequest, + playbackRate = Math.abs(v.playbackRate); + // monitor fragment load progress after half of expected fragment duration,to stabilize bitrate + if (requestDelay > 500 * frag.duration / playbackRate) { + var levels = hls.levels, + loadRate = Math.max(1, stats.bw ? stats.bw / 8 : stats.loaded * 1000 / requestDelay), + // byte/s; at least 1 byte/s to avoid division by zero + // compute expected fragment length using frag duration and level bitrate. also ensure that expected len is gte than already loaded size + level = levels[frag.level], + levelBitrate = level.realBitrate ? Math.max(level.realBitrate, level.bitrate) : level.bitrate, + expectedLen = stats.total ? stats.total : Math.max(stats.loaded, Math.round(frag.duration * levelBitrate / 8)), + pos = v.currentTime, + fragLoadedDelay = (expectedLen - stats.loaded) / loadRate, + bufferStarvationDelay = (_bufferHelper2.default.bufferInfo(v, pos, hls.config.maxBufferHole).end - pos) / playbackRate; + // consider emergency switch down only if we have less than 2 frag buffered AND + // time to finish loading current fragment is bigger than buffer starvation delay + // ie if we risk buffer starvation if bw does not increase quickly + if (bufferStarvationDelay < 2 * frag.duration / playbackRate && fragLoadedDelay > bufferStarvationDelay) { + var fragLevelNextLoadedDelay = void 0, + nextLoadLevel = void 0; + // lets iterate through lower level and try to find the biggest one that could avoid rebuffering + // we start from current level - 1 and we step down , until we find a matching level + for (nextLoadLevel = frag.level - 1; nextLoadLevel > minAutoLevel; nextLoadLevel--) { + // compute time to load next fragment at lower level + // 0.8 : consider only 80% of current bw to be conservative + // 8 = bits per byte (bps/Bps) + var levelNextBitrate = levels[nextLoadLevel].realBitrate ? Math.max(levels[nextLoadLevel].realBitrate, levels[nextLoadLevel].bitrate) : levels[nextLoadLevel].bitrate; + fragLevelNextLoadedDelay = frag.duration * levelNextBitrate / (8 * 0.8 * loadRate); + if (fragLevelNextLoadedDelay < bufferStarvationDelay) { + // we found a lower level that be rebuffering free with current estimated bw ! + break; + } + } + // only emergency switch down if it takes less time to load new fragment at lowest level instead + // of finishing loading current one ... + if (fragLevelNextLoadedDelay < fragLoadedDelay) { + _logger.logger.warn('loading too slow, abort fragment loading and switch to level ' + nextLoadLevel + ':fragLoadedDelay[' + nextLoadLevel + ']<fragLoadedDelay[' + (frag.level - 1) + '];bufferStarvationDelay:' + fragLevelNextLoadedDelay.toFixed(1) + '<' + fragLoadedDelay.toFixed(1) + ':' + bufferStarvationDelay.toFixed(1)); + // force next load level in auto mode + hls.nextLoadLevel = nextLoadLevel; + // update bw estimate for this fragment before cancelling load (this will help reducing the bw) + this._bwEstimator.sample(requestDelay, stats.loaded); + //abort fragment loading + loader.abort(); + // stop abandon rules timer + this.clearTimer(); + hls.trigger(_events2.default.FRAG_LOAD_EMERGENCY_ABORTED, { frag: frag, stats: stats }); + } + } + } + } + } + }, { + key: 'onFragLoaded', + value: function onFragLoaded(data) { + var frag = data.frag; + if (frag.type === 'main' && !isNaN(frag.sn)) { + // stop monitoring bw once frag loaded + this.clearTimer(); + // store level id after successful fragment load + this.lastLoadedFragLevel = frag.level; + // reset forced auto level value so that next level will be selected + this._nextAutoLevel = -1; + + // compute level average bitrate + if (this.hls.config.abrMaxWithRealBitrate) { + var level = this.hls.levels[frag.level]; + var loadedBytes = (level.loaded ? level.loaded.bytes : 0) + data.stats.loaded; + var loadedDuration = (level.loaded ? level.loaded.duration : 0) + data.frag.duration; + level.loaded = { bytes: loadedBytes, duration: loadedDuration }; + level.realBitrate = Math.round(8 * loadedBytes / loadedDuration); + } + // if fragment has been loaded to perform a bitrate test, + if (data.frag.bitrateTest) { + var stats = data.stats; + stats.tparsed = stats.tbuffered = stats.tload; + this.onFragBuffered(data); + } + } + } + }, { + key: 'onFragBuffered', + value: function onFragBuffered(data) { + var stats = data.stats, + frag = data.frag; + // only update stats on first frag buffering + // if same frag is loaded multiple times, it might be in browser cache, and loaded quickly + // and leading to wrong bw estimation + // on bitrate test, also only update stats once (if tload = tbuffered == on FRAG_LOADED) + if (stats.aborted !== true && frag.loadCounter === 1 && frag.type === 'main' && !isNaN(frag.sn) && (!frag.bitrateTest || stats.tload === stats.tbuffered)) { + // use tparsed-trequest instead of tbuffered-trequest to compute fragLoadingProcessing; rationale is that buffer appending only happens once media is attached + // in case we use config.startFragPrefetch while media is not attached yet, fragment might be parsed while media not attached yet, but it will only be buffered on media attached + // as a consequence it could happen really late in the process. meaning that appending duration might appears huge ... leading to underestimated throughput estimation + var fragLoadingProcessingMs = stats.tparsed - stats.trequest; + _logger.logger.log('latency/loading/parsing/append/kbps:' + Math.round(stats.tfirst - stats.trequest) + '/' + Math.round(stats.tload - stats.tfirst) + '/' + Math.round(stats.tparsed - stats.tload) + '/' + Math.round(stats.tbuffered - stats.tparsed) + '/' + Math.round(8 * stats.loaded / (stats.tbuffered - stats.trequest))); + this._bwEstimator.sample(fragLoadingProcessingMs, stats.loaded); + stats.bwEstimate = this._bwEstimator.getEstimate(); + // if fragment has been loaded to perform a bitrate test, (hls.startLevel = -1), store bitrate test delay duration + if (frag.bitrateTest) { + this.bitrateTestDelay = fragLoadingProcessingMs / 1000; + } else { + this.bitrateTestDelay = 0; + } + } + } + }, { + key: 'onError', + value: function onError(data) { + // stop timer in case of frag loading error + switch (data.details) { + case _errors.ErrorDetails.FRAG_LOAD_ERROR: + case _errors.ErrorDetails.FRAG_LOAD_TIMEOUT: + this.clearTimer(); + break; + default: + break; + } + } + }, { + key: 'clearTimer', + value: function clearTimer() { + if (this.timer) { + clearInterval(this.timer); + this.timer = null; + } + } + + // return next auto level + + }, { + key: '_findBestLevel', + value: function _findBestLevel(currentLevel, currentFragDuration, currentBw, minAutoLevel, maxAutoLevel, maxFetchDuration, bwFactor, bwUpFactor, levels) { + for (var i = maxAutoLevel; i >= minAutoLevel; i--) { + var levelInfo = levels[i], + levelDetails = levelInfo.details, + avgDuration = levelDetails ? levelDetails.totalduration / levelDetails.fragments.length : currentFragDuration, + live = levelDetails ? levelDetails.live : false, + adjustedbw = void 0; + // follow algorithm captured from stagefright : + // https://android.googlesource.com/platform/frameworks/av/+/master/media/libstagefright/httplive/LiveSession.cpp + // Pick the highest bandwidth stream below or equal to estimated bandwidth. + // consider only 80% of the available bandwidth, but if we are switching up, + // be even more conservative (70%) to avoid overestimating and immediately + // switching back. + if (i <= currentLevel) { + adjustedbw = bwFactor * currentBw; + } else { + adjustedbw = bwUpFactor * currentBw; + } + var bitrate = levels[i].realBitrate ? Math.max(levels[i].realBitrate, levels[i].bitrate) : levels[i].bitrate, + fetchDuration = bitrate * avgDuration / adjustedbw; + + _logger.logger.trace('level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: ' + i + '/' + Math.round(adjustedbw) + '/' + bitrate + '/' + avgDuration + '/' + maxFetchDuration + '/' + fetchDuration); + // if adjusted bw is greater than level bitrate AND + if (adjustedbw > bitrate && ( + // fragment fetchDuration unknown OR live stream OR fragment fetchDuration less than max allowed fetch duration, then this level matches + // we don't account for max Fetch Duration for live streams, this is to avoid switching down when near the edge of live sliding window ... + // special case to support startLevel = -1 (bitrateTest) on live streams : in that case we should not exit loop so that _findBestLevel will return -1 + !fetchDuration || live && !this.bitrateTestDelay || fetchDuration < maxFetchDuration)) { + // as we are looping from highest to lowest, this will return the best achievable quality level + return i; + } + } + // not enough time budget even with quality level 0 ... rebuffering might happen + return -1; + } + }, { + key: 'nextAutoLevel', + get: function get() { + var forcedAutoLevel = this._nextAutoLevel; + var bwEstimator = this._bwEstimator; + // in case next auto level has been forced, and bw not available or not reliable, return forced value + if (forcedAutoLevel !== -1 && (!bwEstimator || !bwEstimator.canEstimate())) { + return forcedAutoLevel; + } + // compute next level using ABR logic + var nextABRAutoLevel = this._nextABRAutoLevel; + // if forced auto level has been defined, use it to cap ABR computed quality level + if (forcedAutoLevel !== -1) { + nextABRAutoLevel = Math.min(forcedAutoLevel, nextABRAutoLevel); + } + return nextABRAutoLevel; + }, + set: function set(nextLevel) { + this._nextAutoLevel = nextLevel; + } + }, { + key: '_nextABRAutoLevel', + get: function get() { + var hls = this.hls, + maxAutoLevel = hls.maxAutoLevel, + levels = hls.levels, + config = hls.config, + minAutoLevel = hls.minAutoLevel; + var v = hls.media, + currentLevel = this.lastLoadedFragLevel, + currentFragDuration = this.fragCurrent ? this.fragCurrent.duration : 0, + pos = v ? v.currentTime : 0, + + // playbackRate is the absolute value of the playback rate; if v.playbackRate is 0, we use 1 to load as + // if we're playing back at the normal rate. + playbackRate = v && v.playbackRate !== 0 ? Math.abs(v.playbackRate) : 1.0, + avgbw = this._bwEstimator ? this._bwEstimator.getEstimate() : config.abrEwmaDefaultEstimate, + + // bufferStarvationDelay is the wall-clock time left until the playback buffer is exhausted. + bufferStarvationDelay = (_bufferHelper2.default.bufferInfo(v, pos, config.maxBufferHole).end - pos) / playbackRate; + + // First, look to see if we can find a level matching with our avg bandwidth AND that could also guarantee no rebuffering at all + var bestLevel = this._findBestLevel(currentLevel, currentFragDuration, avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay, config.abrBandWidthFactor, config.abrBandWidthUpFactor, levels); + if (bestLevel >= 0) { + return bestLevel; + } else { + _logger.logger.trace('rebuffering expected to happen, lets try to find a quality level minimizing the rebuffering'); + // not possible to get rid of rebuffering ... let's try to find level that will guarantee less than maxStarvationDelay of rebuffering + // if no matching level found, logic will return 0 + var maxStarvationDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxStarvationDelay) : config.maxStarvationDelay, + bwFactor = config.abrBandWidthFactor, + bwUpFactor = config.abrBandWidthUpFactor; + if (bufferStarvationDelay === 0) { + // in case buffer is empty, let's check if previous fragment was loaded to perform a bitrate test + var bitrateTestDelay = this.bitrateTestDelay; + if (bitrateTestDelay) { + // if it is the case, then we need to adjust our max starvation delay using maxLoadingDelay config value + // max video loading delay used in automatic start level selection : + // in that mode ABR controller will ensure that video loading time (ie the time to fetch the first fragment at lowest quality level + + // the time to fetch the fragment at the appropriate quality level is less than ```maxLoadingDelay``` ) + // cap maxLoadingDelay and ensure it is not bigger 'than bitrate test' frag duration + var maxLoadingDelay = currentFragDuration ? Math.min(currentFragDuration, config.maxLoadingDelay) : config.maxLoadingDelay; + maxStarvationDelay = maxLoadingDelay - bitrateTestDelay; + _logger.logger.trace('bitrate test took ' + Math.round(1000 * bitrateTestDelay) + 'ms, set first fragment max fetchDuration to ' + Math.round(1000 * maxStarvationDelay) + ' ms'); + // don't use conservative factor on bitrate test + bwFactor = bwUpFactor = 1; + } + } + bestLevel = this._findBestLevel(currentLevel, currentFragDuration, avgbw, minAutoLevel, maxAutoLevel, bufferStarvationDelay + maxStarvationDelay, bwFactor, bwUpFactor, levels); + return Math.max(bestLevel, 0); + } + } + }]); + + return AbrController; +}(_eventHandler2.default); + +exports.default = AbrController; + +},{"33":33,"34":34,"35":35,"37":37,"51":51,"53":53}],6:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _binarySearch = _dereq_(48); + +var _binarySearch2 = _interopRequireDefault(_binarySearch); + +var _bufferHelper = _dereq_(37); + +var _bufferHelper2 = _interopRequireDefault(_bufferHelper); + +var _demuxer = _dereq_(25); + +var _demuxer2 = _interopRequireDefault(_demuxer); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _levelHelper = _dereq_(38); + +var _levelHelper2 = _interopRequireDefault(_levelHelper); + +var _timeRanges = _dereq_(54); + +var _timeRanges2 = _interopRequireDefault(_timeRanges); + +var _errors = _dereq_(33); + +var _logger = _dereq_(53); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * Audio Stream Controller + */ + +var State = { + STOPPED: 'STOPPED', + STARTING: 'STARTING', + IDLE: 'IDLE', + PAUSED: 'PAUSED', + KEY_LOADING: 'KEY_LOADING', + FRAG_LOADING: 'FRAG_LOADING', + FRAG_LOADING_WAITING_RETRY: 'FRAG_LOADING_WAITING_RETRY', + WAITING_TRACK: 'WAITING_TRACK', + PARSING: 'PARSING', + PARSED: 'PARSED', + BUFFER_FLUSHING: 'BUFFER_FLUSHING', + ENDED: 'ENDED', + ERROR: 'ERROR', + WAITING_INIT_PTS: 'WAITING_INIT_PTS' +}; + +var AudioStreamController = function (_EventHandler) { + _inherits(AudioStreamController, _EventHandler); + + function AudioStreamController(hls) { + _classCallCheck(this, AudioStreamController); + + var _this = _possibleConstructorReturn(this, (AudioStreamController.__proto__ || Object.getPrototypeOf(AudioStreamController)).call(this, hls, _events2.default.MEDIA_ATTACHED, _events2.default.MEDIA_DETACHING, _events2.default.AUDIO_TRACKS_UPDATED, _events2.default.AUDIO_TRACK_SWITCHING, _events2.default.AUDIO_TRACK_LOADED, _events2.default.KEY_LOADED, _events2.default.FRAG_LOADED, _events2.default.FRAG_PARSING_INIT_SEGMENT, _events2.default.FRAG_PARSING_DATA, _events2.default.FRAG_PARSED, _events2.default.ERROR, _events2.default.BUFFER_CREATED, _events2.default.BUFFER_APPENDED, _events2.default.BUFFER_FLUSHED, _events2.default.INIT_PTS_FOUND)); + + _this.config = hls.config; + _this.audioCodecSwap = false; + _this.ticks = 0; + _this._state = State.STOPPED; + _this.ontick = _this.tick.bind(_this); + _this.initPTS = []; + _this.waitingFragment = null; + return _this; + } + + _createClass(AudioStreamController, [{ + key: 'destroy', + value: function destroy() { + this.stopLoad(); + if (this.timer) { + clearInterval(this.timer); + this.timer = null; + } + _eventHandler2.default.prototype.destroy.call(this); + this.state = State.STOPPED; + } + + //Signal that video PTS was found + + }, { + key: 'onInitPtsFound', + value: function onInitPtsFound(data) { + var demuxerId = data.id, + cc = data.frag.cc, + initPTS = data.initPTS; + if (demuxerId === 'main') { + //Always update the new INIT PTS + //Can change due level switch + this.initPTS[cc] = initPTS; + _logger.logger.log('InitPTS for cc:' + cc + ' found from video track:' + initPTS); + + //If we are waiting we need to demux/remux the waiting frag + //With the new initPTS + if (this.state === State.WAITING_INIT_PTS) { + _logger.logger.log('sending pending audio frag to demuxer'); + this.state = State.FRAG_LOADING; + //We have audio frag waiting or video pts + //Let process it + this.onFragLoaded(this.waitingFragment); + //Lets clean the waiting frag + this.waitingFragment = null; + } + } + } + }, { + key: 'startLoad', + value: function startLoad(startPosition) { + if (this.tracks) { + var lastCurrentTime = this.lastCurrentTime; + this.stopLoad(); + if (!this.timer) { + this.timer = setInterval(this.ontick, 100); + } + this.fragLoadError = 0; + if (lastCurrentTime > 0 && startPosition === -1) { + _logger.logger.log('audio:override startPosition with lastCurrentTime @' + lastCurrentTime.toFixed(3)); + this.state = State.IDLE; + } else { + this.lastCurrentTime = this.startPosition ? this.startPosition : startPosition; + this.state = State.STARTING; + } + this.nextLoadPosition = this.startPosition = this.lastCurrentTime; + this.tick(); + } else { + this.startPosition = startPosition; + this.state = State.STOPPED; + } + } + }, { + key: 'stopLoad', + value: function stopLoad() { + var frag = this.fragCurrent; + if (frag) { + if (frag.loader) { + frag.loader.abort(); + } + this.fragCurrent = null; + } + this.fragPrevious = null; + if (this.demuxer) { + this.demuxer.destroy(); + this.demuxer = null; + } + this.state = State.STOPPED; + } + }, { + key: 'tick', + value: function tick() { + this.ticks++; + if (this.ticks === 1) { + this.doTick(); + if (this.ticks > 1) { + setTimeout(this.tick, 1); + } + this.ticks = 0; + } + } + }, { + key: 'doTick', + value: function doTick() { + var pos, + track, + trackDetails, + hls = this.hls, + config = hls.config; + //logger.log('audioStream:' + this.state); + switch (this.state) { + case State.ERROR: + //don't do anything in error state to avoid breaking further ... + case State.PAUSED: + //don't do anything in paused state either ... + case State.BUFFER_FLUSHING: + break; + case State.STARTING: + this.state = State.WAITING_TRACK; + this.loadedmetadata = false; + break; + case State.IDLE: + var tracks = this.tracks; + // audio tracks not received => exit loop + if (!tracks) { + break; + } + // if video not attached AND + // start fragment already requested OR start frag prefetch disable + // exit loop + // => if media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop + if (!this.media && (this.startFragRequested || !config.startFragPrefetch)) { + break; + } + // determine next candidate fragment to be loaded, based on current position and + // end of buffer position + // if we have not yet loaded any fragment, start loading from start position + if (this.loadedmetadata) { + pos = this.media.currentTime; + } else { + pos = this.nextLoadPosition; + } + var media = this.mediaBuffer ? this.mediaBuffer : this.media, + bufferInfo = _bufferHelper2.default.bufferInfo(media, pos, config.maxBufferHole), + bufferLen = bufferInfo.len, + bufferEnd = bufferInfo.end, + fragPrevious = this.fragPrevious, + maxBufLen = config.maxMaxBufferLength, + audioSwitch = this.audioSwitch, + trackId = this.trackId; + + // if buffer length is less than maxBufLen try to load a new fragment + if ((bufferLen < maxBufLen || audioSwitch) && trackId < tracks.length) { + trackDetails = tracks[trackId].details; + // if track info not retrieved yet, switch state and wait for track retrieval + if (typeof trackDetails === 'undefined') { + this.state = State.WAITING_TRACK; + break; + } + + // we just got done loading the final fragment, check if we need to finalize media stream + if (!audioSwitch && !trackDetails.live && fragPrevious && fragPrevious.sn === trackDetails.endSN) { + // if we are not seeking or if we are seeking but everything (almost) til the end is buffered, let's signal eos + // we don't compare exactly media.duration === bufferInfo.end as there could be some subtle media duration difference when switching + // between different renditions. using half frag duration should help cope with these cases. + if (!this.media.seeking || this.media.duration - bufferEnd < fragPrevious.duration / 2) { + // Finalize the media stream + this.hls.trigger(_events2.default.BUFFER_EOS, { type: 'audio' }); + this.state = State.ENDED; + break; + } + } + + // find fragment index, contiguous with end of buffer position + var fragments = trackDetails.fragments, + fragLen = fragments.length, + start = fragments[0].start, + end = fragments[fragLen - 1].start + fragments[fragLen - 1].duration, + frag = void 0; + + // When switching audio track, reload audio as close as possible to currentTime + if (audioSwitch) { + if (trackDetails.live && !trackDetails.PTSKnown) { + _logger.logger.log('switching audiotrack, live stream, unknown PTS,load first fragment'); + bufferEnd = 0; + } else { + bufferEnd = pos; + // if currentTime (pos) is less than alt audio playlist start time, it means that alt audio is ahead of currentTime + if (trackDetails.PTSKnown && pos < start) { + // if everything is buffered from pos to start or if audio buffer upfront, let's seek to start + if (bufferInfo.end > start || bufferInfo.nextStart) { + _logger.logger.log('alt audio track ahead of main track, seek to start of alt audio track'); + this.media.currentTime = start + 0.05; + } else { + return; + } + } + } + } + if (trackDetails.initSegment && !trackDetails.initSegment.data) { + frag = trackDetails.initSegment; + } + // if bufferEnd before start of playlist, load first fragment + else if (bufferEnd <= start) { + frag = fragments[0]; + if (trackDetails.live && frag.loadIdx && frag.loadIdx === this.fragLoadIdx) { + // we just loaded this first fragment, and we are still lagging behind the start of the live playlist + // let's force seek to start + var nextBuffered = bufferInfo.nextStart ? bufferInfo.nextStart : start; + _logger.logger.log('no alt audio available @currentTime:' + this.media.currentTime + ', seeking @' + (nextBuffered + 0.05)); + this.media.currentTime = nextBuffered + 0.05; + return; + } + } else { + var foundFrag = void 0; + var maxFragLookUpTolerance = config.maxFragLookUpTolerance; + var fragNext = fragPrevious ? fragments[fragPrevious.sn - fragments[0].sn + 1] : undefined; + var fragmentWithinToleranceTest = function fragmentWithinToleranceTest(candidate) { + // offset should be within fragment boundary - config.maxFragLookUpTolerance + // this is to cope with situations like + // bufferEnd = 9.991 + // frag[Ø] : [0,10] + // frag[1] : [10,20] + // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here + // frag start frag start+duration + // |-----------------------------| + // <---> <---> + // ...--------><-----------------------------><---------.... + // previous frag matching fragment next frag + // return -1 return 0 return 1 + //logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`); + // Set the lookup tolerance to be small enough to detect the current segment - ensures we don't skip over very small segments + var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration); + if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) { + return 1; + } // if maxFragLookUpTolerance will have negative value then don't return -1 for first element + else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) { + return -1; + } + return 0; + }; + + if (bufferEnd < end) { + if (bufferEnd > end - maxFragLookUpTolerance) { + maxFragLookUpTolerance = 0; + } + // Prefer the next fragment if it's within tolerance + if (fragNext && !fragmentWithinToleranceTest(fragNext)) { + foundFrag = fragNext; + } else { + foundFrag = _binarySearch2.default.search(fragments, fragmentWithinToleranceTest); + } + } else { + // reach end of playlist + foundFrag = fragments[fragLen - 1]; + } + if (foundFrag) { + frag = foundFrag; + start = foundFrag.start; + //logger.log('find SN matching with pos:' + bufferEnd + ':' + frag.sn); + if (fragPrevious && frag.level === fragPrevious.level && frag.sn === fragPrevious.sn) { + if (frag.sn < trackDetails.endSN) { + frag = fragments[frag.sn + 1 - trackDetails.startSN]; + _logger.logger.log('SN just loaded, load next one: ' + frag.sn); + } else { + frag = null; + } + } + } + } + if (frag) { + //logger.log(' loading frag ' + i +',pos/bufEnd:' + pos.toFixed(3) + '/' + bufferEnd.toFixed(3)); + if (frag.decryptdata && frag.decryptdata.uri != null && frag.decryptdata.key == null) { + _logger.logger.log('Loading key for ' + frag.sn + ' of [' + trackDetails.startSN + ' ,' + trackDetails.endSN + '],track ' + trackId); + this.state = State.KEY_LOADING; + hls.trigger(_events2.default.KEY_LOADING, { frag: frag }); + } else { + _logger.logger.log('Loading ' + frag.sn + ' of [' + trackDetails.startSN + ' ,' + trackDetails.endSN + '],track ' + trackId + ', currentTime:' + pos + ',bufferEnd:' + bufferEnd.toFixed(3)); + // ensure that we are not reloading the same fragments in loop ... + if (this.fragLoadIdx !== undefined) { + this.fragLoadIdx++; + } else { + this.fragLoadIdx = 0; + } + if (frag.loadCounter) { + frag.loadCounter++; + var maxThreshold = config.fragLoadingLoopThreshold; + // if this frag has already been loaded 3 times, and if it has been reloaded recently + if (frag.loadCounter > maxThreshold && Math.abs(this.fragLoadIdx - frag.loadIdx) < maxThreshold) { + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.FRAG_LOOP_LOADING_ERROR, fatal: false, frag: frag }); + return; + } + } else { + frag.loadCounter = 1; + } + frag.loadIdx = this.fragLoadIdx; + this.fragCurrent = frag; + this.startFragRequested = true; + if (!isNaN(frag.sn)) { + this.nextLoadPosition = frag.start + frag.duration; + } + hls.trigger(_events2.default.FRAG_LOADING, { frag: frag }); + this.state = State.FRAG_LOADING; + } + } + } + break; + case State.WAITING_TRACK: + track = this.tracks[this.trackId]; + // check if playlist is already loaded + if (track && track.details) { + this.state = State.IDLE; + } + break; + case State.FRAG_LOADING_WAITING_RETRY: + var now = performance.now(); + var retryDate = this.retryDate; + media = this.media; + var isSeeking = media && media.seeking; + // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading + if (!retryDate || now >= retryDate || isSeeking) { + _logger.logger.log('audioStreamController: retryDate reached, switch back to IDLE state'); + this.state = State.IDLE; + } + break; + case State.WAITING_INIT_PTS: + case State.STOPPED: + case State.FRAG_LOADING: + case State.PARSING: + case State.PARSED: + case State.ENDED: + break; + default: + break; + } + } + }, { + key: 'onMediaAttached', + value: function onMediaAttached(data) { + var media = this.media = this.mediaBuffer = data.media; + this.onvseeking = this.onMediaSeeking.bind(this); + this.onvended = this.onMediaEnded.bind(this); + media.addEventListener('seeking', this.onvseeking); + media.addEventListener('ended', this.onvended); + var config = this.config; + if (this.tracks && config.autoStartLoad) { + this.startLoad(config.startPosition); + } + } + }, { + key: 'onMediaDetaching', + value: function onMediaDetaching() { + var media = this.media; + if (media && media.ended) { + _logger.logger.log('MSE detaching and video ended, reset startPosition'); + this.startPosition = this.lastCurrentTime = 0; + } + + // reset fragment loading counter on MSE detaching to avoid reporting FRAG_LOOP_LOADING_ERROR after error recovery + var tracks = this.tracks; + if (tracks) { + // reset fragment load counter + tracks.forEach(function (track) { + if (track.details) { + track.details.fragments.forEach(function (fragment) { + fragment.loadCounter = undefined; + }); + } + }); + } + // remove video listeners + if (media) { + media.removeEventListener('seeking', this.onvseeking); + media.removeEventListener('ended', this.onvended); + this.onvseeking = this.onvseeked = this.onvended = null; + } + this.media = this.mediaBuffer = null; + this.loadedmetadata = false; + this.stopLoad(); + } + }, { + key: 'onMediaSeeking', + value: function onMediaSeeking() { + if (this.state === State.ENDED) { + // switch to IDLE state to check for potential new fragment + this.state = State.IDLE; + } + if (this.media) { + this.lastCurrentTime = this.media.currentTime; + } + // avoid reporting fragment loop loading error in case user is seeking several times on same position + if (this.fragLoadIdx !== undefined) { + this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold; + } + // tick to speed up processing + this.tick(); + } + }, { + key: 'onMediaEnded', + value: function onMediaEnded() { + // reset startPosition and lastCurrentTime to restart playback @ stream beginning + this.startPosition = this.lastCurrentTime = 0; + } + }, { + key: 'onAudioTracksUpdated', + value: function onAudioTracksUpdated(data) { + _logger.logger.log('audio tracks updated'); + this.tracks = data.audioTracks; + } + }, { + key: 'onAudioTrackSwitching', + value: function onAudioTrackSwitching(data) { + // if any URL found on new audio track, it is an alternate audio track + var altAudio = !!data.url; + this.trackId = data.id; + this.state = State.IDLE; + + this.fragCurrent = null; + this.state = State.PAUSED; + this.waitingFragment = null; + // destroy useless demuxer when switching audio to main + if (!altAudio) { + if (this.demuxer) { + this.demuxer.destroy(); + this.demuxer = null; + } + } else { + // switching to audio track, start timer if not already started + if (!this.timer) { + this.timer = setInterval(this.ontick, 100); + } + } + + //should we switch tracks ? + if (altAudio) { + this.audioSwitch = true; + //main audio track are handled by stream-controller, just do something if switching to alt audio track + this.state = State.IDLE; + // increase fragment load Index to avoid frag loop loading error after buffer flush + if (this.fragLoadIdx !== undefined) { + this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold; + } + } + this.tick(); + } + }, { + key: 'onAudioTrackLoaded', + value: function onAudioTrackLoaded(data) { + var newDetails = data.details, + trackId = data.id, + track = this.tracks[trackId], + duration = newDetails.totalduration, + sliding = 0; + + _logger.logger.log('track ' + trackId + ' loaded [' + newDetails.startSN + ',' + newDetails.endSN + '],duration:' + duration); + + if (newDetails.live) { + var curDetails = track.details; + if (curDetails && newDetails.fragments.length > 0) { + // we already have details for that level, merge them + _levelHelper2.default.mergeDetails(curDetails, newDetails); + sliding = newDetails.fragments[0].start; + // TODO + //this.liveSyncPosition = this.computeLivePosition(sliding, curDetails); + if (newDetails.PTSKnown) { + _logger.logger.log('live audio playlist sliding:' + sliding.toFixed(3)); + } else { + _logger.logger.log('live audio playlist - outdated PTS, unknown sliding'); + } + } else { + newDetails.PTSKnown = false; + _logger.logger.log('live audio playlist - first load, unknown sliding'); + } + } else { + newDetails.PTSKnown = false; + } + track.details = newDetails; + + // compute start position + if (!this.startFragRequested) { + // compute start position if set to -1. use it straight away if value is defined + if (this.startPosition === -1) { + // first, check if start time offset has been set in playlist, if yes, use this value + var startTimeOffset = newDetails.startTimeOffset; + if (!isNaN(startTimeOffset)) { + _logger.logger.log('start time offset found in playlist, adjust startPosition to ' + startTimeOffset); + this.startPosition = startTimeOffset; + } else { + this.startPosition = 0; + } + } + this.nextLoadPosition = this.startPosition; + } + // only switch batck to IDLE state if we were waiting for track to start downloading a new fragment + if (this.state === State.WAITING_TRACK) { + this.state = State.IDLE; + } + //trigger handler right now + this.tick(); + } + }, { + key: 'onKeyLoaded', + value: function onKeyLoaded() { + if (this.state === State.KEY_LOADING) { + this.state = State.IDLE; + this.tick(); + } + } + }, { + key: 'onFragLoaded', + value: function onFragLoaded(data) { + var fragCurrent = this.fragCurrent, + fragLoaded = data.frag; + if (this.state === State.FRAG_LOADING && fragCurrent && fragLoaded.type === 'audio' && fragLoaded.level === fragCurrent.level && fragLoaded.sn === fragCurrent.sn) { + var track = this.tracks[this.trackId], + details = track.details, + duration = details.totalduration, + trackId = fragCurrent.level, + sn = fragCurrent.sn, + cc = fragCurrent.cc, + audioCodec = this.config.defaultAudioCodec || track.audioCodec || 'mp4a.40.2', + stats = this.stats = data.stats; + if (sn === 'initSegment') { + this.state = State.IDLE; + + stats.tparsed = stats.tbuffered = performance.now(); + details.initSegment.data = data.payload; + this.hls.trigger(_events2.default.FRAG_BUFFERED, { stats: stats, frag: fragCurrent, id: 'audio' }); + this.tick(); + } else { + this.state = State.PARSING; + // transmux the MPEG-TS data to ISO-BMFF segments + this.appended = false; + if (!this.demuxer) { + this.demuxer = new _demuxer2.default(this.hls, 'audio'); + } + //Check if we have video initPTS + // If not we need to wait for it + var initPTS = this.initPTS[cc]; + var initSegmentData = details.initSegment ? details.initSegment.data : []; + if (details.initSegment || initPTS !== undefined) { + this.pendingBuffering = true; + _logger.logger.log('Demuxing ' + sn + ' of [' + details.startSN + ' ,' + details.endSN + '],track ' + trackId); + // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live) + var accurateTimeOffset = false; //details.PTSKnown || !details.live; + this.demuxer.push(data.payload, initSegmentData, audioCodec, null, fragCurrent, duration, accurateTimeOffset, initPTS); + } else { + _logger.logger.log('unknown video PTS for continuity counter ' + cc + ', waiting for video PTS before demuxing audio frag ' + sn + ' of [' + details.startSN + ' ,' + details.endSN + '],track ' + trackId); + this.waitingFragment = data; + this.state = State.WAITING_INIT_PTS; + } + } + } + this.fragLoadError = 0; + } + }, { + key: 'onFragParsingInitSegment', + value: function onFragParsingInitSegment(data) { + var fragCurrent = this.fragCurrent; + var fragNew = data.frag; + if (fragCurrent && data.id === 'audio' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === State.PARSING) { + var tracks = data.tracks, + track = void 0; + + // delete any video track found on audio demuxer + if (tracks.video) { + delete tracks.video; + } + + // include levelCodec in audio and video tracks + track = tracks.audio; + if (track) { + track.levelCodec = 'mp4a.40.2'; + track.id = data.id; + this.hls.trigger(_events2.default.BUFFER_CODECS, tracks); + _logger.logger.log('audio track:audio,container:' + track.container + ',codecs[level/parsed]=[' + track.levelCodec + '/' + track.codec + ']'); + var initSegment = track.initSegment; + if (initSegment) { + var appendObj = { type: 'audio', data: initSegment, parent: 'audio', content: 'initSegment' }; + if (this.audioSwitch) { + this.pendingData = [appendObj]; + } else { + this.appended = true; + // arm pending Buffering flag before appending a segment + this.pendingBuffering = true; + this.hls.trigger(_events2.default.BUFFER_APPENDING, appendObj); + } + } + //trigger handler right now + this.tick(); + } + } + } + }, { + key: 'onFragParsingData', + value: function onFragParsingData(data) { + var _this2 = this; + + var fragCurrent = this.fragCurrent; + var fragNew = data.frag; + if (fragCurrent && data.id === 'audio' && data.type === 'audio' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === State.PARSING) { + var trackId = this.trackId, + track = this.tracks[trackId], + hls = this.hls; + + if (isNaN(data.endPTS)) { + data.endPTS = data.startPTS + fragCurrent.duration; + data.endDTS = data.startDTS + fragCurrent.duration; + } + + _logger.logger.log('parsed ' + data.type + ',PTS:[' + data.startPTS.toFixed(3) + ',' + data.endPTS.toFixed(3) + '],DTS:[' + data.startDTS.toFixed(3) + '/' + data.endDTS.toFixed(3) + '],nb:' + data.nb); + _levelHelper2.default.updateFragPTSDTS(track.details, fragCurrent, data.startPTS, data.endPTS); + + var audioSwitch = this.audioSwitch, + media = this.media, + appendOnBufferFlush = false; + //Only flush audio from old audio tracks when PTS is known on new audio track + if (audioSwitch && media) { + if (media.readyState) { + var currentTime = media.currentTime; + _logger.logger.log('switching audio track : currentTime:' + currentTime); + if (currentTime >= data.startPTS) { + _logger.logger.log('switching audio track : flushing all audio'); + this.state = State.BUFFER_FLUSHING; + hls.trigger(_events2.default.BUFFER_FLUSHING, { startOffset: 0, endOffset: Number.POSITIVE_INFINITY, type: 'audio' }); + appendOnBufferFlush = true; + //Lets announce that the initial audio track switch flush occur + this.audioSwitch = false; + hls.trigger(_events2.default.AUDIO_TRACK_SWITCHED, { id: trackId }); + } + } else { + //Lets announce that the initial audio track switch flush occur + this.audioSwitch = false; + hls.trigger(_events2.default.AUDIO_TRACK_SWITCHED, { id: trackId }); + } + } + + var pendingData = this.pendingData; + if (!this.audioSwitch) { + [data.data1, data.data2].forEach(function (buffer) { + if (buffer && buffer.length) { + pendingData.push({ type: data.type, data: buffer, parent: 'audio', content: 'data' }); + } + }); + if (!appendOnBufferFlush && pendingData.length) { + pendingData.forEach(function (appendObj) { + // only append in PARSING state (rationale is that an appending error could happen synchronously on first segment appending) + // in that case it is useless to append following segments + if (_this2.state === State.PARSING) { + // arm pending Buffering flag before appending a segment + _this2.pendingBuffering = true; + _this2.hls.trigger(_events2.default.BUFFER_APPENDING, appendObj); + } + }); + this.pendingData = []; + this.appended = true; + } + } + //trigger handler right now + this.tick(); + } + } + }, { + key: 'onFragParsed', + value: function onFragParsed(data) { + var fragCurrent = this.fragCurrent; + var fragNew = data.frag; + if (fragCurrent && data.id === 'audio' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === State.PARSING) { + this.stats.tparsed = performance.now(); + this.state = State.PARSED; + this._checkAppendedParsed(); + } + } + }, { + key: 'onBufferCreated', + value: function onBufferCreated(data) { + var audioTrack = data.tracks.audio; + if (audioTrack) { + this.mediaBuffer = audioTrack.buffer; + this.loadedmetadata = true; + } + } + }, { + key: 'onBufferAppended', + value: function onBufferAppended(data) { + if (data.parent === 'audio') { + var state = this.state; + if (state === State.PARSING || state === State.PARSED) { + // check if all buffers have been appended + this.pendingBuffering = data.pending > 0; + this._checkAppendedParsed(); + } + } + } + }, { + key: '_checkAppendedParsed', + value: function _checkAppendedParsed() { + //trigger handler right now + if (this.state === State.PARSED && (!this.appended || !this.pendingBuffering)) { + var frag = this.fragCurrent, + stats = this.stats, + hls = this.hls; + if (frag) { + this.fragPrevious = frag; + stats.tbuffered = performance.now(); + hls.trigger(_events2.default.FRAG_BUFFERED, { stats: stats, frag: frag, id: 'audio' }); + var media = this.mediaBuffer ? this.mediaBuffer : this.media; + _logger.logger.log('audio buffered : ' + _timeRanges2.default.toString(media.buffered)); + if (this.audioSwitch && this.appended) { + this.audioSwitch = false; + hls.trigger(_events2.default.AUDIO_TRACK_SWITCHED, { id: this.trackId }); + } + this.state = State.IDLE; + } + this.tick(); + } + } + }, { + key: 'onError', + value: function onError(data) { + var frag = data.frag; + // don't handle frag error not related to audio fragment + if (frag && frag.type !== 'audio') { + return; + } + switch (data.details) { + case _errors.ErrorDetails.FRAG_LOAD_ERROR: + case _errors.ErrorDetails.FRAG_LOAD_TIMEOUT: + if (!data.fatal) { + var loadError = this.fragLoadError; + if (loadError) { + loadError++; + } else { + loadError = 1; + } + var config = this.config; + if (loadError <= config.fragLoadingMaxRetry) { + this.fragLoadError = loadError; + // reset load counter to avoid frag loop loading error + frag.loadCounter = 0; + // exponential backoff capped to config.fragLoadingMaxRetryTimeout + var delay = Math.min(Math.pow(2, loadError - 1) * config.fragLoadingRetryDelay, config.fragLoadingMaxRetryTimeout); + _logger.logger.warn('audioStreamController: frag loading failed, retry in ' + delay + ' ms'); + this.retryDate = performance.now() + delay; + // retry loading state + this.state = State.FRAG_LOADING_WAITING_RETRY; + } else { + _logger.logger.error('audioStreamController: ' + data.details + ' reaches max retry, redispatch as fatal ...'); + // switch error to fatal + data.fatal = true; + this.state = State.ERROR; + } + } + break; + case _errors.ErrorDetails.FRAG_LOOP_LOADING_ERROR: + case _errors.ErrorDetails.AUDIO_TRACK_LOAD_ERROR: + case _errors.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT: + case _errors.ErrorDetails.KEY_LOAD_ERROR: + case _errors.ErrorDetails.KEY_LOAD_TIMEOUT: + // when in ERROR state, don't switch back to IDLE state in case a non-fatal error is received + if (this.state !== State.ERROR) { + // if fatal error, stop processing, otherwise move to IDLE to retry loading + this.state = data.fatal ? State.ERROR : State.IDLE; + _logger.logger.warn('audioStreamController: ' + data.details + ' while loading frag,switch to ' + this.state + ' state ...'); + } + break; + case _errors.ErrorDetails.BUFFER_FULL_ERROR: + // if in appending state + if (data.parent === 'audio' && (this.state === State.PARSING || this.state === State.PARSED)) { + var media = this.mediaBuffer, + currentTime = this.media.currentTime, + mediaBuffered = media && _bufferHelper2.default.isBuffered(media, currentTime) && _bufferHelper2.default.isBuffered(media, currentTime + 0.5); + // reduce max buf len if current position is buffered + if (mediaBuffered) { + var _config = this.config; + if (_config.maxMaxBufferLength >= _config.maxBufferLength) { + // reduce max buffer length as it might be too high. we do this to avoid loop flushing ... + _config.maxMaxBufferLength /= 2; + _logger.logger.warn('audio:reduce max buffer length to ' + _config.maxMaxBufferLength + 's'); + // increase fragment load Index to avoid frag loop loading error after buffer flush + this.fragLoadIdx += 2 * _config.fragLoadingLoopThreshold; + } + this.state = State.IDLE; + } else { + // current position is not buffered, but browser is still complaining about buffer full error + // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708 + // in that case flush the whole audio buffer to recover + _logger.logger.warn('buffer full error also media.currentTime is not buffered, flush audio buffer'); + this.fragCurrent = null; + // flush everything + this.state = State.BUFFER_FLUSHING; + this.hls.trigger(_events2.default.BUFFER_FLUSHING, { startOffset: 0, endOffset: Number.POSITIVE_INFINITY, type: 'audio' }); + } + } + break; + default: + break; + } + } + }, { + key: 'onBufferFlushed', + value: function onBufferFlushed() { + var _this3 = this; + + var pendingData = this.pendingData; + if (pendingData && pendingData.length) { + _logger.logger.log('appending pending audio data on Buffer Flushed'); + pendingData.forEach(function (appendObj) { + _this3.hls.trigger(_events2.default.BUFFER_APPENDING, appendObj); + }); + this.appended = true; + this.pendingData = []; + this.state = State.PARSED; + } else { + // move to IDLE once flush complete. this should trigger new fragment loading + this.state = State.IDLE; + // reset reference to frag + this.fragPrevious = null; + this.tick(); + } + } + }, { + key: 'state', + set: function set(nextState) { + if (this.state !== nextState) { + var previousState = this.state; + this._state = nextState; + _logger.logger.log('audio stream:' + previousState + '->' + nextState); + } + }, + get: function get() { + return this._state; + } + }]); + + return AudioStreamController; +}(_eventHandler2.default); + +exports.default = AudioStreamController; + +},{"25":25,"33":33,"34":34,"35":35,"37":37,"38":38,"48":48,"53":53,"54":54}],7:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _logger = _dereq_(53); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * audio track controller + */ + +var AudioTrackController = function (_EventHandler) { + _inherits(AudioTrackController, _EventHandler); + + function AudioTrackController(hls) { + _classCallCheck(this, AudioTrackController); + + var _this = _possibleConstructorReturn(this, (AudioTrackController.__proto__ || Object.getPrototypeOf(AudioTrackController)).call(this, hls, _events2.default.MANIFEST_LOADING, _events2.default.MANIFEST_LOADED, _events2.default.AUDIO_TRACK_LOADED)); + + _this.ticks = 0; + _this.ontick = _this.tick.bind(_this); + return _this; + } + + _createClass(AudioTrackController, [{ + key: 'destroy', + value: function destroy() { + _eventHandler2.default.prototype.destroy.call(this); + } + }, { + key: 'tick', + value: function tick() { + this.ticks++; + if (this.ticks === 1) { + this.doTick(); + if (this.ticks > 1) { + setTimeout(this.tick, 1); + } + this.ticks = 0; + } + } + }, { + key: 'doTick', + value: function doTick() { + this.updateTrack(this.trackId); + } + }, { + key: 'onManifestLoading', + value: function onManifestLoading() { + // reset audio tracks on manifest loading + this.tracks = []; + this.trackId = -1; + } + }, { + key: 'onManifestLoaded', + value: function onManifestLoaded(data) { + var _this2 = this; + + var tracks = data.audioTracks || []; + var defaultFound = false; + this.tracks = tracks; + this.hls.trigger(_events2.default.AUDIO_TRACKS_UPDATED, { audioTracks: tracks }); + // loop through available audio tracks and autoselect default if needed + var id = 0; + tracks.forEach(function (track) { + if (track.default) { + _this2.audioTrack = id; + defaultFound = true; + return; + } + id++; + }); + if (defaultFound === false && tracks.length) { + _logger.logger.log('no default audio track defined, use first audio track as default'); + this.audioTrack = 0; + } + } + }, { + key: 'onAudioTrackLoaded', + value: function onAudioTrackLoaded(data) { + if (data.id < this.tracks.length) { + _logger.logger.log('audioTrack ' + data.id + ' loaded'); + this.tracks[data.id].details = data.details; + // check if current playlist is a live playlist + if (data.details.live && !this.timer) { + // if live playlist we will have to reload it periodically + // set reload period to playlist target duration + this.timer = setInterval(this.ontick, 1000 * data.details.targetduration); + } + if (!data.details.live && this.timer) { + // playlist is not live and timer is armed : stopping it + clearInterval(this.timer); + this.timer = null; + } + } + } + + /** get alternate audio tracks list from playlist **/ + + }, { + key: 'setAudioTrackInternal', + value: function setAudioTrackInternal(newId) { + // check if level idx is valid + if (newId >= 0 && newId < this.tracks.length) { + // stopping live reloading timer if any + if (this.timer) { + clearInterval(this.timer); + this.timer = null; + } + this.trackId = newId; + _logger.logger.log('switching to audioTrack ' + newId); + var audioTrack = this.tracks[newId], + hls = this.hls, + type = audioTrack.type, + url = audioTrack.url, + eventObj = { id: newId, type: type, url: url }; + // keep AUDIO_TRACK_SWITCH for legacy reason + hls.trigger(_events2.default.AUDIO_TRACK_SWITCH, eventObj); + hls.trigger(_events2.default.AUDIO_TRACK_SWITCHING, eventObj); + // check if we need to load playlist for this audio Track + var details = audioTrack.details; + if (url && (details === undefined || details.live === true)) { + // track not retrieved yet, or live playlist we need to (re)load it + _logger.logger.log('(re)loading playlist for audioTrack ' + newId); + hls.trigger(_events2.default.AUDIO_TRACK_LOADING, { url: url, id: newId }); + } + } + } + }, { + key: 'updateTrack', + value: function updateTrack(newId) { + // check if level idx is valid + if (newId >= 0 && newId < this.tracks.length) { + // stopping live reloading timer if any + if (this.timer) { + clearInterval(this.timer); + this.timer = null; + } + this.trackId = newId; + _logger.logger.log('updating audioTrack ' + newId); + var audioTrack = this.tracks[newId], + url = audioTrack.url; + // check if we need to load playlist for this audio Track + var details = audioTrack.details; + if (url && (details === undefined || details.live === true)) { + // track not retrieved yet, or live playlist we need to (re)load it + _logger.logger.log('(re)loading playlist for audioTrack ' + newId); + this.hls.trigger(_events2.default.AUDIO_TRACK_LOADING, { url: url, id: newId }); + } + } + } + }, { + key: 'audioTracks', + get: function get() { + return this.tracks; + } + + /** get index of the selected audio track (index in audio track lists) **/ + + }, { + key: 'audioTrack', + get: function get() { + return this.trackId; + } + + /** select an audio track, based on its index in audio track lists**/ + , + set: function set(audioTrackId) { + if (this.trackId !== audioTrackId || this.tracks[audioTrackId].details === undefined) { + this.setAudioTrackInternal(audioTrackId); + } + } + }]); + + return AudioTrackController; +}(_eventHandler2.default); + +exports.default = AudioTrackController; + +},{"34":34,"35":35,"53":53}],8:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _logger = _dereq_(53); + +var _errors = _dereq_(33); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * Buffer Controller + */ + +var BufferController = function (_EventHandler) { + _inherits(BufferController, _EventHandler); + + function BufferController(hls) { + _classCallCheck(this, BufferController); + + // the value that we have set mediasource.duration to + // (the actual duration may be tweaked slighly by the browser) + var _this = _possibleConstructorReturn(this, (BufferController.__proto__ || Object.getPrototypeOf(BufferController)).call(this, hls, _events2.default.MEDIA_ATTACHING, _events2.default.MEDIA_DETACHING, _events2.default.MANIFEST_PARSED, _events2.default.BUFFER_RESET, _events2.default.BUFFER_APPENDING, _events2.default.BUFFER_CODECS, _events2.default.BUFFER_EOS, _events2.default.BUFFER_FLUSHING, _events2.default.LEVEL_PTS_UPDATED, _events2.default.LEVEL_UPDATED)); + + _this._msDuration = null; + // the value that we want to set mediaSource.duration to + _this._levelDuration = null; + + // Source Buffer listeners + _this.onsbue = _this.onSBUpdateEnd.bind(_this); + _this.onsbe = _this.onSBUpdateError.bind(_this); + _this.pendingTracks = {}; + _this.tracks = {}; + return _this; + } + + _createClass(BufferController, [{ + key: 'destroy', + value: function destroy() { + _eventHandler2.default.prototype.destroy.call(this); + } + }, { + key: 'onLevelPtsUpdated', + value: function onLevelPtsUpdated(data) { + var type = data.type; + var audioTrack = this.tracks.audio; + + // Adjusting `SourceBuffer.timestampOffset` (desired point in the timeline where the next frames should be appended) + // in Chrome browser when we detect MPEG audio container and time delta between level PTS and `SourceBuffer.timestampOffset` + // is greater than 100ms (this is enough to handle seek for VOD or level change for LIVE videos). At the time of change we issue + // `SourceBuffer.abort()` and adjusting `SourceBuffer.timestampOffset` if `SourceBuffer.updating` is false or awaiting `updateend` + // event if SB is in updating state. + // More info here: https://github.com/video-dev/hls.js/issues/332#issuecomment-257986486 + + if (type === 'audio' && audioTrack && audioTrack.container === 'audio/mpeg') { + // Chrome audio mp3 track + var audioBuffer = this.sourceBuffer.audio; + var delta = Math.abs(audioBuffer.timestampOffset - data.start); + + // adjust timestamp offset if time delta is greater than 100ms + if (delta > 0.1) { + var updating = audioBuffer.updating; + + try { + audioBuffer.abort(); + } catch (err) { + updating = true; + _logger.logger.warn('can not abort audio buffer: ' + err); + } + + if (!updating) { + _logger.logger.warn('change mpeg audio timestamp offset from ' + audioBuffer.timestampOffset + ' to ' + data.start); + audioBuffer.timestampOffset = data.start; + } else { + this.audioTimestampOffset = data.start; + } + } + } + } + }, { + key: 'onManifestParsed', + value: function onManifestParsed(data) { + var audioExpected = data.audio, + videoExpected = data.video, + sourceBufferNb = 0; + // in case of alt audio 2 BUFFER_CODECS events will be triggered, one per stream controller + // sourcebuffers will be created all at once when the expected nb of tracks will be reached + // in case alt audio is not used, only one BUFFER_CODEC event will be fired from main stream controller + // it will contain the expected nb of source buffers, no need to compute it + if (data.altAudio && (audioExpected || videoExpected)) { + sourceBufferNb = (audioExpected ? 1 : 0) + (videoExpected ? 1 : 0); + _logger.logger.log(sourceBufferNb + ' sourceBuffer(s) expected'); + } + this.sourceBufferNb = sourceBufferNb; + } + }, { + key: 'onMediaAttaching', + value: function onMediaAttaching(data) { + var media = this.media = data.media; + if (media) { + // setup the media source + var ms = this.mediaSource = new MediaSource(); + //Media Source listeners + this.onmso = this.onMediaSourceOpen.bind(this); + this.onmse = this.onMediaSourceEnded.bind(this); + this.onmsc = this.onMediaSourceClose.bind(this); + ms.addEventListener('sourceopen', this.onmso); + ms.addEventListener('sourceended', this.onmse); + ms.addEventListener('sourceclose', this.onmsc); + // link video and media Source + media.src = URL.createObjectURL(ms); + } + } + }, { + key: 'onMediaDetaching', + value: function onMediaDetaching() { + _logger.logger.log('media source detaching'); + var ms = this.mediaSource; + if (ms) { + if (ms.readyState === 'open') { + try { + // endOfStream could trigger exception if any sourcebuffer is in updating state + // we don't really care about checking sourcebuffer state here, + // as we are anyway detaching the MediaSource + // let's just avoid this exception to propagate + ms.endOfStream(); + } catch (err) { + _logger.logger.warn('onMediaDetaching:' + err.message + ' while calling endOfStream'); + } + } + ms.removeEventListener('sourceopen', this.onmso); + ms.removeEventListener('sourceended', this.onmse); + ms.removeEventListener('sourceclose', this.onmsc); + + // Detach properly the MediaSource from the HTMLMediaElement as + // suggested in https://github.com/w3c/media-source/issues/53. + if (this.media) { + URL.revokeObjectURL(this.media.src); + this.media.removeAttribute('src'); + this.media.load(); + } + + this.mediaSource = null; + this.media = null; + this.pendingTracks = {}; + this.tracks = {}; + this.sourceBuffer = {}; + this.flushRange = []; + this.segments = []; + this.appended = 0; + } + this.onmso = this.onmse = this.onmsc = null; + this.hls.trigger(_events2.default.MEDIA_DETACHED); + } + }, { + key: 'onMediaSourceOpen', + value: function onMediaSourceOpen() { + _logger.logger.log('media source opened'); + this.hls.trigger(_events2.default.MEDIA_ATTACHED, { media: this.media }); + var mediaSource = this.mediaSource; + if (mediaSource) { + // once received, don't listen anymore to sourceopen event + mediaSource.removeEventListener('sourceopen', this.onmso); + } + this.checkPendingTracks(); + } + }, { + key: 'checkPendingTracks', + value: function checkPendingTracks() { + // if any buffer codecs pending, check if we have enough to create sourceBuffers + var pendingTracks = this.pendingTracks, + pendingTracksNb = Object.keys(pendingTracks).length; + // if any pending tracks and (if nb of pending tracks gt or equal than expected nb or if unknown expected nb) + if (pendingTracksNb && (this.sourceBufferNb <= pendingTracksNb || this.sourceBufferNb === 0)) { + // ok, let's create them now ! + this.createSourceBuffers(pendingTracks); + this.pendingTracks = {}; + // append any pending segments now ! + this.doAppending(); + } + } + }, { + key: 'onMediaSourceClose', + value: function onMediaSourceClose() { + _logger.logger.log('media source closed'); + } + }, { + key: 'onMediaSourceEnded', + value: function onMediaSourceEnded() { + _logger.logger.log('media source ended'); + } + }, { + key: 'onSBUpdateEnd', + value: function onSBUpdateEnd() { + // update timestampOffset + if (this.audioTimestampOffset) { + var audioBuffer = this.sourceBuffer.audio; + _logger.logger.warn('change mpeg audio timestamp offset from ' + audioBuffer.timestampOffset + ' to ' + this.audioTimestampOffset); + audioBuffer.timestampOffset = this.audioTimestampOffset; + delete this.audioTimestampOffset; + } + + if (this._needsFlush) { + this.doFlush(); + } + + if (this._needsEos) { + this.checkEos(); + } + this.appending = false; + var parent = this.parent; + // count nb of pending segments waiting for appending on this sourcebuffer + var pending = this.segments.reduce(function (counter, segment) { + return segment.parent === parent ? counter + 1 : counter; + }, 0); + this.hls.trigger(_events2.default.BUFFER_APPENDED, { parent: parent, pending: pending }); + + // don't append in flushing mode + if (!this._needsFlush) { + this.doAppending(); + } + + this.updateMediaElementDuration(); + } + }, { + key: 'onSBUpdateError', + value: function onSBUpdateError(event) { + _logger.logger.error('sourceBuffer error:', event); + // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error + // this error might not always be fatal (it is fatal if decode error is set, in that case + // it will be followed by a mediaElement error ...) + this.hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.BUFFER_APPENDING_ERROR, fatal: false }); + // we don't need to do more than that, as accordin to the spec, updateend will be fired just after + } + }, { + key: 'onBufferReset', + value: function onBufferReset() { + var sourceBuffer = this.sourceBuffer; + for (var type in sourceBuffer) { + var sb = sourceBuffer[type]; + try { + this.mediaSource.removeSourceBuffer(sb); + sb.removeEventListener('updateend', this.onsbue); + sb.removeEventListener('error', this.onsbe); + } catch (err) {} + } + this.sourceBuffer = {}; + this.flushRange = []; + this.segments = []; + this.appended = 0; + } + }, { + key: 'onBufferCodecs', + value: function onBufferCodecs(tracks) { + // if source buffer(s) not created yet, appended buffer tracks in this.pendingTracks + // if sourcebuffers already created, do nothing ... + if (Object.keys(this.sourceBuffer).length === 0) { + for (var trackName in tracks) { + this.pendingTracks[trackName] = tracks[trackName]; + } + var mediaSource = this.mediaSource; + if (mediaSource && mediaSource.readyState === 'open') { + // try to create sourcebuffers if mediasource opened + this.checkPendingTracks(); + } + } + } + }, { + key: 'createSourceBuffers', + value: function createSourceBuffers(tracks) { + var sourceBuffer = this.sourceBuffer, + mediaSource = this.mediaSource; + + for (var trackName in tracks) { + if (!sourceBuffer[trackName]) { + var track = tracks[trackName]; + // use levelCodec as first priority + var codec = track.levelCodec || track.codec; + var mimeType = track.container + ';codecs=' + codec; + _logger.logger.log('creating sourceBuffer(' + mimeType + ')'); + try { + var sb = sourceBuffer[trackName] = mediaSource.addSourceBuffer(mimeType); + sb.addEventListener('updateend', this.onsbue); + sb.addEventListener('error', this.onsbe); + this.tracks[trackName] = { codec: codec, container: track.container }; + track.buffer = sb; + } catch (err) { + _logger.logger.error('error while trying to add sourceBuffer:' + err.message); + this.hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.BUFFER_ADD_CODEC_ERROR, fatal: false, err: err, mimeType: mimeType }); + } + } + } + this.hls.trigger(_events2.default.BUFFER_CREATED, { tracks: tracks }); + } + }, { + key: 'onBufferAppending', + value: function onBufferAppending(data) { + if (!this._needsFlush) { + if (!this.segments) { + this.segments = [data]; + } else { + this.segments.push(data); + } + this.doAppending(); + } + } + }, { + key: 'onBufferAppendFail', + value: function onBufferAppendFail(data) { + _logger.logger.error('sourceBuffer error:', data.event); + // according to http://www.w3.org/TR/media-source/#sourcebuffer-append-error + // this error might not always be fatal (it is fatal if decode error is set, in that case + // it will be followed by a mediaElement error ...) + this.hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.BUFFER_APPENDING_ERROR, fatal: false }); + } + + // on BUFFER_EOS mark matching sourcebuffer(s) as ended and trigger checkEos() + + }, { + key: 'onBufferEos', + value: function onBufferEos(data) { + var sb = this.sourceBuffer; + var dataType = data.type; + for (var type in sb) { + if (!dataType || type === dataType) { + if (!sb[type].ended) { + sb[type].ended = true; + _logger.logger.log(type + ' sourceBuffer now EOS'); + } + } + } + this.checkEos(); + } + + // if all source buffers are marked as ended, signal endOfStream() to MediaSource. + + }, { + key: 'checkEos', + value: function checkEos() { + var sb = this.sourceBuffer, + mediaSource = this.mediaSource; + if (!mediaSource || mediaSource.readyState !== 'open') { + this._needsEos = false; + return; + } + for (var type in sb) { + var sbobj = sb[type]; + if (!sbobj.ended) { + return; + } + if (sbobj.updating) { + this._needsEos = true; + return; + } + } + _logger.logger.log('all media data available, signal endOfStream() to MediaSource and stop loading fragment'); + //Notify the media element that it now has all of the media data + try { + mediaSource.endOfStream(); + } catch (e) { + _logger.logger.warn('exception while calling mediaSource.endOfStream()'); + } + this._needsEos = false; + } + }, { + key: 'onBufferFlushing', + value: function onBufferFlushing(data) { + this.flushRange.push({ start: data.startOffset, end: data.endOffset, type: data.type }); + // attempt flush immediatly + this.flushBufferCounter = 0; + this.doFlush(); + } + }, { + key: 'onLevelUpdated', + value: function onLevelUpdated(event) { + var details = event.details; + if (details.fragments.length === 0) { + return; + } + this._levelDuration = details.totalduration + details.fragments[0].start; + this.updateMediaElementDuration(); + } + + // https://github.com/video-dev/hls.js/issues/355 + + }, { + key: 'updateMediaElementDuration', + value: function updateMediaElementDuration() { + var media = this.media, + mediaSource = this.mediaSource, + sourceBuffer = this.sourceBuffer, + levelDuration = this._levelDuration; + if (levelDuration === null || !media || !mediaSource || !sourceBuffer || media.readyState === 0 || mediaSource.readyState !== 'open') { + return; + } + for (var type in sourceBuffer) { + if (sourceBuffer[type].updating) { + // can't set duration whilst a buffer is updating + return; + } + } + if (this._msDuration === null) { + // initialise to the value that the media source is reporting + this._msDuration = mediaSource.duration; + } + var duration = media.duration; + // levelDuration was the last value we set. + // not using mediaSource.duration as the browser may tweak this value + // only update mediasource duration if its value increase, this is to avoid + // flushing already buffered portion when switching between quality level + if (levelDuration > this._msDuration && levelDuration > duration || duration === Infinity || isNaN(duration)) { + _logger.logger.log('Updating mediasource duration to ' + levelDuration.toFixed(3)); + this._msDuration = mediaSource.duration = levelDuration; + } + } + }, { + key: 'doFlush', + value: function doFlush() { + // loop through all buffer ranges to flush + while (this.flushRange.length) { + var range = this.flushRange[0]; + // flushBuffer will abort any buffer append in progress and flush Audio/Video Buffer + if (this.flushBuffer(range.start, range.end, range.type)) { + // range flushed, remove from flush array + this.flushRange.shift(); + this.flushBufferCounter = 0; + } else { + this._needsFlush = true; + // avoid looping, wait for SB update end to retrigger a flush + return; + } + } + if (this.flushRange.length === 0) { + // everything flushed + this._needsFlush = false; + + // let's recompute this.appended, which is used to avoid flush looping + var appended = 0; + var sourceBuffer = this.sourceBuffer; + try { + for (var type in sourceBuffer) { + appended += sourceBuffer[type].buffered.length; + } + } catch (error) { + // error could be thrown while accessing buffered, in case sourcebuffer has already been removed from MediaSource + // this is harmess at this stage, catch this to avoid reporting an internal exception + _logger.logger.error('error while accessing sourceBuffer.buffered'); + } + this.appended = appended; + this.hls.trigger(_events2.default.BUFFER_FLUSHED); + } + } + }, { + key: 'doAppending', + value: function doAppending() { + var hls = this.hls, + sourceBuffer = this.sourceBuffer, + segments = this.segments; + if (Object.keys(sourceBuffer).length) { + if (this.media.error) { + this.segments = []; + _logger.logger.error('trying to append although a media error occured, flush segment and abort'); + return; + } + if (this.appending) { + //logger.log(`sb appending in progress`); + return; + } + if (segments && segments.length) { + var segment = segments.shift(); + try { + var type = segment.type, + sb = sourceBuffer[type]; + if (sb) { + if (!sb.updating) { + // reset sourceBuffer ended flag before appending segment + sb.ended = false; + //logger.log(`appending ${segment.content} ${type} SB, size:${segment.data.length}, ${segment.parent}`); + this.parent = segment.parent; + sb.appendBuffer(segment.data); + this.appendError = 0; + this.appended++; + this.appending = true; + } else { + segments.unshift(segment); + } + } else { + // in case we don't have any source buffer matching with this segment type, + // it means that Mediasource fails to create sourcebuffer + // discard this segment, and trigger update end + this.onSBUpdateEnd(); + } + } catch (err) { + // in case any error occured while appending, put back segment in segments table + _logger.logger.error('error while trying to append buffer:' + err.message); + segments.unshift(segment); + var event = { type: _errors.ErrorTypes.MEDIA_ERROR, parent: segment.parent }; + if (err.code !== 22) { + if (this.appendError) { + this.appendError++; + } else { + this.appendError = 1; + } + event.details = _errors.ErrorDetails.BUFFER_APPEND_ERROR; + /* with UHD content, we could get loop of quota exceeded error until + browser is able to evict some data from sourcebuffer. retrying help recovering this + */ + if (this.appendError > hls.config.appendErrorMaxRetry) { + _logger.logger.log('fail ' + hls.config.appendErrorMaxRetry + ' times to append segment in sourceBuffer'); + segments = []; + event.fatal = true; + hls.trigger(_events2.default.ERROR, event); + return; + } else { + event.fatal = false; + hls.trigger(_events2.default.ERROR, event); + } + } else { + // QuotaExceededError: http://www.w3.org/TR/html5/infrastructure.html#quotaexceedederror + // let's stop appending any segments, and report BUFFER_FULL_ERROR error + this.segments = []; + event.details = _errors.ErrorDetails.BUFFER_FULL_ERROR; + event.fatal = false; + hls.trigger(_events2.default.ERROR, event); + return; + } + } + } + } + } + + /* + flush specified buffered range, + return true once range has been flushed. + as sourceBuffer.remove() is asynchronous, flushBuffer will be retriggered on sourceBuffer update end + */ + + }, { + key: 'flushBuffer', + value: function flushBuffer(startOffset, endOffset, typeIn) { + var sb, + i, + bufStart, + bufEnd, + flushStart, + flushEnd, + sourceBuffer = this.sourceBuffer; + if (Object.keys(sourceBuffer).length) { + _logger.logger.log('flushBuffer,pos/start/end: ' + this.media.currentTime.toFixed(3) + '/' + startOffset + '/' + endOffset); + // safeguard to avoid infinite looping : don't try to flush more than the nb of appended segments + if (this.flushBufferCounter < this.appended) { + for (var type in sourceBuffer) { + // check if sourcebuffer type is defined (typeIn): if yes, let's only flush this one + // if no, let's flush all sourcebuffers + if (typeIn && type !== typeIn) { + continue; + } + sb = sourceBuffer[type]; + // we are going to flush buffer, mark source buffer as 'not ended' + sb.ended = false; + if (!sb.updating) { + try { + for (i = 0; i < sb.buffered.length; i++) { + bufStart = sb.buffered.start(i); + bufEnd = sb.buffered.end(i); + // workaround firefox not able to properly flush multiple buffered range. + if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1 && endOffset === Number.POSITIVE_INFINITY) { + flushStart = startOffset; + flushEnd = endOffset; + } else { + flushStart = Math.max(bufStart, startOffset); + flushEnd = Math.min(bufEnd, endOffset); + } + /* sometimes sourcebuffer.remove() does not flush + the exact expected time range. + to avoid rounding issues/infinite loop, + only flush buffer range of length greater than 500ms. + */ + if (Math.min(flushEnd, bufEnd) - flushStart > 0.5) { + this.flushBufferCounter++; + _logger.logger.log('flush ' + type + ' [' + flushStart + ',' + flushEnd + '], of [' + bufStart + ',' + bufEnd + '], pos:' + this.media.currentTime); + sb.remove(flushStart, flushEnd); + return false; + } + } + } catch (e) { + _logger.logger.warn('exception while accessing sourcebuffer, it might have been removed from MediaSource'); + } + } else { + //logger.log('abort ' + type + ' append in progress'); + // this will abort any appending in progress + //sb.abort(); + _logger.logger.warn('cannot flush, sb updating in progress'); + return false; + } + } + } else { + _logger.logger.warn('abort flushing too many retries'); + } + _logger.logger.log('buffer flushed'); + } + // everything flushed ! + return true; + } + }]); + + return BufferController; +}(_eventHandler2.default); + +exports.default = BufferController; + +},{"33":33,"34":34,"35":35,"53":53}],9:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * cap stream level to media size dimension controller + */ + +var CapLevelController = function (_EventHandler) { + _inherits(CapLevelController, _EventHandler); + + function CapLevelController(hls) { + _classCallCheck(this, CapLevelController); + + return _possibleConstructorReturn(this, (CapLevelController.__proto__ || Object.getPrototypeOf(CapLevelController)).call(this, hls, _events2.default.FPS_DROP_LEVEL_CAPPING, _events2.default.MEDIA_ATTACHING, _events2.default.MANIFEST_PARSED)); + } + + _createClass(CapLevelController, [{ + key: 'destroy', + value: function destroy() { + if (this.hls.config.capLevelToPlayerSize) { + this.media = this.restrictedLevels = null; + this.autoLevelCapping = Number.POSITIVE_INFINITY; + if (this.timer) { + this.timer = clearInterval(this.timer); + } + } + } + }, { + key: 'onFpsDropLevelCapping', + value: function onFpsDropLevelCapping(data) { + if (!this.restrictedLevels) { + this.restrictedLevels = []; + } + if (!this.isLevelRestricted(data.droppedLevel)) { + this.restrictedLevels.push(data.droppedLevel); + } + } + }, { + key: 'onMediaAttaching', + value: function onMediaAttaching(data) { + this.media = data.media instanceof HTMLVideoElement ? data.media : null; + } + }, { + key: 'onManifestParsed', + value: function onManifestParsed(data) { + var hls = this.hls; + if (hls.config.capLevelToPlayerSize) { + this.autoLevelCapping = Number.POSITIVE_INFINITY; + this.levels = data.levels; + hls.firstLevel = this.getMaxLevel(data.firstLevel); + clearInterval(this.timer); + this.timer = setInterval(this.detectPlayerSize.bind(this), 1000); + this.detectPlayerSize(); + } + } + }, { + key: 'detectPlayerSize', + value: function detectPlayerSize() { + if (this.media) { + var levelsLength = this.levels ? this.levels.length : 0; + if (levelsLength) { + var hls = this.hls; + hls.autoLevelCapping = this.getMaxLevel(levelsLength - 1); + if (hls.autoLevelCapping > this.autoLevelCapping) { + // if auto level capping has a higher value for the previous one, flush the buffer using nextLevelSwitch + // usually happen when the user go to the fullscreen mode. + hls.streamController.nextLevelSwitch(); + } + this.autoLevelCapping = hls.autoLevelCapping; + } + } + } + + /* + * returns level should be the one with the dimensions equal or greater than the media (player) dimensions (so the video will be downscaled) + */ + + }, { + key: 'getMaxLevel', + value: function getMaxLevel(capLevelIndex) { + var result = 0, + i = void 0, + level = void 0, + mWidth = this.mediaWidth, + mHeight = this.mediaHeight, + lWidth = 0, + lHeight = 0; + + for (i = 0; i <= capLevelIndex; i++) { + level = this.levels[i]; + if (this.isLevelRestricted(i)) { + break; + } + result = i; + lWidth = level.width; + lHeight = level.height; + if (mWidth <= lWidth || mHeight <= lHeight) { + break; + } + } + return result; + } + }, { + key: 'isLevelRestricted', + value: function isLevelRestricted(level) { + return this.restrictedLevels && this.restrictedLevels.indexOf(level) !== -1 ? true : false; + } + }, { + key: 'contentScaleFactor', + get: function get() { + var pixelRatio = 1; + try { + pixelRatio = window.devicePixelRatio; + } catch (e) {} + return pixelRatio; + } + }, { + key: 'mediaWidth', + get: function get() { + var width = void 0; + var media = this.media; + if (media) { + width = media.width || media.clientWidth || media.offsetWidth; + width *= this.contentScaleFactor; + } + return width; + } + }, { + key: 'mediaHeight', + get: function get() { + var height = void 0; + var media = this.media; + if (media) { + height = media.height || media.clientHeight || media.offsetHeight; + height *= this.contentScaleFactor; + } + return height; + } + }]); + + return CapLevelController; +}(_eventHandler2.default); + +exports.default = CapLevelController; + +},{"34":34,"35":35}],10:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _logger = _dereq_(53); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * FPS Controller + */ + +var FPSController = function (_EventHandler) { + _inherits(FPSController, _EventHandler); + + function FPSController(hls) { + _classCallCheck(this, FPSController); + + return _possibleConstructorReturn(this, (FPSController.__proto__ || Object.getPrototypeOf(FPSController)).call(this, hls, _events2.default.MEDIA_ATTACHING)); + } + + _createClass(FPSController, [{ + key: 'destroy', + value: function destroy() { + if (this.timer) { + clearInterval(this.timer); + } + this.isVideoPlaybackQualityAvailable = false; + } + }, { + key: 'onMediaAttaching', + value: function onMediaAttaching(data) { + var config = this.hls.config; + if (config.capLevelOnFPSDrop) { + var video = this.video = data.media instanceof HTMLVideoElement ? data.media : null; + if (typeof video.getVideoPlaybackQuality === 'function') { + this.isVideoPlaybackQualityAvailable = true; + } + clearInterval(this.timer); + this.timer = setInterval(this.checkFPSInterval.bind(this), config.fpsDroppedMonitoringPeriod); + } + } + }, { + key: 'checkFPS', + value: function checkFPS(video, decodedFrames, droppedFrames) { + var currentTime = performance.now(); + if (decodedFrames) { + if (this.lastTime) { + var currentPeriod = currentTime - this.lastTime, + currentDropped = droppedFrames - this.lastDroppedFrames, + currentDecoded = decodedFrames - this.lastDecodedFrames, + droppedFPS = 1000 * currentDropped / currentPeriod, + hls = this.hls; + hls.trigger(_events2.default.FPS_DROP, { currentDropped: currentDropped, currentDecoded: currentDecoded, totalDroppedFrames: droppedFrames }); + if (droppedFPS > 0) { + //logger.log('checkFPS : droppedFPS/decodedFPS:' + droppedFPS/(1000 * currentDecoded / currentPeriod)); + if (currentDropped > hls.config.fpsDroppedMonitoringThreshold * currentDecoded) { + var currentLevel = hls.currentLevel; + _logger.logger.warn('drop FPS ratio greater than max allowed value for currentLevel: ' + currentLevel); + if (currentLevel > 0 && (hls.autoLevelCapping === -1 || hls.autoLevelCapping >= currentLevel)) { + currentLevel = currentLevel - 1; + hls.trigger(_events2.default.FPS_DROP_LEVEL_CAPPING, { level: currentLevel, droppedLevel: hls.currentLevel }); + hls.autoLevelCapping = currentLevel; + hls.streamController.nextLevelSwitch(); + } + } + } + } + this.lastTime = currentTime; + this.lastDroppedFrames = droppedFrames; + this.lastDecodedFrames = decodedFrames; + } + } + }, { + key: 'checkFPSInterval', + value: function checkFPSInterval() { + var video = this.video; + if (video) { + if (this.isVideoPlaybackQualityAvailable) { + var videoPlaybackQuality = video.getVideoPlaybackQuality(); + this.checkFPS(video, videoPlaybackQuality.totalVideoFrames, videoPlaybackQuality.droppedVideoFrames); + } else { + this.checkFPS(video, video.webkitDecodedFrameCount, video.webkitDroppedFrameCount); + } + } + } + }]); + + return FPSController; +}(_eventHandler2.default); + +exports.default = FPSController; + +},{"34":34,"35":35,"53":53}],11:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * id3 metadata track controller + */ + +var ID3TrackController = function (_EventHandler) { + _inherits(ID3TrackController, _EventHandler); + + function ID3TrackController(hls) { + _classCallCheck(this, ID3TrackController); + + var _this = _possibleConstructorReturn(this, (ID3TrackController.__proto__ || Object.getPrototypeOf(ID3TrackController)).call(this, hls, _events2.default.MEDIA_ATTACHED, _events2.default.MEDIA_DETACHING, _events2.default.FRAG_PARSING_METADATA)); + + _this.id3Track = undefined; + _this.media = undefined; + return _this; + } + + _createClass(ID3TrackController, [{ + key: 'destroy', + value: function destroy() { + _eventHandler2.default.prototype.destroy.call(this); + } + + // Add ID3 metatadata text track. + + }, { + key: 'onMediaAttached', + value: function onMediaAttached(data) { + this.media = data.media; + if (!this.media) { + return; + } + + this.id3Track = this.media.addTextTrack('metadata', 'id3'); + this.id3Track.mode = 'hidden'; + } + }, { + key: 'onMediaDetaching', + value: function onMediaDetaching() { + this.media = undefined; + } + }, { + key: 'onFragParsingMetadata', + value: function onFragParsingMetadata(data) { + var fragment = data.frag; + var samples = data.samples; + var startTime = fragment.start; + var endTime = fragment.start + fragment.duration; + // Give a slight bump to the endTime if it's equal to startTime to avoid a SyntaxError in IE + if (startTime === endTime) { + endTime += 0.0001; + } + + // Attempt to recreate Safari functionality by creating + // WebKitDataCue objects when available and store the decoded + // ID3 data in the value property of the cue + var Cue = window.WebKitDataCue || window.VTTCue || window.TextTrackCue; + + for (var i = 0; i < samples.length; i++) { + var id3Frame = this.parseID3Frame(samples[i].data); + var frame = this.decodeID3Frame(id3Frame); + if (frame) { + var cue = new Cue(startTime, endTime, ''); + cue.value = frame; + this.id3Track.addCue(cue); + } + } + } + }, { + key: 'parseID3Frame', + value: function parseID3Frame(data) { + if (data.length < 21) { + return undefined; + } + + /* http://id3.org/id3v2.3.0 + [0] = 'I' + [1] = 'D' + [2] = '3' + [3,4] = {Version} + [5] = {Flags} + [6-9] = {ID3 Size} + [10-13] = {Frame ID} + [14-17] = {Frame Size} + [18,19] = {Frame Flags} + */ + if (data[0] === 73 && // I + data[1] === 68 && // D + data[2] === 51) { + // 3 + + var type = String.fromCharCode(data[10], data[11], data[12], data[13]); + data = data.subarray(20); + return { type: type, data: data }; + } + } + }, { + key: 'decodeID3Frame', + value: function decodeID3Frame(frame) { + if (frame.type === 'TXXX') { + return this.decodeTxxxFrame(frame); + } else if (frame.type === 'PRIV') { + return this.decodePrivFrame(frame); + } else if (frame.type[0] === 'T') { + return this.decodeTextFrame(frame); + } else { + return undefined; + } + } + }, { + key: 'decodeTxxxFrame', + value: function decodeTxxxFrame(frame) { + /* + Format: + [0] = {Text Encoding} + [1-?] = {Description}\0{Value} + */ + + if (frame.size < 2) { + return undefined; + } + + if (frame.data[0] !== 3) { + //only support UTF-8 + return undefined; + } + + var index = 1; + var description = this.utf8ArrayToStr(frame.data.subarray(index)); + + index += description.length + 1; + var value = this.utf8ArrayToStr(frame.data.subarray(index)); + + return { key: 'TXXX', description: description, data: value }; + } + }, { + key: 'decodeTextFrame', + value: function decodeTextFrame(frame) { + /* + Format: + [0] = {Text Encoding} + [1-?] = {Value} + */ + + if (frame.size < 2) { + return undefined; + } + + if (frame.data[0] !== 3) { + //only support UTF-8 + return undefined; + } + + var data = frame.data.subarray(1); + return { key: frame.type, data: this.utf8ArrayToStr(data) }; + } + }, { + key: 'decodePrivFrame', + value: function decodePrivFrame(frame) { + /* + Format: <text string>\0<binary data> + */ + + if (frame.size < 2) { + return undefined; + } + + var owner = this.utf8ArrayToStr(frame.data); + var privateData = frame.data.subarray(owner.length + 1); + + return { key: 'PRIV', info: owner, data: privateData.buffer }; + } + + // http://stackoverflow.com/questions/8936984/uint8array-to-string-in-javascript/22373197 + // http://www.onicos.com/staff/iz/amuse/javascript/expert/utf.txt + /* utf.js - UTF-8 <=> UTF-16 convertion + * + * Copyright (C) 1999 Masanao Izumo <iz@onicos.co.jp> + * Version: 1.0 + * LastModified: Dec 25 1999 + * This library is free. You can redistribute it and/or modify it. + */ + + }, { + key: 'utf8ArrayToStr', + value: function utf8ArrayToStr(array) { + + var char2 = void 0; + var char3 = void 0; + var out = ''; + var i = 0; + var length = array.length; + + while (i < length) { + var c = array[i++]; + switch (c >> 4) { + case 0: + return out; + case 1:case 2:case 3:case 4:case 5:case 6:case 7: + // 0xxxxxxx + out += String.fromCharCode(c); + break; + case 12:case 13: + // 110x xxxx 10xx xxxx + char2 = array[i++]; + out += String.fromCharCode((c & 0x1F) << 6 | char2 & 0x3F); + break; + case 14: + // 1110 xxxx 10xx xxxx 10xx xxxx + char2 = array[i++]; + char3 = array[i++]; + out += String.fromCharCode((c & 0x0F) << 12 | (char2 & 0x3F) << 6 | (char3 & 0x3F) << 0); + break; + } + } + + return out; + } + }]); + + return ID3TrackController; +}(_eventHandler2.default); + +exports.default = ID3TrackController; + +},{"34":34,"35":35}],12:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _logger = _dereq_(53); + +var _errors = _dereq_(33); + +var _bufferHelper = _dereq_(37); + +var _bufferHelper2 = _interopRequireDefault(_bufferHelper); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * Level Controller + */ + +var LevelController = function (_EventHandler) { + _inherits(LevelController, _EventHandler); + + function LevelController(hls) { + _classCallCheck(this, LevelController); + + var _this = _possibleConstructorReturn(this, (LevelController.__proto__ || Object.getPrototypeOf(LevelController)).call(this, hls, _events2.default.MANIFEST_LOADED, _events2.default.LEVEL_LOADED, _events2.default.FRAG_LOADED, _events2.default.ERROR)); + + _this.ontick = _this.tick.bind(_this); + _this._manualLevel = -1; + return _this; + } + + _createClass(LevelController, [{ + key: 'destroy', + value: function destroy() { + if (this.timer) { + clearTimeout(this.timer); + this.timer = null; + } + this._manualLevel = -1; + } + }, { + key: 'startLoad', + value: function startLoad() { + this.canload = true; + var levels = this._levels; + // clean up live level details to force reload them, and reset load errors + if (levels) { + levels.forEach(function (level) { + level.loadError = 0; + var levelDetails = level.details; + if (levelDetails && levelDetails.live) { + level.details = undefined; + } + }); + } + // speed up live playlist refresh if timer exists + if (this.timer) { + this.tick(); + } + } + }, { + key: 'stopLoad', + value: function stopLoad() { + this.canload = false; + } + }, { + key: 'onManifestLoaded', + value: function onManifestLoaded(data) { + var levels0 = [], + levels = [], + bitrateStart, + bitrateSet = {}, + videoCodecFound = false, + audioCodecFound = false, + hls = this.hls, + brokenmp4inmp3 = /chrome|firefox/.test(navigator.userAgent.toLowerCase()), + checkSupported = function checkSupported(type, codec) { + return MediaSource.isTypeSupported(type + '/mp4;codecs=' + codec); + }; + + // regroup redundant level together + data.levels.forEach(function (level) { + if (level.videoCodec) { + videoCodecFound = true; + } + // erase audio codec info if browser does not support mp4a.40.34. demuxer will autodetect codec and fallback to mpeg/audio + if (brokenmp4inmp3 && level.audioCodec && level.audioCodec.indexOf('mp4a.40.34') !== -1) { + level.audioCodec = undefined; + } + if (level.audioCodec || level.attrs && level.attrs.AUDIO) { + audioCodecFound = true; + } + var redundantLevelId = bitrateSet[level.bitrate]; + if (redundantLevelId === undefined) { + bitrateSet[level.bitrate] = levels0.length; + level.url = [level.url]; + level.urlId = 0; + levels0.push(level); + } else { + levels0[redundantLevelId].url.push(level.url); + } + }); + + // remove audio-only level if we also have levels with audio+video codecs signalled + if (videoCodecFound && audioCodecFound) { + levels0.forEach(function (level) { + if (level.videoCodec) { + levels.push(level); + } + }); + } else { + levels = levels0; + } + // only keep level with supported audio/video codecs + levels = levels.filter(function (level) { + var audioCodec = level.audioCodec, + videoCodec = level.videoCodec; + return (!audioCodec || checkSupported('audio', audioCodec)) && (!videoCodec || checkSupported('video', videoCodec)); + }); + + if (levels.length) { + // start bitrate is the first bitrate of the manifest + bitrateStart = levels[0].bitrate; + // sort level on bitrate + levels.sort(function (a, b) { + return a.bitrate - b.bitrate; + }); + this._levels = levels; + // find index of first level in sorted levels + for (var i = 0; i < levels.length; i++) { + if (levels[i].bitrate === bitrateStart) { + this._firstLevel = i; + _logger.logger.log('manifest loaded,' + levels.length + ' level(s) found, first bitrate:' + bitrateStart); + break; + } + } + hls.trigger(_events2.default.MANIFEST_PARSED, { levels: levels, firstLevel: this._firstLevel, stats: data.stats, audio: audioCodecFound, video: videoCodecFound, altAudio: data.audioTracks.length > 0 }); + } else { + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR, fatal: true, url: hls.url, reason: 'no level with compatible codecs found in manifest' }); + } + return; + } + }, { + key: 'setLevelInternal', + value: function setLevelInternal(newLevel) { + var levels = this._levels; + var hls = this.hls; + // check if level idx is valid + if (newLevel >= 0 && newLevel < levels.length) { + // stopping live reloading timer if any + if (this.timer) { + clearTimeout(this.timer); + this.timer = null; + } + if (this._level !== newLevel) { + _logger.logger.log('switching to level ' + newLevel); + this._level = newLevel; + var levelProperties = levels[newLevel]; + levelProperties.level = newLevel; + // LEVEL_SWITCH to be deprecated in next major release + hls.trigger(_events2.default.LEVEL_SWITCH, levelProperties); + hls.trigger(_events2.default.LEVEL_SWITCHING, levelProperties); + } + var level = levels[newLevel], + levelDetails = level.details; + // check if we need to load playlist for this level + if (!levelDetails || levelDetails.live === true) { + // level not retrieved yet, or live playlist we need to (re)load it + var urlId = level.urlId; + hls.trigger(_events2.default.LEVEL_LOADING, { url: level.url[urlId], level: newLevel, id: urlId }); + } + } else { + // invalid level id given, trigger error + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.OTHER_ERROR, details: _errors.ErrorDetails.LEVEL_SWITCH_ERROR, level: newLevel, fatal: false, reason: 'invalid level idx' }); + } + } + }, { + key: 'onError', + value: function onError(data) { + if (data.fatal) { + return; + } + + var details = data.details, + hls = this.hls, + levelId = void 0, + level = void 0, + levelError = false; + // try to recover not fatal errors + switch (details) { + case _errors.ErrorDetails.FRAG_LOAD_ERROR: + case _errors.ErrorDetails.FRAG_LOAD_TIMEOUT: + case _errors.ErrorDetails.FRAG_LOOP_LOADING_ERROR: + case _errors.ErrorDetails.KEY_LOAD_ERROR: + case _errors.ErrorDetails.KEY_LOAD_TIMEOUT: + levelId = data.frag.level; + break; + case _errors.ErrorDetails.LEVEL_LOAD_ERROR: + case _errors.ErrorDetails.LEVEL_LOAD_TIMEOUT: + levelId = data.context.level; + levelError = true; + break; + case _errors.ErrorDetails.REMUX_ALLOC_ERROR: + levelId = data.level; + break; + default: + break; + } + /* try to switch to a redundant stream if any available. + * if no redundant stream available, emergency switch down (if in auto mode and current level not 0) + * otherwise, we cannot recover this network error ... + */ + if (levelId !== undefined) { + level = this._levels[levelId]; + if (!level.loadError) { + level.loadError = 1; + } else { + level.loadError++; + } + // if any redundant streams available and if we haven't try them all (level.loadError is reseted on successful frag/level load. + // if level.loadError reaches nbRedundantLevel it means that we tried them all, no hope => let's switch down + var nbRedundantLevel = level.url.length; + if (nbRedundantLevel > 1 && level.loadError < nbRedundantLevel) { + level.urlId = (level.urlId + 1) % nbRedundantLevel; + level.details = undefined; + _logger.logger.warn('level controller,' + details + ' for level ' + levelId + ': switching to redundant stream id ' + level.urlId); + } else { + // we could try to recover if in auto mode and current level not lowest level (0) + var recoverable = this._manualLevel === -1 && levelId; + if (recoverable) { + _logger.logger.warn('level controller,' + details + ': switch-down for next fragment'); + hls.nextAutoLevel = Math.max(0, levelId - 1); + } else if (level && level.details && level.details.live) { + _logger.logger.warn('level controller,' + details + ' on live stream, discard'); + if (levelError) { + // reset this._level so that another call to set level() will retrigger a frag load + this._level = undefined; + } + // other errors are handled by stream controller + } else if (details === _errors.ErrorDetails.LEVEL_LOAD_ERROR || details === _errors.ErrorDetails.LEVEL_LOAD_TIMEOUT) { + var media = hls.media, + + // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end + mediaBuffered = media && _bufferHelper2.default.isBuffered(media, media.currentTime) && _bufferHelper2.default.isBuffered(media, media.currentTime + 0.5); + if (mediaBuffered) { + var retryDelay = hls.config.levelLoadingRetryDelay; + _logger.logger.warn('level controller,' + details + ', but media buffered, retry in ' + retryDelay + 'ms'); + this.timer = setTimeout(this.ontick, retryDelay); + // boolean used to inform stream controller not to switch back to IDLE on non fatal error + data.levelRetry = true; + } else { + _logger.logger.error('cannot recover ' + details + ' error'); + this._level = undefined; + // stopping live reloading timer if any + if (this.timer) { + clearTimeout(this.timer); + this.timer = null; + } + // switch error to fatal + data.fatal = true; + } + } + } + } + } + + // reset level load error counter on successful frag loaded + + }, { + key: 'onFragLoaded', + value: function onFragLoaded(data) { + var fragLoaded = data.frag; + if (fragLoaded && fragLoaded.type === 'main') { + var level = this._levels[fragLoaded.level]; + if (level) { + level.loadError = 0; + } + } + } + }, { + key: 'onLevelLoaded', + value: function onLevelLoaded(data) { + var levelId = data.level; + // only process level loaded events matching with expected level + if (levelId === this._level) { + var curLevel = this._levels[levelId]; + // reset level load error counter on successful level loaded + curLevel.loadError = 0; + var newDetails = data.details; + // if current playlist is a live playlist, arm a timer to reload it + if (newDetails.live) { + var reloadInterval = 1000 * (newDetails.averagetargetduration ? newDetails.averagetargetduration : newDetails.targetduration), + curDetails = curLevel.details; + if (curDetails && newDetails.endSN === curDetails.endSN) { + // follow HLS Spec, If the client reloads a Playlist file and finds that it has not + // changed then it MUST wait for a period of one-half the target + // duration before retrying. + reloadInterval /= 2; + _logger.logger.log('same live playlist, reload twice faster'); + } + // decrement reloadInterval with level loading delay + reloadInterval -= performance.now() - data.stats.trequest; + // in any case, don't reload more than every second + reloadInterval = Math.max(1000, Math.round(reloadInterval)); + _logger.logger.log('live playlist, reload in ' + reloadInterval + ' ms'); + this.timer = setTimeout(this.ontick, reloadInterval); + } else { + this.timer = null; + } + } + } + }, { + key: 'tick', + value: function tick() { + var levelId = this._level; + if (levelId !== undefined && this.canload) { + var level = this._levels[levelId]; + if (level && level.url) { + var urlId = level.urlId; + this.hls.trigger(_events2.default.LEVEL_LOADING, { url: level.url[urlId], level: levelId, id: urlId }); + } + } + } + }, { + key: 'levels', + get: function get() { + return this._levels; + } + }, { + key: 'level', + get: function get() { + return this._level; + }, + set: function set(newLevel) { + var levels = this._levels; + if (levels && levels.length > newLevel) { + if (this._level !== newLevel || levels[newLevel].details === undefined) { + this.setLevelInternal(newLevel); + } + } + } + }, { + key: 'manualLevel', + get: function get() { + return this._manualLevel; + }, + set: function set(newLevel) { + this._manualLevel = newLevel; + if (this._startLevel === undefined) { + this._startLevel = newLevel; + } + if (newLevel !== -1) { + this.level = newLevel; + } + } + }, { + key: 'firstLevel', + get: function get() { + return this._firstLevel; + }, + set: function set(newLevel) { + this._firstLevel = newLevel; + } + }, { + key: 'startLevel', + get: function get() { + // hls.startLevel takes precedence over config.startLevel + // if none of these values are defined, fallback on this._firstLevel (first quality level appearing in variant manifest) + if (this._startLevel === undefined) { + var configStartLevel = this.hls.config.startLevel; + if (configStartLevel !== undefined) { + return configStartLevel; + } else { + return this._firstLevel; + } + } else { + return this._startLevel; + } + }, + set: function set(newLevel) { + this._startLevel = newLevel; + } + }, { + key: 'nextLoadLevel', + get: function get() { + if (this._manualLevel !== -1) { + return this._manualLevel; + } else { + return this.hls.nextAutoLevel; + } + }, + set: function set(nextLevel) { + this.level = nextLevel; + if (this._manualLevel === -1) { + this.hls.nextAutoLevel = nextLevel; + } + } + }]); + + return LevelController; +}(_eventHandler2.default); + +exports.default = LevelController; + +},{"33":33,"34":34,"35":35,"37":37,"53":53}],13:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _binarySearch = _dereq_(48); + +var _binarySearch2 = _interopRequireDefault(_binarySearch); + +var _bufferHelper = _dereq_(37); + +var _bufferHelper2 = _interopRequireDefault(_bufferHelper); + +var _demuxer = _dereq_(25); + +var _demuxer2 = _interopRequireDefault(_demuxer); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _levelHelper = _dereq_(38); + +var _levelHelper2 = _interopRequireDefault(_levelHelper); + +var _timeRanges = _dereq_(54); + +var _timeRanges2 = _interopRequireDefault(_timeRanges); + +var _errors = _dereq_(33); + +var _logger = _dereq_(53); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * Stream Controller + */ + +var State = { + STOPPED: 'STOPPED', + IDLE: 'IDLE', + KEY_LOADING: 'KEY_LOADING', + FRAG_LOADING: 'FRAG_LOADING', + FRAG_LOADING_WAITING_RETRY: 'FRAG_LOADING_WAITING_RETRY', + WAITING_LEVEL: 'WAITING_LEVEL', + PARSING: 'PARSING', + PARSED: 'PARSED', + BUFFER_FLUSHING: 'BUFFER_FLUSHING', + ENDED: 'ENDED', + ERROR: 'ERROR' +}; + +var StreamController = function (_EventHandler) { + _inherits(StreamController, _EventHandler); + + function StreamController(hls) { + _classCallCheck(this, StreamController); + + var _this = _possibleConstructorReturn(this, (StreamController.__proto__ || Object.getPrototypeOf(StreamController)).call(this, hls, _events2.default.MEDIA_ATTACHED, _events2.default.MEDIA_DETACHING, _events2.default.MANIFEST_LOADING, _events2.default.MANIFEST_PARSED, _events2.default.LEVEL_LOADED, _events2.default.KEY_LOADED, _events2.default.FRAG_LOADED, _events2.default.FRAG_LOAD_EMERGENCY_ABORTED, _events2.default.FRAG_PARSING_INIT_SEGMENT, _events2.default.FRAG_PARSING_DATA, _events2.default.FRAG_PARSED, _events2.default.ERROR, _events2.default.AUDIO_TRACK_SWITCHING, _events2.default.AUDIO_TRACK_SWITCHED, _events2.default.BUFFER_CREATED, _events2.default.BUFFER_APPENDED, _events2.default.BUFFER_FLUSHED)); + + _this.config = hls.config; + _this.audioCodecSwap = false; + _this.ticks = 0; + _this._state = State.STOPPED; + _this.ontick = _this.tick.bind(_this); + return _this; + } + + _createClass(StreamController, [{ + key: 'destroy', + value: function destroy() { + this.stopLoad(); + if (this.timer) { + clearInterval(this.timer); + this.timer = null; + } + _eventHandler2.default.prototype.destroy.call(this); + this.state = State.STOPPED; + } + }, { + key: 'startLoad', + value: function startLoad(startPosition) { + if (this.levels) { + var lastCurrentTime = this.lastCurrentTime, + hls = this.hls; + this.stopLoad(); + if (!this.timer) { + this.timer = setInterval(this.ontick, 100); + } + this.level = -1; + this.fragLoadError = 0; + if (!this.startFragRequested) { + // determine load level + var startLevel = hls.startLevel; + if (startLevel === -1) { + // -1 : guess start Level by doing a bitrate test by loading first fragment of lowest quality level + startLevel = 0; + this.bitrateTest = true; + } + // set new level to playlist loader : this will trigger start level load + // hls.nextLoadLevel remains until it is set to a new value or until a new frag is successfully loaded + this.level = hls.nextLoadLevel = startLevel; + this.loadedmetadata = false; + } + // if startPosition undefined but lastCurrentTime set, set startPosition to last currentTime + if (lastCurrentTime > 0 && startPosition === -1) { + _logger.logger.log('override startPosition with lastCurrentTime @' + lastCurrentTime.toFixed(3)); + startPosition = lastCurrentTime; + } + this.state = State.IDLE; + this.nextLoadPosition = this.startPosition = this.lastCurrentTime = startPosition; + this.tick(); + } else { + this.forceStartLoad = true; + this.state = State.STOPPED; + } + } + }, { + key: 'stopLoad', + value: function stopLoad() { + var frag = this.fragCurrent; + if (frag) { + if (frag.loader) { + frag.loader.abort(); + } + this.fragCurrent = null; + } + this.fragPrevious = null; + if (this.demuxer) { + this.demuxer.destroy(); + this.demuxer = null; + } + this.state = State.STOPPED; + this.forceStartLoad = false; + } + }, { + key: 'tick', + value: function tick() { + this.ticks++; + if (this.ticks === 1) { + this.doTick(); + if (this.ticks > 1) { + setTimeout(this.tick, 1); + } + this.ticks = 0; + } + } + }, { + key: 'doTick', + value: function doTick() { + switch (this.state) { + case State.ERROR: + //don't do anything in error state to avoid breaking further ... + break; + case State.BUFFER_FLUSHING: + // in buffer flushing state, reset fragLoadError counter + this.fragLoadError = 0; + break; + case State.IDLE: + this._doTickIdle(); + break; + case State.WAITING_LEVEL: + var level = this.levels[this.level]; + // check if playlist is already loaded + if (level && level.details) { + this.state = State.IDLE; + } + break; + case State.FRAG_LOADING_WAITING_RETRY: + var now = performance.now(); + var retryDate = this.retryDate; + // if current time is gt than retryDate, or if media seeking let's switch to IDLE state to retry loading + if (!retryDate || now >= retryDate || this.media && this.media.seeking) { + _logger.logger.log('mediaController: retryDate reached, switch back to IDLE state'); + this.state = State.IDLE; + } + break; + case State.ERROR: + case State.STOPPED: + case State.FRAG_LOADING: + case State.PARSING: + case State.PARSED: + case State.ENDED: + break; + default: + break; + } + // check buffer + this._checkBuffer(); + // check/update current fragment + this._checkFragmentChanged(); + } + + // Ironically the "idle" state is the on we do the most logic in it seems .... + // NOTE: Maybe we could rather schedule a check for buffer length after half of the currently + // played segment, or on pause/play/seek instead of naively checking every 100ms? + + }, { + key: '_doTickIdle', + value: function _doTickIdle() { + var hls = this.hls, + config = hls.config, + media = this.media; + + // if video not attached AND + // start fragment already requested OR start frag prefetch disable + // exit loop + // => if start level loaded and media not attached but start frag prefetch is enabled and start frag not requested yet, we will not exit loop + if (this.levelLastLoaded !== undefined && !media && (this.startFragRequested || !config.startFragPrefetch)) { + return; + } + + // if we have not yet loaded any fragment, start loading from start position + var pos = void 0; + if (this.loadedmetadata) { + pos = media.currentTime; + } else { + pos = this.nextLoadPosition; + } + // determine next load level + var level = hls.nextLoadLevel, + levelInfo = this.levels[level]; + + if (!levelInfo) { + return; + } + + var levelBitrate = levelInfo.bitrate, + maxBufLen = void 0; + + // compute max Buffer Length that we could get from this load level, based on level bitrate. don't buffer more than 60 MB and more than 30s + if (levelBitrate) { + maxBufLen = Math.max(8 * config.maxBufferSize / levelBitrate, config.maxBufferLength); + } else { + maxBufLen = config.maxBufferLength; + } + maxBufLen = Math.min(maxBufLen, config.maxMaxBufferLength); + + // determine next candidate fragment to be loaded, based on current position and end of buffer position + // ensure up to `config.maxMaxBufferLength` of buffer upfront + + var bufferInfo = _bufferHelper2.default.bufferInfo(this.mediaBuffer ? this.mediaBuffer : media, pos, config.maxBufferHole), + bufferLen = bufferInfo.len; + // Stay idle if we are still with buffer margins + if (bufferLen >= maxBufLen) { + return; + } + + // if buffer length is less than maxBufLen try to load a new fragment ... + _logger.logger.trace('buffer length of ' + bufferLen.toFixed(3) + ' is below max of ' + maxBufLen.toFixed(3) + '. checking for more payload ...'); + + // set next load level : this will trigger a playlist load if needed + this.level = hls.nextLoadLevel = level; + + var levelDetails = levelInfo.details; + // if level info not retrieved yet, switch state and wait for level retrieval + // if live playlist, ensure that new playlist has been refreshed to avoid loading/try to load + // a useless and outdated fragment (that might even introduce load error if it is already out of the live playlist) + if (typeof levelDetails === 'undefined' || levelDetails.live && this.levelLastLoaded !== level) { + this.state = State.WAITING_LEVEL; + return; + } + + // we just got done loading the final fragment, check if we need to finalize media stream + var fragPrevious = this.fragPrevious; + if (!levelDetails.live && fragPrevious && fragPrevious.sn === levelDetails.endSN) { + // fragPrevious is last fragment. retrieve level duration using last frag start offset + duration + // real duration might be lower than initial duration if there are drifts between real frag duration and playlist signaling + var duration = Math.min(media.duration, fragPrevious.start + fragPrevious.duration); + // if everything (almost) til the end is buffered, let's signal eos + // we don't compare exactly media.duration === bufferInfo.end as there could be some subtle media duration difference (audio/video offsets...) + // tolerate up to one frag duration to cope with these cases. + // also cope with almost zero last frag duration (max last frag duration with 200ms) refer to https://github.com/video-dev/hls.js/pull/657 + if (duration - Math.max(bufferInfo.end, fragPrevious.start) <= Math.max(0.2, fragPrevious.duration)) { + // Finalize the media stream + var data = {}; + if (this.altAudio) { + data.type = 'video'; + } + this.hls.trigger(_events2.default.BUFFER_EOS, data); + this.state = State.ENDED; + return; + } + } + + // if we have the levelDetails for the selected variant, lets continue enrichen our stream (load keys/fragments or trigger EOS, etc..) + this._fetchPayloadOrEos(pos, bufferInfo, levelDetails); + } + }, { + key: '_fetchPayloadOrEos', + value: function _fetchPayloadOrEos(pos, bufferInfo, levelDetails) { + var fragPrevious = this.fragPrevious, + level = this.level, + fragments = levelDetails.fragments, + fragLen = fragments.length; + + // empty playlist + if (fragLen === 0) { + return; + } + + // find fragment index, contiguous with end of buffer position + var start = fragments[0].start, + end = fragments[fragLen - 1].start + fragments[fragLen - 1].duration, + bufferEnd = bufferInfo.end, + frag = void 0; + + if (levelDetails.initSegment && !levelDetails.initSegment.data) { + frag = levelDetails.initSegment; + } else { + // in case of live playlist we need to ensure that requested position is not located before playlist start + if (levelDetails.live) { + var initialLiveManifestSize = this.config.initialLiveManifestSize; + if (fragLen < initialLiveManifestSize) { + _logger.logger.warn('Can not start playback of a level, reason: not enough fragments ' + fragLen + ' < ' + initialLiveManifestSize); + return; + } + + frag = this._ensureFragmentAtLivePoint(levelDetails, bufferEnd, start, end, fragPrevious, fragments, fragLen); + // if it explicitely returns null don't load any fragment and exit function now + if (frag === null) { + return; + } + } else { + // VoD playlist: if bufferEnd before start of playlist, load first fragment + if (bufferEnd < start) { + frag = fragments[0]; + } + } + } + if (!frag) { + frag = this._findFragment(start, fragPrevious, fragLen, fragments, bufferEnd, end, levelDetails); + } + if (frag) { + this._loadFragmentOrKey(frag, level, levelDetails, pos, bufferEnd); + } + return; + } + }, { + key: '_ensureFragmentAtLivePoint', + value: function _ensureFragmentAtLivePoint(levelDetails, bufferEnd, start, end, fragPrevious, fragments, fragLen) { + var config = this.hls.config, + media = this.media; + + var frag = void 0; + + // check if requested position is within seekable boundaries : + //logger.log(`start/pos/bufEnd/seeking:${start.toFixed(3)}/${pos.toFixed(3)}/${bufferEnd.toFixed(3)}/${this.media.seeking}`); + var maxLatency = config.liveMaxLatencyDuration !== undefined ? config.liveMaxLatencyDuration : config.liveMaxLatencyDurationCount * levelDetails.targetduration; + + if (bufferEnd < Math.max(start - config.maxFragLookUpTolerance, end - maxLatency)) { + var liveSyncPosition = this.liveSyncPosition = this.computeLivePosition(start, levelDetails); + _logger.logger.log('buffer end: ' + bufferEnd.toFixed(3) + ' is located too far from the end of live sliding playlist, reset currentTime to : ' + liveSyncPosition.toFixed(3)); + bufferEnd = liveSyncPosition; + if (media && media.readyState && media.duration > liveSyncPosition) { + media.currentTime = liveSyncPosition; + } + } + + // if end of buffer greater than live edge, don't load any fragment + // this could happen if live playlist intermittently slides in the past. + // level 1 loaded [182580161,182580167] + // level 1 loaded [182580162,182580169] + // Loading 182580168 of [182580162 ,182580169],level 1 .. + // Loading 182580169 of [182580162 ,182580169],level 1 .. + // level 1 loaded [182580162,182580168] <============= here we should have bufferEnd > end. in that case break to avoid reloading 182580168 + // level 1 loaded [182580164,182580171] + // + // don't return null in case media not loaded yet (readystate === 0) + if (levelDetails.PTSKnown && bufferEnd > end && media && media.readyState) { + return null; + } + + if (this.startFragRequested && !levelDetails.PTSKnown) { + /* we are switching level on live playlist, but we don't have any PTS info for that quality level ... + try to load frag matching with next SN. + even if SN are not synchronized between playlists, loading this frag will help us + compute playlist sliding and find the right one after in case it was not the right consecutive one */ + if (fragPrevious) { + var targetSN = fragPrevious.sn + 1; + if (targetSN >= levelDetails.startSN && targetSN <= levelDetails.endSN) { + frag = fragments[targetSN - levelDetails.startSN]; + _logger.logger.log('live playlist, switching playlist, load frag with next SN: ' + frag.sn); + } + } + if (!frag) { + /* we have no idea about which fragment should be loaded. + so let's load mid fragment. it will help computing playlist sliding and find the right one + */ + frag = fragments[Math.min(fragLen - 1, Math.round(fragLen / 2))]; + _logger.logger.log('live playlist, switching playlist, unknown, load middle frag : ' + frag.sn); + } + } + return frag; + } + }, { + key: '_findFragment', + value: function _findFragment(start, fragPrevious, fragLen, fragments, bufferEnd, end, levelDetails) { + var config = this.hls.config; + var frag = void 0; + var foundFrag = void 0; + var maxFragLookUpTolerance = config.maxFragLookUpTolerance; + var fragNext = fragPrevious ? fragments[fragPrevious.sn - fragments[0].sn + 1] : undefined; + var fragmentWithinToleranceTest = function fragmentWithinToleranceTest(candidate) { + // offset should be within fragment boundary - config.maxFragLookUpTolerance + // this is to cope with situations like + // bufferEnd = 9.991 + // frag[Ø] : [0,10] + // frag[1] : [10,20] + // bufferEnd is within frag[0] range ... although what we are expecting is to return frag[1] here + // frag start frag start+duration + // |-----------------------------| + // <---> <---> + // ...--------><-----------------------------><---------.... + // previous frag matching fragment next frag + // return -1 return 0 return 1 + //logger.log(`level/sn/start/end/bufEnd:${level}/${candidate.sn}/${candidate.start}/${(candidate.start+candidate.duration)}/${bufferEnd}`); + // Set the lookup tolerance to be small enough to detect the current segment - ensures we don't skip over very small segments + var candidateLookupTolerance = Math.min(maxFragLookUpTolerance, candidate.duration); + if (candidate.start + candidate.duration - candidateLookupTolerance <= bufferEnd) { + return 1; + } // if maxFragLookUpTolerance will have negative value then don't return -1 for first element + else if (candidate.start - candidateLookupTolerance > bufferEnd && candidate.start) { + return -1; + } + return 0; + }; + + if (bufferEnd < end) { + if (bufferEnd > end - maxFragLookUpTolerance) { + maxFragLookUpTolerance = 0; + } + // Prefer the next fragment if it's within tolerance + if (fragNext && !fragmentWithinToleranceTest(fragNext)) { + foundFrag = fragNext; + } else { + foundFrag = _binarySearch2.default.search(fragments, fragmentWithinToleranceTest); + } + } else { + // reach end of playlist + foundFrag = fragments[fragLen - 1]; + } + if (foundFrag) { + frag = foundFrag; + var curSNIdx = frag.sn - levelDetails.startSN; + var sameLevel = fragPrevious && frag.level === fragPrevious.level; + var prevFrag = fragments[curSNIdx - 1]; + var nextFrag = fragments[curSNIdx + 1]; + //logger.log('find SN matching with pos:' + bufferEnd + ':' + frag.sn); + if (fragPrevious && frag.sn === fragPrevious.sn) { + if (sameLevel && !frag.backtracked) { + if (frag.sn < levelDetails.endSN) { + var deltaPTS = fragPrevious.deltaPTS; + // if there is a significant delta between audio and video, larger than max allowed hole, + // and if previous remuxed fragment did not start with a keyframe. (fragPrevious.dropped) + // let's try to load previous fragment again to get last keyframe + // then we will reload again current fragment (that way we should be able to fill the buffer hole ...) + if (deltaPTS && deltaPTS > config.maxBufferHole && fragPrevious.dropped && curSNIdx) { + frag = prevFrag; + _logger.logger.warn('SN just loaded, with large PTS gap between audio and video, maybe frag is not starting with a keyframe ? load previous one to try to overcome this'); + // decrement previous frag load counter to avoid frag loop loading error when next fragment will get reloaded + fragPrevious.loadCounter--; + } else { + frag = nextFrag; + _logger.logger.log('SN just loaded, load next one: ' + frag.sn); + } + } else { + frag = null; + } + } else if (frag.backtracked) { + // Only backtrack a max of 1 consecutive fragment to prevent sliding back too far when little or no frags start with keyframes + if (nextFrag && nextFrag.backtracked) { + _logger.logger.warn('Already backtracked from fragment ' + nextFrag.sn + ', will not backtrack to fragment ' + frag.sn + '. Loading fragment ' + nextFrag.sn); + frag = nextFrag; + } else { + // If a fragment has dropped frames and it's in a same level/sequence, load the previous fragment to try and find the keyframe + // Reset the dropped count now since it won't be reset until we parse the fragment again, which prevents infinite backtracking on the same segment + _logger.logger.warn('Loaded fragment with dropped frames, backtracking 1 segment to find a keyframe'); + frag.dropped = 0; + if (prevFrag) { + if (prevFrag.loadCounter) { + prevFrag.loadCounter--; + } + frag = prevFrag; + frag.backtracked = true; + } else { + frag = null; + } + } + } + } + } + return frag; + } + }, { + key: '_loadFragmentOrKey', + value: function _loadFragmentOrKey(frag, level, levelDetails, pos, bufferEnd) { + var hls = this.hls, + config = hls.config; + + //logger.log('loading frag ' + i +',pos/bufEnd:' + pos.toFixed(3) + '/' + bufferEnd.toFixed(3)); + if (frag.decryptdata && frag.decryptdata.uri != null && frag.decryptdata.key == null) { + _logger.logger.log('Loading key for ' + frag.sn + ' of [' + levelDetails.startSN + ' ,' + levelDetails.endSN + '],level ' + level); + this.state = State.KEY_LOADING; + hls.trigger(_events2.default.KEY_LOADING, { frag: frag }); + } else { + _logger.logger.log('Loading ' + frag.sn + ' of [' + levelDetails.startSN + ' ,' + levelDetails.endSN + '],level ' + level + ', currentTime:' + pos.toFixed(3) + ',bufferEnd:' + bufferEnd.toFixed(3)); + // ensure that we are not reloading the same fragments in loop ... + if (this.fragLoadIdx !== undefined) { + this.fragLoadIdx++; + } else { + this.fragLoadIdx = 0; + } + if (frag.loadCounter) { + frag.loadCounter++; + var maxThreshold = config.fragLoadingLoopThreshold; + // if this frag has already been loaded 3 times, and if it has been reloaded recently + if (frag.loadCounter > maxThreshold && Math.abs(this.fragLoadIdx - frag.loadIdx) < maxThreshold) { + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.FRAG_LOOP_LOADING_ERROR, fatal: false, frag: frag }); + return; + } + } else { + frag.loadCounter = 1; + } + frag.loadIdx = this.fragLoadIdx; + this.fragCurrent = frag; + this.startFragRequested = true; + if (!isNaN(frag.sn)) { + this.nextLoadPosition = frag.start + frag.duration; + } + frag.autoLevel = hls.autoLevelEnabled; + frag.bitrateTest = this.bitrateTest; + hls.trigger(_events2.default.FRAG_LOADING, { frag: frag }); + // lazy demuxer init, as this could take some time ... do it during frag loading + if (!this.demuxer) { + this.demuxer = new _demuxer2.default(hls, 'main'); + } + this.state = State.FRAG_LOADING; + return; + } + } + }, { + key: 'getBufferedFrag', + value: function getBufferedFrag(position) { + return _binarySearch2.default.search(this._bufferedFrags, function (frag) { + if (position < frag.startPTS) { + return -1; + } else if (position > frag.endPTS) { + return 1; + } + return 0; + }); + } + }, { + key: 'followingBufferedFrag', + value: function followingBufferedFrag(frag) { + if (frag) { + // try to get range of next fragment (500ms after this range) + return this.getBufferedFrag(frag.endPTS + 0.5); + } + return null; + } + }, { + key: '_checkFragmentChanged', + value: function _checkFragmentChanged() { + var fragPlayingCurrent, + currentTime, + video = this.media; + if (video && video.readyState && video.seeking === false) { + currentTime = video.currentTime; + /* if video element is in seeked state, currentTime can only increase. + (assuming that playback rate is positive ...) + As sometimes currentTime jumps back to zero after a + media decode error, check this, to avoid seeking back to + wrong position after a media decode error + */ + if (currentTime > video.playbackRate * this.lastCurrentTime) { + this.lastCurrentTime = currentTime; + } + if (_bufferHelper2.default.isBuffered(video, currentTime)) { + fragPlayingCurrent = this.getBufferedFrag(currentTime); + } else if (_bufferHelper2.default.isBuffered(video, currentTime + 0.1)) { + /* ensure that FRAG_CHANGED event is triggered at startup, + when first video frame is displayed and playback is paused. + add a tolerance of 100ms, in case current position is not buffered, + check if current pos+100ms is buffered and use that buffer range + for FRAG_CHANGED event reporting */ + fragPlayingCurrent = this.getBufferedFrag(currentTime + 0.1); + } + if (fragPlayingCurrent) { + var fragPlaying = fragPlayingCurrent; + if (fragPlaying !== this.fragPlaying) { + this.hls.trigger(_events2.default.FRAG_CHANGED, { frag: fragPlaying }); + var fragPlayingLevel = fragPlaying.level; + if (!this.fragPlaying || this.fragPlaying.level !== fragPlayingLevel) { + this.hls.trigger(_events2.default.LEVEL_SWITCHED, { level: fragPlayingLevel }); + } + this.fragPlaying = fragPlaying; + } + } + } + } + + /* + on immediate level switch : + - pause playback if playing + - cancel any pending load request + - and trigger a buffer flush + */ + + }, { + key: 'immediateLevelSwitch', + value: function immediateLevelSwitch() { + _logger.logger.log('immediateLevelSwitch'); + if (!this.immediateSwitch) { + this.immediateSwitch = true; + var media = this.media, + previouslyPaused = void 0; + if (media) { + previouslyPaused = media.paused; + media.pause(); + } else { + // don't restart playback after instant level switch in case media not attached + previouslyPaused = true; + } + this.previouslyPaused = previouslyPaused; + } + var fragCurrent = this.fragCurrent; + if (fragCurrent && fragCurrent.loader) { + fragCurrent.loader.abort(); + } + this.fragCurrent = null; + // increase fragment load Index to avoid frag loop loading error after buffer flush + this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold; + // flush everything + this.flushMainBuffer(0, Number.POSITIVE_INFINITY); + } + + /* + on immediate level switch end, after new fragment has been buffered : + - nudge video decoder by slightly adjusting video currentTime (if currentTime buffered) + - resume the playback if needed + */ + + }, { + key: 'immediateLevelSwitchEnd', + value: function immediateLevelSwitchEnd() { + var media = this.media; + if (media && media.buffered.length) { + this.immediateSwitch = false; + if (_bufferHelper2.default.isBuffered(media, media.currentTime)) { + // only nudge if currentTime is buffered + media.currentTime -= 0.0001; + } + if (!this.previouslyPaused) { + media.play(); + } + } + } + }, { + key: 'nextLevelSwitch', + value: function nextLevelSwitch() { + /* try to switch ASAP without breaking video playback : + in order to ensure smooth but quick level switching, + we need to find the next flushable buffer range + we should take into account new segment fetch time + */ + var media = this.media; + // ensure that media is defined and that metadata are available (to retrieve currentTime) + if (media && media.readyState) { + var fetchdelay = void 0, + fragPlayingCurrent = void 0, + nextBufferedFrag = void 0; + // increase fragment load Index to avoid frag loop loading error after buffer flush + this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold; + fragPlayingCurrent = this.getBufferedFrag(media.currentTime); + if (fragPlayingCurrent && fragPlayingCurrent.startPTS > 1) { + // flush buffer preceding current fragment (flush until current fragment start offset) + // minus 1s to avoid video freezing, that could happen if we flush keyframe of current video ... + this.flushMainBuffer(0, fragPlayingCurrent.startPTS - 1); + } + if (!media.paused) { + // add a safety delay of 1s + var nextLevelId = this.hls.nextLoadLevel, + nextLevel = this.levels[nextLevelId], + fragLastKbps = this.fragLastKbps; + if (fragLastKbps && this.fragCurrent) { + fetchdelay = this.fragCurrent.duration * nextLevel.bitrate / (1000 * fragLastKbps) + 1; + } else { + fetchdelay = 0; + } + } else { + fetchdelay = 0; + } + //logger.log('fetchdelay:'+fetchdelay); + // find buffer range that will be reached once new fragment will be fetched + nextBufferedFrag = this.getBufferedFrag(media.currentTime + fetchdelay); + if (nextBufferedFrag) { + // we can flush buffer range following this one without stalling playback + nextBufferedFrag = this.followingBufferedFrag(nextBufferedFrag); + if (nextBufferedFrag) { + // if we are here, we can also cancel any loading/demuxing in progress, as they are useless + var fragCurrent = this.fragCurrent; + if (fragCurrent && fragCurrent.loader) { + fragCurrent.loader.abort(); + } + this.fragCurrent = null; + // flush position is the start position of this new buffer + this.flushMainBuffer(nextBufferedFrag.startPTS, Number.POSITIVE_INFINITY); + } + } + } + } + }, { + key: 'flushMainBuffer', + value: function flushMainBuffer(startOffset, endOffset) { + this.state = State.BUFFER_FLUSHING; + var flushScope = { startOffset: startOffset, endOffset: endOffset }; + // if alternate audio tracks are used, only flush video, otherwise flush everything + if (this.altAudio) { + flushScope.type = 'video'; + } + this.hls.trigger(_events2.default.BUFFER_FLUSHING, flushScope); + } + }, { + key: 'onMediaAttached', + value: function onMediaAttached(data) { + var media = this.media = this.mediaBuffer = data.media; + this.onvseeking = this.onMediaSeeking.bind(this); + this.onvseeked = this.onMediaSeeked.bind(this); + this.onvended = this.onMediaEnded.bind(this); + media.addEventListener('seeking', this.onvseeking); + media.addEventListener('seeked', this.onvseeked); + media.addEventListener('ended', this.onvended); + var config = this.config; + if (this.levels && config.autoStartLoad) { + this.hls.startLoad(config.startPosition); + } + } + }, { + key: 'onMediaDetaching', + value: function onMediaDetaching() { + var media = this.media; + if (media && media.ended) { + _logger.logger.log('MSE detaching and video ended, reset startPosition'); + this.startPosition = this.lastCurrentTime = 0; + } + + // reset fragment loading counter on MSE detaching to avoid reporting FRAG_LOOP_LOADING_ERROR after error recovery + var levels = this.levels; + if (levels) { + // reset fragment load counter + levels.forEach(function (level) { + if (level.details) { + level.details.fragments.forEach(function (fragment) { + fragment.loadCounter = undefined; + fragment.backtracked = undefined; + }); + } + }); + } + // remove video listeners + if (media) { + media.removeEventListener('seeking', this.onvseeking); + media.removeEventListener('seeked', this.onvseeked); + media.removeEventListener('ended', this.onvended); + this.onvseeking = this.onvseeked = this.onvended = null; + } + this.media = this.mediaBuffer = null; + this.loadedmetadata = false; + this.stopLoad(); + } + }, { + key: 'onMediaSeeking', + value: function onMediaSeeking() { + var media = this.media, + currentTime = media ? media.currentTime : undefined, + config = this.config; + if (!isNaN(currentTime)) { + _logger.logger.log('media seeking to ' + currentTime.toFixed(3)); + } + var mediaBuffer = this.mediaBuffer ? this.mediaBuffer : media; + var bufferInfo = _bufferHelper2.default.bufferInfo(mediaBuffer, currentTime, this.config.maxBufferHole); + if (this.state === State.FRAG_LOADING) { + var fragCurrent = this.fragCurrent; + // check if we are seeking to a unbuffered area AND if frag loading is in progress + if (bufferInfo.len === 0 && fragCurrent) { + var tolerance = config.maxFragLookUpTolerance, + fragStartOffset = fragCurrent.start - tolerance, + fragEndOffset = fragCurrent.start + fragCurrent.duration + tolerance; + // check if we seek position will be out of currently loaded frag range : if out cancel frag load, if in, don't do anything + if (currentTime < fragStartOffset || currentTime > fragEndOffset) { + if (fragCurrent.loader) { + _logger.logger.log('seeking outside of buffer while fragment load in progress, cancel fragment load'); + fragCurrent.loader.abort(); + } + this.fragCurrent = null; + this.fragPrevious = null; + // switch to IDLE state to load new fragment + this.state = State.IDLE; + } else { + _logger.logger.log('seeking outside of buffer but within currently loaded fragment range'); + } + } + } else if (this.state === State.ENDED) { + // if seeking to unbuffered area, clean up fragPrevious + if (bufferInfo.len === 0) { + this.fragPrevious = 0; + } + // switch to IDLE state to check for potential new fragment + this.state = State.IDLE; + } + if (media) { + this.lastCurrentTime = currentTime; + } + // avoid reporting fragment loop loading error in case user is seeking several times on same position + if (this.state !== State.FRAG_LOADING && this.fragLoadIdx !== undefined) { + this.fragLoadIdx += 2 * config.fragLoadingLoopThreshold; + } + // in case seeking occurs although no media buffered, adjust startPosition and nextLoadPosition to seek target + if (!this.loadedmetadata) { + this.nextLoadPosition = this.startPosition = currentTime; + } + // tick to speed up processing + this.tick(); + } + }, { + key: 'onMediaSeeked', + value: function onMediaSeeked() { + var media = this.media, + currentTime = media ? media.currentTime : undefined; + if (!isNaN(currentTime)) { + _logger.logger.log('media seeked to ' + currentTime.toFixed(3)); + } + // tick to speed up FRAGMENT_PLAYING triggering + this.tick(); + } + }, { + key: 'onMediaEnded', + value: function onMediaEnded() { + _logger.logger.log('media ended'); + // reset startPosition and lastCurrentTime to restart playback @ stream beginning + this.startPosition = this.lastCurrentTime = 0; + } + }, { + key: 'onManifestLoading', + value: function onManifestLoading() { + // reset buffer on manifest loading + _logger.logger.log('trigger BUFFER_RESET'); + this.hls.trigger(_events2.default.BUFFER_RESET); + this._bufferedFrags = []; + this.stalled = false; + this.startPosition = this.lastCurrentTime = 0; + } + }, { + key: 'onManifestParsed', + value: function onManifestParsed(data) { + var aac = false, + heaac = false, + codec; + data.levels.forEach(function (level) { + // detect if we have different kind of audio codecs used amongst playlists + codec = level.audioCodec; + if (codec) { + if (codec.indexOf('mp4a.40.2') !== -1) { + aac = true; + } + if (codec.indexOf('mp4a.40.5') !== -1) { + heaac = true; + } + } + }); + this.audioCodecSwitch = aac && heaac; + if (this.audioCodecSwitch) { + _logger.logger.log('both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC'); + } + this.levels = data.levels; + this.startLevelLoaded = false; + this.startFragRequested = false; + var config = this.config; + if (config.autoStartLoad || this.forceStartLoad) { + this.hls.startLoad(config.startPosition); + } + } + }, { + key: 'onLevelLoaded', + value: function onLevelLoaded(data) { + var newDetails = data.details, + newLevelId = data.level, + curLevel = this.levels[newLevelId], + duration = newDetails.totalduration, + sliding = 0; + + _logger.logger.log('level ' + newLevelId + ' loaded [' + newDetails.startSN + ',' + newDetails.endSN + '],duration:' + duration); + this.levelLastLoaded = newLevelId; + + if (newDetails.live) { + var curDetails = curLevel.details; + if (curDetails && newDetails.fragments.length > 0) { + // we already have details for that level, merge them + _levelHelper2.default.mergeDetails(curDetails, newDetails); + sliding = newDetails.fragments[0].start; + this.liveSyncPosition = this.computeLivePosition(sliding, curDetails); + if (newDetails.PTSKnown) { + _logger.logger.log('live playlist sliding:' + sliding.toFixed(3)); + } else { + _logger.logger.log('live playlist - outdated PTS, unknown sliding'); + } + } else { + newDetails.PTSKnown = false; + _logger.logger.log('live playlist - first load, unknown sliding'); + } + } else { + newDetails.PTSKnown = false; + } + // override level info + curLevel.details = newDetails; + this.hls.trigger(_events2.default.LEVEL_UPDATED, { details: newDetails, level: newLevelId }); + + if (this.startFragRequested === false) { + // compute start position if set to -1. use it straight away if value is defined + if (this.startPosition === -1 || this.lastCurrentTime === -1) { + // first, check if start time offset has been set in playlist, if yes, use this value + var startTimeOffset = newDetails.startTimeOffset; + if (!isNaN(startTimeOffset)) { + if (startTimeOffset < 0) { + _logger.logger.log('negative start time offset ' + startTimeOffset + ', count from end of last fragment'); + startTimeOffset = sliding + duration + startTimeOffset; + } + _logger.logger.log('start time offset found in playlist, adjust startPosition to ' + startTimeOffset); + this.startPosition = startTimeOffset; + } else { + // if live playlist, set start position to be fragment N-this.config.liveSyncDurationCount (usually 3) + if (newDetails.live) { + this.startPosition = this.computeLivePosition(sliding, newDetails); + _logger.logger.log('configure startPosition to ' + this.startPosition); + } else { + this.startPosition = 0; + } + } + this.lastCurrentTime = this.startPosition; + } + this.nextLoadPosition = this.startPosition; + } + // only switch batck to IDLE state if we were waiting for level to start downloading a new fragment + if (this.state === State.WAITING_LEVEL) { + this.state = State.IDLE; + } + //trigger handler right now + this.tick(); + } + }, { + key: 'onKeyLoaded', + value: function onKeyLoaded() { + if (this.state === State.KEY_LOADING) { + this.state = State.IDLE; + this.tick(); + } + } + }, { + key: 'onFragLoaded', + value: function onFragLoaded(data) { + var fragCurrent = this.fragCurrent, + fragLoaded = data.frag; + if (this.state === State.FRAG_LOADING && fragCurrent && fragLoaded.type === 'main' && fragLoaded.level === fragCurrent.level && fragLoaded.sn === fragCurrent.sn) { + var stats = data.stats, + currentLevel = this.levels[fragCurrent.level], + details = currentLevel.details; + _logger.logger.log('Loaded ' + fragCurrent.sn + ' of [' + details.startSN + ' ,' + details.endSN + '],level ' + fragCurrent.level); + // reset frag bitrate test in any case after frag loaded event + this.bitrateTest = false; + this.stats = stats; + // if this frag was loaded to perform a bitrate test AND if hls.nextLoadLevel is greater than 0 + // then this means that we should be able to load a fragment at a higher quality level + if (fragLoaded.bitrateTest === true && this.hls.nextLoadLevel) { + // switch back to IDLE state ... we just loaded a fragment to determine adequate start bitrate and initialize autoswitch algo + this.state = State.IDLE; + this.startFragRequested = false; + stats.tparsed = stats.tbuffered = performance.now(); + this.hls.trigger(_events2.default.FRAG_BUFFERED, { stats: stats, frag: fragCurrent, id: 'main' }); + this.tick(); + } else if (fragLoaded.sn === 'initSegment') { + this.state = State.IDLE; + stats.tparsed = stats.tbuffered = performance.now(); + details.initSegment.data = data.payload; + this.hls.trigger(_events2.default.FRAG_BUFFERED, { stats: stats, frag: fragCurrent, id: 'main' }); + this.tick(); + } else { + this.state = State.PARSING; + // transmux the MPEG-TS data to ISO-BMFF segments + var duration = details.totalduration, + level = fragCurrent.level, + sn = fragCurrent.sn, + audioCodec = this.config.defaultAudioCodec || currentLevel.audioCodec; + if (this.audioCodecSwap) { + _logger.logger.log('swapping playlist audio codec'); + if (audioCodec === undefined) { + audioCodec = this.lastAudioCodec; + } + if (audioCodec) { + if (audioCodec.indexOf('mp4a.40.5') !== -1) { + audioCodec = 'mp4a.40.2'; + } else { + audioCodec = 'mp4a.40.5'; + } + } + } + this.pendingBuffering = true; + this.appended = false; + _logger.logger.log('Parsing ' + sn + ' of [' + details.startSN + ' ,' + details.endSN + '],level ' + level + ', cc ' + fragCurrent.cc); + var demuxer = this.demuxer; + if (!demuxer) { + demuxer = this.demuxer = new _demuxer2.default(this.hls, 'main'); + } + // time Offset is accurate if level PTS is known, or if playlist is not sliding (not live) and if media is not seeking (this is to overcome potential timestamp drifts between playlists and fragments) + var media = this.media; + var mediaSeeking = media && media.seeking; + var accurateTimeOffset = !mediaSeeking && (details.PTSKnown || !details.live); + var initSegmentData = details.initSegment ? details.initSegment.data : []; + demuxer.push(data.payload, initSegmentData, audioCodec, currentLevel.videoCodec, fragCurrent, duration, accurateTimeOffset, undefined); + } + } + this.fragLoadError = 0; + } + }, { + key: 'onFragParsingInitSegment', + value: function onFragParsingInitSegment(data) { + var fragCurrent = this.fragCurrent; + var fragNew = data.frag; + if (fragCurrent && data.id === 'main' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === State.PARSING) { + var tracks = data.tracks, + trackName, + track; + + // if audio track is expected to come from audio stream controller, discard any coming from main + if (tracks.audio && this.altAudio) { + delete tracks.audio; + } + // include levelCodec in audio and video tracks + track = tracks.audio; + if (track) { + var audioCodec = this.levels[this.level].audioCodec, + ua = navigator.userAgent.toLowerCase(); + if (audioCodec && this.audioCodecSwap) { + _logger.logger.log('swapping playlist audio codec'); + if (audioCodec.indexOf('mp4a.40.5') !== -1) { + audioCodec = 'mp4a.40.2'; + } else { + audioCodec = 'mp4a.40.5'; + } + } + // in case AAC and HE-AAC audio codecs are signalled in manifest + // force HE-AAC , as it seems that most browsers prefers that way, + // except for mono streams OR on FF + // these conditions might need to be reviewed ... + if (this.audioCodecSwitch) { + // don't force HE-AAC if mono stream + if (track.metadata.channelCount !== 1 && + // don't force HE-AAC if firefox + ua.indexOf('firefox') === -1) { + audioCodec = 'mp4a.40.5'; + } + } + // HE-AAC is broken on Android, always signal audio codec as AAC even if variant manifest states otherwise + if (ua.indexOf('android') !== -1 && track.container !== 'audio/mpeg') { + // Exclude mpeg audio + audioCodec = 'mp4a.40.2'; + _logger.logger.log('Android: force audio codec to ' + audioCodec); + } + track.levelCodec = audioCodec; + track.id = data.id; + } + track = tracks.video; + if (track) { + track.levelCodec = this.levels[this.level].videoCodec; + track.id = data.id; + } + this.hls.trigger(_events2.default.BUFFER_CODECS, tracks); + // loop through tracks that are going to be provided to bufferController + for (trackName in tracks) { + track = tracks[trackName]; + _logger.logger.log('main track:' + trackName + ',container:' + track.container + ',codecs[level/parsed]=[' + track.levelCodec + '/' + track.codec + ']'); + var initSegment = track.initSegment; + if (initSegment) { + this.appended = true; + // arm pending Buffering flag before appending a segment + this.pendingBuffering = true; + this.hls.trigger(_events2.default.BUFFER_APPENDING, { type: trackName, data: initSegment, parent: 'main', content: 'initSegment' }); + } + } + //trigger handler right now + this.tick(); + } + } + }, { + key: 'onFragParsingData', + value: function onFragParsingData(data) { + var _this2 = this; + + var fragCurrent = this.fragCurrent; + var fragNew = data.frag; + if (fragCurrent && data.id === 'main' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && !(data.type === 'audio' && this.altAudio) && // filter out main audio if audio track is loaded through audio stream controller + this.state === State.PARSING) { + var level = this.levels[this.level], + frag = fragCurrent; + if (isNaN(data.endPTS)) { + data.endPTS = data.startPTS + fragCurrent.duration; + data.endDTS = data.startDTS + fragCurrent.duration; + } + + _logger.logger.log('Parsed ' + data.type + ',PTS:[' + data.startPTS.toFixed(3) + ',' + data.endPTS.toFixed(3) + '],DTS:[' + data.startDTS.toFixed(3) + '/' + data.endDTS.toFixed(3) + '],nb:' + data.nb + ',dropped:' + (data.dropped || 0)); + + // Detect gaps in a fragment and try to fix it by finding a keyframe in the previous fragment (see _findFragments) + if (data.type === 'video') { + frag.dropped = data.dropped; + if (frag.dropped) { + if (!frag.backtracked) { + _logger.logger.warn('missing video frame(s), backtracking fragment'); + // Return back to the IDLE state without appending to buffer + // Causes findFragments to backtrack a segment and find the keyframe + // Audio fragments arriving before video sets the nextLoadPosition, causing _findFragments to skip the backtracked fragment + frag.backtracked = true; + this.nextLoadPosition = data.startPTS; + this.state = State.IDLE; + this.fragPrevious = frag; + this.tick(); + return; + } else { + _logger.logger.warn('Already backtracked on this fragment, appending with the gap'); + } + } else { + // Only reset the backtracked flag if we've loaded the frag without any dropped frames + frag.backtracked = false; + } + } + + var drift = _levelHelper2.default.updateFragPTSDTS(level.details, frag, data.startPTS, data.endPTS, data.startDTS, data.endDTS), + hls = this.hls; + hls.trigger(_events2.default.LEVEL_PTS_UPDATED, { details: level.details, level: this.level, drift: drift, type: data.type, start: data.startPTS, end: data.endPTS }); + + // has remuxer dropped video frames located before first keyframe ? + [data.data1, data.data2].forEach(function (buffer) { + // only append in PARSING state (rationale is that an appending error could happen synchronously on first segment appending) + // in that case it is useless to append following segments + if (buffer && buffer.length && _this2.state === State.PARSING) { + _this2.appended = true; + // arm pending Buffering flag before appending a segment + _this2.pendingBuffering = true; + hls.trigger(_events2.default.BUFFER_APPENDING, { type: data.type, data: buffer, parent: 'main', content: 'data' }); + } + }); + //trigger handler right now + this.tick(); + } + } + }, { + key: 'onFragParsed', + value: function onFragParsed(data) { + var fragCurrent = this.fragCurrent; + var fragNew = data.frag; + if (fragCurrent && data.id === 'main' && fragNew.sn === fragCurrent.sn && fragNew.level === fragCurrent.level && this.state === State.PARSING) { + this.stats.tparsed = performance.now(); + this.state = State.PARSED; + this._checkAppendedParsed(); + } + } + }, { + key: 'onAudioTrackSwitching', + value: function onAudioTrackSwitching(data) { + // if any URL found on new audio track, it is an alternate audio track + var altAudio = !!data.url, + trackId = data.id; + // if we switch on main audio, ensure that main fragment scheduling is synced with media.buffered + // don't do anything if we switch to alt audio: audio stream controller is handling it. + // we will just have to change buffer scheduling on audioTrackSwitched + if (!altAudio) { + if (this.mediaBuffer !== this.media) { + _logger.logger.log('switching on main audio, use media.buffered to schedule main fragment loading'); + this.mediaBuffer = this.media; + var fragCurrent = this.fragCurrent; + // we need to refill audio buffer from main: cancel any frag loading to speed up audio switch + if (fragCurrent.loader) { + _logger.logger.log('switching to main audio track, cancel main fragment load'); + fragCurrent.loader.abort(); + } + this.fragCurrent = null; + this.fragPrevious = null; + // destroy demuxer to force init segment generation (following audio switch) + if (this.demuxer) { + this.demuxer.destroy(); + this.demuxer = null; + } + // switch to IDLE state to load new fragment + this.state = State.IDLE; + } + var hls = this.hls; + // switching to main audio, flush all audio and trigger track switched + hls.trigger(_events2.default.BUFFER_FLUSHING, { startOffset: 0, endOffset: Number.POSITIVE_INFINITY, type: 'audio' }); + hls.trigger(_events2.default.AUDIO_TRACK_SWITCHED, { id: trackId }); + this.altAudio = false; + } + } + }, { + key: 'onAudioTrackSwitched', + value: function onAudioTrackSwitched(data) { + var trackId = data.id, + altAudio = !!this.hls.audioTracks[trackId].url; + if (altAudio) { + var videoBuffer = this.videoBuffer; + // if we switched on alternate audio, ensure that main fragment scheduling is synced with video sourcebuffer buffered + if (videoBuffer && this.mediaBuffer !== videoBuffer) { + _logger.logger.log('switching on alternate audio, use video.buffered to schedule main fragment loading'); + this.mediaBuffer = videoBuffer; + } + } + this.altAudio = altAudio; + this.tick(); + } + }, { + key: 'onBufferCreated', + value: function onBufferCreated(data) { + var tracks = data.tracks, + mediaTrack = void 0, + name = void 0, + alternate = false; + for (var type in tracks) { + var track = tracks[type]; + if (track.id === 'main') { + name = type; + mediaTrack = track; + // keep video source buffer reference + if (type === 'video') { + this.videoBuffer = tracks[type].buffer; + } + } else { + alternate = true; + } + } + if (alternate && mediaTrack) { + _logger.logger.log('alternate track found, use ' + name + '.buffered to schedule main fragment loading'); + this.mediaBuffer = mediaTrack.buffer; + } else { + this.mediaBuffer = this.media; + } + } + }, { + key: 'onBufferAppended', + value: function onBufferAppended(data) { + if (data.parent === 'main') { + var state = this.state; + if (state === State.PARSING || state === State.PARSED) { + // check if all buffers have been appended + this.pendingBuffering = data.pending > 0; + this._checkAppendedParsed(); + } + } + } + }, { + key: '_checkAppendedParsed', + value: function _checkAppendedParsed() { + //trigger handler right now + if (this.state === State.PARSED && (!this.appended || !this.pendingBuffering)) { + var frag = this.fragCurrent; + if (frag) { + var media = this.mediaBuffer ? this.mediaBuffer : this.media; + _logger.logger.log('main buffered : ' + _timeRanges2.default.toString(media.buffered)); + // filter fragments potentially evicted from buffer. this is to avoid memleak on live streams + var bufferedFrags = this._bufferedFrags.filter(function (frag) { + return _bufferHelper2.default.isBuffered(media, (frag.startPTS + frag.endPTS) / 2); + }); + // push new range + bufferedFrags.push(frag); + // sort frags, as we use BinarySearch for lookup in getBufferedFrag ... + this._bufferedFrags = bufferedFrags.sort(function (a, b) { + return a.startPTS - b.startPTS; + }); + this.fragPrevious = frag; + var stats = this.stats; + stats.tbuffered = performance.now(); + // we should get rid of this.fragLastKbps + this.fragLastKbps = Math.round(8 * stats.total / (stats.tbuffered - stats.tfirst)); + this.hls.trigger(_events2.default.FRAG_BUFFERED, { stats: stats, frag: frag, id: 'main' }); + this.state = State.IDLE; + } + this.tick(); + } + } + }, { + key: 'onError', + value: function onError(data) { + var frag = data.frag || this.fragCurrent; + // don't handle frag error not related to main fragment + if (frag && frag.type !== 'main') { + return; + } + var media = this.media, + + // 0.5 : tolerance needed as some browsers stalls playback before reaching buffered end + mediaBuffered = media && _bufferHelper2.default.isBuffered(media, media.currentTime) && _bufferHelper2.default.isBuffered(media, media.currentTime + 0.5); + switch (data.details) { + case _errors.ErrorDetails.FRAG_LOAD_ERROR: + case _errors.ErrorDetails.FRAG_LOAD_TIMEOUT: + case _errors.ErrorDetails.KEY_LOAD_ERROR: + case _errors.ErrorDetails.KEY_LOAD_TIMEOUT: + if (!data.fatal) { + var loadError = this.fragLoadError; + if (loadError) { + loadError++; + } else { + loadError = 1; + } + var config = this.config; + // keep retrying / don't raise fatal network error if current position is buffered or if in automode with current level not 0 + if (loadError <= config.fragLoadingMaxRetry || mediaBuffered || frag.autoLevel && frag.level) { + this.fragLoadError = loadError; + // reset load counter to avoid frag loop loading error + frag.loadCounter = 0; + // exponential backoff capped to config.fragLoadingMaxRetryTimeout + var delay = Math.min(Math.pow(2, loadError - 1) * config.fragLoadingRetryDelay, config.fragLoadingMaxRetryTimeout); + _logger.logger.warn('mediaController: frag loading failed, retry in ' + delay + ' ms'); + this.retryDate = performance.now() + delay; + // retry loading state + // if loadedmetadata is not set, it means that we are emergency switch down on first frag + // in that case, reset startFragRequested flag + if (!this.loadedmetadata) { + this.startFragRequested = false; + this.nextLoadPosition = this.startPosition; + } + this.state = State.FRAG_LOADING_WAITING_RETRY; + } else { + _logger.logger.error('mediaController: ' + data.details + ' reaches max retry, redispatch as fatal ...'); + // switch error to fatal + data.fatal = true; + this.state = State.ERROR; + } + } + break; + case _errors.ErrorDetails.FRAG_LOOP_LOADING_ERROR: + if (!data.fatal) { + // if buffer is not empty + if (mediaBuffered) { + // try to reduce max buffer length : rationale is that we could get + // frag loop loading error because of buffer eviction + this._reduceMaxBufferLength(frag.duration); + this.state = State.IDLE; + } else { + // buffer empty. report as fatal if in manual mode or if lowest level. + // level controller takes care of emergency switch down logic + if (!frag.autoLevel || frag.level === 0) { + // switch error to fatal + data.fatal = true; + this.state = State.ERROR; + } + } + } + break; + case _errors.ErrorDetails.LEVEL_LOAD_ERROR: + case _errors.ErrorDetails.LEVEL_LOAD_TIMEOUT: + if (this.state !== State.ERROR) { + if (data.fatal) { + // if fatal error, stop processing + this.state = State.ERROR; + _logger.logger.warn('streamController: ' + data.details + ',switch to ' + this.state + ' state ...'); + } else { + // in case of non fatal error while loading level, if level controller is not retrying to load level , switch back to IDLE + if (!data.levelRetry && this.state === State.WAITING_LEVEL) { + this.state = State.IDLE; + } + } + } + break; + case _errors.ErrorDetails.BUFFER_FULL_ERROR: + // if in appending state + if (data.parent === 'main' && (this.state === State.PARSING || this.state === State.PARSED)) { + // reduce max buf len if current position is buffered + if (mediaBuffered) { + this._reduceMaxBufferLength(this.config.maxBufferLength); + this.state = State.IDLE; + } else { + // current position is not buffered, but browser is still complaining about buffer full error + // this happens on IE/Edge, refer to https://github.com/video-dev/hls.js/pull/708 + // in that case flush the whole buffer to recover + _logger.logger.warn('buffer full error also media.currentTime is not buffered, flush everything'); + this.fragCurrent = null; + // flush everything + this.flushMainBuffer(0, Number.POSITIVE_INFINITY); + } + } + break; + default: + break; + } + } + }, { + key: '_reduceMaxBufferLength', + value: function _reduceMaxBufferLength(minLength) { + var config = this.config; + if (config.maxMaxBufferLength >= minLength) { + // reduce max buffer length as it might be too high. we do this to avoid loop flushing ... + config.maxMaxBufferLength /= 2; + _logger.logger.warn('main:reduce max buffer length to ' + config.maxMaxBufferLength + 's'); + // increase fragment load Index to avoid frag loop loading error after buffer flush + this.fragLoadIdx += 2 * config.fragLoadingLoopThreshold; + } + } + }, { + key: '_checkBuffer', + value: function _checkBuffer() { + var media = this.media; + // if ready state different from HAVE_NOTHING (numeric value 0), we are allowed to seek + if (media && media.readyState) { + var currentTime = media.currentTime, + mediaBuffer = this.mediaBuffer ? this.mediaBuffer : media, + buffered = mediaBuffer.buffered; + // adjust currentTime to start position on loaded metadata + if (!this.loadedmetadata && buffered.length) { + this.loadedmetadata = true; + // only adjust currentTime if different from startPosition or if startPosition not buffered + // at that stage, there should be only one buffered range, as we reach that code after first fragment has been buffered + var startPosition = media.seeking ? currentTime : this.startPosition, + startPositionBuffered = _bufferHelper2.default.isBuffered(mediaBuffer, startPosition); + // if currentTime not matching with expected startPosition or startPosition not buffered + if (currentTime !== startPosition || !startPositionBuffered) { + _logger.logger.log('target start position:' + startPosition); + // if startPosition not buffered, let's seek to buffered.start(0) + if (!startPositionBuffered) { + startPosition = buffered.start(0); + _logger.logger.log('target start position not buffered, seek to buffered.start(0) ' + startPosition); + } + _logger.logger.log('adjust currentTime from ' + currentTime + ' to ' + startPosition); + media.currentTime = startPosition; + } + } else if (this.immediateSwitch) { + this.immediateLevelSwitchEnd(); + } else { + var bufferInfo = _bufferHelper2.default.bufferInfo(media, currentTime, 0), + expectedPlaying = !(media.paused || // not playing when media is paused + media.ended || // not playing when media is ended + media.buffered.length === 0), + // not playing if nothing buffered + jumpThreshold = 0.5, + // tolerance needed as some browsers stalls playback before reaching buffered range end + playheadMoving = currentTime !== this.lastCurrentTime, + config = this.config; + + if (playheadMoving) { + // played moving, but was previously stalled => now not stuck anymore + if (this.stallReported) { + _logger.logger.warn('playback not stuck anymore @' + currentTime + ', after ' + Math.round(performance.now() - this.stalled) + 'ms'); + this.stallReported = false; + } + this.stalled = undefined; + this.nudgeRetry = 0; + } else { + // playhead not moving + if (expectedPlaying) { + // playhead not moving BUT media expected to play + var tnow = performance.now(); + var hls = this.hls; + if (!this.stalled) { + // stall just detected, store current time + this.stalled = tnow; + this.stallReported = false; + } else { + // playback already stalled, check stalling duration + // if stalling for more than a given threshold, let's try to recover + var stalledDuration = tnow - this.stalled; + var bufferLen = bufferInfo.len; + var nudgeRetry = this.nudgeRetry || 0; + // have we reached stall deadline ? + if (bufferLen <= jumpThreshold && stalledDuration > config.lowBufferWatchdogPeriod * 1000) { + // report stalled error once + if (!this.stallReported) { + this.stallReported = true; + _logger.logger.warn('playback stalling in low buffer @' + currentTime); + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.BUFFER_STALLED_ERROR, fatal: false, buffer: bufferLen }); + } + // if buffer len is below threshold, try to jump to start of next buffer range if close + // no buffer available @ currentTime, check if next buffer is close (within a config.maxSeekHole second range) + var nextBufferStart = bufferInfo.nextStart, + delta = nextBufferStart - currentTime; + if (nextBufferStart && delta < config.maxSeekHole && delta > 0) { + this.nudgeRetry = ++nudgeRetry; + var nudgeOffset = nudgeRetry * config.nudgeOffset; + // next buffer is close ! adjust currentTime to nextBufferStart + // this will ensure effective video decoding + _logger.logger.log('adjust currentTime from ' + media.currentTime + ' to next buffered @ ' + nextBufferStart + ' + nudge ' + nudgeOffset); + media.currentTime = nextBufferStart + nudgeOffset; + // reset stalled so to rearm watchdog timer + this.stalled = undefined; + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.BUFFER_SEEK_OVER_HOLE, fatal: false, hole: nextBufferStart + nudgeOffset - currentTime }); + } + } else if (bufferLen > jumpThreshold && stalledDuration > config.highBufferWatchdogPeriod * 1000) { + // report stalled error once + if (!this.stallReported) { + this.stallReported = true; + _logger.logger.warn('playback stalling in high buffer @' + currentTime); + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.BUFFER_STALLED_ERROR, fatal: false, buffer: bufferLen }); + } + // reset stalled so to rearm watchdog timer + this.stalled = undefined; + this.nudgeRetry = ++nudgeRetry; + if (nudgeRetry < config.nudgeMaxRetry) { + var _currentTime = media.currentTime; + var targetTime = _currentTime + nudgeRetry * config.nudgeOffset; + _logger.logger.log('adjust currentTime from ' + _currentTime + ' to ' + targetTime); + // playback stalled in buffered area ... let's nudge currentTime to try to overcome this + media.currentTime = targetTime; + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.BUFFER_NUDGE_ON_STALL, fatal: false }); + } else { + _logger.logger.error('still stuck in high buffer @' + currentTime + ' after ' + config.nudgeMaxRetry + ', raise fatal error'); + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.BUFFER_STALLED_ERROR, fatal: true }); + } + } + } + } + } + } + } + } + }, { + key: 'onFragLoadEmergencyAborted', + value: function onFragLoadEmergencyAborted() { + this.state = State.IDLE; + // if loadedmetadata is not set, it means that we are emergency switch down on first frag + // in that case, reset startFragRequested flag + if (!this.loadedmetadata) { + this.startFragRequested = false; + this.nextLoadPosition = this.startPosition; + } + this.tick(); + } + }, { + key: 'onBufferFlushed', + value: function onBufferFlushed() { + /* after successful buffer flushing, filter flushed fragments from bufferedFrags + use mediaBuffered instead of media (so that we will check against video.buffered ranges in case of alt audio track) + */ + var media = this.mediaBuffer ? this.mediaBuffer : this.media; + this._bufferedFrags = this._bufferedFrags.filter(function (frag) { + return _bufferHelper2.default.isBuffered(media, (frag.startPTS + frag.endPTS) / 2); + }); + + // increase fragment load Index to avoid frag loop loading error after buffer flush + this.fragLoadIdx += 2 * this.config.fragLoadingLoopThreshold; + // move to IDLE once flush complete. this should trigger new fragment loading + this.state = State.IDLE; + // reset reference to frag + this.fragPrevious = null; + } + }, { + key: 'swapAudioCodec', + value: function swapAudioCodec() { + this.audioCodecSwap = !this.audioCodecSwap; + } + }, { + key: 'computeLivePosition', + value: function computeLivePosition(sliding, levelDetails) { + var targetLatency = this.config.liveSyncDuration !== undefined ? this.config.liveSyncDuration : this.config.liveSyncDurationCount * levelDetails.targetduration; + return sliding + Math.max(0, levelDetails.totalduration - targetLatency); + } + }, { + key: 'state', + set: function set(nextState) { + if (this.state !== nextState) { + var previousState = this.state; + this._state = nextState; + _logger.logger.log('main stream:' + previousState + '->' + nextState); + this.hls.trigger(_events2.default.STREAM_STATE_TRANSITION, { previousState: previousState, nextState: nextState }); + } + }, + get: function get() { + return this._state; + } + }, { + key: 'currentLevel', + get: function get() { + var media = this.media; + if (media) { + var frag = this.getBufferedFrag(media.currentTime); + if (frag) { + return frag.level; + } + } + return -1; + } + }, { + key: 'nextBufferedFrag', + get: function get() { + var media = this.media; + if (media) { + // first get end range of current fragment + return this.followingBufferedFrag(this.getBufferedFrag(media.currentTime)); + } else { + return null; + } + } + }, { + key: 'nextLevel', + get: function get() { + var frag = this.nextBufferedFrag; + if (frag) { + return frag.level; + } else { + return -1; + } + } + }, { + key: 'liveSyncPosition', + get: function get() { + return this._liveSyncPosition; + }, + set: function set(value) { + this._liveSyncPosition = value; + } + }]); + + return StreamController; +}(_eventHandler2.default); + +exports.default = StreamController; + +},{"25":25,"33":33,"34":34,"35":35,"37":37,"38":38,"48":48,"53":53,"54":54}],14:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _logger = _dereq_(53); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * Subtitle Stream Controller + */ + +var SubtitleStreamController = function (_EventHandler) { + _inherits(SubtitleStreamController, _EventHandler); + + function SubtitleStreamController(hls) { + _classCallCheck(this, SubtitleStreamController); + + var _this = _possibleConstructorReturn(this, (SubtitleStreamController.__proto__ || Object.getPrototypeOf(SubtitleStreamController)).call(this, hls, _events2.default.ERROR, _events2.default.SUBTITLE_TRACKS_UPDATED, _events2.default.SUBTITLE_TRACK_SWITCH, _events2.default.SUBTITLE_TRACK_LOADED, _events2.default.SUBTITLE_FRAG_PROCESSED)); + + _this.config = hls.config; + _this.vttFragSNsProcessed = {}; + _this.vttFragQueues = undefined; + _this.currentlyProcessing = null; + _this.currentTrackId = -1; + return _this; + } + + _createClass(SubtitleStreamController, [{ + key: 'destroy', + value: function destroy() { + _eventHandler2.default.prototype.destroy.call(this); + } + + // Remove all queued items and create a new, empty queue for each track. + + }, { + key: 'clearVttFragQueues', + value: function clearVttFragQueues() { + var _this2 = this; + + this.vttFragQueues = {}; + this.tracks.forEach(function (track) { + _this2.vttFragQueues[track.id] = []; + }); + } + + // If no frag is being processed and queue isn't empty, initiate processing of next frag in line. + + }, { + key: 'nextFrag', + value: function nextFrag() { + if (this.currentlyProcessing === null && this.currentTrackId > -1 && this.vttFragQueues[this.currentTrackId].length) { + var frag = this.currentlyProcessing = this.vttFragQueues[this.currentTrackId].shift(); + this.hls.trigger(_events2.default.FRAG_LOADING, { frag: frag }); + } + } + + // When fragment has finished processing, add sn to list of completed if successful. + + }, { + key: 'onSubtitleFragProcessed', + value: function onSubtitleFragProcessed(data) { + if (data.success) { + this.vttFragSNsProcessed[data.frag.trackId].push(data.frag.sn); + } + this.currentlyProcessing = null; + this.nextFrag(); + } + + // If something goes wrong, procede to next frag, if we were processing one. + + }, { + key: 'onError', + value: function onError(data) { + var frag = data.frag; + // don't handle frag error not related to subtitle fragment + if (frag && frag.type !== 'subtitle') { + return; + } + if (this.currentlyProcessing) { + this.currentlyProcessing = null; + this.nextFrag(); + } + } + + // Got all new subtitle tracks. + + }, { + key: 'onSubtitleTracksUpdated', + value: function onSubtitleTracksUpdated(data) { + var _this3 = this; + + _logger.logger.log('subtitle tracks updated'); + this.tracks = data.subtitleTracks; + this.clearVttFragQueues(); + this.vttFragSNsProcessed = {}; + this.tracks.forEach(function (track) { + _this3.vttFragSNsProcessed[track.id] = []; + }); + } + }, { + key: 'onSubtitleTrackSwitch', + value: function onSubtitleTrackSwitch(data) { + this.currentTrackId = data.id; + this.clearVttFragQueues(); + } + + // Got a new set of subtitle fragments. + + }, { + key: 'onSubtitleTrackLoaded', + value: function onSubtitleTrackLoaded(data) { + var processedFragSNs = this.vttFragSNsProcessed[data.id], + fragQueue = this.vttFragQueues[data.id], + currentFragSN = !!this.currentlyProcessing ? this.currentlyProcessing.sn : -1; + + var alreadyProcessed = function alreadyProcessed(frag) { + return processedFragSNs.indexOf(frag.sn) > -1; + }; + + var alreadyInQueue = function alreadyInQueue(frag) { + return fragQueue.some(function (fragInQueue) { + return fragInQueue.sn === frag.sn; + }); + }; + + // Add all fragments that haven't been, aren't currently being and aren't waiting to be processed, to queue. + data.details.fragments.forEach(function (frag) { + if (!(alreadyProcessed(frag) || frag.sn === currentFragSN || alreadyInQueue(frag))) { + // Frags don't know their subtitle track ID, so let's just add that... + frag.trackId = data.id; + fragQueue.push(frag); + } + }); + + this.nextFrag(); + } + }]); + + return SubtitleStreamController; +}(_eventHandler2.default); + +exports.default = SubtitleStreamController; + +},{"34":34,"35":35,"53":53}],15:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _logger = _dereq_(53); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * audio track controller + */ + +function filterSubtitleTracks(textTrackList) { + var tracks = []; + for (var i = 0; i < textTrackList.length; i++) { + if (textTrackList[i].kind === 'subtitles') { + tracks.push(textTrackList[i]); + } + } + return tracks; +} + +var SubtitleTrackController = function (_EventHandler) { + _inherits(SubtitleTrackController, _EventHandler); + + function SubtitleTrackController(hls) { + _classCallCheck(this, SubtitleTrackController); + + var _this = _possibleConstructorReturn(this, (SubtitleTrackController.__proto__ || Object.getPrototypeOf(SubtitleTrackController)).call(this, hls, _events2.default.MEDIA_ATTACHED, _events2.default.MEDIA_DETACHING, _events2.default.MANIFEST_LOADING, _events2.default.MANIFEST_LOADED, _events2.default.SUBTITLE_TRACK_LOADED)); + + _this.tracks = []; + _this.trackId = -1; + _this.media = undefined; + return _this; + } + + _createClass(SubtitleTrackController, [{ + key: 'destroy', + value: function destroy() { + _eventHandler2.default.prototype.destroy.call(this); + } + + // Listen for subtitle track change, then extract the current track ID. + + }, { + key: 'onMediaAttached', + value: function onMediaAttached(data) { + var _this2 = this; + + this.media = data.media; + if (!this.media) { + return; + } + + this.media.textTracks.addEventListener('change', function () { + // Media is undefined when switching streams via loadSource() + if (!_this2.media) { + return; + } + + var trackId = -1; + var tracks = filterSubtitleTracks(_this2.media.textTracks); + for (var id = 0; id < tracks.length; id++) { + if (tracks[id].mode === 'showing') { + trackId = id; + } + } + // Setting current subtitleTrack will invoke code. + _this2.subtitleTrack = trackId; + }); + } + }, { + key: 'onMediaDetaching', + value: function onMediaDetaching() { + // TODO: Remove event listeners. + this.media = undefined; + } + + // Reset subtitle tracks on manifest loading + + }, { + key: 'onManifestLoading', + value: function onManifestLoading() { + this.tracks = []; + this.trackId = -1; + } + + // Fired whenever a new manifest is loaded. + + }, { + key: 'onManifestLoaded', + value: function onManifestLoaded(data) { + var _this3 = this; + + var tracks = data.subtitles || []; + var defaultFound = false; + this.tracks = tracks; + this.trackId = -1; + this.hls.trigger(_events2.default.SUBTITLE_TRACKS_UPDATED, { subtitleTracks: tracks }); + + // loop through available subtitle tracks and autoselect default if needed + // TODO: improve selection logic to handle forced, etc + tracks.forEach(function (track) { + if (track.default) { + _this3.subtitleTrack = track.id; + defaultFound = true; + } + }); + } + + // Trigger subtitle track playlist reload. + + }, { + key: 'onTick', + value: function onTick() { + var trackId = this.trackId; + var subtitleTrack = this.tracks[trackId]; + if (!subtitleTrack) { + return; + } + + var details = subtitleTrack.details; + // check if we need to load playlist for this subtitle Track + if (details === undefined || details.live === true) { + // track not retrieved yet, or live playlist we need to (re)load it + _logger.logger.log('(re)loading playlist for subtitle track ' + trackId); + this.hls.trigger(_events2.default.SUBTITLE_TRACK_LOADING, { url: subtitleTrack.url, id: trackId }); + } + } + }, { + key: 'onSubtitleTrackLoaded', + value: function onSubtitleTrackLoaded(data) { + var _this4 = this; + + if (data.id < this.tracks.length) { + _logger.logger.log('subtitle track ' + data.id + ' loaded'); + this.tracks[data.id].details = data.details; + // check if current playlist is a live playlist + if (data.details.live && !this.timer) { + // if live playlist we will have to reload it periodically + // set reload period to playlist target duration + this.timer = setInterval(function () { + _this4.onTick(); + }, 1000 * data.details.targetduration, this); + } + if (!data.details.live && this.timer) { + // playlist is not live and timer is armed : stopping it + clearInterval(this.timer); + this.timer = null; + } + } + } + + /** get alternate subtitle tracks list from playlist **/ + + }, { + key: 'setSubtitleTrackInternal', + value: function setSubtitleTrackInternal(newId) { + // check if level idx is valid + if (newId >= 0 && newId < this.tracks.length) { + // stopping live reloading timer if any + if (this.timer) { + clearInterval(this.timer); + this.timer = null; + } + this.trackId = newId; + _logger.logger.log('switching to subtitle track ' + newId); + var subtitleTrack = this.tracks[newId]; + this.hls.trigger(_events2.default.SUBTITLE_TRACK_SWITCH, { id: newId }); + // check if we need to load playlist for this subtitle Track + var details = subtitleTrack.details; + if (details === undefined || details.live === true) { + // track not retrieved yet, or live playlist we need to (re)load it + _logger.logger.log('(re)loading playlist for subtitle track ' + newId); + this.hls.trigger(_events2.default.SUBTITLE_TRACK_LOADING, { url: subtitleTrack.url, id: newId }); + } + } + } + }, { + key: 'subtitleTracks', + get: function get() { + return this.tracks; + } + + /** get index of the selected subtitle track (index in subtitle track lists) **/ + + }, { + key: 'subtitleTrack', + get: function get() { + return this.trackId; + } + + /** select a subtitle track, based on its index in subtitle track lists**/ + , + set: function set(subtitleTrackId) { + if (this.trackId !== subtitleTrackId) { + // || this.tracks[subtitleTrackId].details === undefined) { + this.setSubtitleTrackInternal(subtitleTrackId); + } + } + }]); + + return SubtitleTrackController; +}(_eventHandler2.default); + +exports.default = SubtitleTrackController; + +},{"34":34,"35":35,"53":53}],16:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _cea608Parser = _dereq_(49); + +var _cea608Parser2 = _interopRequireDefault(_cea608Parser); + +var _webvttParser = _dereq_(57); + +var _webvttParser2 = _interopRequireDefault(_webvttParser); + +var _logger = _dereq_(53); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * Timeline Controller + */ + +function clearCurrentCues(track) { + if (track && track.cues) { + while (track.cues.length > 0) { + track.removeCue(track.cues[0]); + } + } +} + +function reuseVttTextTrack(inUseTrack, manifestTrack) { + return inUseTrack && inUseTrack.label === manifestTrack.name && !(inUseTrack.textTrack1 || inUseTrack.textTrack2); +} + +function intersection(x1, x2, y1, y2) { + return Math.min(x2, y2) - Math.max(x1, y1); +} + +var TimelineController = function (_EventHandler) { + _inherits(TimelineController, _EventHandler); + + function TimelineController(hls) { + _classCallCheck(this, TimelineController); + + var _this = _possibleConstructorReturn(this, (TimelineController.__proto__ || Object.getPrototypeOf(TimelineController)).call(this, hls, _events2.default.MEDIA_ATTACHING, _events2.default.MEDIA_DETACHING, _events2.default.FRAG_PARSING_USERDATA, _events2.default.MANIFEST_LOADING, _events2.default.MANIFEST_LOADED, _events2.default.FRAG_LOADED, _events2.default.LEVEL_SWITCHING, _events2.default.INIT_PTS_FOUND)); + + _this.hls = hls; + _this.config = hls.config; + _this.enabled = true; + _this.Cues = hls.config.cueHandler; + _this.textTracks = []; + _this.tracks = []; + _this.unparsedVttFrags = []; + _this.initPTS = undefined; + _this.cueRanges = []; + + if (_this.config.enableCEA708Captions) { + var self = _this; + var sendAddTrackEvent = function sendAddTrackEvent(track, media) { + var e = null; + try { + e = new window.Event('addtrack'); + } catch (err) { + //for IE11 + e = document.createEvent('Event'); + e.initEvent('addtrack', false, false); + } + e.track = track; + media.dispatchEvent(e); + }; + + var channel1 = { + 'newCue': function newCue(startTime, endTime, screen) { + if (!self.textTrack1) { + //Enable reuse of existing text track. + var existingTrack1 = self.getExistingTrack('1'); + if (!existingTrack1) { + var textTrack1 = self.createTextTrack('captions', self.config.captionsTextTrack1Label, self.config.captionsTextTrack1LanguageCode); + if (textTrack1) { + textTrack1.textTrack1 = true; + self.textTrack1 = textTrack1; + } + } else { + self.textTrack1 = existingTrack1; + clearCurrentCues(self.textTrack1); + + sendAddTrackEvent(self.textTrack1, self.media); + } + } + self.addCues('textTrack1', startTime, endTime, screen); + } + }; + + var channel2 = { + 'newCue': function newCue(startTime, endTime, screen) { + if (!self.textTrack2) { + //Enable reuse of existing text track. + var existingTrack2 = self.getExistingTrack('2'); + if (!existingTrack2) { + var textTrack2 = self.createTextTrack('captions', self.config.captionsTextTrack2Label, self.config.captionsTextTrack1LanguageCode); + if (textTrack2) { + textTrack2.textTrack2 = true; + self.textTrack2 = textTrack2; + } + } else { + self.textTrack2 = existingTrack2; + clearCurrentCues(self.textTrack2); + + sendAddTrackEvent(self.textTrack2, self.media); + } + } + self.addCues('textTrack2', startTime, endTime, screen); + } + }; + + _this.cea608Parser = new _cea608Parser2.default(0, channel1, channel2); + } + return _this; + } + + _createClass(TimelineController, [{ + key: 'addCues', + value: function addCues(channel, startTime, endTime, screen) { + // skip cues which overlap more than 50% with previously parsed time ranges + var ranges = this.cueRanges; + var merged = false; + for (var i = ranges.length; i--;) { + var cueRange = ranges[i]; + var overlap = intersection(cueRange[0], cueRange[1], startTime, endTime); + if (overlap >= 0) { + cueRange[0] = Math.min(cueRange[0], startTime); + cueRange[1] = Math.max(cueRange[1], endTime); + merged = true; + if (overlap / (endTime - startTime) > 0.5) { + return; + } + } + } + if (!merged) { + ranges.push([startTime, endTime]); + } + this.Cues.newCue(this[channel], startTime, endTime, screen); + } + + // Triggered when an initial PTS is found; used for synchronisation of WebVTT. + + }, { + key: 'onInitPtsFound', + value: function onInitPtsFound(data) { + var _this2 = this; + + if (typeof this.initPTS === 'undefined') { + this.initPTS = data.initPTS; + } + + // Due to asynchrony, initial PTS may arrive later than the first VTT fragments are loaded. + // Parse any unparsed fragments upon receiving the initial PTS. + if (this.unparsedVttFrags.length) { + this.unparsedVttFrags.forEach(function (frag) { + _this2.onFragLoaded(frag); + }); + this.unparsedVttFrags = []; + } + } + }, { + key: 'getExistingTrack', + value: function getExistingTrack(channelNumber) { + var media = this.media; + if (media) { + for (var i = 0; i < media.textTracks.length; i++) { + var textTrack = media.textTracks[i]; + var propName = 'textTrack' + channelNumber; + if (textTrack[propName] === true) { + return textTrack; + } + } + } + return null; + } + }, { + key: 'createTextTrack', + value: function createTextTrack(kind, label, lang) { + var media = this.media; + if (media) { + return media.addTextTrack(kind, label, lang); + } + } + }, { + key: 'destroy', + value: function destroy() { + _eventHandler2.default.prototype.destroy.call(this); + } + }, { + key: 'onMediaAttaching', + value: function onMediaAttaching(data) { + this.media = data.media; + } + }, { + key: 'onMediaDetaching', + value: function onMediaDetaching() { + clearCurrentCues(this.textTrack1); + clearCurrentCues(this.textTrack2); + } + }, { + key: 'onManifestLoading', + value: function onManifestLoading() { + this.lastSn = -1; // Detect discontiguity in fragment parsing + this.prevCC = -1; + this.vttCCs = { ccOffset: 0, presentationOffset: 0 }; // Detect discontinuity in subtitle manifests + + // clear outdated subtitles + var media = this.media; + if (media) { + var textTracks = media.textTracks; + if (textTracks) { + for (var i = 0; i < textTracks.length; i++) { + clearCurrentCues(textTracks[i]); + } + } + } + } + }, { + key: 'onManifestLoaded', + value: function onManifestLoaded(data) { + var _this3 = this; + + this.textTracks = []; + this.unparsedVttFrags = this.unparsedVttFrags || []; + this.initPTS = undefined; + this.cueRanges = []; + + if (this.config.enableWebVTT) { + this.tracks = data.subtitles || []; + var inUseTracks = this.media ? this.media.textTracks : []; + + this.tracks.forEach(function (track, index) { + var textTrack = void 0; + if (index < inUseTracks.length) { + var inUseTrack = inUseTracks[index]; + // Reuse tracks with the same label, but do not reuse 608/708 tracks + if (reuseVttTextTrack(inUseTrack, track)) { + textTrack = inUseTrack; + } + } + if (!textTrack) { + textTrack = _this3.createTextTrack('subtitles', track.name, track.lang); + } + textTrack.mode = track.default ? 'showing' : 'hidden'; + _this3.textTracks.push(textTrack); + }); + } + } + }, { + key: 'onLevelSwitching', + value: function onLevelSwitching() { + this.enabled = this.hls.currentLevel.closedCaptions !== 'NONE'; + } + }, { + key: 'onFragLoaded', + value: function onFragLoaded(data) { + var frag = data.frag, + payload = data.payload; + if (frag.type === 'main') { + var sn = frag.sn; + // if this frag isn't contiguous, clear the parser so cues with bad start/end times aren't added to the textTrack + if (sn !== this.lastSn + 1) { + var cea608Parser = this.cea608Parser; + if (cea608Parser) { + cea608Parser.reset(); + } + } + this.lastSn = sn; + } + // If fragment is subtitle type, parse as WebVTT. + else if (frag.type === 'subtitle') { + if (payload.byteLength) { + // We need an initial synchronisation PTS. Store fragments as long as none has arrived. + if (typeof this.initPTS === 'undefined') { + this.unparsedVttFrags.push(data); + return; + } + var vttCCs = this.vttCCs; + if (!vttCCs[frag.cc]) { + vttCCs[frag.cc] = { start: frag.start, prevCC: this.prevCC, new: true }; + this.prevCC = frag.cc; + } + var textTracks = this.textTracks, + hls = this.hls; + + // Parse the WebVTT file contents. + _webvttParser2.default.parse(payload, this.initPTS, vttCCs, frag.cc, function (cues) { + var currentTrack = textTracks[frag.trackId]; + // Add cues and trigger event with success true. + cues.forEach(function (cue) { + // Sometimes there are cue overlaps on segmented vtts so the same + // cue can appear more than once in different vtt files. + // This avoid showing duplicated cues with same timecode and text. + if (!currentTrack.cues.getCueById(cue.id)) { + currentTrack.addCue(cue); + } + }); + hls.trigger(_events2.default.SUBTITLE_FRAG_PROCESSED, { success: true, frag: frag }); + }, function (e) { + // Something went wrong while parsing. Trigger event with success false. + _logger.logger.log('Failed to parse VTT cue: ' + e); + hls.trigger(_events2.default.SUBTITLE_FRAG_PROCESSED, { success: false, frag: frag }); + }); + } else { + // In case there is no payload, finish unsuccessfully. + this.hls.trigger(_events2.default.SUBTITLE_FRAG_PROCESSED, { success: false, frag: frag }); + } + } + } + }, { + key: 'onFragParsingUserdata', + value: function onFragParsingUserdata(data) { + // push all of the CEA-708 messages into the interpreter + // immediately. It will create the proper timestamps based on our PTS value + if (this.enabled && this.config.enableCEA708Captions) { + for (var i = 0; i < data.samples.length; i++) { + var ccdatas = this.extractCea608Data(data.samples[i].bytes); + this.cea608Parser.addData(data.samples[i].pts, ccdatas); + } + } + } + }, { + key: 'extractCea608Data', + value: function extractCea608Data(byteArray) { + var count = byteArray[0] & 31; + var position = 2; + var tmpByte, ccbyte1, ccbyte2, ccValid, ccType; + var actualCCBytes = []; + + for (var j = 0; j < count; j++) { + tmpByte = byteArray[position++]; + ccbyte1 = 0x7F & byteArray[position++]; + ccbyte2 = 0x7F & byteArray[position++]; + ccValid = (4 & tmpByte) !== 0; + ccType = 3 & tmpByte; + + if (ccbyte1 === 0 && ccbyte2 === 0) { + continue; + } + + if (ccValid) { + if (ccType === 0) // || ccType === 1 + { + actualCCBytes.push(ccbyte1); + actualCCBytes.push(ccbyte2); + } + } + } + return actualCCBytes; + } + }]); + + return TimelineController; +}(_eventHandler2.default); + +exports.default = TimelineController; + +},{"34":34,"35":35,"49":49,"53":53,"57":57}],17:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var AESCrypto = function () { + function AESCrypto(subtle, iv) { + _classCallCheck(this, AESCrypto); + + this.subtle = subtle; + this.aesIV = iv; + } + + _createClass(AESCrypto, [{ + key: 'decrypt', + value: function decrypt(data, key) { + return this.subtle.decrypt({ name: 'AES-CBC', iv: this.aesIV }, key, data); + } + }]); + + return AESCrypto; +}(); + +exports.default = AESCrypto; + +},{}],18:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var AESDecryptor = function () { + function AESDecryptor() { + _classCallCheck(this, AESDecryptor); + + // Static after running initTable + this.rcon = [0x0, 0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]; + this.subMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)]; + this.invSubMix = [new Uint32Array(256), new Uint32Array(256), new Uint32Array(256), new Uint32Array(256)]; + this.sBox = new Uint32Array(256); + this.invSBox = new Uint32Array(256); + + // Changes during runtime + this.key = new Uint32Array(0); + + this.initTable(); + } + + // Using view.getUint32() also swaps the byte order. + + + _createClass(AESDecryptor, [{ + key: 'uint8ArrayToUint32Array_', + value: function uint8ArrayToUint32Array_(arrayBuffer) { + var view = new DataView(arrayBuffer); + var newArray = new Uint32Array(4); + for (var i = 0; i < 4; i++) { + newArray[i] = view.getUint32(i * 4); + } + return newArray; + } + }, { + key: 'initTable', + value: function initTable() { + var sBox = this.sBox; + var invSBox = this.invSBox; + var subMix = this.subMix; + var subMix0 = subMix[0]; + var subMix1 = subMix[1]; + var subMix2 = subMix[2]; + var subMix3 = subMix[3]; + var invSubMix = this.invSubMix; + var invSubMix0 = invSubMix[0]; + var invSubMix1 = invSubMix[1]; + var invSubMix2 = invSubMix[2]; + var invSubMix3 = invSubMix[3]; + + var d = new Uint32Array(256); + var x = 0; + var xi = 0; + var i = 0; + for (i = 0; i < 256; i++) { + if (i < 128) { + d[i] = i << 1; + } else { + d[i] = i << 1 ^ 0x11b; + } + } + + for (i = 0; i < 256; i++) { + var sx = xi ^ xi << 1 ^ xi << 2 ^ xi << 3 ^ xi << 4; + sx = sx >>> 8 ^ sx & 0xff ^ 0x63; + sBox[x] = sx; + invSBox[sx] = x; + + // Compute multiplication + var x2 = d[x]; + var x4 = d[x2]; + var x8 = d[x4]; + + // Compute sub/invSub bytes, mix columns tables + var t = d[sx] * 0x101 ^ sx * 0x1010100; + subMix0[x] = t << 24 | t >>> 8; + subMix1[x] = t << 16 | t >>> 16; + subMix2[x] = t << 8 | t >>> 24; + subMix3[x] = t; + + // Compute inv sub bytes, inv mix columns tables + t = x8 * 0x1010101 ^ x4 * 0x10001 ^ x2 * 0x101 ^ x * 0x1010100; + invSubMix0[sx] = t << 24 | t >>> 8; + invSubMix1[sx] = t << 16 | t >>> 16; + invSubMix2[sx] = t << 8 | t >>> 24; + invSubMix3[sx] = t; + + // Compute next counter + if (!x) { + x = xi = 1; + } else { + x = x2 ^ d[d[d[x8 ^ x2]]]; + xi ^= d[d[xi]]; + } + } + } + }, { + key: 'expandKey', + value: function expandKey(keyBuffer) { + // convert keyBuffer to Uint32Array + var key = this.uint8ArrayToUint32Array_(keyBuffer); + var sameKey = true; + var offset = 0; + + while (offset < key.length && sameKey) { + sameKey = key[offset] === this.key[offset]; + offset++; + } + + if (sameKey) { + return; + } + + this.key = key; + var keySize = this.keySize = key.length; + + if (keySize !== 4 && keySize !== 6 && keySize !== 8) { + throw new Error('Invalid aes key size=' + keySize); + } + + var ksRows = this.ksRows = (keySize + 6 + 1) * 4; + var ksRow = void 0; + var invKsRow = void 0; + + var keySchedule = this.keySchedule = new Uint32Array(ksRows); + var invKeySchedule = this.invKeySchedule = new Uint32Array(ksRows); + var sbox = this.sBox; + var rcon = this.rcon; + + var invSubMix = this.invSubMix; + var invSubMix0 = invSubMix[0]; + var invSubMix1 = invSubMix[1]; + var invSubMix2 = invSubMix[2]; + var invSubMix3 = invSubMix[3]; + + var prev = void 0; + var t = void 0; + + for (ksRow = 0; ksRow < ksRows; ksRow++) { + if (ksRow < keySize) { + prev = keySchedule[ksRow] = key[ksRow]; + continue; + } + t = prev; + + if (ksRow % keySize === 0) { + // Rot word + t = t << 8 | t >>> 24; + + // Sub word + t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff]; + + // Mix Rcon + t ^= rcon[ksRow / keySize | 0] << 24; + } else if (keySize > 6 && ksRow % keySize === 4) { + // Sub word + t = sbox[t >>> 24] << 24 | sbox[t >>> 16 & 0xff] << 16 | sbox[t >>> 8 & 0xff] << 8 | sbox[t & 0xff]; + } + + keySchedule[ksRow] = prev = (keySchedule[ksRow - keySize] ^ t) >>> 0; + } + + for (invKsRow = 0; invKsRow < ksRows; invKsRow++) { + ksRow = ksRows - invKsRow; + if (invKsRow & 3) { + t = keySchedule[ksRow]; + } else { + t = keySchedule[ksRow - 4]; + } + + if (invKsRow < 4 || ksRow <= 4) { + invKeySchedule[invKsRow] = t; + } else { + invKeySchedule[invKsRow] = invSubMix0[sbox[t >>> 24]] ^ invSubMix1[sbox[t >>> 16 & 0xff]] ^ invSubMix2[sbox[t >>> 8 & 0xff]] ^ invSubMix3[sbox[t & 0xff]]; + } + + invKeySchedule[invKsRow] = invKeySchedule[invKsRow] >>> 0; + } + } + + // Adding this as a method greatly improves performance. + + }, { + key: 'networkToHostOrderSwap', + value: function networkToHostOrderSwap(word) { + return word << 24 | (word & 0xff00) << 8 | (word & 0xff0000) >> 8 | word >>> 24; + } + }, { + key: 'decrypt', + value: function decrypt(inputArrayBuffer, offset, aesIV) { + var nRounds = this.keySize + 6; + var invKeySchedule = this.invKeySchedule; + var invSBOX = this.invSBox; + + var invSubMix = this.invSubMix; + var invSubMix0 = invSubMix[0]; + var invSubMix1 = invSubMix[1]; + var invSubMix2 = invSubMix[2]; + var invSubMix3 = invSubMix[3]; + + var initVector = this.uint8ArrayToUint32Array_(aesIV); + var initVector0 = initVector[0]; + var initVector1 = initVector[1]; + var initVector2 = initVector[2]; + var initVector3 = initVector[3]; + + var inputInt32 = new Int32Array(inputArrayBuffer); + var outputInt32 = new Int32Array(inputInt32.length); + + var t0 = void 0, + t1 = void 0, + t2 = void 0, + t3 = void 0; + var s0 = void 0, + s1 = void 0, + s2 = void 0, + s3 = void 0; + var inputWords0 = void 0, + inputWords1 = void 0, + inputWords2 = void 0, + inputWords3 = void 0; + + var ksRow, i; + var swapWord = this.networkToHostOrderSwap; + + while (offset < inputInt32.length) { + inputWords0 = swapWord(inputInt32[offset]); + inputWords1 = swapWord(inputInt32[offset + 1]); + inputWords2 = swapWord(inputInt32[offset + 2]); + inputWords3 = swapWord(inputInt32[offset + 3]); + + s0 = inputWords0 ^ invKeySchedule[0]; + s1 = inputWords3 ^ invKeySchedule[1]; + s2 = inputWords2 ^ invKeySchedule[2]; + s3 = inputWords1 ^ invKeySchedule[3]; + + ksRow = 4; + + // Iterate through the rounds of decryption + for (i = 1; i < nRounds; i++) { + t0 = invSubMix0[s0 >>> 24] ^ invSubMix1[s1 >> 16 & 0xff] ^ invSubMix2[s2 >> 8 & 0xff] ^ invSubMix3[s3 & 0xff] ^ invKeySchedule[ksRow]; + t1 = invSubMix0[s1 >>> 24] ^ invSubMix1[s2 >> 16 & 0xff] ^ invSubMix2[s3 >> 8 & 0xff] ^ invSubMix3[s0 & 0xff] ^ invKeySchedule[ksRow + 1]; + t2 = invSubMix0[s2 >>> 24] ^ invSubMix1[s3 >> 16 & 0xff] ^ invSubMix2[s0 >> 8 & 0xff] ^ invSubMix3[s1 & 0xff] ^ invKeySchedule[ksRow + 2]; + t3 = invSubMix0[s3 >>> 24] ^ invSubMix1[s0 >> 16 & 0xff] ^ invSubMix2[s1 >> 8 & 0xff] ^ invSubMix3[s2 & 0xff] ^ invKeySchedule[ksRow + 3]; + // Update state + s0 = t0; + s1 = t1; + s2 = t2; + s3 = t3; + + ksRow = ksRow + 4; + } + + // Shift rows, sub bytes, add round key + t0 = invSBOX[s0 >>> 24] << 24 ^ invSBOX[s1 >> 16 & 0xff] << 16 ^ invSBOX[s2 >> 8 & 0xff] << 8 ^ invSBOX[s3 & 0xff] ^ invKeySchedule[ksRow]; + t1 = invSBOX[s1 >>> 24] << 24 ^ invSBOX[s2 >> 16 & 0xff] << 16 ^ invSBOX[s3 >> 8 & 0xff] << 8 ^ invSBOX[s0 & 0xff] ^ invKeySchedule[ksRow + 1]; + t2 = invSBOX[s2 >>> 24] << 24 ^ invSBOX[s3 >> 16 & 0xff] << 16 ^ invSBOX[s0 >> 8 & 0xff] << 8 ^ invSBOX[s1 & 0xff] ^ invKeySchedule[ksRow + 2]; + t3 = invSBOX[s3 >>> 24] << 24 ^ invSBOX[s0 >> 16 & 0xff] << 16 ^ invSBOX[s1 >> 8 & 0xff] << 8 ^ invSBOX[s2 & 0xff] ^ invKeySchedule[ksRow + 3]; + ksRow = ksRow + 3; + + // Write + outputInt32[offset] = swapWord(t0 ^ initVector0); + outputInt32[offset + 1] = swapWord(t3 ^ initVector1); + outputInt32[offset + 2] = swapWord(t2 ^ initVector2); + outputInt32[offset + 3] = swapWord(t1 ^ initVector3); + + // reset initVector to last 4 unsigned int + initVector0 = inputWords0; + initVector1 = inputWords1; + initVector2 = inputWords2; + initVector3 = inputWords3; + + offset = offset + 4; + } + + return outputInt32.buffer; + } + }, { + key: 'destroy', + value: function destroy() { + this.key = undefined; + this.keySize = undefined; + this.ksRows = undefined; + + this.sBox = undefined; + this.invSBox = undefined; + this.subMix = undefined; + this.invSubMix = undefined; + this.keySchedule = undefined; + this.invKeySchedule = undefined; + + this.rcon = undefined; + } + }]); + + return AESDecryptor; +}(); + +exports.default = AESDecryptor; + +},{}],19:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _aesCrypto = _dereq_(17); + +var _aesCrypto2 = _interopRequireDefault(_aesCrypto); + +var _fastAesKey = _dereq_(20); + +var _fastAesKey2 = _interopRequireDefault(_fastAesKey); + +var _aesDecryptor = _dereq_(18); + +var _aesDecryptor2 = _interopRequireDefault(_aesDecryptor); + +var _errors = _dereq_(33); + +var _logger = _dereq_(53); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/*globals self: false */ + +var Decrypter = function () { + function Decrypter(observer, config) { + _classCallCheck(this, Decrypter); + + this.observer = observer; + this.config = config; + this.logEnabled = true; + try { + var browserCrypto = crypto ? crypto : self.crypto; + this.subtle = browserCrypto.subtle || browserCrypto.webkitSubtle; + } catch (e) {} + this.disableWebCrypto = !this.subtle; + } + + _createClass(Decrypter, [{ + key: 'isSync', + value: function isSync() { + return this.disableWebCrypto && this.config.enableSoftwareAES; + } + }, { + key: 'decrypt', + value: function decrypt(data, key, iv, callback) { + var _this = this; + + if (this.disableWebCrypto && this.config.enableSoftwareAES) { + if (this.logEnabled) { + _logger.logger.log('JS AES decrypt'); + this.logEnabled = false; + } + var decryptor = this.decryptor; + if (!decryptor) { + this.decryptor = decryptor = new _aesDecryptor2.default(); + } + decryptor.expandKey(key); + callback(decryptor.decrypt(data, 0, iv)); + } else { + if (this.logEnabled) { + _logger.logger.log('WebCrypto AES decrypt'); + this.logEnabled = false; + } + var subtle = this.subtle; + if (this.key !== key) { + this.key = key; + this.fastAesKey = new _fastAesKey2.default(subtle, key); + } + + this.fastAesKey.expandKey().then(function (aesKey) { + // decrypt using web crypto + var crypto = new _aesCrypto2.default(subtle, iv); + crypto.decrypt(data, aesKey).catch(function (err) { + _this.onWebCryptoError(err, data, key, iv, callback); + }).then(function (result) { + callback(result); + }); + }).catch(function (err) { + _this.onWebCryptoError(err, data, key, iv, callback); + }); + } + } + }, { + key: 'onWebCryptoError', + value: function onWebCryptoError(err, data, key, iv, callback) { + if (this.config.enableSoftwareAES) { + _logger.logger.log('WebCrypto Error, disable WebCrypto API'); + this.disableWebCrypto = true; + this.logEnabled = true; + this.decrypt(data, key, iv, callback); + } else { + _logger.logger.error('decrypting error : ' + err.message); + this.observer.trigger(Event.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.FRAG_DECRYPT_ERROR, fatal: true, reason: err.message }); + } + } + }, { + key: 'destroy', + value: function destroy() { + var decryptor = this.decryptor; + if (decryptor) { + decryptor.destroy(); + this.decryptor = undefined; + } + } + }]); + + return Decrypter; +}(); + +exports.default = Decrypter; + +},{"17":17,"18":18,"20":20,"33":33,"53":53}],20:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var FastAESKey = function () { + function FastAESKey(subtle, key) { + _classCallCheck(this, FastAESKey); + + this.subtle = subtle; + this.key = key; + } + + _createClass(FastAESKey, [{ + key: 'expandKey', + value: function expandKey() { + return this.subtle.importKey('raw', this.key, { name: 'AES-CBC' }, false, ['encrypt', 'decrypt']); + } + }]); + + return FastAESKey; +}(); + +exports.default = FastAESKey; + +},{}],21:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** + * AAC demuxer + */ + + +var _adts = _dereq_(22); + +var _adts2 = _interopRequireDefault(_adts); + +var _logger = _dereq_(53); + +var _id = _dereq_(27); + +var _id2 = _interopRequireDefault(_id); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var AACDemuxer = function () { + function AACDemuxer(observer, remuxer, config) { + _classCallCheck(this, AACDemuxer); + + this.observer = observer; + this.config = config; + this.remuxer = remuxer; + } + + _createClass(AACDemuxer, [{ + key: 'resetInitSegment', + value: function resetInitSegment(initSegment, audioCodec, videoCodec, duration) { + this._audioTrack = { container: 'audio/adts', type: 'audio', id: -1, sequenceNumber: 0, isAAC: true, samples: [], len: 0, manifestCodec: audioCodec, duration: duration, inputTimeScale: 90000 }; + } + }, { + key: 'resetTimeStamp', + value: function resetTimeStamp() {} + }, { + key: 'append', + + + // feed incoming data to the front of the parsing pipeline + value: function append(data, timeOffset, contiguous, accurateTimeOffset) { + var track, + id3 = new _id2.default(data), + pts = 90 * id3.timeStamp, + config, + frameLength, + frameDuration, + frameIndex, + offset, + headerLength, + stamp, + length, + aacSample; + + track = this._audioTrack; + + // Look for ADTS header + for (offset = id3.length, length = data.length; offset < length - 1; offset++) { + if (data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0) { + break; + } + } + + if (!track.samplerate) { + config = _adts2.default.getAudioConfig(this.observer, data, offset, track.manifestCodec); + track.config = config.config; + track.samplerate = config.samplerate; + track.channelCount = config.channelCount; + track.codec = config.codec; + _logger.logger.log('parsed codec:' + track.codec + ',rate:' + config.samplerate + ',nb channel:' + config.channelCount); + } + frameIndex = 0; + frameDuration = 1024 * 90000 / track.samplerate; + while (offset + 5 < length) { + // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header + headerLength = !!(data[offset + 1] & 0x01) ? 7 : 9; + // retrieve frame size + frameLength = (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xE0) >>> 5; + frameLength -= headerLength; + //stamp = pes.pts; + + if (frameLength > 0 && offset + headerLength + frameLength <= length) { + stamp = pts + frameIndex * frameDuration; + //logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`); + aacSample = { unit: data.subarray(offset + headerLength, offset + headerLength + frameLength), pts: stamp, dts: stamp }; + track.samples.push(aacSample); + track.len += frameLength; + offset += frameLength + headerLength; + frameIndex++; + // look for ADTS header (0xFFFx) + for (; offset < length - 1; offset++) { + if (data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0) { + break; + } + } + } else { + break; + } + } + this.remuxer.remux(track, { samples: [] }, { samples: [{ pts: pts, dts: pts, data: id3.payload }], inputTimeScale: 90000 }, { samples: [] }, timeOffset, contiguous, accurateTimeOffset); + } + }, { + key: 'destroy', + value: function destroy() {} + }], [{ + key: 'probe', + value: function probe(data) { + // check if data contains ID3 timestamp and ADTS sync word + var id3 = new _id2.default(data), + offset, + length; + if (id3.hasTimeStamp) { + // Look for ADTS header | 1111 1111 | 1111 X00X | where X can be either 0 or 1 + // Layer bits (position 14 and 15) in header should be always 0 for ADTS + // More info https://wiki.multimedia.cx/index.php?title=ADTS + for (offset = id3.length, length = Math.min(data.length - 1, offset + 100); offset < length; offset++) { + if (data[offset] === 0xff && (data[offset + 1] & 0xf6) === 0xf0) { + //logger.log('ADTS sync word found !'); + return true; + } + } + } + return false; + } + }]); + + return AACDemuxer; +}(); + +exports.default = AACDemuxer; + +},{"22":22,"27":27,"53":53}],22:[function(_dereq_,module,exports){ +'use strict'; + +var _logger = _dereq_(53); + +var _errors = _dereq_(33); + +/** + * ADTS parser helper + */ +var ADTS = { + getAudioConfig: function getAudioConfig(observer, data, offset, audioCodec) { + var adtsObjectType, + // :int + adtsSampleingIndex, + // :int + adtsExtensionSampleingIndex, + // :int + adtsChanelConfig, + // :int + config, + userAgent = navigator.userAgent.toLowerCase(), + manifestCodec = audioCodec, + adtsSampleingRates = [96000, 88200, 64000, 48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, 7350]; + // byte 2 + adtsObjectType = ((data[offset + 2] & 0xC0) >>> 6) + 1; + adtsSampleingIndex = (data[offset + 2] & 0x3C) >>> 2; + if (adtsSampleingIndex > adtsSampleingRates.length - 1) { + observer.trigger(Event.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.FRAG_PARSING_ERROR, fatal: true, reason: 'invalid ADTS sampling index:' + adtsSampleingIndex }); + return; + } + adtsChanelConfig = (data[offset + 2] & 0x01) << 2; + // byte 3 + adtsChanelConfig |= (data[offset + 3] & 0xC0) >>> 6; + _logger.logger.log('manifest codec:' + audioCodec + ',ADTS data:type:' + adtsObjectType + ',sampleingIndex:' + adtsSampleingIndex + '[' + adtsSampleingRates[adtsSampleingIndex] + 'Hz],channelConfig:' + adtsChanelConfig); + // firefox: freq less than 24kHz = AAC SBR (HE-AAC) + if (/firefox/i.test(userAgent)) { + if (adtsSampleingIndex >= 6) { + adtsObjectType = 5; + config = new Array(4); + // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies + // there is a factor 2 between frame sample rate and output sample rate + // multiply frequency by 2 (see table below, equivalent to substract 3) + adtsExtensionSampleingIndex = adtsSampleingIndex - 3; + } else { + adtsObjectType = 2; + config = new Array(2); + adtsExtensionSampleingIndex = adtsSampleingIndex; + } + // Android : always use AAC + } else if (userAgent.indexOf('android') !== -1) { + adtsObjectType = 2; + config = new Array(2); + adtsExtensionSampleingIndex = adtsSampleingIndex; + } else { + /* for other browsers (Chrome/Vivaldi/Opera ...) + always force audio type to be HE-AAC SBR, as some browsers do not support audio codec switch properly (like Chrome ...) + */ + adtsObjectType = 5; + config = new Array(4); + // if (manifest codec is HE-AAC or HE-AACv2) OR (manifest codec not specified AND frequency less than 24kHz) + if (audioCodec && (audioCodec.indexOf('mp4a.40.29') !== -1 || audioCodec.indexOf('mp4a.40.5') !== -1) || !audioCodec && adtsSampleingIndex >= 6) { + // HE-AAC uses SBR (Spectral Band Replication) , high frequencies are constructed from low frequencies + // there is a factor 2 between frame sample rate and output sample rate + // multiply frequency by 2 (see table below, equivalent to substract 3) + adtsExtensionSampleingIndex = adtsSampleingIndex - 3; + } else { + // if (manifest codec is AAC) AND (frequency less than 24kHz AND nb channel is 1) OR (manifest codec not specified and mono audio) + // Chrome fails to play back with low frequency AAC LC mono when initialized with HE-AAC. This is not a problem with stereo. + if (audioCodec && audioCodec.indexOf('mp4a.40.2') !== -1 && adtsSampleingIndex >= 6 && adtsChanelConfig === 1 || !audioCodec && adtsChanelConfig === 1) { + adtsObjectType = 2; + config = new Array(2); + } + adtsExtensionSampleingIndex = adtsSampleingIndex; + } + } + /* refer to http://wiki.multimedia.cx/index.php?title=MPEG-4_Audio#Audio_Specific_Config + ISO 14496-3 (AAC).pdf - Table 1.13 — Syntax of AudioSpecificConfig() + Audio Profile / Audio Object Type + 0: Null + 1: AAC Main + 2: AAC LC (Low Complexity) + 3: AAC SSR (Scalable Sample Rate) + 4: AAC LTP (Long Term Prediction) + 5: SBR (Spectral Band Replication) + 6: AAC Scalable + sampling freq + 0: 96000 Hz + 1: 88200 Hz + 2: 64000 Hz + 3: 48000 Hz + 4: 44100 Hz + 5: 32000 Hz + 6: 24000 Hz + 7: 22050 Hz + 8: 16000 Hz + 9: 12000 Hz + 10: 11025 Hz + 11: 8000 Hz + 12: 7350 Hz + 13: Reserved + 14: Reserved + 15: frequency is written explictly + Channel Configurations + These are the channel configurations: + 0: Defined in AOT Specifc Config + 1: 1 channel: front-center + 2: 2 channels: front-left, front-right + */ + // audioObjectType = profile => profile, the MPEG-4 Audio Object Type minus 1 + config[0] = adtsObjectType << 3; + // samplingFrequencyIndex + config[0] |= (adtsSampleingIndex & 0x0E) >> 1; + config[1] |= (adtsSampleingIndex & 0x01) << 7; + // channelConfiguration + config[1] |= adtsChanelConfig << 3; + if (adtsObjectType === 5) { + // adtsExtensionSampleingIndex + config[1] |= (adtsExtensionSampleingIndex & 0x0E) >> 1; + config[2] = (adtsExtensionSampleingIndex & 0x01) << 7; + // adtsObjectType (force to 2, chrome is checking that object type is less than 5 ??? + // https://chromium.googlesource.com/chromium/src.git/+/master/media/formats/mp4/aac.cc + config[2] |= 2 << 2; + config[3] = 0; + } + return { config: config, samplerate: adtsSampleingRates[adtsSampleingIndex], channelCount: adtsChanelConfig, codec: 'mp4a.40.' + adtsObjectType, manifestCodec: manifestCodec }; + } +}; + +module.exports = ADTS; + +},{"33":33,"53":53}],23:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* inline demuxer. + * probe fragments and instantiate appropriate demuxer depending on content type (TSDemuxer, AACDemuxer, ...) + */ + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _errors = _dereq_(33); + +var _decrypter = _dereq_(19); + +var _decrypter2 = _interopRequireDefault(_decrypter); + +var _aacdemuxer = _dereq_(21); + +var _aacdemuxer2 = _interopRequireDefault(_aacdemuxer); + +var _mp4demuxer = _dereq_(29); + +var _mp4demuxer2 = _interopRequireDefault(_mp4demuxer); + +var _tsdemuxer = _dereq_(32); + +var _tsdemuxer2 = _interopRequireDefault(_tsdemuxer); + +var _mp3demuxer = _dereq_(28); + +var _mp3demuxer2 = _interopRequireDefault(_mp3demuxer); + +var _mp4Remuxer = _dereq_(45); + +var _mp4Remuxer2 = _interopRequireDefault(_mp4Remuxer); + +var _passthroughRemuxer = _dereq_(46); + +var _passthroughRemuxer2 = _interopRequireDefault(_passthroughRemuxer); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var DemuxerInline = function () { + function DemuxerInline(observer, typeSupported, config, vendor) { + _classCallCheck(this, DemuxerInline); + + this.observer = observer; + this.typeSupported = typeSupported; + this.config = config; + this.vendor = vendor; + } + + _createClass(DemuxerInline, [{ + key: 'destroy', + value: function destroy() { + var demuxer = this.demuxer; + if (demuxer) { + demuxer.destroy(); + } + } + }, { + key: 'push', + value: function push(data, decryptdata, initSegment, audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS) { + if (data.byteLength > 0 && decryptdata != null && decryptdata.key != null && decryptdata.method === 'AES-128') { + var decrypter = this.decrypter; + if (decrypter == null) { + decrypter = this.decrypter = new _decrypter2.default(this.observer, this.config); + } + var localthis = this; + // performance.now() not available on WebWorker, at least on Safari Desktop + var startTime; + try { + startTime = performance.now(); + } catch (error) { + startTime = Date.now(); + } + decrypter.decrypt(data, decryptdata.key.buffer, decryptdata.iv.buffer, function (decryptedData) { + var endTime; + try { + endTime = performance.now(); + } catch (error) { + endTime = Date.now(); + } + localthis.observer.trigger(_events2.default.FRAG_DECRYPTED, { stats: { tstart: startTime, tdecrypt: endTime } }); + localthis.pushDecrypted(new Uint8Array(decryptedData), decryptdata, new Uint8Array(initSegment), audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS); + }); + } else { + this.pushDecrypted(new Uint8Array(data), decryptdata, new Uint8Array(initSegment), audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS); + } + } + }, { + key: 'pushDecrypted', + value: function pushDecrypted(data, decryptdata, initSegment, audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS) { + var demuxer = this.demuxer; + if (!demuxer || + // in case of continuity change, we might switch from content type (AAC container to TS container for example) + // so let's check that current demuxer is still valid + discontinuity && !this.probe(data)) { + var observer = this.observer; + var typeSupported = this.typeSupported; + var config = this.config; + var muxConfig = [{ demux: _tsdemuxer2.default, remux: _mp4Remuxer2.default }, { demux: _mp3demuxer2.default, remux: _mp4Remuxer2.default }, { demux: _aacdemuxer2.default, remux: _mp4Remuxer2.default }, { demux: _mp4demuxer2.default, remux: _passthroughRemuxer2.default }]; + + // probe for content type + for (var i in muxConfig) { + var mux = muxConfig[i]; + var probe = mux.demux.probe; + if (probe(data)) { + var _remuxer = this.remuxer = new mux.remux(observer, config, typeSupported, this.vendor); + demuxer = new mux.demux(observer, _remuxer, config, typeSupported); + this.probe = probe; + break; + } + } + if (!demuxer) { + observer.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.FRAG_PARSING_ERROR, fatal: true, reason: 'no demux matching with content found' }); + return; + } + this.demuxer = demuxer; + } + var remuxer = this.remuxer; + + if (discontinuity || trackSwitch) { + demuxer.resetInitSegment(initSegment, audioCodec, videoCodec, duration); + remuxer.resetInitSegment(); + } + if (discontinuity) { + demuxer.resetTimeStamp(); + remuxer.resetTimeStamp(defaultInitPTS); + } + if (typeof demuxer.setDecryptData === 'function') { + demuxer.setDecryptData(decryptdata); + } + demuxer.append(data, timeOffset, contiguous, accurateTimeOffset); + } + }]); + + return DemuxerInline; +}(); + +exports.default = DemuxerInline; + +},{"19":19,"21":21,"28":28,"29":29,"32":32,"33":33,"35":35,"45":45,"46":46}],24:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _demuxerInline = _dereq_(23); + +var _demuxerInline2 = _interopRequireDefault(_demuxerInline); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _logger = _dereq_(53); + +var _events3 = _dereq_(1); + +var _events4 = _interopRequireDefault(_events3); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +/* demuxer web worker. + * - listen to worker message, and trigger DemuxerInline upon reception of Fragments. + * - provides MP4 Boxes back to main thread using [transferable objects](https://developers.google.com/web/updates/2011/12/Transferable-Objects-Lightning-Fast) in order to minimize message passing overhead. + */ + +var DemuxerWorker = function DemuxerWorker(self) { + // observer setup + var observer = new _events4.default(); + observer.trigger = function trigger(event) { + for (var _len = arguments.length, data = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + data[_key - 1] = arguments[_key]; + } + + observer.emit.apply(observer, [event, event].concat(data)); + }; + + observer.off = function off(event) { + for (var _len2 = arguments.length, data = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + data[_key2 - 1] = arguments[_key2]; + } + + observer.removeListener.apply(observer, [event].concat(data)); + }; + + var forwardMessage = function forwardMessage(ev, data) { + self.postMessage({ event: ev, data: data }); + }; + + self.addEventListener('message', function (ev) { + var data = ev.data; + //console.log('demuxer cmd:' + data.cmd); + switch (data.cmd) { + case 'init': + var config = JSON.parse(data.config); + self.demuxer = new _demuxerInline2.default(observer, data.typeSupported, config, data.vendor); + try { + (0, _logger.enableLogs)(config.debug === true); + } catch (err) { + console.warn('demuxerWorker: unable to enable logs'); + } + // signal end of worker init + forwardMessage('init', null); + break; + case 'demux': + self.demuxer.push(data.data, data.decryptdata, data.initSegment, data.audioCodec, data.videoCodec, data.timeOffset, data.discontinuity, data.trackSwitch, data.contiguous, data.duration, data.accurateTimeOffset, data.defaultInitPTS); + break; + default: + break; + } + }); + + // forward events to main thread + observer.on(_events2.default.FRAG_DECRYPTED, forwardMessage); + observer.on(_events2.default.FRAG_PARSING_INIT_SEGMENT, forwardMessage); + observer.on(_events2.default.FRAG_PARSED, forwardMessage); + observer.on(_events2.default.ERROR, forwardMessage); + observer.on(_events2.default.FRAG_PARSING_METADATA, forwardMessage); + observer.on(_events2.default.FRAG_PARSING_USERDATA, forwardMessage); + observer.on(_events2.default.INIT_PTS_FOUND, forwardMessage); + + // special case for FRAG_PARSING_DATA: pass data1/data2 as transferable object (no copy) + observer.on(_events2.default.FRAG_PARSING_DATA, function (ev, data) { + var transferable = []; + var message = { event: ev, data: data }; + if (data.data1) { + message.data1 = data.data1.buffer; + transferable.push(data.data1.buffer); + delete data.data1; + } + if (data.data2) { + message.data2 = data.data2.buffer; + transferable.push(data.data2.buffer); + delete data.data2; + } + self.postMessage(message, transferable); + }); +}; + +exports.default = DemuxerWorker; + +},{"1":1,"23":23,"35":35,"53":53}],25:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _demuxerInline = _dereq_(23); + +var _demuxerInline2 = _interopRequireDefault(_demuxerInline); + +var _demuxerWorker = _dereq_(24); + +var _demuxerWorker2 = _interopRequireDefault(_demuxerWorker); + +var _logger = _dereq_(53); + +var _errors = _dereq_(33); + +var _events3 = _dereq_(1); + +var _events4 = _interopRequireDefault(_events3); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Demuxer = function () { + function Demuxer(hls, id) { + _classCallCheck(this, Demuxer); + + this.hls = hls; + this.id = id; + // observer setup + var observer = this.observer = new _events4.default(); + var config = hls.config; + observer.trigger = function trigger(event) { + for (var _len = arguments.length, data = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + data[_key - 1] = arguments[_key]; + } + + observer.emit.apply(observer, [event, event].concat(data)); + }; + + observer.off = function off(event) { + for (var _len2 = arguments.length, data = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + data[_key2 - 1] = arguments[_key2]; + } + + observer.removeListener.apply(observer, [event].concat(data)); + }; + + var forwardMessage = function (ev, data) { + data = data || {}; + data.frag = this.frag; + data.id = this.id; + hls.trigger(ev, data); + }.bind(this); + + // forward events to main thread + observer.on(_events2.default.FRAG_DECRYPTED, forwardMessage); + observer.on(_events2.default.FRAG_PARSING_INIT_SEGMENT, forwardMessage); + observer.on(_events2.default.FRAG_PARSING_DATA, forwardMessage); + observer.on(_events2.default.FRAG_PARSED, forwardMessage); + observer.on(_events2.default.ERROR, forwardMessage); + observer.on(_events2.default.FRAG_PARSING_METADATA, forwardMessage); + observer.on(_events2.default.FRAG_PARSING_USERDATA, forwardMessage); + observer.on(_events2.default.INIT_PTS_FOUND, forwardMessage); + + var typeSupported = { + mp4: MediaSource.isTypeSupported('video/mp4'), + mpeg: MediaSource.isTypeSupported('audio/mpeg'), + mp3: MediaSource.isTypeSupported('audio/mp4; codecs="mp3"') + }; + // navigator.vendor is not always available in Web Worker + // refer to https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope/navigator + var vendor = navigator.vendor; + if (config.enableWorker && typeof Worker !== 'undefined') { + _logger.logger.log('demuxing in webworker'); + var w = void 0; + try { + var work = _dereq_(3); + w = this.w = work(_demuxerWorker2.default); + this.onwmsg = this.onWorkerMessage.bind(this); + w.addEventListener('message', this.onwmsg); + w.onerror = function (event) { + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.OTHER_ERROR, details: _errors.ErrorDetails.INTERNAL_EXCEPTION, fatal: true, event: 'demuxerWorker', err: { message: event.message + ' (' + event.filename + ':' + event.lineno + ')' } }); + }; + w.postMessage({ cmd: 'init', typeSupported: typeSupported, vendor: vendor, id: id, config: JSON.stringify(config) }); + } catch (err) { + _logger.logger.error('error while initializing DemuxerWorker, fallback on DemuxerInline'); + if (w) { + // revoke the Object URL that was used to create demuxer worker, so as not to leak it + URL.revokeObjectURL(w.objectURL); + } + this.demuxer = new _demuxerInline2.default(observer, typeSupported, config, vendor); + this.w = undefined; + } + } else { + this.demuxer = new _demuxerInline2.default(observer, typeSupported, config, vendor); + } + } + + _createClass(Demuxer, [{ + key: 'destroy', + value: function destroy() { + var w = this.w; + if (w) { + w.removeEventListener('message', this.onwmsg); + w.terminate(); + this.w = null; + } else { + var demuxer = this.demuxer; + if (demuxer) { + demuxer.destroy(); + this.demuxer = null; + } + } + var observer = this.observer; + if (observer) { + observer.removeAllListeners(); + this.observer = null; + } + } + }, { + key: 'push', + value: function push(data, initSegment, audioCodec, videoCodec, frag, duration, accurateTimeOffset, defaultInitPTS) { + var w = this.w; + var timeOffset = !isNaN(frag.startDTS) ? frag.startDTS : frag.start; + var decryptdata = frag.decryptdata; + var lastFrag = this.frag; + var discontinuity = !(lastFrag && frag.cc === lastFrag.cc); + var trackSwitch = !(lastFrag && frag.level === lastFrag.level); + var nextSN = lastFrag && frag.sn === lastFrag.sn + 1; + var contiguous = !trackSwitch && nextSN; + if (discontinuity) { + _logger.logger.log(this.id + ':discontinuity detected'); + } + if (trackSwitch) { + _logger.logger.log(this.id + ':switch detected'); + } + this.frag = frag; + if (w) { + // post fragment payload as transferable objects (no copy) + w.postMessage({ cmd: 'demux', data: data, decryptdata: decryptdata, initSegment: initSegment, audioCodec: audioCodec, videoCodec: videoCodec, timeOffset: timeOffset, discontinuity: discontinuity, trackSwitch: trackSwitch, contiguous: contiguous, duration: duration, accurateTimeOffset: accurateTimeOffset, defaultInitPTS: defaultInitPTS }, [data]); + } else { + var demuxer = this.demuxer; + if (demuxer) { + demuxer.push(data, decryptdata, initSegment, audioCodec, videoCodec, timeOffset, discontinuity, trackSwitch, contiguous, duration, accurateTimeOffset, defaultInitPTS); + } + } + } + }, { + key: 'onWorkerMessage', + value: function onWorkerMessage(ev) { + var data = ev.data, + hls = this.hls; + //console.log('onWorkerMessage:' + data.event); + switch (data.event) { + case 'init': + // revoke the Object URL that was used to create demuxer worker, so as not to leak it + URL.revokeObjectURL(this.w.objectURL); + break; + // special case for FRAG_PARSING_DATA: data1 and data2 are transferable objects + case _events2.default.FRAG_PARSING_DATA: + data.data.data1 = new Uint8Array(data.data1); + if (data.data2) { + data.data.data2 = new Uint8Array(data.data2); + } + /* falls through */ + default: + data.data = data.data || {}; + data.data.frag = this.frag; + data.data.id = this.id; + hls.trigger(data.event, data.data); + break; + } + } + }]); + + return Demuxer; +}(); + +exports.default = Demuxer; + +},{"1":1,"23":23,"24":24,"3":3,"33":33,"35":35,"53":53}],26:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** + * Parser for exponential Golomb codes, a variable-bitwidth number encoding scheme used by h264. + */ + +var _logger = _dereq_(53); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var ExpGolomb = function () { + function ExpGolomb(data) { + _classCallCheck(this, ExpGolomb); + + this.data = data; + // the number of bytes left to examine in this.data + this.bytesAvailable = data.byteLength; + // the current word being examined + this.word = 0; // :uint + // the number of bits left to examine in the current word + this.bitsAvailable = 0; // :uint + } + + // ():void + + + _createClass(ExpGolomb, [{ + key: 'loadWord', + value: function loadWord() { + var data = this.data, + bytesAvailable = this.bytesAvailable, + position = data.byteLength - bytesAvailable, + workingBytes = new Uint8Array(4), + availableBytes = Math.min(4, bytesAvailable); + if (availableBytes === 0) { + throw new Error('no bytes available'); + } + workingBytes.set(data.subarray(position, position + availableBytes)); + this.word = new DataView(workingBytes.buffer).getUint32(0); + // track the amount of this.data that has been processed + this.bitsAvailable = availableBytes * 8; + this.bytesAvailable -= availableBytes; + } + + // (count:int):void + + }, { + key: 'skipBits', + value: function skipBits(count) { + var skipBytes; // :int + if (this.bitsAvailable > count) { + this.word <<= count; + this.bitsAvailable -= count; + } else { + count -= this.bitsAvailable; + skipBytes = count >> 3; + count -= skipBytes >> 3; + this.bytesAvailable -= skipBytes; + this.loadWord(); + this.word <<= count; + this.bitsAvailable -= count; + } + } + + // (size:int):uint + + }, { + key: 'readBits', + value: function readBits(size) { + var bits = Math.min(this.bitsAvailable, size), + // :uint + valu = this.word >>> 32 - bits; // :uint + if (size > 32) { + _logger.logger.error('Cannot read more than 32 bits at a time'); + } + this.bitsAvailable -= bits; + if (this.bitsAvailable > 0) { + this.word <<= bits; + } else if (this.bytesAvailable > 0) { + this.loadWord(); + } + bits = size - bits; + if (bits > 0 && this.bitsAvailable) { + return valu << bits | this.readBits(bits); + } else { + return valu; + } + } + + // ():uint + + }, { + key: 'skipLZ', + value: function skipLZ() { + var leadingZeroCount; // :uint + for (leadingZeroCount = 0; leadingZeroCount < this.bitsAvailable; ++leadingZeroCount) { + if (0 !== (this.word & 0x80000000 >>> leadingZeroCount)) { + // the first bit of working word is 1 + this.word <<= leadingZeroCount; + this.bitsAvailable -= leadingZeroCount; + return leadingZeroCount; + } + } + // we exhausted word and still have not found a 1 + this.loadWord(); + return leadingZeroCount + this.skipLZ(); + } + + // ():void + + }, { + key: 'skipUEG', + value: function skipUEG() { + this.skipBits(1 + this.skipLZ()); + } + + // ():void + + }, { + key: 'skipEG', + value: function skipEG() { + this.skipBits(1 + this.skipLZ()); + } + + // ():uint + + }, { + key: 'readUEG', + value: function readUEG() { + var clz = this.skipLZ(); // :uint + return this.readBits(clz + 1) - 1; + } + + // ():int + + }, { + key: 'readEG', + value: function readEG() { + var valu = this.readUEG(); // :int + if (0x01 & valu) { + // the number is odd if the low order bit is set + return 1 + valu >>> 1; // add 1 to make it even, and divide by 2 + } else { + return -1 * (valu >>> 1); // divide by two then make it negative + } + } + + // Some convenience functions + // :Boolean + + }, { + key: 'readBoolean', + value: function readBoolean() { + return 1 === this.readBits(1); + } + + // ():int + + }, { + key: 'readUByte', + value: function readUByte() { + return this.readBits(8); + } + + // ():int + + }, { + key: 'readUShort', + value: function readUShort() { + return this.readBits(16); + } + // ():int + + }, { + key: 'readUInt', + value: function readUInt() { + return this.readBits(32); + } + + /** + * Advance the ExpGolomb decoder past a scaling list. The scaling + * list is optionally transmitted as part of a sequence parameter + * set and is not relevant to transmuxing. + * @param count {number} the number of entries in this scaling list + * @see Recommendation ITU-T H.264, Section 7.3.2.1.1.1 + */ + + }, { + key: 'skipScalingList', + value: function skipScalingList(count) { + var lastScale = 8, + nextScale = 8, + j, + deltaScale; + for (j = 0; j < count; j++) { + if (nextScale !== 0) { + deltaScale = this.readEG(); + nextScale = (lastScale + deltaScale + 256) % 256; + } + lastScale = nextScale === 0 ? lastScale : nextScale; + } + } + + /** + * Read a sequence parameter set and return some interesting video + * properties. A sequence parameter set is the H264 metadata that + * describes the properties of upcoming video frames. + * @param data {Uint8Array} the bytes of a sequence parameter set + * @return {object} an object with configuration parsed from the + * sequence parameter set, including the dimensions of the + * associated video frames. + */ + + }, { + key: 'readSPS', + value: function readSPS() { + var frameCropLeftOffset = 0, + frameCropRightOffset = 0, + frameCropTopOffset = 0, + frameCropBottomOffset = 0, + profileIdc, + profileCompat, + levelIdc, + numRefFramesInPicOrderCntCycle, + picWidthInMbsMinus1, + picHeightInMapUnitsMinus1, + frameMbsOnlyFlag, + scalingListCount, + i, + readUByte = this.readUByte.bind(this), + readBits = this.readBits.bind(this), + readUEG = this.readUEG.bind(this), + readBoolean = this.readBoolean.bind(this), + skipBits = this.skipBits.bind(this), + skipEG = this.skipEG.bind(this), + skipUEG = this.skipUEG.bind(this), + skipScalingList = this.skipScalingList.bind(this); + + readUByte(); + profileIdc = readUByte(); // profile_idc + profileCompat = readBits(5); // constraint_set[0-4]_flag, u(5) + skipBits(3); // reserved_zero_3bits u(3), + levelIdc = readUByte(); //level_idc u(8) + skipUEG(); // seq_parameter_set_id + // some profiles have more optional data we don't need + if (profileIdc === 100 || profileIdc === 110 || profileIdc === 122 || profileIdc === 244 || profileIdc === 44 || profileIdc === 83 || profileIdc === 86 || profileIdc === 118 || profileIdc === 128) { + var chromaFormatIdc = readUEG(); + if (chromaFormatIdc === 3) { + skipBits(1); // separate_colour_plane_flag + } + skipUEG(); // bit_depth_luma_minus8 + skipUEG(); // bit_depth_chroma_minus8 + skipBits(1); // qpprime_y_zero_transform_bypass_flag + if (readBoolean()) { + // seq_scaling_matrix_present_flag + scalingListCount = chromaFormatIdc !== 3 ? 8 : 12; + for (i = 0; i < scalingListCount; i++) { + if (readBoolean()) { + // seq_scaling_list_present_flag[ i ] + if (i < 6) { + skipScalingList(16); + } else { + skipScalingList(64); + } + } + } + } + } + skipUEG(); // log2_max_frame_num_minus4 + var picOrderCntType = readUEG(); + if (picOrderCntType === 0) { + readUEG(); //log2_max_pic_order_cnt_lsb_minus4 + } else if (picOrderCntType === 1) { + skipBits(1); // delta_pic_order_always_zero_flag + skipEG(); // offset_for_non_ref_pic + skipEG(); // offset_for_top_to_bottom_field + numRefFramesInPicOrderCntCycle = readUEG(); + for (i = 0; i < numRefFramesInPicOrderCntCycle; i++) { + skipEG(); // offset_for_ref_frame[ i ] + } + } + skipUEG(); // max_num_ref_frames + skipBits(1); // gaps_in_frame_num_value_allowed_flag + picWidthInMbsMinus1 = readUEG(); + picHeightInMapUnitsMinus1 = readUEG(); + frameMbsOnlyFlag = readBits(1); + if (frameMbsOnlyFlag === 0) { + skipBits(1); // mb_adaptive_frame_field_flag + } + skipBits(1); // direct_8x8_inference_flag + if (readBoolean()) { + // frame_cropping_flag + frameCropLeftOffset = readUEG(); + frameCropRightOffset = readUEG(); + frameCropTopOffset = readUEG(); + frameCropBottomOffset = readUEG(); + } + var pixelRatio = [1, 1]; + if (readBoolean()) { + // vui_parameters_present_flag + if (readBoolean()) { + // aspect_ratio_info_present_flag + var aspectRatioIdc = readUByte(); + switch (aspectRatioIdc) { + case 1: + pixelRatio = [1, 1];break; + case 2: + pixelRatio = [12, 11];break; + case 3: + pixelRatio = [10, 11];break; + case 4: + pixelRatio = [16, 11];break; + case 5: + pixelRatio = [40, 33];break; + case 6: + pixelRatio = [24, 11];break; + case 7: + pixelRatio = [20, 11];break; + case 8: + pixelRatio = [32, 11];break; + case 9: + pixelRatio = [80, 33];break; + case 10: + pixelRatio = [18, 11];break; + case 11: + pixelRatio = [15, 11];break; + case 12: + pixelRatio = [64, 33];break; + case 13: + pixelRatio = [160, 99];break; + case 14: + pixelRatio = [4, 3];break; + case 15: + pixelRatio = [3, 2];break; + case 16: + pixelRatio = [2, 1];break; + case 255: + { + pixelRatio = [readUByte() << 8 | readUByte(), readUByte() << 8 | readUByte()]; + break; + } + } + } + } + return { + width: Math.ceil((picWidthInMbsMinus1 + 1) * 16 - frameCropLeftOffset * 2 - frameCropRightOffset * 2), + height: (2 - frameMbsOnlyFlag) * (picHeightInMapUnitsMinus1 + 1) * 16 - (frameMbsOnlyFlag ? 2 : 4) * (frameCropTopOffset + frameCropBottomOffset), + pixelRatio: pixelRatio + }; + } + }, { + key: 'readSliceType', + value: function readSliceType() { + // skip NALu type + this.readUByte(); + // discard first_mb_in_slice + this.readUEG(); + // return slice_type + return this.readUEG(); + } + }]); + + return ExpGolomb; +}(); + +exports.default = ExpGolomb; + +},{"53":53}],27:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** + * ID3 parser + */ + + +var _logger = _dereq_(53); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +//import Hex from '../utils/hex'; + +var ID3 = function () { + function ID3(data) { + _classCallCheck(this, ID3); + + this._hasTimeStamp = false; + this._length = 0; + var offset = 0, + byte1, + byte2, + byte3, + byte4, + tagSize, + endPos, + header, + len; + do { + header = this.readUTF(data, offset, 3); + offset += 3; + // first check for ID3 header + if (header === 'ID3') { + // skip 24 bits + offset += 3; + // retrieve tag(s) length + byte1 = data[offset++] & 0x7f; + byte2 = data[offset++] & 0x7f; + byte3 = data[offset++] & 0x7f; + byte4 = data[offset++] & 0x7f; + tagSize = (byte1 << 21) + (byte2 << 14) + (byte3 << 7) + byte4; + endPos = offset + tagSize; + //logger.log(`ID3 tag found, size/end: ${tagSize}/${endPos}`); + + // read ID3 tags + this._parseID3Frames(data, offset, endPos); + offset = endPos; + } else if (header === '3DI') { + // http://id3.org/id3v2.4.0-structure chapter 3.4. ID3v2 footer + offset += 7; + _logger.logger.log('3DI footer found, end: ' + offset); + } else { + offset -= 3; + len = offset; + if (len) { + //logger.log(`ID3 len: ${len}`); + if (!this.hasTimeStamp) { + _logger.logger.warn('ID3 tag found, but no timestamp'); + } + this._length = len; + this._payload = data.subarray(0, len); + } + return; + } + } while (true); + } + + _createClass(ID3, [{ + key: 'readUTF', + value: function readUTF(data, start, len) { + + var result = '', + offset = start, + end = start + len; + do { + result += String.fromCharCode(data[offset++]); + } while (offset < end); + return result; + } + }, { + key: '_parseID3Frames', + value: function _parseID3Frames(data, offset, endPos) { + var tagId, tagLen, tagStart, tagFlags, timestamp; + while (offset + 8 <= endPos) { + tagId = this.readUTF(data, offset, 4); + offset += 4; + + tagLen = data[offset++] << 24 + data[offset++] << 16 + data[offset++] << 8 + data[offset++]; + + tagFlags = data[offset++] << 8 + data[offset++]; + + tagStart = offset; + //logger.log("ID3 tag id:" + tagId); + switch (tagId) { + case 'PRIV': + //logger.log('parse frame:' + Hex.hexDump(data.subarray(offset,endPos))); + // owner should be "com.apple.streaming.transportStreamTimestamp" + if (this.readUTF(data, offset, 44) === 'com.apple.streaming.transportStreamTimestamp') { + offset += 44; + // smelling even better ! we found the right descriptor + // skip null character (string end) + 3 first bytes + offset += 4; + + // timestamp is 33 bit expressed as a big-endian eight-octet number, with the upper 31 bits set to zero. + var pts33Bit = data[offset++] & 0x1; + this._hasTimeStamp = true; + + timestamp = ((data[offset++] << 23) + (data[offset++] << 15) + (data[offset++] << 7) + data[offset++]) / 45; + + if (pts33Bit) { + timestamp += 47721858.84; // 2^32 / 90 + } + timestamp = Math.round(timestamp); + _logger.logger.trace('ID3 timestamp found: ' + timestamp); + this._timeStamp = timestamp; + } + break; + default: + break; + } + } + } + }, { + key: 'hasTimeStamp', + get: function get() { + return this._hasTimeStamp; + } + }, { + key: 'timeStamp', + get: function get() { + return this._timeStamp; + } + }, { + key: 'length', + get: function get() { + return this._length; + } + }, { + key: 'payload', + get: function get() { + return this._payload; + } + }]); + + return ID3; +}(); + +exports.default = ID3; + +},{"53":53}],28:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** + * MP3 demuxer + */ + + +var _id = _dereq_(27); + +var _id2 = _interopRequireDefault(_id); + +var _mpegaudio = _dereq_(30); + +var _mpegaudio2 = _interopRequireDefault(_mpegaudio); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var MP3Demuxer = function () { + function MP3Demuxer(observer, remuxer, config) { + _classCallCheck(this, MP3Demuxer); + + this.observer = observer; + this.config = config; + this.remuxer = remuxer; + } + + _createClass(MP3Demuxer, [{ + key: 'resetInitSegment', + value: function resetInitSegment(initSegment, audioCodec, videoCodec, duration) { + this._audioTrack = { container: 'audio/mpeg', type: 'audio', id: -1, sequenceNumber: 0, isAAC: false, samples: [], len: 0, manifestCodec: audioCodec, duration: duration, inputTimeScale: 90000 }; + } + }, { + key: 'resetTimeStamp', + value: function resetTimeStamp() {} + }, { + key: 'append', + + + // feed incoming data to the front of the parsing pipeline + value: function append(data, timeOffset, contiguous, accurateTimeOffset) { + var id3 = new _id2.default(data); + var pts = 90 * id3.timeStamp; + var afterID3 = id3.length; + var offset, length; + + // Look for MPEG header + for (offset = afterID3, length = data.length; offset < length - 1; offset++) { + if (data[offset] === 0xff && (data[offset + 1] & 0xe0) === 0xe0 && (data[offset + 1] & 0x06) !== 0x00) { + break; + } + } + + _mpegaudio2.default.parse(this._audioTrack, data, id3.length, pts); + + this.remuxer.remux(this._audioTrack, { samples: [] }, { samples: [{ pts: pts, dts: pts, data: id3.payload }], inputTimeScale: 90000 }, { samples: [] }, timeOffset, contiguous, accurateTimeOffset); + } + }, { + key: 'destroy', + value: function destroy() {} + }], [{ + key: 'probe', + value: function probe(data) { + // check if data contains ID3 timestamp and MPEG sync word + var id3 = new _id2.default(data), + offset, + length; + if (id3.hasTimeStamp) { + // Look for MPEG header | 1111 1111 | 111X XYZX | where X can be either 0 or 1 and Y or Z should be 1 + // Layer bits (position 14 and 15) in header should be always different from 0 (Layer I or Layer II or Layer III) + // More info http://www.mp3-tech.org/programmer/frame_header.html + for (offset = id3.length, length = Math.min(data.length - 1, offset + 100); offset < length; offset++) { + if (data[offset] === 0xff && (data[offset + 1] & 0xe0) === 0xe0 && (data[offset + 1] & 0x06) !== 0x00) { + //logger.log('MPEG sync word found !'); + return true; + } + } + } + return false; + } + }]); + + return MP3Demuxer; +}(); + +exports.default = MP3Demuxer; + +},{"27":27,"30":30}],29:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** + * MP4 demuxer + */ +//import {logger} from '../utils/logger'; + + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var MP4Demuxer = function () { + function MP4Demuxer(observer, remuxer) { + _classCallCheck(this, MP4Demuxer); + + this.observer = observer; + this.remuxer = remuxer; + } + + _createClass(MP4Demuxer, [{ + key: 'resetTimeStamp', + value: function resetTimeStamp() {} + }, { + key: 'resetInitSegment', + value: function resetInitSegment(initSegment, audioCodec, videoCodec, duration) { + //jshint unused:false + var initData = this.initData = MP4Demuxer.parseInitSegment(initSegment); + var tracks = {}; + if (initData.audio) { + tracks.audio = { container: 'audio/mp4', codec: audioCodec, initSegment: initSegment }; + } + if (initData.video) { + tracks.video = { container: 'video/mp4', codec: videoCodec, initSegment: initSegment }; + } + this.observer.trigger(_events2.default.FRAG_PARSING_INIT_SEGMENT, { tracks: tracks }); + } + }, { + key: 'append', + + + // feed incoming data to the front of the parsing pipeline + value: function append(data, timeOffset, contiguous, accurateTimeOffset) { + var initData = this.initData; + var startDTS = MP4Demuxer.startDTS(initData, data); + this.remuxer.remux(initData.audio, initData.video, null, null, startDTS, contiguous, accurateTimeOffset, data); + } + }, { + key: 'destroy', + value: function destroy() {} + }], [{ + key: 'probe', + value: function probe(data) { + if (data.length >= 8) { + var dataType = MP4Demuxer.bin2str(data.subarray(4, 8)); + return ['moof', 'ftyp', 'styp'].indexOf(dataType) >= 0; + } + return false; + } + }, { + key: 'bin2str', + value: function bin2str(buffer) { + return String.fromCharCode.apply(null, buffer); + } + }, { + key: 'readUint32', + value: function readUint32(buffer, offset) { + var val = buffer[offset] << 24 | buffer[offset + 1] << 16 | buffer[offset + 2] << 8 | buffer[offset + 3]; + return val < 0 ? 4294967296 + val : val; + } + + // Find the data for a box specified by its path + + }, { + key: 'findBox', + value: function findBox(data, path) { + var results = [], + i, + size, + type, + end, + subresults; + + if (!path.length) { + // short-circuit the search for empty paths + return null; + } + + for (i = 0; i < data.byteLength;) { + size = MP4Demuxer.readUint32(data, i); + type = MP4Demuxer.bin2str(data.subarray(i + 4, i + 8)); + + end = size > 1 ? i + size : data.byteLength; + + if (type === path[0]) { + if (path.length === 1) { + // this is the end of the path and we've found the box we were + // looking for + results.push(data.subarray(i + 8, end)); + } else { + // recursively search for the next box along the path + subresults = MP4Demuxer.findBox(data.subarray(i + 8, end), path.slice(1)); + if (subresults.length) { + results = results.concat(subresults); + } + } + } + i = end; + } + + // we've finished searching all of data + return results; + } + + /** + * Parses an MP4 initialization segment and extracts stream type and + * timescale values for any declared tracks. Timescale values indicate the + * number of clock ticks per second to assume for time-based values + * elsewhere in the MP4. + * + * To determine the start time of an MP4, you need two pieces of + * information: the timescale unit and the earliest base media decode + * time. Multiple timescales can be specified within an MP4 but the + * base media decode time is always expressed in the timescale from + * the media header box for the track: + * ``` + * moov > trak > mdia > mdhd.timescale + * moov > trak > mdia > hdlr + * ``` + * @param init {Uint8Array} the bytes of the init segment + * @return {object} a hash of track type to timescale values or null if + * the init segment is malformed. + */ + + }, { + key: 'parseInitSegment', + value: function parseInitSegment(initSegment) { + var result = []; + var traks = MP4Demuxer.findBox(initSegment, ['moov', 'trak']); + + traks.forEach(function (trak) { + var tkhd = MP4Demuxer.findBox(trak, ['tkhd'])[0]; + if (tkhd) { + var version = tkhd[0]; + var index = version === 0 ? 12 : 20; + var trackId = MP4Demuxer.readUint32(tkhd, index); + + var mdhd = MP4Demuxer.findBox(trak, ['mdia', 'mdhd'])[0]; + if (mdhd) { + version = mdhd[0]; + index = version === 0 ? 12 : 20; + var timescale = MP4Demuxer.readUint32(mdhd, index); + + var hdlr = MP4Demuxer.findBox(trak, ['mdia', 'hdlr'])[0]; + if (hdlr) { + var hdlrType = MP4Demuxer.bin2str(hdlr.subarray(8, 12)); + var type = { 'soun': 'audio', 'vide': 'video' }[hdlrType]; + if (type) { + result[trackId] = { timescale: timescale, type: type }; + result[type] = { timescale: timescale, id: trackId }; + } + } + } + } + }); + return result; + } + + /** + * Determine the base media decode start time, in seconds, for an MP4 + * fragment. If multiple fragments are specified, the earliest time is + * returned. + * + * The base media decode time can be parsed from track fragment + * metadata: + * ``` + * moof > traf > tfdt.baseMediaDecodeTime + * ``` + * It requires the timescale value from the mdhd to interpret. + * + * @param timescale {object} a hash of track ids to timescale values. + * @return {number} the earliest base media decode start time for the + * fragment, in seconds + */ + + }, { + key: 'startDTS', + value: function startDTS(initData, fragment) { + var trafs, baseTimes, result; + + // we need info from two childrend of each track fragment box + trafs = MP4Demuxer.findBox(fragment, ['moof', 'traf']); + + // determine the start times for each track + baseTimes = [].concat.apply([], trafs.map(function (traf) { + return MP4Demuxer.findBox(traf, ['tfhd']).map(function (tfhd) { + var id, scale, baseTime; + + // get the track id from the tfhd + id = MP4Demuxer.readUint32(tfhd, 4); + // assume a 90kHz clock if no timescale was specified + scale = initData[id].timescale || 90e3; + + // get the base media decode time from the tfdt + baseTime = MP4Demuxer.findBox(traf, ['tfdt']).map(function (tfdt) { + var version, result; + + version = tfdt[0]; + result = MP4Demuxer.readUint32(tfdt, 4); + if (version === 1) { + result *= Math.pow(2, 32); + + result += MP4Demuxer.readUint32(tfdt, 8); + } + return result; + })[0]; + baseTime = baseTime || Infinity; + + // convert base time to seconds + return baseTime / scale; + }); + })); + + // return the minimum + result = Math.min.apply(null, baseTimes); + return isFinite(result) ? result : 0; + } + }]); + + return MP4Demuxer; +}(); + +exports.default = MP4Demuxer; + +},{"35":35}],30:[function(_dereq_,module,exports){ +'use strict'; + +var _logger = _dereq_(53); + +var MpegAudio = { + + onFrame: function onFrame(track, data, bitRate, sampleRate, channelCount, frameIndex, pts) { + var frameDuration = 1152 * 90000 / sampleRate; + var stamp = pts + frameIndex * frameDuration; + + track.config = []; + track.channelCount = channelCount; + track.samplerate = sampleRate; + track.samples.push({ unit: data, pts: stamp, dts: stamp }); + track.len += data.length; + }, + + onNoise: function onNoise(data) { + _logger.logger.warn('mpeg audio has noise: ' + data.length + ' bytes'); + }, + + parseFrames: function parseFrames(track, data, start, end, frameIndex, pts) { + var BitratesMap = [32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160]; + var SamplingRateMap = [44100, 48000, 32000, 22050, 24000, 16000, 11025, 12000, 8000]; + + if (start + 2 > end) { + return -1; // we need at least 2 bytes to detect sync pattern + } + if (data[start] === 0xFF || (data[start + 1] & 0xE0) === 0xE0) { + // Using http://www.datavoyage.com/mpgscript/mpeghdr.htm as a reference + if (start + 24 > end) { + return -1; + } + var headerB = data[start + 1] >> 3 & 3; + var headerC = data[start + 1] >> 1 & 3; + var headerE = data[start + 2] >> 4 & 15; + var headerF = data[start + 2] >> 2 & 3; + var headerG = !!(data[start + 2] & 2); + if (headerB !== 1 && headerE !== 0 && headerE !== 15 && headerF !== 3) { + var columnInBitrates = headerB === 3 ? 3 - headerC : headerC === 3 ? 3 : 4; + var bitRate = BitratesMap[columnInBitrates * 14 + headerE - 1] * 1000; + var columnInSampleRates = headerB === 3 ? 0 : headerB === 2 ? 1 : 2; + var sampleRate = SamplingRateMap[columnInSampleRates * 3 + headerF]; + var padding = headerG ? 1 : 0; + var channelCount = data[start + 3] >> 6 === 3 ? 1 : 2; // If bits of channel mode are `11` then it is a single channel (Mono) + var frameLength = headerC === 3 ? (headerB === 3 ? 12 : 6) * bitRate / sampleRate + padding << 2 : (headerB === 3 ? 144 : 72) * bitRate / sampleRate + padding | 0; + if (start + frameLength > end) { + return -1; + } + + this.onFrame(track, data.subarray(start, start + frameLength), bitRate, sampleRate, channelCount, frameIndex, pts); + + return frameLength; + } + } + // noise or ID3, trying to skip + var offset = start + 2; + while (offset < end) { + if (data[offset - 1] === 0xFF && (data[offset] & 0xE0) === 0xE0) { + // sync pattern is found + this.onNoise(data.subarray(start, offset - 1)); + + return offset - start - 1; + } + offset++; + } + return -1; + }, + + parse: function parse(track, data, offset, pts) { + var length = data.length; + var frameIndex = 0; + var parsed; + + while (offset < length && (parsed = this.parseFrames(track, data, offset, length, frameIndex++, pts)) > 0) { + offset += parsed; + } + } +}; /** + * MPEG parser helper + */ + + +module.exports = MpegAudio; + +},{"53":53}],31:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** + * SAMPLE-AES decrypter + */ + +var _decrypter = _dereq_(19); + +var _decrypter2 = _interopRequireDefault(_decrypter); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var SampleAesDecrypter = function () { + function SampleAesDecrypter(observer, config, decryptdata, discardEPB) { + _classCallCheck(this, SampleAesDecrypter); + + this.decryptdata = decryptdata; + this.discardEPB = discardEPB; + this.decrypter = new _decrypter2.default(observer, config); + } + + _createClass(SampleAesDecrypter, [{ + key: 'decryptBuffer', + value: function decryptBuffer(encryptedData, callback) { + this.decrypter.decrypt(encryptedData, this.decryptdata.key.buffer, this.decryptdata.iv.buffer, callback); + } + + // AAC - encrypt all full 16 bytes blocks starting from offset 16 + + }, { + key: 'decryptAacSample', + value: function decryptAacSample(samples, sampleIndex, callback, sync) { + var curUnit = samples[sampleIndex].unit; + var encryptedData = curUnit.subarray(16, curUnit.length - curUnit.length % 16); + var encryptedBuffer = encryptedData.buffer.slice(encryptedData.byteOffset, encryptedData.byteOffset + encryptedData.length); + + var localthis = this; + this.decryptBuffer(encryptedBuffer, function (decryptedData) { + decryptedData = new Uint8Array(decryptedData); + curUnit.set(decryptedData, 16); + + if (!sync) { + localthis.decryptAacSamples(samples, sampleIndex + 1, callback); + } + }); + } + }, { + key: 'decryptAacSamples', + value: function decryptAacSamples(samples, sampleIndex, callback) { + for (;; sampleIndex++) { + if (sampleIndex >= samples.length) { + callback(); + return; + } + + if (samples[sampleIndex].unit.length < 32) { + continue; + } + + var sync = this.decrypter.isSync(); + + this.decryptAacSample(samples, sampleIndex, callback, sync); + + if (!sync) { + return; + } + } + } + + // AVC - encrypt one 16 bytes block out of ten, starting from offset 32 + + }, { + key: 'getAvcEncryptedData', + value: function getAvcEncryptedData(decodedData) { + var encryptedDataLen = Math.floor((decodedData.length - 48) / 160) * 16 + 16; + var encryptedData = new Int8Array(encryptedDataLen); + var outputPos = 0; + for (var inputPos = 32; inputPos <= decodedData.length - 16; inputPos += 160, outputPos += 16) { + encryptedData.set(decodedData.subarray(inputPos, inputPos + 16), outputPos); + } + return encryptedData; + } + }, { + key: 'getAvcDecryptedUnit', + value: function getAvcDecryptedUnit(decodedData, decryptedData) { + decryptedData = new Uint8Array(decryptedData); + var inputPos = 0; + for (var outputPos = 32; outputPos <= decodedData.length - 16; outputPos += 160, inputPos += 16) { + decodedData.set(decryptedData.subarray(inputPos, inputPos + 16), outputPos); + } + return decodedData; + } + }, { + key: 'decryptAvcSample', + value: function decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit, sync) { + var decodedData = this.discardEPB(curUnit.data); + var encryptedData = this.getAvcEncryptedData(decodedData); + var localthis = this; + + this.decryptBuffer(encryptedData.buffer, function (decryptedData) { + curUnit.data = localthis.getAvcDecryptedUnit(decodedData, decryptedData); + + if (!sync) { + localthis.decryptAvcSamples(samples, sampleIndex, unitIndex + 1, callback); + } + }); + } + }, { + key: 'decryptAvcSamples', + value: function decryptAvcSamples(samples, sampleIndex, unitIndex, callback) { + for (;; sampleIndex++, unitIndex = 0) { + if (sampleIndex >= samples.length) { + callback(); + return; + } + + var curUnits = samples[sampleIndex].units; + for (;; unitIndex++) { + if (unitIndex >= curUnits.length) { + break; + } + + var curUnit = curUnits[unitIndex]; + if (curUnit.length <= 48 || curUnit.type !== 1 && curUnit.type !== 5) { + continue; + } + + var sync = this.decrypter.isSync(); + + this.decryptAvcSample(samples, sampleIndex, unitIndex, callback, curUnit, sync); + + if (!sync) { + return; + } + } + } + } + }]); + + return SampleAesDecrypter; +}(); + +exports.default = SampleAesDecrypter; + +},{"19":19}],32:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** + * highly optimized TS demuxer: + * parse PAT, PMT + * extract PES packet from audio and video PIDs + * extract AVC/H264 NAL units and AAC/ADTS samples from PES packet + * trigger the remuxer upon parsing completion + * it also tries to workaround as best as it can audio codec switch (HE-AAC to AAC and vice versa), without having to restart the MediaSource. + * it also controls the remuxing process : + * upon discontinuity or level switch detection, it will also notifies the remuxer so that it can reset its state. + */ + +// import Hex from '../utils/hex'; + + +var _adts = _dereq_(22); + +var _adts2 = _interopRequireDefault(_adts); + +var _mpegaudio = _dereq_(30); + +var _mpegaudio2 = _interopRequireDefault(_mpegaudio); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _expGolomb = _dereq_(26); + +var _expGolomb2 = _interopRequireDefault(_expGolomb); + +var _sampleAes = _dereq_(31); + +var _sampleAes2 = _interopRequireDefault(_sampleAes); + +var _logger = _dereq_(53); + +var _errors = _dereq_(33); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var TSDemuxer = function () { + function TSDemuxer(observer, remuxer, config, typeSupported) { + _classCallCheck(this, TSDemuxer); + + this.observer = observer; + this.config = config; + this.typeSupported = typeSupported; + this.remuxer = remuxer; + this.sampleAes = null; + } + + _createClass(TSDemuxer, [{ + key: 'setDecryptData', + value: function setDecryptData(decryptdata) { + if (decryptdata != null && decryptdata.key != null && decryptdata.method === 'SAMPLE-AES') { + this.sampleAes = new _sampleAes2.default(this.observer, this.config, decryptdata, this.discardEPB); + } else { + this.sampleAes = null; + } + } + }, { + key: 'resetInitSegment', + value: function resetInitSegment(initSegment, audioCodec, videoCodec, duration) { + this.pmtParsed = false; + this._pmtId = -1; + this._avcTrack = { container: 'video/mp2t', type: 'video', id: -1, inputTimeScale: 90000, sequenceNumber: 0, samples: [], len: 0, dropped: 0 }; + this._audioTrack = { container: 'video/mp2t', type: 'audio', id: -1, inputTimeScale: 90000, duration: duration, sequenceNumber: 0, samples: [], len: 0, isAAC: true }; + this._id3Track = { type: 'id3', id: -1, inputTimeScale: 90000, sequenceNumber: 0, samples: [], len: 0 }; + this._txtTrack = { type: 'text', id: -1, inputTimeScale: 90000, sequenceNumber: 0, samples: [], len: 0 }; + // flush any partial content + this.aacOverFlow = null; + this.aacLastPTS = null; + this.avcSample = null; + this.audioCodec = audioCodec; + this.videoCodec = videoCodec; + this._duration = duration; + } + }, { + key: 'resetTimeStamp', + value: function resetTimeStamp() {} + + // feed incoming data to the front of the parsing pipeline + + }, { + key: 'append', + value: function append(data, timeOffset, contiguous, accurateTimeOffset) { + var start, + len = data.length, + stt, + pid, + atf, + offset, + pes, + unknownPIDs = false; + this.contiguous = contiguous; + var pmtParsed = this.pmtParsed, + avcTrack = this._avcTrack, + audioTrack = this._audioTrack, + id3Track = this._id3Track, + avcId = avcTrack.id, + audioId = audioTrack.id, + id3Id = id3Track.id, + pmtId = this._pmtId, + avcData = avcTrack.pesData, + audioData = audioTrack.pesData, + id3Data = id3Track.pesData, + parsePAT = this._parsePAT, + parsePMT = this._parsePMT, + parsePES = this._parsePES, + parseAVCPES = this._parseAVCPES.bind(this), + parseAACPES = this._parseAACPES.bind(this), + parseMPEGPES = this._parseMPEGPES.bind(this), + parseID3PES = this._parseID3PES.bind(this); + + // don't parse last TS packet if incomplete + len -= len % 188; + // loop through TS packets + for (start = 0; start < len; start += 188) { + if (data[start] === 0x47) { + stt = !!(data[start + 1] & 0x40); + // pid is a 13-bit field starting at the last bit of TS[1] + pid = ((data[start + 1] & 0x1f) << 8) + data[start + 2]; + atf = (data[start + 3] & 0x30) >> 4; + // if an adaption field is present, its length is specified by the fifth byte of the TS packet header. + if (atf > 1) { + offset = start + 5 + data[start + 4]; + // continue if there is only adaptation field + if (offset === start + 188) { + continue; + } + } else { + offset = start + 4; + } + switch (pid) { + case avcId: + if (stt) { + if (avcData && (pes = parsePES(avcData))) { + parseAVCPES(pes, false); + } + avcData = { data: [], size: 0 }; + } + if (avcData) { + avcData.data.push(data.subarray(offset, start + 188)); + avcData.size += start + 188 - offset; + } + break; + case audioId: + if (stt) { + if (audioData && (pes = parsePES(audioData))) { + if (audioTrack.isAAC) { + parseAACPES(pes); + } else { + parseMPEGPES(pes); + } + } + audioData = { data: [], size: 0 }; + } + if (audioData) { + audioData.data.push(data.subarray(offset, start + 188)); + audioData.size += start + 188 - offset; + } + break; + case id3Id: + if (stt) { + if (id3Data && (pes = parsePES(id3Data))) { + parseID3PES(pes); + } + id3Data = { data: [], size: 0 }; + } + if (id3Data) { + id3Data.data.push(data.subarray(offset, start + 188)); + id3Data.size += start + 188 - offset; + } + break; + case 0: + if (stt) { + offset += data[offset] + 1; + } + pmtId = this._pmtId = parsePAT(data, offset); + break; + case pmtId: + if (stt) { + offset += data[offset] + 1; + } + var parsedPIDs = parsePMT(data, offset, this.typeSupported.mpeg === true || this.typeSupported.mp3 === true, this.sampleAes != null); + + // only update track id if track PID found while parsing PMT + // this is to avoid resetting the PID to -1 in case + // track PID transiently disappears from the stream + // this could happen in case of transient missing audio samples for example + avcId = parsedPIDs.avc; + if (avcId > 0) { + avcTrack.id = avcId; + } + audioId = parsedPIDs.audio; + if (audioId > 0) { + audioTrack.id = audioId; + audioTrack.isAAC = parsedPIDs.isAAC; + } + id3Id = parsedPIDs.id3; + if (id3Id > 0) { + id3Track.id = id3Id; + } + if (unknownPIDs && !pmtParsed) { + _logger.logger.log('reparse from beginning'); + unknownPIDs = false; + // we set it to -188, the += 188 in the for loop will reset start to 0 + start = -188; + } + pmtParsed = this.pmtParsed = true; + break; + case 17: + case 0x1fff: + break; + default: + unknownPIDs = true; + break; + } + } else { + this.observer.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.FRAG_PARSING_ERROR, fatal: false, reason: 'TS packet did not start with 0x47' }); + } + } + // try to parse last PES packets + if (avcData && (pes = parsePES(avcData))) { + parseAVCPES(pes, true); + avcTrack.pesData = null; + } else { + // either avcData null or PES truncated, keep it for next frag parsing + avcTrack.pesData = avcData; + } + + if (audioData && (pes = parsePES(audioData))) { + if (audioTrack.isAAC) { + parseAACPES(pes); + } else { + parseMPEGPES(pes); + } + audioTrack.pesData = null; + } else { + if (audioData && audioData.size) { + _logger.logger.log('last AAC PES packet truncated,might overlap between fragments'); + } + // either audioData null or PES truncated, keep it for next frag parsing + audioTrack.pesData = audioData; + } + + if (id3Data && (pes = parsePES(id3Data))) { + parseID3PES(pes); + id3Track.pesData = null; + } else { + // either id3Data null or PES truncated, keep it for next frag parsing + id3Track.pesData = id3Data; + } + + if (this.sampleAes == null) { + this.remuxer.remux(audioTrack, avcTrack, id3Track, this._txtTrack, timeOffset, contiguous, accurateTimeOffset); + } else { + this.decryptAndRemux(audioTrack, avcTrack, id3Track, this._txtTrack, timeOffset, contiguous, accurateTimeOffset); + } + } + }, { + key: 'decryptAndRemux', + value: function decryptAndRemux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset) { + if (audioTrack.samples && audioTrack.isAAC) { + var localthis = this; + this.sampleAes.decryptAacSamples(audioTrack.samples, 0, function () { + localthis.decryptAndRemuxAvc(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset); + }); + } else { + this.decryptAndRemuxAvc(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset); + } + } + }, { + key: 'decryptAndRemuxAvc', + value: function decryptAndRemuxAvc(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset) { + if (videoTrack.samples) { + var localthis = this; + this.sampleAes.decryptAvcSamples(videoTrack.samples, 0, 0, function () { + localthis.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset); + }); + } else { + this.remuxer.remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset); + } + } + }, { + key: 'destroy', + value: function destroy() { + this._initPTS = this._initDTS = undefined; + this._duration = 0; + } + }, { + key: '_parsePAT', + value: function _parsePAT(data, offset) { + // skip the PSI header and parse the first PMT entry + return (data[offset + 10] & 0x1F) << 8 | data[offset + 11]; + //logger.log('PMT PID:' + this._pmtId); + } + }, { + key: '_parsePMT', + value: function _parsePMT(data, offset, mpegSupported, isSampleAes) { + var sectionLength, + tableEnd, + programInfoLength, + pid, + result = { audio: -1, avc: -1, id3: -1, isAAC: true }; + sectionLength = (data[offset + 1] & 0x0f) << 8 | data[offset + 2]; + tableEnd = offset + 3 + sectionLength - 4; + // to determine where the table is, we have to figure out how + // long the program info descriptors are + programInfoLength = (data[offset + 10] & 0x0f) << 8 | data[offset + 11]; + // advance the offset to the first entry in the mapping table + offset += 12 + programInfoLength; + while (offset < tableEnd) { + pid = (data[offset + 1] & 0x1F) << 8 | data[offset + 2]; + switch (data[offset]) { + case 0xcf: + // SAMPLE-AES AAC + if (!isSampleAes) { + _logger.logger.log('unkown stream type:' + data[offset]); + break; + } + /* falls through */ + + // ISO/IEC 13818-7 ADTS AAC (MPEG-2 lower bit-rate audio) + case 0x0f: + //logger.log('AAC PID:' + pid); + if (result.audio === -1) { + result.audio = pid; + } + break; + + // Packetized metadata (ID3) + case 0x15: + //logger.log('ID3 PID:' + pid); + if (result.id3 === -1) { + result.id3 = pid; + } + break; + + case 0xdb: + // SAMPLE-AES AVC + if (!isSampleAes) { + _logger.logger.log('unkown stream type:' + data[offset]); + break; + } + /* falls through */ + + // ITU-T Rec. H.264 and ISO/IEC 14496-10 (lower bit-rate video) + case 0x1b: + //logger.log('AVC PID:' + pid); + if (result.avc === -1) { + result.avc = pid; + } + break; + + // ISO/IEC 11172-3 (MPEG-1 audio) + // or ISO/IEC 13818-3 (MPEG-2 halved sample rate audio) + case 0x03: + case 0x04: + //logger.log('MPEG PID:' + pid); + if (!mpegSupported) { + _logger.logger.log('MPEG audio found, not supported in this browser for now'); + } else if (result.audio === -1) { + result.audio = pid; + result.isAAC = false; + } + break; + + case 0x24: + _logger.logger.warn('HEVC stream type found, not supported for now'); + break; + + default: + _logger.logger.log('unkown stream type:' + data[offset]); + break; + } + // move to the next table entry + // skip past the elementary stream descriptors, if present + offset += ((data[offset + 3] & 0x0F) << 8 | data[offset + 4]) + 5; + } + return result; + } + }, { + key: '_parsePES', + value: function _parsePES(stream) { + var i = 0, + frag, + pesFlags, + pesPrefix, + pesLen, + pesHdrLen, + pesData, + pesPts, + pesDts, + payloadStartOffset, + data = stream.data; + // safety check + if (!stream || stream.size === 0) { + return null; + } + + // we might need up to 19 bytes to read PES header + // if first chunk of data is less than 19 bytes, let's merge it with following ones until we get 19 bytes + // usually only one merge is needed (and this is rare ...) + while (data[0].length < 19 && data.length > 1) { + var newData = new Uint8Array(data[0].length + data[1].length); + newData.set(data[0]); + newData.set(data[1], data[0].length); + data[0] = newData; + data.splice(1, 1); + } + //retrieve PTS/DTS from first fragment + frag = data[0]; + pesPrefix = (frag[0] << 16) + (frag[1] << 8) + frag[2]; + if (pesPrefix === 1) { + pesLen = (frag[4] << 8) + frag[5]; + // if PES parsed length is not zero and greater than total received length, stop parsing. PES might be truncated + // minus 6 : PES header size + if (pesLen && pesLen > stream.size - 6) { + return null; + } + pesFlags = frag[7]; + if (pesFlags & 0xC0) { + /* PES header described here : http://dvd.sourceforge.net/dvdinfo/pes-hdr.html + as PTS / DTS is 33 bit we cannot use bitwise operator in JS, + as Bitwise operators treat their operands as a sequence of 32 bits */ + pesPts = (frag[9] & 0x0E) * 536870912 + // 1 << 29 + (frag[10] & 0xFF) * 4194304 + // 1 << 22 + (frag[11] & 0xFE) * 16384 + // 1 << 14 + (frag[12] & 0xFF) * 128 + // 1 << 7 + (frag[13] & 0xFE) / 2; + // check if greater than 2^32 -1 + if (pesPts > 4294967295) { + // decrement 2^33 + pesPts -= 8589934592; + } + if (pesFlags & 0x40) { + pesDts = (frag[14] & 0x0E) * 536870912 + // 1 << 29 + (frag[15] & 0xFF) * 4194304 + // 1 << 22 + (frag[16] & 0xFE) * 16384 + // 1 << 14 + (frag[17] & 0xFF) * 128 + // 1 << 7 + (frag[18] & 0xFE) / 2; + // check if greater than 2^32 -1 + if (pesDts > 4294967295) { + // decrement 2^33 + pesDts -= 8589934592; + } + if (pesPts - pesDts > 60 * 90000) { + _logger.logger.warn(Math.round((pesPts - pesDts) / 90000) + 's delta between PTS and DTS, align them'); + pesPts = pesDts; + } + } else { + pesDts = pesPts; + } + } + pesHdrLen = frag[8]; + // 9 bytes : 6 bytes for PES header + 3 bytes for PES extension + payloadStartOffset = pesHdrLen + 9; + + stream.size -= payloadStartOffset; + //reassemble PES packet + pesData = new Uint8Array(stream.size); + for (var j = 0, dataLen = data.length; j < dataLen; j++) { + frag = data[j]; + var len = frag.byteLength; + if (payloadStartOffset) { + if (payloadStartOffset > len) { + // trim full frag if PES header bigger than frag + payloadStartOffset -= len; + continue; + } else { + // trim partial frag if PES header smaller than frag + frag = frag.subarray(payloadStartOffset); + len -= payloadStartOffset; + payloadStartOffset = 0; + } + } + pesData.set(frag, i); + i += len; + } + if (pesLen) { + // payload size : remove PES header + PES extension + pesLen -= pesHdrLen + 3; + } + return { data: pesData, pts: pesPts, dts: pesDts, len: pesLen }; + } else { + return null; + } + } + }, { + key: 'pushAccesUnit', + value: function pushAccesUnit(avcSample, avcTrack) { + if (avcSample.units.length && avcSample.frame) { + var samples = avcTrack.samples; + var nbSamples = samples.length; + // only push AVC sample if starting with a keyframe is not mandatory OR + // if keyframe already found in this fragment OR + // keyframe found in last fragment (track.sps) AND + // samples already appended (we already found a keyframe in this fragment) OR fragment is contiguous + if (!this.config.forceKeyFrameOnDiscontinuity || avcSample.key === true || avcTrack.sps && (nbSamples || this.contiguous)) { + avcSample.id = nbSamples; + samples.push(avcSample); + } else { + // dropped samples, track it + avcTrack.dropped++; + } + } + if (avcSample.debug.length) { + _logger.logger.log(avcSample.pts + '/' + avcSample.dts + ':' + avcSample.debug); + } + } + }, { + key: '_parseAVCPES', + value: function _parseAVCPES(pes, last) { + var _this = this; + + //logger.log('parse new PES'); + var track = this._avcTrack, + units = this._parseAVCNALu(pes.data), + debug = false, + expGolombDecoder, + avcSample = this.avcSample, + push, + i; + //free pes.data to save up some memory + pes.data = null; + + units.forEach(function (unit) { + switch (unit.type) { + //NDR + case 1: + push = true; + if (debug && avcSample) { + avcSample.debug += 'NDR '; + } + avcSample.frame = true; + // retrieve slice type by parsing beginning of NAL unit (follow H264 spec, slice_header definition) to detect keyframe embedded in NDR + var data = unit.data; + if (data.length > 4) { + var sliceType = new _expGolomb2.default(data).readSliceType(); + // 2 : I slice, 4 : SI slice, 7 : I slice, 9: SI slice + // SI slice : A slice that is coded using intra prediction only and using quantisation of the prediction samples. + // An SI slice can be coded such that its decoded samples can be constructed identically to an SP slice. + // I slice: A slice that is not an SI slice that is decoded using intra prediction only. + //if (sliceType === 2 || sliceType === 7) { + if (sliceType === 2 || sliceType === 4 || sliceType === 7 || sliceType === 9) { + avcSample.key = true; + } + } + break; + //IDR + case 5: + push = true; + // handle PES not starting with AUD + if (!avcSample) { + avcSample = _this.avcSample = _this._createAVCSample(true, pes.pts, pes.dts, ''); + } + if (debug) { + avcSample.debug += 'IDR '; + } + avcSample.key = true; + avcSample.frame = true; + break; + //SEI + case 6: + push = true; + if (debug && avcSample) { + avcSample.debug += 'SEI '; + } + expGolombDecoder = new _expGolomb2.default(_this.discardEPB(unit.data)); + + // skip frameType + expGolombDecoder.readUByte(); + + var payloadType = 0; + var payloadSize = 0; + var endOfCaptions = false; + var b = 0; + + while (!endOfCaptions && expGolombDecoder.bytesAvailable > 1) { + payloadType = 0; + do { + b = expGolombDecoder.readUByte(); + payloadType += b; + } while (b === 0xFF); + + // Parse payload size. + payloadSize = 0; + do { + b = expGolombDecoder.readUByte(); + payloadSize += b; + } while (b === 0xFF); + + // TODO: there can be more than one payload in an SEI packet... + // TODO: need to read type and size in a while loop to get them all + if (payloadType === 4 && expGolombDecoder.bytesAvailable !== 0) { + + endOfCaptions = true; + + var countryCode = expGolombDecoder.readUByte(); + + if (countryCode === 181) { + var providerCode = expGolombDecoder.readUShort(); + + if (providerCode === 49) { + var userStructure = expGolombDecoder.readUInt(); + + if (userStructure === 0x47413934) { + var userDataType = expGolombDecoder.readUByte(); + + // Raw CEA-608 bytes wrapped in CEA-708 packet + if (userDataType === 3) { + var firstByte = expGolombDecoder.readUByte(); + var secondByte = expGolombDecoder.readUByte(); + + var totalCCs = 31 & firstByte; + var byteArray = [firstByte, secondByte]; + + for (i = 0; i < totalCCs; i++) { + // 3 bytes per CC + byteArray.push(expGolombDecoder.readUByte()); + byteArray.push(expGolombDecoder.readUByte()); + byteArray.push(expGolombDecoder.readUByte()); + } + + _this._insertSampleInOrder(_this._txtTrack.samples, { type: 3, pts: pes.pts, bytes: byteArray }); + } + } + } + } + } else if (payloadSize < expGolombDecoder.bytesAvailable) { + for (i = 0; i < payloadSize; i++) { + expGolombDecoder.readUByte(); + } + } + } + break; + //SPS + case 7: + push = true; + if (debug && avcSample) { + avcSample.debug += 'SPS '; + } + if (!track.sps) { + expGolombDecoder = new _expGolomb2.default(unit.data); + var config = expGolombDecoder.readSPS(); + track.width = config.width; + track.height = config.height; + track.pixelRatio = config.pixelRatio; + track.sps = [unit.data]; + track.duration = _this._duration; + var codecarray = unit.data.subarray(1, 4); + var codecstring = 'avc1.'; + for (i = 0; i < 3; i++) { + var h = codecarray[i].toString(16); + if (h.length < 2) { + h = '0' + h; + } + codecstring += h; + } + track.codec = codecstring; + } + break; + //PPS + case 8: + push = true; + if (debug && avcSample) { + avcSample.debug += 'PPS '; + } + if (!track.pps) { + track.pps = [unit.data]; + } + break; + // AUD + case 9: + push = false; + if (avcSample) { + _this.pushAccesUnit(avcSample, track); + } + avcSample = _this.avcSample = _this._createAVCSample(false, pes.pts, pes.dts, debug ? 'AUD ' : ''); + break; + // Filler Data + case 12: + push = false; + break; + default: + push = false; + if (avcSample) { + avcSample.debug += 'unknown NAL ' + unit.type + ' '; + } + break; + } + if (avcSample && push) { + var _units = avcSample.units; + _units.push(unit); + } + }); + // if last PES packet, push samples + if (last && avcSample) { + this.pushAccesUnit(avcSample, track); + this.avcSample = null; + } + } + }, { + key: '_createAVCSample', + value: function _createAVCSample(key, pts, dts, debug) { + return { key: key, pts: pts, dts: dts, units: [], debug: debug }; + } + }, { + key: '_insertSampleInOrder', + value: function _insertSampleInOrder(arr, data) { + var len = arr.length; + if (len > 0) { + if (data.pts >= arr[len - 1].pts) { + arr.push(data); + } else { + for (var pos = len - 1; pos >= 0; pos--) { + if (data.pts < arr[pos].pts) { + arr.splice(pos, 0, data); + break; + } + } + } + } else { + arr.push(data); + } + } + }, { + key: '_getLastNalUnit', + value: function _getLastNalUnit() { + var avcSample = this.avcSample, + lastUnit = void 0; + // try to fallback to previous sample if current one is empty + if (!avcSample || avcSample.units.length === 0) { + var track = this._avcTrack, + samples = track.samples; + avcSample = samples[samples.length - 1]; + } + if (avcSample) { + var units = avcSample.units; + lastUnit = units[units.length - 1]; + } + return lastUnit; + } + }, { + key: '_parseAVCNALu', + value: function _parseAVCNALu(array) { + var i = 0, + len = array.byteLength, + value, + overflow, + track = this._avcTrack, + state = track.naluState || 0, + lastState = state; + var units = [], + unit, + unitType, + lastUnitStart = -1, + lastUnitType; + //logger.log('PES:' + Hex.hexDump(array)); + + if (state === -1) { + // special use case where we found 3 or 4-byte start codes exactly at the end of previous PES packet + lastUnitStart = 0; + // NALu type is value read from offset 0 + lastUnitType = array[0] & 0x1f; + state = 0; + i = 1; + } + + while (i < len) { + value = array[i++]; + // optimization. state 0 and 1 are the predominant case. let's handle them outside of the switch/case + if (!state) { + state = value ? 0 : 1; + continue; + } + if (state === 1) { + state = value ? 0 : 2; + continue; + } + // here we have state either equal to 2 or 3 + if (!value) { + state = 3; + } else if (value === 1) { + if (lastUnitStart >= 0) { + unit = { data: array.subarray(lastUnitStart, i - state - 1), type: lastUnitType }; + //logger.log('pushing NALU, type/size:' + unit.type + '/' + unit.data.byteLength); + units.push(unit); + } else { + // lastUnitStart is undefined => this is the first start code found in this PES packet + // first check if start code delimiter is overlapping between 2 PES packets, + // ie it started in last packet (lastState not zero) + // and ended at the beginning of this PES packet (i <= 4 - lastState) + var lastUnit = this._getLastNalUnit(); + if (lastUnit) { + if (lastState && i <= 4 - lastState) { + // start delimiter overlapping between PES packets + // strip start delimiter bytes from the end of last NAL unit + // check if lastUnit had a state different from zero + if (lastUnit.state) { + // strip last bytes + lastUnit.data = lastUnit.data.subarray(0, lastUnit.data.byteLength - lastState); + } + } + // If NAL units are not starting right at the beginning of the PES packet, push preceding data into previous NAL unit. + overflow = i - state - 1; + if (overflow > 0) { + //logger.log('first NALU found with overflow:' + overflow); + var tmp = new Uint8Array(lastUnit.data.byteLength + overflow); + tmp.set(lastUnit.data, 0); + tmp.set(array.subarray(0, overflow), lastUnit.data.byteLength); + lastUnit.data = tmp; + } + } + } + // check if we can read unit type + if (i < len) { + unitType = array[i] & 0x1f; + //logger.log('find NALU @ offset:' + i + ',type:' + unitType); + lastUnitStart = i; + lastUnitType = unitType; + state = 0; + } else { + // not enough byte to read unit type. let's read it on next PES parsing + state = -1; + } + } else { + state = 0; + } + } + if (lastUnitStart >= 0 && state >= 0) { + unit = { data: array.subarray(lastUnitStart, len), type: lastUnitType, state: state }; + units.push(unit); + //logger.log('pushing NALU, type/size/state:' + unit.type + '/' + unit.data.byteLength + '/' + state); + } + // no NALu found + if (units.length === 0) { + // append pes.data to previous NAL unit + var _lastUnit = this._getLastNalUnit(); + if (_lastUnit) { + var _tmp = new Uint8Array(_lastUnit.data.byteLength + array.byteLength); + _tmp.set(_lastUnit.data, 0); + _tmp.set(array, _lastUnit.data.byteLength); + _lastUnit.data = _tmp; + } + } + track.naluState = state; + return units; + } + + /** + * remove Emulation Prevention bytes from a RBSP + */ + + }, { + key: 'discardEPB', + value: function discardEPB(data) { + var length = data.byteLength, + EPBPositions = [], + i = 1, + newLength, + newData; + + // Find all `Emulation Prevention Bytes` + while (i < length - 2) { + if (data[i] === 0 && data[i + 1] === 0 && data[i + 2] === 0x03) { + EPBPositions.push(i + 2); + i += 2; + } else { + i++; + } + } + + // If no Emulation Prevention Bytes were found just return the original + // array + if (EPBPositions.length === 0) { + return data; + } + + // Create a new array to hold the NAL unit data + newLength = length - EPBPositions.length; + newData = new Uint8Array(newLength); + var sourceIndex = 0; + + for (i = 0; i < newLength; sourceIndex++, i++) { + if (sourceIndex === EPBPositions[0]) { + // Skip this byte + sourceIndex++; + // Remove this position index + EPBPositions.shift(); + } + newData[i] = data[sourceIndex]; + } + return newData; + } + }, { + key: '_parseAACPES', + value: function _parseAACPES(pes) { + var track = this._audioTrack, + data = pes.data, + pts = pes.pts, + startOffset = 0, + aacOverFlow = this.aacOverFlow, + aacLastPTS = this.aacLastPTS, + config, + frameLength, + frameDuration, + frameIndex, + offset, + headerLength, + stamp, + len, + aacSample; + if (aacOverFlow) { + var tmp = new Uint8Array(aacOverFlow.byteLength + data.byteLength); + tmp.set(aacOverFlow, 0); + tmp.set(data, aacOverFlow.byteLength); + //logger.log(`AAC: append overflowing ${aacOverFlow.byteLength} bytes to beginning of new PES`); + data = tmp; + } + // look for ADTS header (0xFFFx) + for (offset = startOffset, len = data.length; offset < len - 1; offset++) { + if (data[offset] === 0xff && (data[offset + 1] & 0xf0) === 0xf0) { + break; + } + } + // if ADTS header does not start straight from the beginning of the PES payload, raise an error + if (offset) { + var reason, fatal; + if (offset < len - 1) { + reason = 'AAC PES did not start with ADTS header,offset:' + offset; + fatal = false; + } else { + reason = 'no ADTS header found in AAC PES'; + fatal = true; + } + _logger.logger.warn('parsing error:' + reason); + this.observer.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.FRAG_PARSING_ERROR, fatal: fatal, reason: reason }); + if (fatal) { + return; + } + } + if (!track.samplerate) { + var audioCodec = this.audioCodec; + config = _adts2.default.getAudioConfig(this.observer, data, offset, audioCodec); + track.config = config.config; + track.samplerate = config.samplerate; + track.channelCount = config.channelCount; + track.codec = config.codec; + track.manifestCodec = config.manifestCodec; + _logger.logger.log('parsed codec:' + track.codec + ',rate:' + config.samplerate + ',nb channel:' + config.channelCount); + } + frameIndex = 0; + frameDuration = 1024 * 90000 / track.samplerate; + + // if last AAC frame is overflowing, we should ensure timestamps are contiguous: + // first sample PTS should be equal to last sample PTS + frameDuration + if (aacOverFlow && aacLastPTS) { + var newPTS = aacLastPTS + frameDuration; + if (Math.abs(newPTS - pts) > 1) { + _logger.logger.log('AAC: align PTS for overlapping frames by ' + Math.round((newPTS - pts) / 90)); + pts = newPTS; + } + } + + while (offset + 5 < len) { + // The protection skip bit tells us if we have 2 bytes of CRC data at the end of the ADTS header + headerLength = !!(data[offset + 1] & 0x01) ? 7 : 9; + // retrieve frame size + frameLength = (data[offset + 3] & 0x03) << 11 | data[offset + 4] << 3 | (data[offset + 5] & 0xE0) >>> 5; + frameLength -= headerLength; + //stamp = pes.pts; + + if (frameLength > 0 && offset + headerLength + frameLength <= len) { + stamp = pts + frameIndex * frameDuration; + //logger.log(`AAC frame, offset/length/total/pts:${offset+headerLength}/${frameLength}/${data.byteLength}/${(stamp/90).toFixed(0)}`); + aacSample = { unit: data.subarray(offset + headerLength, offset + headerLength + frameLength), pts: stamp, dts: stamp }; + track.samples.push(aacSample); + track.len += frameLength; + offset += frameLength + headerLength; + frameIndex++; + // look for ADTS header (0xFFFx) + for (; offset < len - 1; offset++) { + if (data[offset] === 0xff && (data[offset + 1] & 0xf0) === 0xf0) { + break; + } + } + } else { + break; + } + } + if (offset < len) { + aacOverFlow = data.subarray(offset, len); + //logger.log(`AAC: overflow detected:${len-offset}`); + } else { + aacOverFlow = null; + } + this.aacOverFlow = aacOverFlow; + this.aacLastPTS = stamp; + } + }, { + key: '_parseMPEGPES', + value: function _parseMPEGPES(pes) { + _mpegaudio2.default.parse(this._audioTrack, pes.data, 0, pes.pts); + } + }, { + key: '_parseID3PES', + value: function _parseID3PES(pes) { + this._id3Track.samples.push(pes); + } + }], [{ + key: 'probe', + value: function probe(data) { + // a TS fragment should contain at least 3 TS packets, a PAT, a PMT, and one PID, each starting with 0x47 + if (data.length >= 3 * 188 && data[0] === 0x47 && data[188] === 0x47 && data[2 * 188] === 0x47) { + return true; + } else { + return false; + } + } + }]); + + return TSDemuxer; +}(); + +exports.default = TSDemuxer; + +},{"22":22,"26":26,"30":30,"31":31,"33":33,"35":35,"53":53}],33:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var ErrorTypes = exports.ErrorTypes = { + // Identifier for a network error (loading error / timeout ...) + NETWORK_ERROR: 'networkError', + // Identifier for a media Error (video/parsing/mediasource error) + MEDIA_ERROR: 'mediaError', + // Identifier for a mux Error (demuxing/remuxing) + MUX_ERROR: 'muxError', + // Identifier for all other errors + OTHER_ERROR: 'otherError' +}; + +var ErrorDetails = exports.ErrorDetails = { + // Identifier for a manifest load error - data: { url : faulty URL, response : { code: error code, text: error text }} + MANIFEST_LOAD_ERROR: 'manifestLoadError', + // Identifier for a manifest load timeout - data: { url : faulty URL, response : { code: error code, text: error text }} + MANIFEST_LOAD_TIMEOUT: 'manifestLoadTimeOut', + // Identifier for a manifest parsing error - data: { url : faulty URL, reason : error reason} + MANIFEST_PARSING_ERROR: 'manifestParsingError', + // Identifier for a manifest with only incompatible codecs error - data: { url : faulty URL, reason : error reason} + MANIFEST_INCOMPATIBLE_CODECS_ERROR: 'manifestIncompatibleCodecsError', + // Identifier for a level load error - data: { url : faulty URL, response : { code: error code, text: error text }} + LEVEL_LOAD_ERROR: 'levelLoadError', + // Identifier for a level load timeout - data: { url : faulty URL, response : { code: error code, text: error text }} + LEVEL_LOAD_TIMEOUT: 'levelLoadTimeOut', + // Identifier for a level switch error - data: { level : faulty level Id, event : error description} + LEVEL_SWITCH_ERROR: 'levelSwitchError', + // Identifier for an audio track load error - data: { url : faulty URL, response : { code: error code, text: error text }} + AUDIO_TRACK_LOAD_ERROR: 'audioTrackLoadError', + // Identifier for an audio track load timeout - data: { url : faulty URL, response : { code: error code, text: error text }} + AUDIO_TRACK_LOAD_TIMEOUT: 'audioTrackLoadTimeOut', + // Identifier for fragment load error - data: { frag : fragment object, response : { code: error code, text: error text }} + FRAG_LOAD_ERROR: 'fragLoadError', + // Identifier for fragment loop loading error - data: { frag : fragment object} + FRAG_LOOP_LOADING_ERROR: 'fragLoopLoadingError', + // Identifier for fragment load timeout error - data: { frag : fragment object} + FRAG_LOAD_TIMEOUT: 'fragLoadTimeOut', + // Identifier for a fragment decryption error event - data: {id : demuxer Id,frag: fragment object, reason : parsing error description } + FRAG_DECRYPT_ERROR: 'fragDecryptError', + // Identifier for a fragment parsing error event - data: { id : demuxer Id, reason : parsing error description } + // will be renamed DEMUX_PARSING_ERROR and switched to MUX_ERROR in the next major release + FRAG_PARSING_ERROR: 'fragParsingError', + // Identifier for a remux alloc error event - data: { id : demuxer Id, frag : fragment object, bytes : nb of bytes on which allocation failed , reason : error text } + REMUX_ALLOC_ERROR: 'remuxAllocError', + // Identifier for decrypt key load error - data: { frag : fragment object, response : { code: error code, text: error text }} + KEY_LOAD_ERROR: 'keyLoadError', + // Identifier for decrypt key load timeout error - data: { frag : fragment object} + KEY_LOAD_TIMEOUT: 'keyLoadTimeOut', + // Triggered when an exception occurs while adding a sourceBuffer to MediaSource - data : { err : exception , mimeType : mimeType } + BUFFER_ADD_CODEC_ERROR: 'bufferAddCodecError', + // Identifier for a buffer append error - data: append error description + BUFFER_APPEND_ERROR: 'bufferAppendError', + // Identifier for a buffer appending error event - data: appending error description + BUFFER_APPENDING_ERROR: 'bufferAppendingError', + // Identifier for a buffer stalled error event + BUFFER_STALLED_ERROR: 'bufferStalledError', + // Identifier for a buffer full event + BUFFER_FULL_ERROR: 'bufferFullError', + // Identifier for a buffer seek over hole event + BUFFER_SEEK_OVER_HOLE: 'bufferSeekOverHole', + // Identifier for a buffer nudge on stall (playback is stuck although currentTime is in a buffered area) + BUFFER_NUDGE_ON_STALL: 'bufferNudgeOnStall', + // Identifier for an internal exception happening inside hls.js while handling an event + INTERNAL_EXCEPTION: 'internalException', + // Malformed WebVTT contents + WEBVTT_EXCEPTION: 'webVTTException' +}; + +},{}],34:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* + * + * All objects in the event handling chain should inherit from this class + * + */ + +var _logger = _dereq_(53); + +var _errors = _dereq_(33); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var EventHandler = function () { + function EventHandler(hls) { + _classCallCheck(this, EventHandler); + + this.hls = hls; + this.onEvent = this.onEvent.bind(this); + + for (var _len = arguments.length, events = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + events[_key - 1] = arguments[_key]; + } + + this.handledEvents = events; + this.useGenericHandler = true; + + this.registerListeners(); + } + + _createClass(EventHandler, [{ + key: 'destroy', + value: function destroy() { + this.unregisterListeners(); + } + }, { + key: 'isEventHandler', + value: function isEventHandler() { + return _typeof(this.handledEvents) === 'object' && this.handledEvents.length && typeof this.onEvent === 'function'; + } + }, { + key: 'registerListeners', + value: function registerListeners() { + if (this.isEventHandler()) { + this.handledEvents.forEach(function (event) { + if (event === 'hlsEventGeneric') { + throw new Error('Forbidden event name: ' + event); + } + this.hls.on(event, this.onEvent); + }.bind(this)); + } + } + }, { + key: 'unregisterListeners', + value: function unregisterListeners() { + if (this.isEventHandler()) { + this.handledEvents.forEach(function (event) { + this.hls.off(event, this.onEvent); + }.bind(this)); + } + } + + /** + * arguments: event (string), data (any) + */ + + }, { + key: 'onEvent', + value: function onEvent(event, data) { + this.onEventGeneric(event, data); + } + }, { + key: 'onEventGeneric', + value: function onEventGeneric(event, data) { + var eventToFunction = function eventToFunction(event, data) { + var funcName = 'on' + event.replace('hls', ''); + if (typeof this[funcName] !== 'function') { + throw new Error('Event ' + event + ' has no generic handler in this ' + this.constructor.name + ' class (tried ' + funcName + ')'); + } + return this[funcName].bind(this, data); + }; + try { + eventToFunction.call(this, event, data).call(); + } catch (err) { + _logger.logger.error('internal error happened while processing ' + event + ':' + err.message); + this.hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.OTHER_ERROR, details: _errors.ErrorDetails.INTERNAL_EXCEPTION, fatal: false, event: event, err: err }); + } + } + }]); + + return EventHandler; +}(); + +exports.default = EventHandler; + +},{"33":33,"35":35,"53":53}],35:[function(_dereq_,module,exports){ +'use strict'; + +module.exports = { + // fired before MediaSource is attaching to media element - data: { media } + MEDIA_ATTACHING: 'hlsMediaAttaching', + // fired when MediaSource has been succesfully attached to media element - data: { } + MEDIA_ATTACHED: 'hlsMediaAttached', + // fired before detaching MediaSource from media element - data: { } + MEDIA_DETACHING: 'hlsMediaDetaching', + // fired when MediaSource has been detached from media element - data: { } + MEDIA_DETACHED: 'hlsMediaDetached', + // fired when we buffer is going to be reset - data: { } + BUFFER_RESET: 'hlsBufferReset', + // fired when we know about the codecs that we need buffers for to push into - data: {tracks : { container, codec, levelCodec, initSegment, metadata }} + BUFFER_CODECS: 'hlsBufferCodecs', + // fired when sourcebuffers have been created - data: { tracks : tracks } + BUFFER_CREATED: 'hlsBufferCreated', + // fired when we append a segment to the buffer - data: { segment: segment object } + BUFFER_APPENDING: 'hlsBufferAppending', + // fired when we are done with appending a media segment to the buffer - data : { parent : segment parent that triggered BUFFER_APPENDING, pending : nb of segments waiting for appending for this segment parent} + BUFFER_APPENDED: 'hlsBufferAppended', + // fired when the stream is finished and we want to notify the media buffer that there will be no more data - data: { } + BUFFER_EOS: 'hlsBufferEos', + // fired when the media buffer should be flushed - data { startOffset, endOffset } + BUFFER_FLUSHING: 'hlsBufferFlushing', + // fired when the media buffer has been flushed - data: { } + BUFFER_FLUSHED: 'hlsBufferFlushed', + // fired to signal that a manifest loading starts - data: { url : manifestURL} + MANIFEST_LOADING: 'hlsManifestLoading', + // fired after manifest has been loaded - data: { levels : [available quality levels], audioTracks : [ available audio tracks], url : manifestURL, stats : { trequest, tfirst, tload, mtime}} + MANIFEST_LOADED: 'hlsManifestLoaded', + // fired after manifest has been parsed - data: { levels : [available quality levels], firstLevel : index of first quality level appearing in Manifest} + MANIFEST_PARSED: 'hlsManifestParsed', + // fired when a level switch is requested - data: { level : id of new level } // deprecated in favor LEVEL_SWITCHING + LEVEL_SWITCH: 'hlsLevelSwitch', + // fired when a level switch is requested - data: { level : id of new level } + LEVEL_SWITCHING: 'hlsLevelSwitching', + // fired when a level switch is effective - data: { level : id of new level } + LEVEL_SWITCHED: 'hlsLevelSwitched', + // fired when a level playlist loading starts - data: { url : level URL, level : id of level being loaded} + LEVEL_LOADING: 'hlsLevelLoading', + // fired when a level playlist loading finishes - data: { details : levelDetails object, level : id of loaded level, stats : { trequest, tfirst, tload, mtime} } + LEVEL_LOADED: 'hlsLevelLoaded', + // fired when a level's details have been updated based on previous details, after it has been loaded - data: { details : levelDetails object, level : id of updated level } + LEVEL_UPDATED: 'hlsLevelUpdated', + // fired when a level's PTS information has been updated after parsing a fragment - data: { details : levelDetails object, level : id of updated level, drift: PTS drift observed when parsing last fragment } + LEVEL_PTS_UPDATED: 'hlsLevelPtsUpdated', + // fired to notify that audio track lists has been updated - data: { audioTracks : audioTracks } + AUDIO_TRACKS_UPDATED: 'hlsAudioTracksUpdated', + // fired when an audio track switch occurs - data: { id : audio track id } // deprecated in favor AUDIO_TRACK_SWITCHING + AUDIO_TRACK_SWITCH: 'hlsAudioTrackSwitch', + // fired when an audio track switching is requested - data: { id : audio track id } + AUDIO_TRACK_SWITCHING: 'hlsAudioTrackSwitching', + // fired when an audio track switch actually occurs - data: { id : audio track id } + AUDIO_TRACK_SWITCHED: 'hlsAudioTrackSwitched', + // fired when an audio track loading starts - data: { url : audio track URL, id : audio track id } + AUDIO_TRACK_LOADING: 'hlsAudioTrackLoading', + // fired when an audio track loading finishes - data: { details : levelDetails object, id : audio track id, stats : { trequest, tfirst, tload, mtime } } + AUDIO_TRACK_LOADED: 'hlsAudioTrackLoaded', + // fired to notify that subtitle track lists has been updated - data: { subtitleTracks : subtitleTracks } + SUBTITLE_TRACKS_UPDATED: 'hlsSubtitleTracksUpdated', + // fired when an subtitle track switch occurs - data: { id : subtitle track id } + SUBTITLE_TRACK_SWITCH: 'hlsSubtitleTrackSwitch', + // fired when a subtitle track loading starts - data: { url : subtitle track URL, id : subtitle track id } + SUBTITLE_TRACK_LOADING: 'hlsSubtitleTrackLoading', + // fired when a subtitle track loading finishes - data: { details : levelDetails object, id : subtitle track id, stats : { trequest, tfirst, tload, mtime } } + SUBTITLE_TRACK_LOADED: 'hlsSubtitleTrackLoaded', + // fired when a subtitle fragment has been processed - data: { success : boolean, frag : the processed frag } + SUBTITLE_FRAG_PROCESSED: 'hlsSubtitleFragProcessed', + // fired when the first timestamp is found - data: { id : demuxer id, initPTS: initPTS, frag : fragment object } + INIT_PTS_FOUND: 'hlsInitPtsFound', + // fired when a fragment loading starts - data: { frag : fragment object } + FRAG_LOADING: 'hlsFragLoading', + // fired when a fragment loading is progressing - data: { frag : fragment object, { trequest, tfirst, loaded } } + FRAG_LOAD_PROGRESS: 'hlsFragLoadProgress', + // Identifier for fragment load aborting for emergency switch down - data: { frag : fragment object } + FRAG_LOAD_EMERGENCY_ABORTED: 'hlsFragLoadEmergencyAborted', + // fired when a fragment loading is completed - data: { frag : fragment object, payload : fragment payload, stats : { trequest, tfirst, tload, length } } + FRAG_LOADED: 'hlsFragLoaded', + // fired when a fragment has finished decrypting - data: { id : demuxer id, frag: fragment object, stats : { tstart, tdecrypt } } + FRAG_DECRYPTED: 'hlsFragDecrypted', + // fired when Init Segment has been extracted from fragment - data: { id : demuxer id, frag: fragment object, moov : moov MP4 box, codecs : codecs found while parsing fragment } + FRAG_PARSING_INIT_SEGMENT: 'hlsFragParsingInitSegment', + // fired when parsing sei text is completed - data: { id : demuxer id, frag: fragment object, samples : [ sei samples pes ] } + FRAG_PARSING_USERDATA: 'hlsFragParsingUserdata', + // fired when parsing id3 is completed - data: { id : demuxer id, frag: fragment object, samples : [ id3 samples pes ] } + FRAG_PARSING_METADATA: 'hlsFragParsingMetadata', + // fired when data have been extracted from fragment - data: { id : demuxer id, frag: fragment object, data1 : moof MP4 box or TS fragments, data2 : mdat MP4 box or null} + FRAG_PARSING_DATA: 'hlsFragParsingData', + // fired when fragment parsing is completed - data: { id : demuxer id, frag: fragment object } + FRAG_PARSED: 'hlsFragParsed', + // fired when fragment remuxed MP4 boxes have all been appended into SourceBuffer - data: { id : demuxer id, frag : fragment object, stats : { trequest, tfirst, tload, tparsed, tbuffered, length, bwEstimate } } + FRAG_BUFFERED: 'hlsFragBuffered', + // fired when fragment matching with current media position is changing - data : { id : demuxer id, frag : fragment object } + FRAG_CHANGED: 'hlsFragChanged', + // Identifier for a FPS drop event - data: { curentDropped, currentDecoded, totalDroppedFrames } + FPS_DROP: 'hlsFpsDrop', + //triggered when FPS drop triggers auto level capping - data: { level, droppedlevel } + FPS_DROP_LEVEL_CAPPING: 'hlsFpsDropLevelCapping', + // Identifier for an error event - data: { type : error type, details : error details, fatal : if true, hls.js cannot/will not try to recover, if false, hls.js will try to recover,other error specific data } + ERROR: 'hlsError', + // fired when hls.js instance starts destroying. Different from MEDIA_DETACHED as one could want to detach and reattach a media to the instance of hls.js to handle mid-rolls for example - data: { } + DESTROYING: 'hlsDestroying', + // fired when a decrypt key loading starts - data: { frag : fragment object } + KEY_LOADING: 'hlsKeyLoading', + // fired when a decrypt key loading is completed - data: { frag : fragment object, payload : key payload, stats : { trequest, tfirst, tload, length } } + KEY_LOADED: 'hlsKeyLoaded', + // fired upon stream controller state transitions - data: { previousState, nextState } + STREAM_STATE_TRANSITION: 'hlsStreamStateTransition' +}; + +},{}],36:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * AAC helper + */ + +var AAC = function () { + function AAC() { + _classCallCheck(this, AAC); + } + + _createClass(AAC, null, [{ + key: 'getSilentFrame', + value: function getSilentFrame(codec, channelCount) { + switch (codec) { + case 'mp4a.40.2': + if (channelCount === 1) { + return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x23, 0x80]); + } else if (channelCount === 2) { + return new Uint8Array([0x21, 0x00, 0x49, 0x90, 0x02, 0x19, 0x00, 0x23, 0x80]); + } else if (channelCount === 3) { + return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x8e]); + } else if (channelCount === 4) { + return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x80, 0x2c, 0x80, 0x08, 0x02, 0x38]); + } else if (channelCount === 5) { + return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x38]); + } else if (channelCount === 6) { + return new Uint8Array([0x00, 0xc8, 0x00, 0x80, 0x20, 0x84, 0x01, 0x26, 0x40, 0x08, 0x64, 0x00, 0x82, 0x30, 0x04, 0x99, 0x00, 0x21, 0x90, 0x02, 0x00, 0xb2, 0x00, 0x20, 0x08, 0xe0]); + } + break; + // handle HE-AAC below (mp4a.40.5 / mp4a.40.29) + default: + if (channelCount === 1) { + // ffmpeg -y -f lavfi -i "aevalsrc=0:d=0.05" -c:a libfdk_aac -profile:a aac_he -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac + return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x4e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x1c, 0x6, 0xf1, 0xc1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]); + } else if (channelCount === 2) { + // ffmpeg -y -f lavfi -i "aevalsrc=0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac + return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]); + } else if (channelCount === 3) { + // ffmpeg -y -f lavfi -i "aevalsrc=0|0|0:d=0.05" -c:a libfdk_aac -profile:a aac_he_v2 -b:a 4k output.aac && hexdump -v -e '16/1 "0x%x," "\n"' -v output.aac + return new Uint8Array([0x1, 0x40, 0x22, 0x80, 0xa3, 0x5e, 0xe6, 0x80, 0xba, 0x8, 0x0, 0x0, 0x0, 0x0, 0x95, 0x0, 0x6, 0xf1, 0xa1, 0xa, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5e]); + } + break; + } + return null; + } + }]); + + return AAC; +}(); + +exports.default = AAC; + +},{}],37:[function(_dereq_,module,exports){ +"use strict"; + +/** + * Buffer Helper utils, providing methods dealing buffer length retrieval +*/ + +var BufferHelper = { + isBuffered: function isBuffered(media, position) { + if (media) { + var buffered = media.buffered; + for (var i = 0; i < buffered.length; i++) { + if (position >= buffered.start(i) && position <= buffered.end(i)) { + return true; + } + } + } + return false; + }, + + bufferInfo: function bufferInfo(media, pos, maxHoleDuration) { + if (media) { + var vbuffered = media.buffered, + buffered = [], + i; + for (i = 0; i < vbuffered.length; i++) { + buffered.push({ start: vbuffered.start(i), end: vbuffered.end(i) }); + } + return this.bufferedInfo(buffered, pos, maxHoleDuration); + } else { + return { len: 0, start: pos, end: pos, nextStart: undefined }; + } + }, + + bufferedInfo: function bufferedInfo(buffered, pos, maxHoleDuration) { + var buffered2 = [], + + // bufferStart and bufferEnd are buffer boundaries around current video position + bufferLen, + bufferStart, + bufferEnd, + bufferStartNext, + i; + // sort on buffer.start/smaller end (IE does not always return sorted buffered range) + buffered.sort(function (a, b) { + var diff = a.start - b.start; + if (diff) { + return diff; + } else { + return b.end - a.end; + } + }); + // there might be some small holes between buffer time range + // consider that holes smaller than maxHoleDuration are irrelevant and build another + // buffer time range representations that discards those holes + for (i = 0; i < buffered.length; i++) { + var buf2len = buffered2.length; + if (buf2len) { + var buf2end = buffered2[buf2len - 1].end; + // if small hole (value between 0 or maxHoleDuration ) or overlapping (negative) + if (buffered[i].start - buf2end < maxHoleDuration) { + // merge overlapping time ranges + // update lastRange.end only if smaller than item.end + // e.g. [ 1, 15] with [ 2,8] => [ 1,15] (no need to modify lastRange.end) + // whereas [ 1, 8] with [ 2,15] => [ 1,15] ( lastRange should switch from [1,8] to [1,15]) + if (buffered[i].end > buf2end) { + buffered2[buf2len - 1].end = buffered[i].end; + } + } else { + // big hole + buffered2.push(buffered[i]); + } + } else { + // first value + buffered2.push(buffered[i]); + } + } + for (i = 0, bufferLen = 0, bufferStart = bufferEnd = pos; i < buffered2.length; i++) { + var start = buffered2[i].start, + end = buffered2[i].end; + //logger.log('buf start/end:' + buffered.start(i) + '/' + buffered.end(i)); + if (pos + maxHoleDuration >= start && pos < end) { + // play position is inside this buffer TimeRange, retrieve end of buffer position and buffer length + bufferStart = start; + bufferEnd = end; + bufferLen = bufferEnd - pos; + } else if (pos + maxHoleDuration < start) { + bufferStartNext = start; + break; + } + } + return { len: bufferLen, start: bufferStart, end: bufferEnd, nextStart: bufferStartNext }; + } +}; + +module.exports = BufferHelper; + +},{}],38:[function(_dereq_,module,exports){ +'use strict'; + +var _logger = _dereq_(53); + +var LevelHelper = { + + mergeDetails: function mergeDetails(oldDetails, newDetails) { + var start = Math.max(oldDetails.startSN, newDetails.startSN) - newDetails.startSN, + end = Math.min(oldDetails.endSN, newDetails.endSN) - newDetails.startSN, + delta = newDetails.startSN - oldDetails.startSN, + oldfragments = oldDetails.fragments, + newfragments = newDetails.fragments, + ccOffset = 0, + PTSFrag; + + // check if old/new playlists have fragments in common + if (end < start) { + newDetails.PTSKnown = false; + return; + } + // loop through overlapping SN and update startPTS , cc, and duration if any found + for (var i = start; i <= end; i++) { + var oldFrag = oldfragments[delta + i], + newFrag = newfragments[i]; + if (newFrag && oldFrag) { + ccOffset = oldFrag.cc - newFrag.cc; + if (!isNaN(oldFrag.startPTS)) { + newFrag.start = newFrag.startPTS = oldFrag.startPTS; + newFrag.endPTS = oldFrag.endPTS; + newFrag.duration = oldFrag.duration; + newFrag.backtracked = oldFrag.backtracked; + newFrag.dropped = oldFrag.dropped; + PTSFrag = newFrag; + } + } + } + + if (ccOffset) { + _logger.logger.log('discontinuity sliding from playlist, take drift into account'); + for (i = 0; i < newfragments.length; i++) { + newfragments[i].cc += ccOffset; + } + } + + // if at least one fragment contains PTS info, recompute PTS information for all fragments + if (PTSFrag) { + LevelHelper.updateFragPTSDTS(newDetails, PTSFrag, PTSFrag.startPTS, PTSFrag.endPTS, PTSFrag.startDTS, PTSFrag.endDTS); + } else { + // ensure that delta is within oldfragments range + // also adjust sliding in case delta is 0 (we could have old=[50-60] and new=old=[50-61]) + // in that case we also need to adjust start offset of all fragments + if (delta >= 0 && delta < oldfragments.length) { + // adjust start by sliding offset + var sliding = oldfragments[delta].start; + for (i = 0; i < newfragments.length; i++) { + newfragments[i].start += sliding; + } + } + } + // if we are here, it means we have fragments overlapping between + // old and new level. reliable PTS info is thus relying on old level + newDetails.PTSKnown = oldDetails.PTSKnown; + return; + }, + + updateFragPTSDTS: function updateFragPTSDTS(details, frag, startPTS, endPTS, startDTS, endDTS) { + // update frag PTS/DTS + if (!isNaN(frag.startPTS)) { + // delta PTS between audio and video + var deltaPTS = Math.abs(frag.startPTS - startPTS); + if (isNaN(frag.deltaPTS)) { + frag.deltaPTS = deltaPTS; + } else { + frag.deltaPTS = Math.max(deltaPTS, frag.deltaPTS); + } + startPTS = Math.min(startPTS, frag.startPTS); + endPTS = Math.max(endPTS, frag.endPTS); + startDTS = Math.min(startDTS, frag.startDTS); + endDTS = Math.max(endDTS, frag.endDTS); + } + + var drift = startPTS - frag.start; + frag.start = frag.startPTS = startPTS; + frag.endPTS = endPTS; + frag.startDTS = startDTS; + frag.endDTS = endDTS; + frag.duration = endPTS - startPTS; + + var sn = frag.sn; + // exit if sn out of range + if (!details || sn < details.startSN || sn > details.endSN) { + return 0; + } + var fragIdx, fragments, i; + fragIdx = sn - details.startSN; + fragments = details.fragments; + frag = fragments[fragIdx]; + // adjust fragment PTS/duration from seqnum-1 to frag 0 + for (i = fragIdx; i > 0; i--) { + LevelHelper.updatePTS(fragments, i, i - 1); + } + + // adjust fragment PTS/duration from seqnum to last frag + for (i = fragIdx; i < fragments.length - 1; i++) { + LevelHelper.updatePTS(fragments, i, i + 1); + } + details.PTSKnown = true; + //logger.log(` frag start/end:${startPTS.toFixed(3)}/${endPTS.toFixed(3)}`); + + return drift; + }, + + updatePTS: function updatePTS(fragments, fromIdx, toIdx) { + var fragFrom = fragments[fromIdx], + fragTo = fragments[toIdx], + fragToPTS = fragTo.startPTS; + // if we know startPTS[toIdx] + if (!isNaN(fragToPTS)) { + // update fragment duration. + // it helps to fix drifts between playlist reported duration and fragment real duration + if (toIdx > fromIdx) { + fragFrom.duration = fragToPTS - fragFrom.start; + if (fragFrom.duration < 0) { + _logger.logger.warn('negative duration computed for frag ' + fragFrom.sn + ',level ' + fragFrom.level + ', there should be some duration drift between playlist and fragment!'); + } + } else { + fragTo.duration = fragFrom.start - fragToPTS; + if (fragTo.duration < 0) { + _logger.logger.warn('negative duration computed for frag ' + fragTo.sn + ',level ' + fragTo.level + ', there should be some duration drift between playlist and fragment!'); + } + } + } else { + // we dont know startPTS[toIdx] + if (toIdx > fromIdx) { + fragTo.start = fragFrom.start + fragFrom.duration; + } else { + fragTo.start = Math.max(fragFrom.start - fragTo.duration, 0); + } + } + } +}; /** + * Level Helper class, providing methods dealing with playlist sliding and drift + */ + +module.exports = LevelHelper; + +},{"53":53}],39:[function(_dereq_,module,exports){ +/** + * HLS interface + */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _urlToolkit = _dereq_(2); + +var _urlToolkit2 = _interopRequireDefault(_urlToolkit); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _errors = _dereq_(33); + +var _playlistLoader = _dereq_(43); + +var _playlistLoader2 = _interopRequireDefault(_playlistLoader); + +var _fragmentLoader = _dereq_(41); + +var _fragmentLoader2 = _interopRequireDefault(_fragmentLoader); + +var _keyLoader = _dereq_(42); + +var _keyLoader2 = _interopRequireDefault(_keyLoader); + +var _streamController = _dereq_(13); + +var _streamController2 = _interopRequireDefault(_streamController); + +var _levelController = _dereq_(12); + +var _levelController2 = _interopRequireDefault(_levelController); + +var _id3TrackController = _dereq_(11); + +var _id3TrackController2 = _interopRequireDefault(_id3TrackController); + +var _logger = _dereq_(53); + +var _events3 = _dereq_(1); + +var _events4 = _interopRequireDefault(_events3); + +var _config = _dereq_(4); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Hls = function () { + _createClass(Hls, null, [{ + key: 'isSupported', + value: function isSupported() { + var mediaSource = window.MediaSource = window.MediaSource || window.WebKitMediaSource; + var sourceBuffer = window.SourceBuffer = window.SourceBuffer || window.WebKitSourceBuffer; + var isTypeSupported = mediaSource && typeof mediaSource.isTypeSupported === 'function' && mediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'); + + // if SourceBuffer is exposed ensure its API is valid + // safari and old version of Chrome doe not expose SourceBuffer globally so checking SourceBuffer.prototype is impossible + var sourceBufferValidAPI = !sourceBuffer || sourceBuffer.prototype && typeof sourceBuffer.prototype.appendBuffer === 'function' && typeof sourceBuffer.prototype.remove === 'function'; + return isTypeSupported && sourceBufferValidAPI; + } + }, { + key: 'version', + get: function get() { + // replaced with browserify-versionify transform + return '0.7.9'; + } + }, { + key: 'Events', + get: function get() { + return _events2.default; + } + }, { + key: 'ErrorTypes', + get: function get() { + return _errors.ErrorTypes; + } + }, { + key: 'ErrorDetails', + get: function get() { + return _errors.ErrorDetails; + } + }, { + key: 'DefaultConfig', + get: function get() { + if (!Hls.defaultConfig) { + return _config.hlsDefaultConfig; + } + return Hls.defaultConfig; + }, + set: function set(defaultConfig) { + Hls.defaultConfig = defaultConfig; + } + }]); + + function Hls() { + var _this = this; + + var config = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + _classCallCheck(this, Hls); + + var defaultConfig = Hls.DefaultConfig; + + if ((config.liveSyncDurationCount || config.liveMaxLatencyDurationCount) && (config.liveSyncDuration || config.liveMaxLatencyDuration)) { + throw new Error('Illegal hls.js config: don\'t mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration'); + } + + for (var prop in defaultConfig) { + if (prop in config) { + continue; + } + config[prop] = defaultConfig[prop]; + } + + if (config.liveMaxLatencyDurationCount !== undefined && config.liveMaxLatencyDurationCount <= config.liveSyncDurationCount) { + throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be gt "liveSyncDurationCount"'); + } + + if (config.liveMaxLatencyDuration !== undefined && (config.liveMaxLatencyDuration <= config.liveSyncDuration || config.liveSyncDuration === undefined)) { + throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be gt "liveSyncDuration"'); + } + + (0, _logger.enableLogs)(config.debug); + this.config = config; + this._autoLevelCapping = -1; + // observer setup + var observer = this.observer = new _events4.default(); + observer.trigger = function trigger(event) { + for (var _len = arguments.length, data = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + data[_key - 1] = arguments[_key]; + } + + observer.emit.apply(observer, [event, event].concat(data)); + }; + + observer.off = function off(event) { + for (var _len2 = arguments.length, data = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + data[_key2 - 1] = arguments[_key2]; + } + + observer.removeListener.apply(observer, [event].concat(data)); + }; + this.on = observer.on.bind(observer); + this.off = observer.off.bind(observer); + this.trigger = observer.trigger.bind(observer); + + // core controllers and network loaders + var abrController = this.abrController = new config.abrController(this); + var bufferController = new config.bufferController(this); + var capLevelController = new config.capLevelController(this); + var fpsController = new config.fpsController(this); + var playListLoader = new _playlistLoader2.default(this); + var fragmentLoader = new _fragmentLoader2.default(this); + var keyLoader = new _keyLoader2.default(this); + var id3TrackController = new _id3TrackController2.default(this); + + // network controllers + var levelController = this.levelController = new _levelController2.default(this); + var streamController = this.streamController = new _streamController2.default(this); + var networkControllers = [levelController, streamController]; + + // optional audio stream controller + var Controller = config.audioStreamController; + if (Controller) { + networkControllers.push(new Controller(this)); + } + this.networkControllers = networkControllers; + + var coreComponents = [playListLoader, fragmentLoader, keyLoader, abrController, bufferController, capLevelController, fpsController, id3TrackController]; + + // optional audio track and subtitle controller + Controller = config.audioTrackController; + if (Controller) { + var audioTrackController = new Controller(this); + this.audioTrackController = audioTrackController; + coreComponents.push(audioTrackController); + } + + Controller = config.subtitleTrackController; + if (Controller) { + var subtitleTrackController = new Controller(this); + this.subtitleTrackController = subtitleTrackController; + coreComponents.push(subtitleTrackController); + } + + // optional subtitle controller + [config.subtitleStreamController, config.timelineController].forEach(function (Controller) { + if (Controller) { + coreComponents.push(new Controller(_this)); + } + }); + this.coreComponents = coreComponents; + } + + _createClass(Hls, [{ + key: 'destroy', + value: function destroy() { + _logger.logger.log('destroy'); + this.trigger(_events2.default.DESTROYING); + this.detachMedia(); + this.coreComponents.concat(this.networkControllers).forEach(function (component) { + component.destroy(); + }); + this.url = null; + this.observer.removeAllListeners(); + this._autoLevelCapping = -1; + } + }, { + key: 'attachMedia', + value: function attachMedia(media) { + _logger.logger.log('attachMedia'); + this.media = media; + this.trigger(_events2.default.MEDIA_ATTACHING, { media: media }); + } + }, { + key: 'detachMedia', + value: function detachMedia() { + _logger.logger.log('detachMedia'); + this.trigger(_events2.default.MEDIA_DETACHING); + this.media = null; + } + }, { + key: 'loadSource', + value: function loadSource(url) { + url = _urlToolkit2.default.buildAbsoluteURL(window.location.href, url, { alwaysNormalize: true }); + _logger.logger.log('loadSource:' + url); + this.url = url; + // when attaching to a source URL, trigger a playlist load + this.trigger(_events2.default.MANIFEST_LOADING, { url: url }); + } + }, { + key: 'startLoad', + value: function startLoad() { + var startPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : -1; + + _logger.logger.log('startLoad(' + startPosition + ')'); + this.networkControllers.forEach(function (controller) { + controller.startLoad(startPosition); + }); + } + }, { + key: 'stopLoad', + value: function stopLoad() { + _logger.logger.log('stopLoad'); + this.networkControllers.forEach(function (controller) { + controller.stopLoad(); + }); + } + }, { + key: 'swapAudioCodec', + value: function swapAudioCodec() { + _logger.logger.log('swapAudioCodec'); + this.streamController.swapAudioCodec(); + } + }, { + key: 'recoverMediaError', + value: function recoverMediaError() { + _logger.logger.log('recoverMediaError'); + var media = this.media; + this.detachMedia(); + this.attachMedia(media); + } + + /** Return all quality levels **/ + + }, { + key: 'levels', + get: function get() { + return this.levelController.levels; + } + + /** Return current playback quality level **/ + + }, { + key: 'currentLevel', + get: function get() { + return this.streamController.currentLevel; + } + + /* set quality level immediately (-1 for automatic level selection) */ + , + set: function set(newLevel) { + _logger.logger.log('set currentLevel:' + newLevel); + this.loadLevel = newLevel; + this.streamController.immediateLevelSwitch(); + } + + /** Return next playback quality level (quality level of next fragment) **/ + + }, { + key: 'nextLevel', + get: function get() { + return this.streamController.nextLevel; + } + + /* set quality level for next fragment (-1 for automatic level selection) */ + , + set: function set(newLevel) { + _logger.logger.log('set nextLevel:' + newLevel); + this.levelController.manualLevel = newLevel; + this.streamController.nextLevelSwitch(); + } + + /** Return the quality level of current/last loaded fragment **/ + + }, { + key: 'loadLevel', + get: function get() { + return this.levelController.level; + } + + /* set quality level for current/next loaded fragment (-1 for automatic level selection) */ + , + set: function set(newLevel) { + _logger.logger.log('set loadLevel:' + newLevel); + this.levelController.manualLevel = newLevel; + } + + /** Return the quality level of next loaded fragment **/ + + }, { + key: 'nextLoadLevel', + get: function get() { + return this.levelController.nextLoadLevel; + } + + /** set quality level of next loaded fragment **/ + , + set: function set(level) { + this.levelController.nextLoadLevel = level; + } + + /** Return first level (index of first level referenced in manifest) + **/ + + }, { + key: 'firstLevel', + get: function get() { + return Math.max(this.levelController.firstLevel, this.minAutoLevel); + } + + /** set first level (index of first level referenced in manifest) + **/ + , + set: function set(newLevel) { + _logger.logger.log('set firstLevel:' + newLevel); + this.levelController.firstLevel = newLevel; + } + + /** Return start level (level of first fragment that will be played back) + if not overrided by user, first level appearing in manifest will be used as start level + if -1 : automatic start level selection, playback will start from level matching download bandwidth (determined from download of first segment) + **/ + + }, { + key: 'startLevel', + get: function get() { + return this.levelController.startLevel; + } + + /** set start level (level of first fragment that will be played back) + if not overrided by user, first level appearing in manifest will be used as start level + if -1 : automatic start level selection, playback will start from level matching download bandwidth (determined from download of first segment) + **/ + , + set: function set(newLevel) { + _logger.logger.log('set startLevel:' + newLevel); + var hls = this; + // if not in automatic start level detection, ensure startLevel is greater than minAutoLevel + if (newLevel !== -1) { + newLevel = Math.max(newLevel, hls.minAutoLevel); + } + hls.levelController.startLevel = newLevel; + } + + /** Return the capping/max level value that could be used by automatic level selection algorithm **/ + + }, { + key: 'autoLevelCapping', + get: function get() { + return this._autoLevelCapping; + } + + /** set the capping/max level value that could be used by automatic level selection algorithm **/ + , + set: function set(newLevel) { + _logger.logger.log('set autoLevelCapping:' + newLevel); + this._autoLevelCapping = newLevel; + } + + /* check if we are in automatic level selection mode */ + + }, { + key: 'autoLevelEnabled', + get: function get() { + return this.levelController.manualLevel === -1; + } + + /* return manual level */ + + }, { + key: 'manualLevel', + get: function get() { + return this.levelController.manualLevel; + } + + /* return min level selectable in auto mode according to config.minAutoBitrate */ + + }, { + key: 'minAutoLevel', + get: function get() { + var hls = this, + levels = hls.levels, + minAutoBitrate = hls.config.minAutoBitrate, + len = levels ? levels.length : 0; + for (var i = 0; i < len; i++) { + var levelNextBitrate = levels[i].realBitrate ? Math.max(levels[i].realBitrate, levels[i].bitrate) : levels[i].bitrate; + if (levelNextBitrate > minAutoBitrate) { + return i; + } + } + return 0; + } + + /* return max level selectable in auto mode according to autoLevelCapping */ + + }, { + key: 'maxAutoLevel', + get: function get() { + var hls = this; + var levels = hls.levels; + var autoLevelCapping = hls.autoLevelCapping; + var maxAutoLevel = void 0; + if (autoLevelCapping === -1 && levels && levels.length) { + maxAutoLevel = levels.length - 1; + } else { + maxAutoLevel = autoLevelCapping; + } + return maxAutoLevel; + } + + // return next auto level + + }, { + key: 'nextAutoLevel', + get: function get() { + var hls = this; + // ensure next auto level is between min and max auto level + return Math.min(Math.max(hls.abrController.nextAutoLevel, hls.minAutoLevel), hls.maxAutoLevel); + } + + // this setter is used to force next auto level + // this is useful to force a switch down in auto mode : in case of load error on level N, hls.js can set nextAutoLevel to N-1 for example) + // forced value is valid for one fragment. upon succesful frag loading at forced level, this value will be resetted to -1 by ABR controller + , + set: function set(nextLevel) { + var hls = this; + hls.abrController.nextAutoLevel = Math.max(hls.minAutoLevel, nextLevel); + } + + /** get alternate audio tracks list from playlist **/ + + }, { + key: 'audioTracks', + get: function get() { + var audioTrackController = this.audioTrackController; + return audioTrackController ? audioTrackController.audioTracks : []; + } + + /** get index of the selected audio track (index in audio track lists) **/ + + }, { + key: 'audioTrack', + get: function get() { + var audioTrackController = this.audioTrackController; + return audioTrackController ? audioTrackController.audioTrack : -1; + } + + /** select an audio track, based on its index in audio track lists**/ + , + set: function set(audioTrackId) { + var audioTrackController = this.audioTrackController; + if (audioTrackController) { + audioTrackController.audioTrack = audioTrackId; + } + } + }, { + key: 'liveSyncPosition', + get: function get() { + return this.streamController.liveSyncPosition; + } + + /** get alternate subtitle tracks list from playlist **/ + + }, { + key: 'subtitleTracks', + get: function get() { + var subtitleTrackController = this.subtitleTrackController; + return subtitleTrackController ? subtitleTrackController.subtitleTracks : []; + } + + /** get index of the selected subtitle track (index in subtitle track lists) **/ + + }, { + key: 'subtitleTrack', + get: function get() { + var subtitleTrackController = this.subtitleTrackController; + return subtitleTrackController ? subtitleTrackController.subtitleTrack : -1; + } + + /** select an subtitle track, based on its index in subtitle track lists**/ + , + set: function set(subtitleTrackId) { + var subtitleTrackController = this.subtitleTrackController; + if (subtitleTrackController) { + subtitleTrackController.subtitleTrack = subtitleTrackId; + } + } + }]); + + return Hls; +}(); + +exports.default = Hls; + +},{"1":1,"11":11,"12":12,"13":13,"2":2,"33":33,"35":35,"4":4,"41":41,"42":42,"43":43,"53":53}],40:[function(_dereq_,module,exports){ +'use strict'; + +// This is mostly for support of the es6 module export +// syntax with the babel compiler, it looks like it doesnt support +// function exports like we are used to in node/commonjs +module.exports = _dereq_(39).default; + +},{"39":39}],41:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _errors = _dereq_(33); + +var _logger = _dereq_(53); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * Fragment Loader + */ + +var FragmentLoader = function (_EventHandler) { + _inherits(FragmentLoader, _EventHandler); + + function FragmentLoader(hls) { + _classCallCheck(this, FragmentLoader); + + var _this = _possibleConstructorReturn(this, (FragmentLoader.__proto__ || Object.getPrototypeOf(FragmentLoader)).call(this, hls, _events2.default.FRAG_LOADING)); + + _this.loaders = {}; + return _this; + } + + _createClass(FragmentLoader, [{ + key: 'destroy', + value: function destroy() { + var loaders = this.loaders; + for (var loaderName in loaders) { + var loader = loaders[loaderName]; + if (loader) { + loader.destroy(); + } + } + this.loaders = {}; + _eventHandler2.default.prototype.destroy.call(this); + } + }, { + key: 'onFragLoading', + value: function onFragLoading(data) { + var frag = data.frag, + type = frag.type, + loader = this.loaders[type], + config = this.hls.config; + + frag.loaded = 0; + if (loader) { + _logger.logger.warn('abort previous fragment loader for type:' + type); + loader.abort(); + } + loader = this.loaders[type] = frag.loader = typeof config.fLoader !== 'undefined' ? new config.fLoader(config) : new config.loader(config); + + var loaderContext = void 0, + loaderConfig = void 0, + loaderCallbacks = void 0; + loaderContext = { url: frag.url, frag: frag, responseType: 'arraybuffer', progressData: false }; + var start = frag.byteRangeStartOffset, + end = frag.byteRangeEndOffset; + if (!isNaN(start) && !isNaN(end)) { + loaderContext.rangeStart = start; + loaderContext.rangeEnd = end; + } + loaderConfig = { timeout: config.fragLoadingTimeOut, maxRetry: 0, retryDelay: 0, maxRetryDelay: config.fragLoadingMaxRetryTimeout }; + loaderCallbacks = { onSuccess: this.loadsuccess.bind(this), onError: this.loaderror.bind(this), onTimeout: this.loadtimeout.bind(this), onProgress: this.loadprogress.bind(this) }; + loader.load(loaderContext, loaderConfig, loaderCallbacks); + } + }, { + key: 'loadsuccess', + value: function loadsuccess(response, stats, context) { + var payload = response.data, + frag = context.frag; + // detach fragment loader on load success + frag.loader = undefined; + this.loaders[frag.type] = undefined; + this.hls.trigger(_events2.default.FRAG_LOADED, { payload: payload, frag: frag, stats: stats }); + } + }, { + key: 'loaderror', + value: function loaderror(response, context) { + var loader = context.loader; + if (loader) { + loader.abort(); + } + this.loaders[context.type] = undefined; + this.hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.NETWORK_ERROR, details: _errors.ErrorDetails.FRAG_LOAD_ERROR, fatal: false, frag: context.frag, response: response }); + } + }, { + key: 'loadtimeout', + value: function loadtimeout(stats, context) { + var loader = context.loader; + if (loader) { + loader.abort(); + } + this.loaders[context.type] = undefined; + this.hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.NETWORK_ERROR, details: _errors.ErrorDetails.FRAG_LOAD_TIMEOUT, fatal: false, frag: context.frag }); + } + + // data will be used for progressive parsing + + }, { + key: 'loadprogress', + value: function loadprogress(stats, context, data) { + // jshint ignore:line + var frag = context.frag; + frag.loaded = stats.loaded; + this.hls.trigger(_events2.default.FRAG_LOAD_PROGRESS, { frag: frag, stats: stats }); + } + }]); + + return FragmentLoader; +}(_eventHandler2.default); + +exports.default = FragmentLoader; + +},{"33":33,"34":34,"35":35,"53":53}],42:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _errors = _dereq_(33); + +var _logger = _dereq_(53); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } /* + * Decrypt key Loader + */ + +var KeyLoader = function (_EventHandler) { + _inherits(KeyLoader, _EventHandler); + + function KeyLoader(hls) { + _classCallCheck(this, KeyLoader); + + var _this = _possibleConstructorReturn(this, (KeyLoader.__proto__ || Object.getPrototypeOf(KeyLoader)).call(this, hls, _events2.default.KEY_LOADING)); + + _this.loaders = {}; + _this.decryptkey = null; + _this.decrypturl = null; + return _this; + } + + _createClass(KeyLoader, [{ + key: 'destroy', + value: function destroy() { + for (var loaderName in this.loaders) { + var loader = this.loaders[loaderName]; + if (loader) { + loader.destroy(); + } + } + this.loaders = {}; + _eventHandler2.default.prototype.destroy.call(this); + } + }, { + key: 'onKeyLoading', + value: function onKeyLoading(data) { + var frag = data.frag, + type = frag.type, + loader = this.loaders[type], + decryptdata = frag.decryptdata, + uri = decryptdata.uri; + // if uri is different from previous one or if decrypt key not retrieved yet + if (uri !== this.decrypturl || this.decryptkey === null) { + var config = this.hls.config; + + if (loader) { + _logger.logger.warn('abort previous key loader for type:' + type); + loader.abort(); + } + frag.loader = this.loaders[type] = new config.loader(config); + this.decrypturl = uri; + this.decryptkey = null; + + var loaderContext = void 0, + loaderConfig = void 0, + loaderCallbacks = void 0; + loaderContext = { url: uri, frag: frag, responseType: 'arraybuffer' }; + loaderConfig = { timeout: config.fragLoadingTimeOut, maxRetry: config.fragLoadingMaxRetry, retryDelay: config.fragLoadingRetryDelay, maxRetryDelay: config.fragLoadingMaxRetryTimeout }; + loaderCallbacks = { onSuccess: this.loadsuccess.bind(this), onError: this.loaderror.bind(this), onTimeout: this.loadtimeout.bind(this) }; + frag.loader.load(loaderContext, loaderConfig, loaderCallbacks); + } else if (this.decryptkey) { + // we already loaded this key, return it + decryptdata.key = this.decryptkey; + this.hls.trigger(_events2.default.KEY_LOADED, { frag: frag }); + } + } + }, { + key: 'loadsuccess', + value: function loadsuccess(response, stats, context) { + var frag = context.frag; + this.decryptkey = frag.decryptdata.key = new Uint8Array(response.data); + // detach fragment loader on load success + frag.loader = undefined; + this.loaders[frag.type] = undefined; + this.hls.trigger(_events2.default.KEY_LOADED, { frag: frag }); + } + }, { + key: 'loaderror', + value: function loaderror(response, context) { + var frag = context.frag, + loader = frag.loader; + if (loader) { + loader.abort(); + } + this.loaders[context.type] = undefined; + this.hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.NETWORK_ERROR, details: _errors.ErrorDetails.KEY_LOAD_ERROR, fatal: false, frag: frag, response: response }); + } + }, { + key: 'loadtimeout', + value: function loadtimeout(stats, context) { + var frag = context.frag, + loader = frag.loader; + if (loader) { + loader.abort(); + } + this.loaders[context.type] = undefined; + this.hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.NETWORK_ERROR, details: _errors.ErrorDetails.KEY_LOAD_TIMEOUT, fatal: false, frag: frag }); + } + }]); + + return KeyLoader; +}(_eventHandler2.default); + +exports.default = KeyLoader; + +},{"33":33,"34":34,"35":35,"53":53}],43:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** + * Playlist Loader + */ + +var _urlToolkit = _dereq_(2); + +var _urlToolkit2 = _interopRequireDefault(_urlToolkit); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _eventHandler = _dereq_(34); + +var _eventHandler2 = _interopRequireDefault(_eventHandler); + +var _errors = _dereq_(33); + +var _attrList = _dereq_(47); + +var _attrList2 = _interopRequireDefault(_attrList); + +var _logger = _dereq_(53); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +// https://regex101.com is your friend +var MASTER_PLAYLIST_REGEX = /#EXT-X-STREAM-INF:([^\n\r]*)[\r\n]+([^\r\n]+)/g; +var MASTER_PLAYLIST_MEDIA_REGEX = /#EXT-X-MEDIA:(.*)/g; +var LEVEL_PLAYLIST_REGEX_FAST = /#EXTINF:(\d*(?:\.\d+)?)(?:,(.*))?|(?!#)(\S.+)|#EXT-X-BYTERANGE: *(.+)|#EXT-X-PROGRAM-DATE-TIME:(.+)|#.*/g; +var LEVEL_PLAYLIST_REGEX_SLOW = /(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE): *(\d+))|(?:#EXT-X-(TARGETDURATION): *(\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DISCONTINUITY-SEQ)UENCE:(\d+))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(VERSION):(\d+))|(?:#EXT-X-(MAP):(.+))|(?:(#)(.*):(.*))|(?:(#)(.*))(?:.*)\r?\n?/; + +var LevelKey = function () { + function LevelKey() { + _classCallCheck(this, LevelKey); + + this.method = null; + this.key = null; + this.iv = null; + this._uri = null; + } + + _createClass(LevelKey, [{ + key: 'uri', + get: function get() { + if (!this._uri && this.reluri) { + this._uri = _urlToolkit2.default.buildAbsoluteURL(this.baseuri, this.reluri, { alwaysNormalize: true }); + } + return this._uri; + } + }]); + + return LevelKey; +}(); + +var Fragment = function () { + function Fragment() { + _classCallCheck(this, Fragment); + + this._url = null; + this._byteRange = null; + this._decryptdata = null; + this.tagList = []; + } + + _createClass(Fragment, [{ + key: 'createInitializationVector', + + + /** + * Utility method for parseLevelPlaylist to create an initialization vector for a given segment + * @returns {Uint8Array} + */ + value: function createInitializationVector(segmentNumber) { + var uint8View = new Uint8Array(16); + + for (var i = 12; i < 16; i++) { + uint8View[i] = segmentNumber >> 8 * (15 - i) & 0xff; + } + + return uint8View; + } + + /** + * Utility method for parseLevelPlaylist to get a fragment's decryption data from the currently parsed encryption key data + * @param levelkey - a playlist's encryption info + * @param segmentNumber - the fragment's segment number + * @returns {*} - an object to be applied as a fragment's decryptdata + */ + + }, { + key: 'fragmentDecryptdataFromLevelkey', + value: function fragmentDecryptdataFromLevelkey(levelkey, segmentNumber) { + var decryptdata = levelkey; + + if (levelkey && levelkey.method && levelkey.uri && !levelkey.iv) { + decryptdata = new LevelKey(); + decryptdata.method = levelkey.method; + decryptdata.baseuri = levelkey.baseuri; + decryptdata.reluri = levelkey.reluri; + decryptdata.iv = this.createInitializationVector(segmentNumber); + } + + return decryptdata; + } + }, { + key: 'cloneObj', + value: function cloneObj(obj) { + return JSON.parse(JSON.stringify(obj)); + } + }, { + key: 'url', + get: function get() { + if (!this._url && this.relurl) { + this._url = _urlToolkit2.default.buildAbsoluteURL(this.baseurl, this.relurl, { alwaysNormalize: true }); + } + return this._url; + }, + set: function set(value) { + this._url = value; + } + }, { + key: 'programDateTime', + get: function get() { + if (!this._programDateTime && this.rawProgramDateTime) { + this._programDateTime = new Date(Date.parse(this.rawProgramDateTime)); + } + return this._programDateTime; + } + }, { + key: 'byteRange', + get: function get() { + if (!this._byteRange) { + var byteRange = this._byteRange = []; + if (this.rawByteRange) { + var params = this.rawByteRange.split('@', 2); + if (params.length === 1) { + var lastByteRangeEndOffset = this.lastByteRangeEndOffset; + byteRange[0] = lastByteRangeEndOffset ? lastByteRangeEndOffset : 0; + } else { + byteRange[0] = parseInt(params[1]); + } + byteRange[1] = parseInt(params[0]) + byteRange[0]; + } + } + return this._byteRange; + } + }, { + key: 'byteRangeStartOffset', + get: function get() { + return this.byteRange[0]; + } + }, { + key: 'byteRangeEndOffset', + get: function get() { + return this.byteRange[1]; + } + }, { + key: 'decryptdata', + get: function get() { + if (!this._decryptdata) { + this._decryptdata = this.fragmentDecryptdataFromLevelkey(this.levelkey, this.sn); + } + return this._decryptdata; + } + }]); + + return Fragment; +}(); + +var PlaylistLoader = function (_EventHandler) { + _inherits(PlaylistLoader, _EventHandler); + + function PlaylistLoader(hls) { + _classCallCheck(this, PlaylistLoader); + + var _this = _possibleConstructorReturn(this, (PlaylistLoader.__proto__ || Object.getPrototypeOf(PlaylistLoader)).call(this, hls, _events2.default.MANIFEST_LOADING, _events2.default.LEVEL_LOADING, _events2.default.AUDIO_TRACK_LOADING, _events2.default.SUBTITLE_TRACK_LOADING)); + + _this.loaders = {}; + return _this; + } + + _createClass(PlaylistLoader, [{ + key: 'destroy', + value: function destroy() { + for (var loaderName in this.loaders) { + var loader = this.loaders[loaderName]; + if (loader) { + loader.destroy(); + } + } + this.loaders = {}; + _eventHandler2.default.prototype.destroy.call(this); + } + }, { + key: 'onManifestLoading', + value: function onManifestLoading(data) { + this.load(data.url, { type: 'manifest' }); + } + }, { + key: 'onLevelLoading', + value: function onLevelLoading(data) { + this.load(data.url, { type: 'level', level: data.level, id: data.id }); + } + }, { + key: 'onAudioTrackLoading', + value: function onAudioTrackLoading(data) { + this.load(data.url, { type: 'audioTrack', id: data.id }); + } + }, { + key: 'onSubtitleTrackLoading', + value: function onSubtitleTrackLoading(data) { + this.load(data.url, { type: 'subtitleTrack', id: data.id }); + } + }, { + key: 'load', + value: function load(url, context) { + var loader = this.loaders[context.type]; + if (loader) { + var loaderContext = loader.context; + if (loaderContext && loaderContext.url === url) { + _logger.logger.trace('playlist request ongoing'); + return; + } else { + _logger.logger.warn('abort previous loader for type:' + context.type); + loader.abort(); + } + } + var config = this.hls.config, + retry = void 0, + timeout = void 0, + retryDelay = void 0, + maxRetryDelay = void 0; + if (context.type === 'manifest') { + retry = config.manifestLoadingMaxRetry; + timeout = config.manifestLoadingTimeOut; + retryDelay = config.manifestLoadingRetryDelay; + maxRetryDelay = config.manifestLoadingMaxRetryTimeout; + } else { + retry = config.levelLoadingMaxRetry; + timeout = config.levelLoadingTimeOut; + retryDelay = config.levelLoadingRetryDelay; + maxRetryDelay = config.levelLoadingMaxRetryTimeout; + _logger.logger.log('loading playlist for ' + context.type + ' ' + (context.level || context.id)); + } + loader = this.loaders[context.type] = context.loader = typeof config.pLoader !== 'undefined' ? new config.pLoader(config) : new config.loader(config); + context.url = url; + context.responseType = ''; + + var loaderConfig = void 0, + loaderCallbacks = void 0; + loaderConfig = { timeout: timeout, maxRetry: retry, retryDelay: retryDelay, maxRetryDelay: maxRetryDelay }; + loaderCallbacks = { onSuccess: this.loadsuccess.bind(this), onError: this.loaderror.bind(this), onTimeout: this.loadtimeout.bind(this) }; + loader.load(context, loaderConfig, loaderCallbacks); + } + }, { + key: 'resolve', + value: function resolve(url, baseUrl) { + return _urlToolkit2.default.buildAbsoluteURL(baseUrl, url, { alwaysNormalize: true }); + } + }, { + key: 'parseMasterPlaylist', + value: function parseMasterPlaylist(string, baseurl) { + var levels = [], + result = void 0; + MASTER_PLAYLIST_REGEX.lastIndex = 0; + while ((result = MASTER_PLAYLIST_REGEX.exec(string)) != null) { + var level = {}; + + var attrs = level.attrs = new _attrList2.default(result[1]); + level.url = this.resolve(result[2], baseurl); + + var resolution = attrs.decimalResolution('RESOLUTION'); + if (resolution) { + level.width = resolution.width; + level.height = resolution.height; + } + level.bitrate = attrs.decimalInteger('AVERAGE-BANDWIDTH') || attrs.decimalInteger('BANDWIDTH'); + level.name = attrs.NAME; + + var codecs = attrs.CODECS; + if (codecs) { + codecs = codecs.split(/[ ,]+/); + for (var i = 0; i < codecs.length; i++) { + var codec = codecs[i]; + if (codec.indexOf('avc1') !== -1) { + level.videoCodec = this.avc1toavcoti(codec); + } else { + level.audioCodec = codec; + } + } + } + + levels.push(level); + } + return levels; + } + }, { + key: 'parseMasterPlaylistMedia', + value: function parseMasterPlaylistMedia(string, baseurl, type) { + var result = void 0, + medias = [], + id = 0; + MASTER_PLAYLIST_MEDIA_REGEX.lastIndex = 0; + while ((result = MASTER_PLAYLIST_MEDIA_REGEX.exec(string)) != null) { + var media = {}; + var attrs = new _attrList2.default(result[1]); + if (attrs.TYPE === type) { + media.groupId = attrs['GROUP-ID']; + media.name = attrs.NAME; + media.type = type; + media.default = attrs.DEFAULT === 'YES'; + media.autoselect = attrs.AUTOSELECT === 'YES'; + media.forced = attrs.FORCED === 'YES'; + if (attrs.URI) { + media.url = this.resolve(attrs.URI, baseurl); + } + media.lang = attrs.LANGUAGE; + if (!media.name) { + media.name = media.lang; + } + media.id = id++; + medias.push(media); + } + } + return medias; + } + }, { + key: 'avc1toavcoti', + value: function avc1toavcoti(codec) { + var result, + avcdata = codec.split('.'); + if (avcdata.length > 2) { + result = avcdata.shift() + '.'; + result += parseInt(avcdata.shift()).toString(16); + result += ('000' + parseInt(avcdata.shift()).toString(16)).substr(-4); + } else { + result = codec; + } + return result; + } + }, { + key: 'parseLevelPlaylist', + value: function parseLevelPlaylist(string, baseurl, id, type) { + var currentSN = 0, + totalduration = 0, + level = { type: null, version: null, url: baseurl, fragments: [], live: true, startSN: 0 }, + levelkey = new LevelKey(), + cc = 0, + prevFrag = null, + frag = new Fragment(), + result, + i; + + LEVEL_PLAYLIST_REGEX_FAST.lastIndex = 0; + + while ((result = LEVEL_PLAYLIST_REGEX_FAST.exec(string)) !== null) { + var duration = result[1]; + if (duration) { + // INF + frag.duration = parseFloat(duration); + // avoid sliced strings https://github.com/video-dev/hls.js/issues/939 + var title = (' ' + result[2]).slice(1); + frag.title = title ? title : null; + frag.tagList.push(title ? ['INF', duration, title] : ['INF', duration]); + } else if (result[3]) { + // url + if (!isNaN(frag.duration)) { + var sn = currentSN++; + frag.type = type; + frag.start = totalduration; + frag.levelkey = levelkey; + frag.sn = sn; + frag.level = id; + frag.cc = cc; + frag.baseurl = baseurl; + // avoid sliced strings https://github.com/video-dev/hls.js/issues/939 + frag.relurl = (' ' + result[3]).slice(1); + + level.fragments.push(frag); + prevFrag = frag; + totalduration += frag.duration; + + frag = new Fragment(); + } + } else if (result[4]) { + // X-BYTERANGE + frag.rawByteRange = (' ' + result[4]).slice(1); + if (prevFrag) { + var lastByteRangeEndOffset = prevFrag.byteRangeEndOffset; + if (lastByteRangeEndOffset) { + frag.lastByteRangeEndOffset = lastByteRangeEndOffset; + } + } + } else if (result[5]) { + // PROGRAM-DATE-TIME + // avoid sliced strings https://github.com/video-dev/hls.js/issues/939 + frag.rawProgramDateTime = (' ' + result[5]).slice(1); + frag.tagList.push(['PROGRAM-DATE-TIME', frag.rawProgramDateTime]); + } else { + result = result[0].match(LEVEL_PLAYLIST_REGEX_SLOW); + for (i = 1; i < result.length; i++) { + if (result[i] !== undefined) { + break; + } + } + + // avoid sliced strings https://github.com/video-dev/hls.js/issues/939 + var value1 = (' ' + result[i + 1]).slice(1); + var value2 = (' ' + result[i + 2]).slice(1); + + switch (result[i]) { + case '#': + frag.tagList.push(value2 ? [value1, value2] : [value1]); + break; + case 'PLAYLIST-TYPE': + level.type = value1.toUpperCase(); + break; + case 'MEDIA-SEQUENCE': + currentSN = level.startSN = parseInt(value1); + break; + case 'TARGETDURATION': + level.targetduration = parseFloat(value1); + break; + case 'VERSION': + level.version = parseInt(value1); + break; + case 'EXTM3U': + break; + case 'ENDLIST': + level.live = false; + break; + case 'DIS': + cc++; + frag.tagList.push(['DIS']); + break; + case 'DISCONTINUITY-SEQ': + cc = parseInt(value1); + break; + case 'KEY': + // https://tools.ietf.org/html/draft-pantos-http-live-streaming-08#section-3.4.4 + var decryptparams = value1; + var keyAttrs = new _attrList2.default(decryptparams); + var decryptmethod = keyAttrs.enumeratedString('METHOD'), + decrypturi = keyAttrs.URI, + decryptiv = keyAttrs.hexadecimalInteger('IV'); + if (decryptmethod) { + levelkey = new LevelKey(); + if (decrypturi && ['AES-128', 'SAMPLE-AES'].indexOf(decryptmethod) >= 0) { + levelkey.method = decryptmethod; + // URI to get the key + levelkey.baseuri = baseurl; + levelkey.reluri = decrypturi; + levelkey.key = null; + // Initialization Vector (IV) + levelkey.iv = decryptiv; + } + } + break; + case 'START': + var startParams = value1; + var startAttrs = new _attrList2.default(startParams); + var startTimeOffset = startAttrs.decimalFloatingPoint('TIME-OFFSET'); + //TIME-OFFSET can be 0 + if (!isNaN(startTimeOffset)) { + level.startTimeOffset = startTimeOffset; + } + break; + case 'MAP': + var mapAttrs = new _attrList2.default(value1); + frag.relurl = mapAttrs.URI; + frag.rawByteRange = mapAttrs.BYTERANGE; + frag.baseurl = baseurl; + frag.level = id; + frag.type = type; + frag.sn = 'initSegment'; + level.initSegment = frag; + frag = new Fragment(); + break; + default: + _logger.logger.warn('line parsed but not handled: ' + result); + break; + } + } + } + frag = prevFrag; + //logger.log('found ' + level.fragments.length + ' fragments'); + if (frag && !frag.relurl) { + level.fragments.pop(); + totalduration -= frag.duration; + } + level.totalduration = totalduration; + level.averagetargetduration = totalduration / level.fragments.length; + level.endSN = currentSN - 1; + return level; + } + }, { + key: 'loadsuccess', + value: function loadsuccess(response, stats, context) { + var string = response.data, + url = response.url, + type = context.type, + id = context.id, + level = context.level, + hls = this.hls; + + this.loaders[type] = undefined; + // responseURL not supported on some browsers (it is used to detect URL redirection) + // data-uri mode also not supported (but no need to detect redirection) + if (url === undefined || url.indexOf('data:') === 0) { + // fallback to initial URL + url = context.url; + } + stats.tload = performance.now(); + //stats.mtime = new Date(target.getResponseHeader('Last-Modified')); + if (string.indexOf('#EXTM3U') === 0) { + if (string.indexOf('#EXTINF:') > 0) { + var isLevel = type !== 'audioTrack' && type !== 'subtitleTrack', + levelId = !isNaN(level) ? level : !isNaN(id) ? id : 0, + levelDetails = this.parseLevelPlaylist(string, url, levelId, type === 'audioTrack' ? 'audio' : type === 'subtitleTrack' ? 'subtitle' : 'main'); + levelDetails.tload = stats.tload; + if (type === 'manifest') { + // first request, stream manifest (no master playlist), fire manifest loaded event with level details + hls.trigger(_events2.default.MANIFEST_LOADED, { levels: [{ url: url, details: levelDetails }], audioTracks: [], url: url, stats: stats }); + } + stats.tparsed = performance.now(); + if (levelDetails.targetduration) { + if (isLevel) { + hls.trigger(_events2.default.LEVEL_LOADED, { details: levelDetails, level: level || 0, id: id || 0, stats: stats }); + } else { + if (type === 'audioTrack') { + hls.trigger(_events2.default.AUDIO_TRACK_LOADED, { details: levelDetails, id: id, stats: stats }); + } else if (type === 'subtitleTrack') { + hls.trigger(_events2.default.SUBTITLE_TRACK_LOADED, { details: levelDetails, id: id, stats: stats }); + } + } + } else { + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.NETWORK_ERROR, details: _errors.ErrorDetails.MANIFEST_PARSING_ERROR, fatal: true, url: url, reason: 'invalid targetduration' }); + } + } else { + var levels = this.parseMasterPlaylist(string, url); + // multi level playlist, parse level info + if (levels.length) { + var audioTracks = this.parseMasterPlaylistMedia(string, url, 'AUDIO'); + var subtitles = this.parseMasterPlaylistMedia(string, url, 'SUBTITLES'); + if (audioTracks.length) { + // check if we have found an audio track embedded in main playlist (audio track without URI attribute) + var embeddedAudioFound = false; + audioTracks.forEach(function (audioTrack) { + if (!audioTrack.url) { + embeddedAudioFound = true; + } + }); + // if no embedded audio track defined, but audio codec signaled in quality level, we need to signal this main audio track + // this could happen with playlists with alt audio rendition in which quality levels (main) contains both audio+video. but with mixed audio track not signaled + if (embeddedAudioFound === false && levels[0].audioCodec && !levels[0].attrs.AUDIO) { + _logger.logger.log('audio codec signaled in quality level, but no embedded audio track signaled, create one'); + audioTracks.unshift({ type: 'main', name: 'main' }); + } + } + hls.trigger(_events2.default.MANIFEST_LOADED, { levels: levels, audioTracks: audioTracks, subtitles: subtitles, url: url, stats: stats }); + } else { + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.NETWORK_ERROR, details: _errors.ErrorDetails.MANIFEST_PARSING_ERROR, fatal: true, url: url, reason: 'no level found in manifest' }); + } + } + } else { + hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.NETWORK_ERROR, details: _errors.ErrorDetails.MANIFEST_PARSING_ERROR, fatal: true, url: url, reason: 'no EXTM3U delimiter' }); + } + } + }, { + key: 'loaderror', + value: function loaderror(response, context) { + var details, + fatal, + loader = context.loader; + switch (context.type) { + case 'manifest': + details = _errors.ErrorDetails.MANIFEST_LOAD_ERROR; + fatal = true; + break; + case 'level': + details = _errors.ErrorDetails.LEVEL_LOAD_ERROR; + fatal = false; + break; + case 'audioTrack': + details = _errors.ErrorDetails.AUDIO_TRACK_LOAD_ERROR; + fatal = false; + break; + } + if (loader) { + loader.abort(); + this.loaders[context.type] = undefined; + } + this.hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.NETWORK_ERROR, details: details, fatal: fatal, url: loader.url, loader: loader, response: response, context: context }); + } + }, { + key: 'loadtimeout', + value: function loadtimeout(stats, context) { + var details, + fatal, + loader = context.loader; + switch (context.type) { + case 'manifest': + details = _errors.ErrorDetails.MANIFEST_LOAD_TIMEOUT; + fatal = true; + break; + case 'level': + details = _errors.ErrorDetails.LEVEL_LOAD_TIMEOUT; + fatal = false; + break; + case 'audioTrack': + details = _errors.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT; + fatal = false; + break; + } + if (loader) { + loader.abort(); + this.loaders[context.type] = undefined; + } + this.hls.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.NETWORK_ERROR, details: details, fatal: fatal, url: loader.url, loader: loader, context: context }); + } + }]); + + return PlaylistLoader; +}(_eventHandler2.default); + +exports.default = PlaylistLoader; + +},{"2":2,"33":33,"34":34,"35":35,"47":47,"53":53}],44:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * Generate MP4 Box +*/ + +//import Hex from '../utils/hex'; + +var UINT32_MAX = Math.pow(2, 32) - 1; + +var MP4 = function () { + function MP4() { + _classCallCheck(this, MP4); + } + + _createClass(MP4, null, [{ + key: 'init', + value: function init() { + MP4.types = { + avc1: [], // codingname + avcC: [], + btrt: [], + dinf: [], + dref: [], + esds: [], + ftyp: [], + hdlr: [], + mdat: [], + mdhd: [], + mdia: [], + mfhd: [], + minf: [], + moof: [], + moov: [], + mp4a: [], + '.mp3': [], + mvex: [], + mvhd: [], + pasp: [], + sdtp: [], + stbl: [], + stco: [], + stsc: [], + stsd: [], + stsz: [], + stts: [], + tfdt: [], + tfhd: [], + traf: [], + trak: [], + trun: [], + trex: [], + tkhd: [], + vmhd: [], + smhd: [] + }; + + var i; + for (i in MP4.types) { + if (MP4.types.hasOwnProperty(i)) { + MP4.types[i] = [i.charCodeAt(0), i.charCodeAt(1), i.charCodeAt(2), i.charCodeAt(3)]; + } + } + + var videoHdlr = new Uint8Array([0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00, // pre_defined + 0x76, 0x69, 0x64, 0x65, // handler_type: 'vide' + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x56, 0x69, 0x64, 0x65, 0x6f, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'VideoHandler' + ]); + + var audioHdlr = new Uint8Array([0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00, // pre_defined + 0x73, 0x6f, 0x75, 0x6e, // handler_type: 'soun' + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x53, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x00 // name: 'SoundHandler' + ]); + + MP4.HDLR_TYPES = { + 'video': videoHdlr, + 'audio': audioHdlr + }; + + var dref = new Uint8Array([0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x01, // entry_count + 0x00, 0x00, 0x00, 0x0c, // entry_size + 0x75, 0x72, 0x6c, 0x20, // 'url' type + 0x00, // version 0 + 0x00, 0x00, 0x01 // entry_flags + ]); + + var stco = new Uint8Array([0x00, // version + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00 // entry_count + ]); + + MP4.STTS = MP4.STSC = MP4.STCO = stco; + + MP4.STSZ = new Uint8Array([0x00, // version + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00, // sample_size + 0x00, 0x00, 0x00, 0x00]); + MP4.VMHD = new Uint8Array([0x00, // version + 0x00, 0x00, 0x01, // flags + 0x00, 0x00, // graphicsmode + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // opcolor + ]); + MP4.SMHD = new Uint8Array([0x00, // version + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, // balance + 0x00, 0x00 // reserved + ]); + + MP4.STSD = new Uint8Array([0x00, // version 0 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x01]); // entry_count + + var majorBrand = new Uint8Array([105, 115, 111, 109]); // isom + var avc1Brand = new Uint8Array([97, 118, 99, 49]); // avc1 + var minorVersion = new Uint8Array([0, 0, 0, 1]); + + MP4.FTYP = MP4.box(MP4.types.ftyp, majorBrand, minorVersion, majorBrand, avc1Brand); + MP4.DINF = MP4.box(MP4.types.dinf, MP4.box(MP4.types.dref, dref)); + } + }, { + key: 'box', + value: function box(type) { + var payload = Array.prototype.slice.call(arguments, 1), + size = 8, + i = payload.length, + len = i, + result; + // calculate the total size we need to allocate + while (i--) { + size += payload[i].byteLength; + } + result = new Uint8Array(size); + result[0] = size >> 24 & 0xff; + result[1] = size >> 16 & 0xff; + result[2] = size >> 8 & 0xff; + result[3] = size & 0xff; + result.set(type, 4); + // copy the payload into the result + for (i = 0, size = 8; i < len; i++) { + // copy payload[i] array @ offset size + result.set(payload[i], size); + size += payload[i].byteLength; + } + return result; + } + }, { + key: 'hdlr', + value: function hdlr(type) { + return MP4.box(MP4.types.hdlr, MP4.HDLR_TYPES[type]); + } + }, { + key: 'mdat', + value: function mdat(data) { + return MP4.box(MP4.types.mdat, data); + } + }, { + key: 'mdhd', + value: function mdhd(timescale, duration) { + duration *= timescale; + var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1)); + var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1)); + return MP4.box(MP4.types.mdhd, new Uint8Array([0x01, // version 1 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time + timescale >> 24 & 0xFF, timescale >> 16 & 0xFF, timescale >> 8 & 0xFF, timescale & 0xFF, // timescale + upperWordDuration >> 24, upperWordDuration >> 16 & 0xFF, upperWordDuration >> 8 & 0xFF, upperWordDuration & 0xFF, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xFF, lowerWordDuration >> 8 & 0xFF, lowerWordDuration & 0xFF, 0x55, 0xc4, // 'und' language (undetermined) + 0x00, 0x00])); + } + }, { + key: 'mdia', + value: function mdia(track) { + return MP4.box(MP4.types.mdia, MP4.mdhd(track.timescale, track.duration), MP4.hdlr(track.type), MP4.minf(track)); + } + }, { + key: 'mfhd', + value: function mfhd(sequenceNumber) { + return MP4.box(MP4.types.mfhd, new Uint8Array([0x00, 0x00, 0x00, 0x00, // flags + sequenceNumber >> 24, sequenceNumber >> 16 & 0xFF, sequenceNumber >> 8 & 0xFF, sequenceNumber & 0xFF])); + } + }, { + key: 'minf', + value: function minf(track) { + if (track.type === 'audio') { + return MP4.box(MP4.types.minf, MP4.box(MP4.types.smhd, MP4.SMHD), MP4.DINF, MP4.stbl(track)); + } else { + return MP4.box(MP4.types.minf, MP4.box(MP4.types.vmhd, MP4.VMHD), MP4.DINF, MP4.stbl(track)); + } + } + }, { + key: 'moof', + value: function moof(sn, baseMediaDecodeTime, track) { + return MP4.box(MP4.types.moof, MP4.mfhd(sn), MP4.traf(track, baseMediaDecodeTime)); + } + /** + * @param tracks... (optional) {array} the tracks associated with this movie + */ + + }, { + key: 'moov', + value: function moov(tracks) { + var i = tracks.length, + boxes = []; + + while (i--) { + boxes[i] = MP4.trak(tracks[i]); + } + + return MP4.box.apply(null, [MP4.types.moov, MP4.mvhd(tracks[0].timescale, tracks[0].duration)].concat(boxes).concat(MP4.mvex(tracks))); + } + }, { + key: 'mvex', + value: function mvex(tracks) { + var i = tracks.length, + boxes = []; + + while (i--) { + boxes[i] = MP4.trex(tracks[i]); + } + return MP4.box.apply(null, [MP4.types.mvex].concat(boxes)); + } + }, { + key: 'mvhd', + value: function mvhd(timescale, duration) { + duration *= timescale; + var upperWordDuration = Math.floor(duration / (UINT32_MAX + 1)); + var lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1)); + var bytes = new Uint8Array([0x01, // version 1 + 0x00, 0x00, 0x00, // flags + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time + timescale >> 24 & 0xFF, timescale >> 16 & 0xFF, timescale >> 8 & 0xFF, timescale & 0xFF, // timescale + upperWordDuration >> 24, upperWordDuration >> 16 & 0xFF, upperWordDuration >> 8 & 0xFF, upperWordDuration & 0xFF, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xFF, lowerWordDuration >> 8 & 0xFF, lowerWordDuration & 0xFF, 0x00, 0x01, 0x00, 0x00, // 1.0 rate + 0x01, 0x00, // 1.0 volume + 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined + 0xff, 0xff, 0xff, 0xff // next_track_ID + ]); + return MP4.box(MP4.types.mvhd, bytes); + } + }, { + key: 'sdtp', + value: function sdtp(track) { + var samples = track.samples || [], + bytes = new Uint8Array(4 + samples.length), + flags, + i; + // leave the full box header (4 bytes) all zero + // write the sample table + for (i = 0; i < samples.length; i++) { + flags = samples[i].flags; + bytes[i + 4] = flags.dependsOn << 4 | flags.isDependedOn << 2 | flags.hasRedundancy; + } + + return MP4.box(MP4.types.sdtp, bytes); + } + }, { + key: 'stbl', + value: function stbl(track) { + return MP4.box(MP4.types.stbl, MP4.stsd(track), MP4.box(MP4.types.stts, MP4.STTS), MP4.box(MP4.types.stsc, MP4.STSC), MP4.box(MP4.types.stsz, MP4.STSZ), MP4.box(MP4.types.stco, MP4.STCO)); + } + }, { + key: 'avc1', + value: function avc1(track) { + var sps = [], + pps = [], + i, + data, + len; + // assemble the SPSs + + for (i = 0; i < track.sps.length; i++) { + data = track.sps[i]; + len = data.byteLength; + sps.push(len >>> 8 & 0xFF); + sps.push(len & 0xFF); + sps = sps.concat(Array.prototype.slice.call(data)); // SPS + } + + // assemble the PPSs + for (i = 0; i < track.pps.length; i++) { + data = track.pps[i]; + len = data.byteLength; + pps.push(len >>> 8 & 0xFF); + pps.push(len & 0xFF); + pps = pps.concat(Array.prototype.slice.call(data)); + } + + var avcc = MP4.box(MP4.types.avcC, new Uint8Array([0x01, // version + sps[3], // profile + sps[4], // profile compat + sps[5], // level + 0xfc | 3, // lengthSizeMinusOne, hard-coded to 4 bytes + 0xE0 | track.sps.length // 3bit reserved (111) + numOfSequenceParameterSets + ].concat(sps).concat([track.pps.length // numOfPictureParameterSets + ]).concat(pps))), + // "PPS" + width = track.width, + height = track.height, + hSpacing = track.pixelRatio[0], + vSpacing = track.pixelRatio[1]; + //console.log('avcc:' + Hex.hexDump(avcc)); + return MP4.box(MP4.types.avc1, new Uint8Array([0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, // data_reference_index + 0x00, 0x00, // pre_defined + 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // pre_defined + width >> 8 & 0xFF, width & 0xff, // width + height >> 8 & 0xFF, height & 0xff, // height + 0x00, 0x48, 0x00, 0x00, // horizresolution + 0x00, 0x48, 0x00, 0x00, // vertresolution + 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, // frame_count + 0x12, 0x64, 0x61, 0x69, 0x6C, //dailymotion/hls.js + 0x79, 0x6D, 0x6F, 0x74, 0x69, 0x6F, 0x6E, 0x2F, 0x68, 0x6C, 0x73, 0x2E, 0x6A, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // compressorname + 0x00, 0x18, // depth = 24 + 0x11, 0x11]), // pre_defined = -1 + avcc, MP4.box(MP4.types.btrt, new Uint8Array([0x00, 0x1c, 0x9c, 0x80, // bufferSizeDB + 0x00, 0x2d, 0xc6, 0xc0, // maxBitrate + 0x00, 0x2d, 0xc6, 0xc0])), // avgBitrate + MP4.box(MP4.types.pasp, new Uint8Array([hSpacing >> 24, // hSpacing + hSpacing >> 16 & 0xFF, hSpacing >> 8 & 0xFF, hSpacing & 0xFF, vSpacing >> 24, // vSpacing + vSpacing >> 16 & 0xFF, vSpacing >> 8 & 0xFF, vSpacing & 0xFF]))); + } + }, { + key: 'esds', + value: function esds(track) { + var configlen = track.config.length; + return new Uint8Array([0x00, // version 0 + 0x00, 0x00, 0x00, // flags + + 0x03, // descriptor_type + 0x17 + configlen, // length + 0x00, 0x01, //es_id + 0x00, // stream_priority + + 0x04, // descriptor_type + 0x0f + configlen, // length + 0x40, //codec : mpeg4_audio + 0x15, // stream_type + 0x00, 0x00, 0x00, // buffer_size + 0x00, 0x00, 0x00, 0x00, // maxBitrate + 0x00, 0x00, 0x00, 0x00, // avgBitrate + + 0x05 // descriptor_type + ].concat([configlen]).concat(track.config).concat([0x06, 0x01, 0x02])); // GASpecificConfig)); // length + audio config descriptor + } + }, { + key: 'mp4a', + value: function mp4a(track) { + var samplerate = track.samplerate; + return MP4.box(MP4.types.mp4a, new Uint8Array([0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, // data_reference_index + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, track.channelCount, // channelcount + 0x00, 0x10, // sampleSize:16bits + 0x00, 0x00, 0x00, 0x00, // reserved2 + samplerate >> 8 & 0xFF, samplerate & 0xff, // + 0x00, 0x00]), MP4.box(MP4.types.esds, MP4.esds(track))); + } + }, { + key: 'mp3', + value: function mp3(track) { + var samplerate = track.samplerate; + return MP4.box(MP4.types['.mp3'], new Uint8Array([0x00, 0x00, 0x00, // reserved + 0x00, 0x00, 0x00, // reserved + 0x00, 0x01, // data_reference_index + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, track.channelCount, // channelcount + 0x00, 0x10, // sampleSize:16bits + 0x00, 0x00, 0x00, 0x00, // reserved2 + samplerate >> 8 & 0xFF, samplerate & 0xff, // + 0x00, 0x00])); + } + }, { + key: 'stsd', + value: function stsd(track) { + if (track.type === 'audio') { + if (!track.isAAC && track.codec === 'mp3') { + return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp3(track)); + } + return MP4.box(MP4.types.stsd, MP4.STSD, MP4.mp4a(track)); + } else { + return MP4.box(MP4.types.stsd, MP4.STSD, MP4.avc1(track)); + } + } + }, { + key: 'tkhd', + value: function tkhd(track) { + var id = track.id, + duration = track.duration * track.timescale, + width = track.width, + height = track.height, + upperWordDuration = Math.floor(duration / (UINT32_MAX + 1)), + lowerWordDuration = Math.floor(duration % (UINT32_MAX + 1)); + return MP4.box(MP4.types.tkhd, new Uint8Array([0x01, // version 1 + 0x00, 0x00, 0x07, // flags + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, // creation_time + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, // modification_time + id >> 24 & 0xFF, id >> 16 & 0xFF, id >> 8 & 0xFF, id & 0xFF, // track_ID + 0x00, 0x00, 0x00, 0x00, // reserved + upperWordDuration >> 24, upperWordDuration >> 16 & 0xFF, upperWordDuration >> 8 & 0xFF, upperWordDuration & 0xFF, lowerWordDuration >> 24, lowerWordDuration >> 16 & 0xFF, lowerWordDuration >> 8 & 0xFF, lowerWordDuration & 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved + 0x00, 0x00, // layer + 0x00, 0x00, // alternate_group + 0x00, 0x00, // non-audio track volume + 0x00, 0x00, // reserved + 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, // transformation: unity matrix + width >> 8 & 0xFF, width & 0xFF, 0x00, 0x00, // width + height >> 8 & 0xFF, height & 0xFF, 0x00, 0x00 // height + ])); + } + }, { + key: 'traf', + value: function traf(track, baseMediaDecodeTime) { + var sampleDependencyTable = MP4.sdtp(track), + id = track.id, + upperWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime / (UINT32_MAX + 1)), + lowerWordBaseMediaDecodeTime = Math.floor(baseMediaDecodeTime % (UINT32_MAX + 1)); + return MP4.box(MP4.types.traf, MP4.box(MP4.types.tfhd, new Uint8Array([0x00, // version 0 + 0x00, 0x00, 0x00, // flags + id >> 24, id >> 16 & 0XFF, id >> 8 & 0XFF, id & 0xFF])), MP4.box(MP4.types.tfdt, new Uint8Array([0x01, // version 1 + 0x00, 0x00, 0x00, // flags + upperWordBaseMediaDecodeTime >> 24, upperWordBaseMediaDecodeTime >> 16 & 0XFF, upperWordBaseMediaDecodeTime >> 8 & 0XFF, upperWordBaseMediaDecodeTime & 0xFF, lowerWordBaseMediaDecodeTime >> 24, lowerWordBaseMediaDecodeTime >> 16 & 0XFF, lowerWordBaseMediaDecodeTime >> 8 & 0XFF, lowerWordBaseMediaDecodeTime & 0xFF])), MP4.trun(track, sampleDependencyTable.length + 16 + // tfhd + 20 + // tfdt + 8 + // traf header + 16 + // mfhd + 8 + // moof header + 8), // mdat header + sampleDependencyTable); + } + + /** + * Generate a track box. + * @param track {object} a track definition + * @return {Uint8Array} the track box + */ + + }, { + key: 'trak', + value: function trak(track) { + track.duration = track.duration || 0xffffffff; + return MP4.box(MP4.types.trak, MP4.tkhd(track), MP4.mdia(track)); + } + }, { + key: 'trex', + value: function trex(track) { + var id = track.id; + return MP4.box(MP4.types.trex, new Uint8Array([0x00, // version 0 + 0x00, 0x00, 0x00, // flags + id >> 24, id >> 16 & 0XFF, id >> 8 & 0XFF, id & 0xFF, // track_ID + 0x00, 0x00, 0x00, 0x01, // default_sample_description_index + 0x00, 0x00, 0x00, 0x00, // default_sample_duration + 0x00, 0x00, 0x00, 0x00, // default_sample_size + 0x00, 0x01, 0x00, 0x01 // default_sample_flags + ])); + } + }, { + key: 'trun', + value: function trun(track, offset) { + var samples = track.samples || [], + len = samples.length, + arraylen = 12 + 16 * len, + array = new Uint8Array(arraylen), + i, + sample, + duration, + size, + flags, + cts; + offset += 8 + arraylen; + array.set([0x00, // version 0 + 0x00, 0x0f, 0x01, // flags + len >>> 24 & 0xFF, len >>> 16 & 0xFF, len >>> 8 & 0xFF, len & 0xFF, // sample_count + offset >>> 24 & 0xFF, offset >>> 16 & 0xFF, offset >>> 8 & 0xFF, offset & 0xFF // data_offset + ], 0); + for (i = 0; i < len; i++) { + sample = samples[i]; + duration = sample.duration; + size = sample.size; + flags = sample.flags; + cts = sample.cts; + array.set([duration >>> 24 & 0xFF, duration >>> 16 & 0xFF, duration >>> 8 & 0xFF, duration & 0xFF, // sample_duration + size >>> 24 & 0xFF, size >>> 16 & 0xFF, size >>> 8 & 0xFF, size & 0xFF, // sample_size + flags.isLeading << 2 | flags.dependsOn, flags.isDependedOn << 6 | flags.hasRedundancy << 4 | flags.paddingValue << 1 | flags.isNonSync, flags.degradPrio & 0xF0 << 8, flags.degradPrio & 0x0F, // sample_flags + cts >>> 24 & 0xFF, cts >>> 16 & 0xFF, cts >>> 8 & 0xFF, cts & 0xFF // sample_composition_time_offset + ], 12 + 16 * i); + } + return MP4.box(MP4.types.trun, array); + } + }, { + key: 'initSegment', + value: function initSegment(tracks) { + if (!MP4.types) { + MP4.init(); + } + var movie = MP4.moov(tracks), + result; + result = new Uint8Array(MP4.FTYP.byteLength + movie.byteLength); + result.set(MP4.FTYP); + result.set(movie, MP4.FTYP.byteLength); + return result; + } + }]); + + return MP4; +}(); + +exports.default = MP4; + +},{}],45:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** + * fMP4 remuxer + */ + +var _aac = _dereq_(36); + +var _aac2 = _interopRequireDefault(_aac); + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +var _logger = _dereq_(53); + +var _mp4Generator = _dereq_(44); + +var _mp4Generator2 = _interopRequireDefault(_mp4Generator); + +var _errors = _dereq_(33); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +// 10 seconds +var MAX_SILENT_FRAME_DURATION = 10 * 1000; + +var MP4Remuxer = function () { + function MP4Remuxer(observer, config, typeSupported, vendor) { + _classCallCheck(this, MP4Remuxer); + + this.observer = observer; + this.config = config; + this.typeSupported = typeSupported; + var userAgent = navigator.userAgent; + this.isSafari = vendor && vendor.indexOf('Apple') > -1 && userAgent && !userAgent.match('CriOS'); + this.ISGenerated = false; + } + + _createClass(MP4Remuxer, [{ + key: 'destroy', + value: function destroy() {} + }, { + key: 'resetTimeStamp', + value: function resetTimeStamp(defaultTimeStamp) { + this._initPTS = this._initDTS = defaultTimeStamp; + } + }, { + key: 'resetInitSegment', + value: function resetInitSegment() { + this.ISGenerated = false; + } + }, { + key: 'remux', + value: function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset) { + // generate Init Segment if needed + if (!this.ISGenerated) { + this.generateIS(audioTrack, videoTrack, timeOffset); + } + + if (this.ISGenerated) { + // Purposefully remuxing audio before video, so that remuxVideo can use nextAudioPts, which is + // calculated in remuxAudio. + //logger.log('nb AAC samples:' + audioTrack.samples.length); + if (audioTrack.samples.length) { + // if initSegment was generated without video samples, regenerate it again + if (!audioTrack.timescale) { + _logger.logger.warn('regenerate InitSegment as audio detected'); + this.generateIS(audioTrack, videoTrack, timeOffset); + } + var audioData = this.remuxAudio(audioTrack, timeOffset, contiguous, accurateTimeOffset); + //logger.log('nb AVC samples:' + videoTrack.samples.length); + if (videoTrack.samples.length) { + var audioTrackLength = void 0; + if (audioData) { + audioTrackLength = audioData.endPTS - audioData.startPTS; + } + // if initSegment was generated without video samples, regenerate it again + if (!videoTrack.timescale) { + _logger.logger.warn('regenerate InitSegment as video detected'); + this.generateIS(audioTrack, videoTrack, timeOffset); + } + this.remuxVideo(videoTrack, timeOffset, contiguous, audioTrackLength, accurateTimeOffset); + } + } else { + var videoData = void 0; + //logger.log('nb AVC samples:' + videoTrack.samples.length); + if (videoTrack.samples.length) { + videoData = this.remuxVideo(videoTrack, timeOffset, contiguous, accurateTimeOffset); + } + if (videoData && audioTrack.codec) { + this.remuxEmptyAudio(audioTrack, timeOffset, contiguous, videoData); + } + } + } + //logger.log('nb ID3 samples:' + audioTrack.samples.length); + if (id3Track.samples.length) { + this.remuxID3(id3Track, timeOffset); + } + //logger.log('nb ID3 samples:' + audioTrack.samples.length); + if (textTrack.samples.length) { + this.remuxText(textTrack, timeOffset); + } + //notify end of parsing + this.observer.trigger(_events2.default.FRAG_PARSED); + } + }, { + key: 'generateIS', + value: function generateIS(audioTrack, videoTrack, timeOffset) { + var observer = this.observer, + audioSamples = audioTrack.samples, + videoSamples = videoTrack.samples, + typeSupported = this.typeSupported, + container = 'audio/mp4', + tracks = {}, + data = { tracks: tracks }, + computePTSDTS = this._initPTS === undefined, + initPTS, + initDTS; + + if (computePTSDTS) { + initPTS = initDTS = Infinity; + } + if (audioTrack.config && audioSamples.length) { + // let's use audio sampling rate as MP4 time scale. + // rationale is that there is a integer nb of audio frames per audio sample (1024 for AAC) + // using audio sampling rate here helps having an integer MP4 frame duration + // this avoids potential rounding issue and AV sync issue + audioTrack.timescale = audioTrack.samplerate; + _logger.logger.log('audio sampling rate : ' + audioTrack.samplerate); + if (!audioTrack.isAAC) { + if (typeSupported.mpeg) { + // Chrome and Safari + container = 'audio/mpeg'; + audioTrack.codec = ''; + } else if (typeSupported.mp3) { + // Firefox + audioTrack.codec = 'mp3'; + } + } + tracks.audio = { + container: container, + codec: audioTrack.codec, + initSegment: !audioTrack.isAAC && typeSupported.mpeg ? new Uint8Array() : _mp4Generator2.default.initSegment([audioTrack]), + metadata: { + channelCount: audioTrack.channelCount + } + }; + if (computePTSDTS) { + // remember first PTS of this demuxing context. for audio, PTS = DTS + initPTS = initDTS = audioSamples[0].pts - audioTrack.inputTimeScale * timeOffset; + } + } + + if (videoTrack.sps && videoTrack.pps && videoSamples.length) { + // let's use input time scale as MP4 video timescale + // we use input time scale straight away to avoid rounding issues on frame duration / cts computation + var inputTimeScale = videoTrack.inputTimeScale; + videoTrack.timescale = inputTimeScale; + tracks.video = { + container: 'video/mp4', + codec: videoTrack.codec, + initSegment: _mp4Generator2.default.initSegment([videoTrack]), + metadata: { + width: videoTrack.width, + height: videoTrack.height + } + }; + if (computePTSDTS) { + initPTS = Math.min(initPTS, videoSamples[0].pts - inputTimeScale * timeOffset); + initDTS = Math.min(initDTS, videoSamples[0].dts - inputTimeScale * timeOffset); + this.observer.trigger(_events2.default.INIT_PTS_FOUND, { initPTS: initPTS }); + } + } + + if (Object.keys(tracks).length) { + observer.trigger(_events2.default.FRAG_PARSING_INIT_SEGMENT, data); + this.ISGenerated = true; + if (computePTSDTS) { + this._initPTS = initPTS; + this._initDTS = initDTS; + } + } else { + observer.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MEDIA_ERROR, details: _errors.ErrorDetails.FRAG_PARSING_ERROR, fatal: false, reason: 'no audio/video samples found' }); + } + } + }, { + key: 'remuxVideo', + value: function remuxVideo(track, timeOffset, contiguous, audioTrackLength, accurateTimeOffset) { + var offset = 8, + timeScale = track.timescale, + mp4SampleDuration, + mdat, + moof, + firstPTS, + firstDTS, + nextDTS, + lastPTS, + lastDTS, + inputSamples = track.samples, + outputSamples = [], + nbSamples = inputSamples.length, + ptsNormalize = this._PTSNormalize, + initDTS = this._initDTS; + + // for (let i = 0; i < track.samples.length; i++) { + // let avcSample = track.samples[i]; + // let units = avcSample.units; + // let unitsString = ''; + // for (let j = 0; j < units.length ; j++) { + // unitsString += units[j].type + ','; + // if (units[j].data.length < 500) { + // unitsString += Hex.hexDump(units[j].data); + // } + // } + // logger.log(avcSample.pts + '/' + avcSample.dts + ',' + unitsString + avcSample.units.length); + // } + + // if parsed fragment is contiguous with last one, let's use last DTS value as reference + var nextAvcDts = this.nextAvcDts; + + var isSafari = this.isSafari; + + // Safari does not like overlapping DTS on consecutive fragments. let's use nextAvcDts to overcome this if fragments are consecutive + if (isSafari) { + // also consider consecutive fragments as being contiguous (even if a level switch occurs), + // for sake of clarity: + // consecutive fragments are frags with + // - less than 100ms gaps between new time offset (if accurate) and next expected PTS OR + // - less than 200 ms PTS gaps (timeScale/5) + contiguous |= inputSamples.length && nextAvcDts && (accurateTimeOffset && Math.abs(timeOffset - nextAvcDts / timeScale) < 0.1 || Math.abs(inputSamples[0].pts - nextAvcDts - initDTS) < timeScale / 5); + } + + if (!contiguous) { + // if not contiguous, let's use target timeOffset + nextAvcDts = timeOffset * timeScale; + } + + // PTS is coded on 33bits, and can loop from -2^32 to 2^32 + // ptsNormalize will make PTS/DTS value monotonic, we use last known DTS value as reference value + inputSamples.forEach(function (sample) { + sample.pts = ptsNormalize(sample.pts - initDTS, nextAvcDts); + sample.dts = ptsNormalize(sample.dts - initDTS, nextAvcDts); + }); + + // sort video samples by DTS then PTS then demux id order + inputSamples.sort(function (a, b) { + var deltadts = a.dts - b.dts; + var deltapts = a.pts - b.pts; + return deltadts ? deltadts : deltapts ? deltapts : a.id - b.id; + }); + + // handle broken streams with PTS < DTS, tolerance up 200ms (18000 in 90kHz timescale) + var PTSDTSshift = inputSamples.reduce(function (prev, curr) { + return Math.max(Math.min(prev, curr.pts - curr.dts), -18000); + }, 0); + if (PTSDTSshift < 0) { + _logger.logger.warn('PTS < DTS detected in video samples, shifting DTS by ' + Math.round(PTSDTSshift / 90) + ' ms to overcome this issue'); + for (var i = 0; i < inputSamples.length; i++) { + inputSamples[i].dts += PTSDTSshift; + } + } + + // compute first DTS and last DTS, normalize them against reference value + var sample = inputSamples[0]; + firstDTS = Math.max(sample.dts, 0); + firstPTS = Math.max(sample.pts, 0); + + // check timestamp continuity accross consecutive fragments (this is to remove inter-fragment gap/hole) + var delta = Math.round((firstDTS - nextAvcDts) / 90); + // if fragment are contiguous, detect hole/overlapping between fragments + if (contiguous) { + if (delta) { + if (delta > 1) { + _logger.logger.log('AVC:' + delta + ' ms hole between fragments detected,filling it'); + } else if (delta < -1) { + _logger.logger.log('AVC:' + -delta + ' ms overlapping between fragments detected'); + } + // remove hole/gap : set DTS to next expected DTS + firstDTS = nextAvcDts; + inputSamples[0].dts = firstDTS; + // offset PTS as well, ensure that PTS is smaller or equal than new DTS + firstPTS = Math.max(firstPTS - delta, nextAvcDts); + inputSamples[0].pts = firstPTS; + _logger.logger.log('Video/PTS/DTS adjusted: ' + Math.round(firstPTS / 90) + '/' + Math.round(firstDTS / 90) + ',delta:' + delta + ' ms'); + } + } + nextDTS = firstDTS; + + // compute lastPTS/lastDTS + sample = inputSamples[inputSamples.length - 1]; + lastDTS = Math.max(sample.dts, 0); + lastPTS = Math.max(sample.pts, 0, lastDTS); + + // on Safari let's signal the same sample duration for all samples + // sample duration (as expected by trun MP4 boxes), should be the delta between sample DTS + // set this constant duration as being the avg delta between consecutive DTS. + if (isSafari) { + mp4SampleDuration = Math.round((lastDTS - firstDTS) / (inputSamples.length - 1)); + } + + var nbNalu = 0, + naluLen = 0; + for (var _i = 0; _i < nbSamples; _i++) { + // compute total/avc sample length and nb of NAL units + var _sample = inputSamples[_i], + units = _sample.units, + nbUnits = units.length, + sampleLen = 0; + for (var j = 0; j < nbUnits; j++) { + sampleLen += units[j].data.length; + } + naluLen += sampleLen; + nbNalu += nbUnits; + _sample.length = sampleLen; + + // normalize PTS/DTS + if (isSafari) { + // sample DTS is computed using a constant decoding offset (mp4SampleDuration) between samples + _sample.dts = firstDTS + _i * mp4SampleDuration; + } else { + // ensure sample monotonic DTS + _sample.dts = Math.max(_sample.dts, firstDTS); + } + // ensure that computed value is greater or equal than sample DTS + _sample.pts = Math.max(_sample.pts, _sample.dts); + } + + /* concatenate the video data and construct the mdat in place + (need 8 more bytes to fill length and mpdat type) */ + var mdatSize = naluLen + 4 * nbNalu + 8; + try { + mdat = new Uint8Array(mdatSize); + } catch (err) { + this.observer.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MUX_ERROR, details: _errors.ErrorDetails.REMUX_ALLOC_ERROR, fatal: false, bytes: mdatSize, reason: 'fail allocating video mdat ' + mdatSize }); + return; + } + var view = new DataView(mdat.buffer); + view.setUint32(0, mdatSize); + mdat.set(_mp4Generator2.default.types.mdat, 4); + + for (var _i2 = 0; _i2 < nbSamples; _i2++) { + var avcSample = inputSamples[_i2], + avcSampleUnits = avcSample.units, + mp4SampleLength = 0, + compositionTimeOffset = void 0; + // convert NALU bitstream to MP4 format (prepend NALU with size field) + for (var _j = 0, _nbUnits = avcSampleUnits.length; _j < _nbUnits; _j++) { + var unit = avcSampleUnits[_j], + unitData = unit.data, + unitDataLen = unit.data.byteLength; + view.setUint32(offset, unitDataLen); + offset += 4; + mdat.set(unitData, offset); + offset += unitDataLen; + mp4SampleLength += 4 + unitDataLen; + } + + if (!isSafari) { + // expected sample duration is the Decoding Timestamp diff of consecutive samples + if (_i2 < nbSamples - 1) { + mp4SampleDuration = inputSamples[_i2 + 1].dts - avcSample.dts; + } else { + var config = this.config, + lastFrameDuration = avcSample.dts - inputSamples[_i2 > 0 ? _i2 - 1 : _i2].dts; + if (config.stretchShortVideoTrack) { + // In some cases, a segment's audio track duration may exceed the video track duration. + // Since we've already remuxed audio, and we know how long the audio track is, we look to + // see if the delta to the next segment is longer than the minimum of maxBufferHole and + // maxSeekHole. If so, playback would potentially get stuck, so we artificially inflate + // the duration of the last frame to minimize any potential gap between segments. + var maxBufferHole = config.maxBufferHole, + maxSeekHole = config.maxSeekHole, + gapTolerance = Math.floor(Math.min(maxBufferHole, maxSeekHole) * timeScale), + deltaToFrameEnd = (audioTrackLength ? firstPTS + audioTrackLength * timeScale : this.nextAudioPts) - avcSample.pts; + if (deltaToFrameEnd > gapTolerance) { + // We subtract lastFrameDuration from deltaToFrameEnd to try to prevent any video + // frame overlap. maxBufferHole/maxSeekHole should be >> lastFrameDuration anyway. + mp4SampleDuration = deltaToFrameEnd - lastFrameDuration; + if (mp4SampleDuration < 0) { + mp4SampleDuration = lastFrameDuration; + } + _logger.logger.log('It is approximately ' + deltaToFrameEnd / 90 + ' ms to the next segment; using duration ' + mp4SampleDuration / 90 + ' ms for the last video frame.'); + } else { + mp4SampleDuration = lastFrameDuration; + } + } else { + mp4SampleDuration = lastFrameDuration; + } + } + compositionTimeOffset = Math.round(avcSample.pts - avcSample.dts); + } else { + compositionTimeOffset = Math.max(0, mp4SampleDuration * Math.round((avcSample.pts - avcSample.dts) / mp4SampleDuration)); + } + + //console.log('PTS/DTS/initDTS/normPTS/normDTS/relative PTS : ${avcSample.pts}/${avcSample.dts}/${initDTS}/${ptsnorm}/${dtsnorm}/${(avcSample.pts/4294967296).toFixed(3)}'); + outputSamples.push({ + size: mp4SampleLength, + // constant duration + duration: mp4SampleDuration, + cts: compositionTimeOffset, + flags: { + isLeading: 0, + isDependedOn: 0, + hasRedundancy: 0, + degradPrio: 0, + dependsOn: avcSample.key ? 2 : 1, + isNonSync: avcSample.key ? 0 : 1 + } + }); + } + // next AVC sample DTS should be equal to last sample DTS + last sample duration (in PES timescale) + this.nextAvcDts = lastDTS + mp4SampleDuration; + var dropped = track.dropped; + track.len = 0; + track.nbNalu = 0; + track.dropped = 0; + if (outputSamples.length && navigator.userAgent.toLowerCase().indexOf('chrome') > -1) { + var flags = outputSamples[0].flags; + // chrome workaround, mark first sample as being a Random Access Point to avoid sourcebuffer append issue + // https://code.google.com/p/chromium/issues/detail?id=229412 + flags.dependsOn = 2; + flags.isNonSync = 0; + } + track.samples = outputSamples; + moof = _mp4Generator2.default.moof(track.sequenceNumber++, firstDTS, track); + track.samples = []; + + var data = { + data1: moof, + data2: mdat, + startPTS: firstPTS / timeScale, + endPTS: (lastPTS + mp4SampleDuration) / timeScale, + startDTS: firstDTS / timeScale, + endDTS: this.nextAvcDts / timeScale, + type: 'video', + nb: outputSamples.length, + dropped: dropped + }; + this.observer.trigger(_events2.default.FRAG_PARSING_DATA, data); + return data; + } + }, { + key: 'remuxAudio', + value: function remuxAudio(track, timeOffset, contiguous, accurateTimeOffset) { + var inputTimeScale = track.inputTimeScale, + mp4timeScale = track.timescale, + scaleFactor = inputTimeScale / mp4timeScale, + mp4SampleDuration = track.isAAC ? 1024 : 1152, + inputSampleDuration = mp4SampleDuration * scaleFactor, + ptsNormalize = this._PTSNormalize, + initDTS = this._initDTS, + rawMPEG = !track.isAAC && this.typeSupported.mpeg; + + var offset, + mp4Sample, + fillFrame, + mdat, + moof, + firstPTS, + lastPTS, + inputSamples = track.samples, + outputSamples = [], + nextAudioPts = this.nextAudioPts; + + // for audio samples, also consider consecutive fragments as being contiguous (even if a level switch occurs), + // for sake of clarity: + // consecutive fragments are frags with + // - less than 100ms gaps between new time offset (if accurate) and next expected PTS OR + // - less than 20 audio frames distance + // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1) + // this helps ensuring audio continuity + // and this also avoids audio glitches/cut when switching quality, or reporting wrong duration on first audio frame + contiguous |= inputSamples.length && nextAudioPts && (accurateTimeOffset && Math.abs(timeOffset - nextAudioPts / inputTimeScale) < 0.1 || Math.abs(inputSamples[0].pts - nextAudioPts - initDTS) < 20 * inputSampleDuration); + + if (!contiguous) { + // if fragments are not contiguous, let's use timeOffset to compute next Audio PTS + nextAudioPts = timeOffset * inputTimeScale; + } + + // compute normalized PTS + inputSamples.forEach(function (sample) { + sample.pts = sample.dts = ptsNormalize(sample.pts - initDTS, nextAudioPts); + }); + + // sort based on normalized PTS (this is to avoid sorting issues in case timestamp + // reloop in the middle of our samples array) + inputSamples.sort(function (a, b) { + return a.pts - b.pts; + }); + + // If the audio track is missing samples, the frames seem to get "left-shifted" within the + // resulting mp4 segment, causing sync issues and leaving gaps at the end of the audio segment. + // In an effort to prevent this from happening, we inject frames here where there are gaps. + // When possible, we inject a silent frame; when that's not possible, we duplicate the last + // frame. + + // only inject/drop audio frames in case time offset is accurate + if (accurateTimeOffset && track.isAAC) { + for (var i = 0, nextPts = nextAudioPts; i < inputSamples.length;) { + // First, let's see how far off this frame is from where we expect it to be + var sample = inputSamples[i], + delta; + var pts = sample.pts; + delta = pts - nextPts; + + var duration = Math.abs(1000 * delta / inputTimeScale); + + // If we're overlapping by more than a duration, drop this sample + if (delta <= -inputSampleDuration) { + _logger.logger.warn('Dropping 1 audio frame @ ' + (nextPts / inputTimeScale).toFixed(3) + 's due to ' + duration + ' ms overlap.'); + inputSamples.splice(i, 1); + track.len -= sample.unit.length; + // Don't touch nextPtsNorm or i + } + + // Insert missing frames if: + // 1: We're more than one frame away + // 2: Not more than MAX_SILENT_FRAME_DURATION away + // 3: currentTime (aka nextPtsNorm) is not 0 + else if (delta >= inputSampleDuration && duration < MAX_SILENT_FRAME_DURATION && nextPts) { + var missing = Math.round(delta / inputSampleDuration); + _logger.logger.warn('Injecting ' + missing + ' audio frame @ ' + (nextPts / inputTimeScale).toFixed(3) + 's due to ' + Math.round(1000 * delta / inputTimeScale) + ' ms gap.'); + for (var j = 0; j < missing; j++) { + var newStamp = Math.max(nextPts, 0); + fillFrame = _aac2.default.getSilentFrame(track.manifestCodec || track.codec, track.channelCount); + if (!fillFrame) { + _logger.logger.log('Unable to get silent frame for given audio codec; duplicating last frame instead.'); + fillFrame = sample.unit.subarray(); + } + inputSamples.splice(i, 0, { unit: fillFrame, pts: newStamp, dts: newStamp }); + track.len += fillFrame.length; + nextPts += inputSampleDuration; + i++; + } + + // Adjust sample to next expected pts + sample.pts = sample.dts = nextPts; + nextPts += inputSampleDuration; + i++; + } else { + // Otherwise, just adjust pts + if (Math.abs(delta) > 0.1 * inputSampleDuration) { + //logger.log(`Invalid frame delta ${Math.round(delta + inputSampleDuration)} at PTS ${Math.round(pts / 90)} (should be ${Math.round(inputSampleDuration)}).`); + } + sample.pts = sample.dts = nextPts; + nextPts += inputSampleDuration; + i++; + } + } + } + + for (var _j2 = 0, _nbSamples = inputSamples.length; _j2 < _nbSamples; _j2++) { + var audioSample = inputSamples[_j2]; + var unit = audioSample.unit; + var _pts = audioSample.pts; + //logger.log(`Audio/PTS:${Math.round(pts/90)}`); + // if not first sample + if (lastPTS !== undefined) { + mp4Sample.duration = Math.round((_pts - lastPTS) / scaleFactor); + } else { + var _delta = Math.round(1000 * (_pts - nextAudioPts) / inputTimeScale), + numMissingFrames = 0; + // if fragment are contiguous, detect hole/overlapping between fragments + // contiguous fragments are consecutive fragments from same quality level (same level, new SN = old SN + 1) + if (contiguous && track.isAAC) { + // log delta + if (_delta) { + if (_delta > 0 && _delta < MAX_SILENT_FRAME_DURATION) { + numMissingFrames = Math.round((_pts - nextAudioPts) / inputSampleDuration); + _logger.logger.log(_delta + ' ms hole between AAC samples detected,filling it'); + if (numMissingFrames > 0) { + fillFrame = _aac2.default.getSilentFrame(track.manifestCodec || track.codec, track.channelCount); + if (!fillFrame) { + fillFrame = unit.subarray(); + } + track.len += numMissingFrames * fillFrame.length; + } + // if we have frame overlap, overlapping for more than half a frame duraion + } else if (_delta < -12) { + // drop overlapping audio frames... browser will deal with it + _logger.logger.log('drop overlapping AAC sample, expected/parsed/delta:' + (nextAudioPts / inputTimeScale).toFixed(3) + 's/' + (_pts / inputTimeScale).toFixed(3) + 's/' + -_delta + 'ms'); + track.len -= unit.byteLength; + continue; + } + // set PTS/DTS to expected PTS/DTS + _pts = nextAudioPts; + } + } + // remember first PTS of our audioSamples, ensure value is positive + firstPTS = Math.max(0, _pts); + if (track.len > 0) { + /* concatenate the audio data and construct the mdat in place + (need 8 more bytes to fill length and mdat type) */ + var mdatSize = rawMPEG ? track.len : track.len + 8; + offset = rawMPEG ? 0 : 8; + try { + mdat = new Uint8Array(mdatSize); + } catch (err) { + this.observer.trigger(_events2.default.ERROR, { type: _errors.ErrorTypes.MUX_ERROR, details: _errors.ErrorDetails.REMUX_ALLOC_ERROR, fatal: false, bytes: mdatSize, reason: 'fail allocating audio mdat ' + mdatSize }); + return; + } + if (!rawMPEG) { + var view = new DataView(mdat.buffer); + view.setUint32(0, mdatSize); + mdat.set(_mp4Generator2.default.types.mdat, 4); + } + } else { + // no audio samples + return; + } + for (var _i3 = 0; _i3 < numMissingFrames; _i3++) { + fillFrame = _aac2.default.getSilentFrame(track.manifestCodec || track.codec, track.channelCount); + if (!fillFrame) { + _logger.logger.log('Unable to get silent frame for given audio codec; duplicating this frame instead.'); + fillFrame = unit.subarray(); + } + mdat.set(fillFrame, offset); + offset += fillFrame.byteLength; + mp4Sample = { + size: fillFrame.byteLength, + cts: 0, + duration: 1024, + flags: { + isLeading: 0, + isDependedOn: 0, + hasRedundancy: 0, + degradPrio: 0, + dependsOn: 1 + } + }; + outputSamples.push(mp4Sample); + } + } + mdat.set(unit, offset); + var unitLen = unit.byteLength; + offset += unitLen; + //console.log('PTS/DTS/initDTS/normPTS/normDTS/relative PTS : ${audioSample.pts}/${audioSample.dts}/${initDTS}/${ptsnorm}/${dtsnorm}/${(audioSample.pts/4294967296).toFixed(3)}'); + mp4Sample = { + size: unitLen, + cts: 0, + duration: 0, + flags: { + isLeading: 0, + isDependedOn: 0, + hasRedundancy: 0, + degradPrio: 0, + dependsOn: 1 + } + }; + outputSamples.push(mp4Sample); + lastPTS = _pts; + } + var lastSampleDuration = 0; + var nbSamples = outputSamples.length; + //set last sample duration as being identical to previous sample + if (nbSamples >= 2) { + lastSampleDuration = outputSamples[nbSamples - 2].duration; + mp4Sample.duration = lastSampleDuration; + } + if (nbSamples) { + // next audio sample PTS should be equal to last sample PTS + duration + this.nextAudioPts = nextAudioPts = lastPTS + scaleFactor * lastSampleDuration; + //logger.log('Audio/PTS/PTSend:' + audioSample.pts.toFixed(0) + '/' + this.nextAacDts.toFixed(0)); + track.len = 0; + track.samples = outputSamples; + if (rawMPEG) { + moof = new Uint8Array(); + } else { + moof = _mp4Generator2.default.moof(track.sequenceNumber++, firstPTS / scaleFactor, track); + } + track.samples = []; + var start = firstPTS / inputTimeScale; + var end = nextAudioPts / inputTimeScale; + var audioData = { + data1: moof, + data2: mdat, + startPTS: start, + endPTS: end, + startDTS: start, + endDTS: end, + type: 'audio', + nb: nbSamples + }; + this.observer.trigger(_events2.default.FRAG_PARSING_DATA, audioData); + return audioData; + } + return null; + } + }, { + key: 'remuxEmptyAudio', + value: function remuxEmptyAudio(track, timeOffset, contiguous, videoData) { + var inputTimeScale = track.inputTimeScale, + mp4timeScale = track.samplerate ? track.samplerate : inputTimeScale, + scaleFactor = inputTimeScale / mp4timeScale, + nextAudioPts = this.nextAudioPts, + + + // sync with video's timestamp + startDTS = (nextAudioPts !== undefined ? nextAudioPts : videoData.startDTS * inputTimeScale) + this._initDTS, + endDTS = videoData.endDTS * inputTimeScale + this._initDTS, + + // one sample's duration value + sampleDuration = 1024, + frameDuration = scaleFactor * sampleDuration, + + + // samples count of this segment's duration + nbSamples = Math.ceil((endDTS - startDTS) / frameDuration), + + + // silent frame + silentFrame = _aac2.default.getSilentFrame(track.manifestCodec || track.codec, track.channelCount); + + _logger.logger.warn('remux empty Audio'); + // Can't remux if we can't generate a silent frame... + if (!silentFrame) { + _logger.logger.trace('Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec!'); + return; + } + + var samples = []; + for (var i = 0; i < nbSamples; i++) { + var stamp = startDTS + i * frameDuration; + samples.push({ unit: silentFrame, pts: stamp, dts: stamp }); + track.len += silentFrame.length; + } + track.samples = samples; + + this.remuxAudio(track, timeOffset, contiguous); + } + }, { + key: 'remuxID3', + value: function remuxID3(track, timeOffset) { + var length = track.samples.length, + sample; + var inputTimeScale = track.inputTimeScale; + var initPTS = this._initPTS; + var initDTS = this._initDTS; + // consume samples + if (length) { + for (var index = 0; index < length; index++) { + sample = track.samples[index]; + // setting id3 pts, dts to relative time + // using this._initPTS and this._initDTS to calculate relative time + sample.pts = (sample.pts - initPTS) / inputTimeScale; + sample.dts = (sample.dts - initDTS) / inputTimeScale; + } + this.observer.trigger(_events2.default.FRAG_PARSING_METADATA, { + samples: track.samples + }); + } + + track.samples = []; + timeOffset = timeOffset; + } + }, { + key: 'remuxText', + value: function remuxText(track, timeOffset) { + track.samples.sort(function (a, b) { + return a.pts - b.pts; + }); + + var length = track.samples.length, + sample; + var inputTimeScale = track.inputTimeScale; + var initPTS = this._initPTS; + // consume samples + if (length) { + for (var index = 0; index < length; index++) { + sample = track.samples[index]; + // setting text pts, dts to relative time + // using this._initPTS and this._initDTS to calculate relative time + sample.pts = (sample.pts - initPTS) / inputTimeScale; + } + this.observer.trigger(_events2.default.FRAG_PARSING_USERDATA, { + samples: track.samples + }); + } + + track.samples = []; + timeOffset = timeOffset; + } + }, { + key: '_PTSNormalize', + value: function _PTSNormalize(value, reference) { + var offset; + if (reference === undefined) { + return value; + } + if (reference < value) { + // - 2^33 + offset = -8589934592; + } else { + // + 2^33 + offset = 8589934592; + } + /* PTS is 33bit (from 0 to 2^33 -1) + if diff between value and reference is bigger than half of the amplitude (2^32) then it means that + PTS looping occured. fill the gap */ + while (Math.abs(value - reference) > 4294967296) { + value += offset; + } + return value; + } + }]); + + return MP4Remuxer; +}(); + +exports.default = MP4Remuxer; + +},{"33":33,"35":35,"36":36,"44":44,"53":53}],46:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** + * passthrough remuxer + */ + + +var _events = _dereq_(35); + +var _events2 = _interopRequireDefault(_events); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var PassThroughRemuxer = function () { + function PassThroughRemuxer(observer) { + _classCallCheck(this, PassThroughRemuxer); + + this.observer = observer; + } + + _createClass(PassThroughRemuxer, [{ + key: 'destroy', + value: function destroy() {} + }, { + key: 'resetTimeStamp', + value: function resetTimeStamp() {} + }, { + key: 'resetInitSegment', + value: function resetInitSegment() {} + }, { + key: 'remux', + value: function remux(audioTrack, videoTrack, id3Track, textTrack, timeOffset, contiguous, accurateTimeOffset, rawData) { + var observer = this.observer; + var streamType = ''; + if (audioTrack) { + streamType += 'audio'; + } + if (videoTrack) { + streamType += 'video'; + } + observer.trigger(_events2.default.FRAG_PARSING_DATA, { + data1: rawData, + startPTS: timeOffset, + startDTS: timeOffset, + type: streamType, + nb: 1, + dropped: 0 + }); + //notify end of parsing + observer.trigger(_events2.default.FRAG_PARSED); + } + }]); + + return PassThroughRemuxer; +}(); + +exports.default = PassThroughRemuxer; + +},{"35":35}],47:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var DECIMAL_RESOLUTION_REGEX = /^(\d+)x(\d+)$/; +var ATTR_LIST_REGEX = /\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g; + +// adapted from https://github.com/kanongil/node-m3u8parse/blob/master/attrlist.js + +var AttrList = function () { + function AttrList(attrs) { + _classCallCheck(this, AttrList); + + if (typeof attrs === 'string') { + attrs = AttrList.parseAttrList(attrs); + } + for (var attr in attrs) { + if (attrs.hasOwnProperty(attr)) { + this[attr] = attrs[attr]; + } + } + } + + _createClass(AttrList, [{ + key: 'decimalInteger', + value: function decimalInteger(attrName) { + var intValue = parseInt(this[attrName], 10); + if (intValue > Number.MAX_SAFE_INTEGER) { + return Infinity; + } + return intValue; + } + }, { + key: 'hexadecimalInteger', + value: function hexadecimalInteger(attrName) { + if (this[attrName]) { + var stringValue = (this[attrName] || '0x').slice(2); + stringValue = (stringValue.length & 1 ? '0' : '') + stringValue; + + var value = new Uint8Array(stringValue.length / 2); + for (var i = 0; i < stringValue.length / 2; i++) { + value[i] = parseInt(stringValue.slice(i * 2, i * 2 + 2), 16); + } + return value; + } else { + return null; + } + } + }, { + key: 'hexadecimalIntegerAsNumber', + value: function hexadecimalIntegerAsNumber(attrName) { + var intValue = parseInt(this[attrName], 16); + if (intValue > Number.MAX_SAFE_INTEGER) { + return Infinity; + } + return intValue; + } + }, { + key: 'decimalFloatingPoint', + value: function decimalFloatingPoint(attrName) { + return parseFloat(this[attrName]); + } + }, { + key: 'enumeratedString', + value: function enumeratedString(attrName) { + return this[attrName]; + } + }, { + key: 'decimalResolution', + value: function decimalResolution(attrName) { + var res = DECIMAL_RESOLUTION_REGEX.exec(this[attrName]); + if (res === null) { + return undefined; + } + return { + width: parseInt(res[1], 10), + height: parseInt(res[2], 10) + }; + } + }], [{ + key: 'parseAttrList', + value: function parseAttrList(input) { + var match, + attrs = {}; + ATTR_LIST_REGEX.lastIndex = 0; + while ((match = ATTR_LIST_REGEX.exec(input)) !== null) { + var value = match[2], + quote = '"'; + + if (value.indexOf(quote) === 0 && value.lastIndexOf(quote) === value.length - 1) { + value = value.slice(1, -1); + } + attrs[match[1]] = value; + } + return attrs; + } + }]); + + return AttrList; +}(); + +exports.default = AttrList; + +},{}],48:[function(_dereq_,module,exports){ +"use strict"; + +var BinarySearch = { + /** + * Searches for an item in an array which matches a certain condition. + * This requires the condition to only match one item in the array, + * and for the array to be ordered. + * + * @param {Array} list The array to search. + * @param {Function} comparisonFunction + * Called and provided a candidate item as the first argument. + * Should return: + * > -1 if the item should be located at a lower index than the provided item. + * > 1 if the item should be located at a higher index than the provided item. + * > 0 if the item is the item you're looking for. + * + * @return {*} The object if it is found or null otherwise. + */ + search: function search(list, comparisonFunction) { + var minIndex = 0; + var maxIndex = list.length - 1; + var currentIndex = null; + var currentElement = null; + + while (minIndex <= maxIndex) { + currentIndex = (minIndex + maxIndex) / 2 | 0; + currentElement = list[currentIndex]; + + var comparisonResult = comparisonFunction(currentElement); + if (comparisonResult > 0) { + minIndex = currentIndex + 1; + } else if (comparisonResult < 0) { + maxIndex = currentIndex - 1; + } else { + return currentElement; + } + } + + return null; + } +}; + +module.exports = BinarySearch; + +},{}],49:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/** + * + * This code was ported from the dash.js project at: + * https://github.com/Dash-Industry-Forum/dash.js/blob/development/externals/cea608-parser.js + * https://github.com/Dash-Industry-Forum/dash.js/commit/8269b26a761e0853bb21d78780ed945144ecdd4d#diff-71bc295a2d6b6b7093a1d3290d53a4b2 + * + * The original copyright appears below: + * + * The copyright in this software is being made available under the BSD License, + * included below. This software may be subject to other third party and contributor + * rights, including patent rights, and no such rights are granted under this license. + * + * Copyright (c) 2015-2016, DASH Industry Forum. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * 2. Neither the name of Dash Industry Forum nor the names of its + * contributors may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ +/** + * Exceptions from regular ASCII. CodePoints are mapped to UTF-16 codes + */ + +var specialCea608CharsCodes = { + 0x2a: 0xe1, // lowercase a, acute accent + 0x5c: 0xe9, // lowercase e, acute accent + 0x5e: 0xed, // lowercase i, acute accent + 0x5f: 0xf3, // lowercase o, acute accent + 0x60: 0xfa, // lowercase u, acute accent + 0x7b: 0xe7, // lowercase c with cedilla + 0x7c: 0xf7, // division symbol + 0x7d: 0xd1, // uppercase N tilde + 0x7e: 0xf1, // lowercase n tilde + 0x7f: 0x2588, // Full block + // THIS BLOCK INCLUDES THE 16 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS + // THAT COME FROM HI BYTE=0x11 AND LOW BETWEEN 0x30 AND 0x3F + // THIS MEANS THAT \x50 MUST BE ADDED TO THE VALUES + 0x80: 0xae, // Registered symbol (R) + 0x81: 0xb0, // degree sign + 0x82: 0xbd, // 1/2 symbol + 0x83: 0xbf, // Inverted (open) question mark + 0x84: 0x2122, // Trademark symbol (TM) + 0x85: 0xa2, // Cents symbol + 0x86: 0xa3, // Pounds sterling + 0x87: 0x266a, // Music 8'th note + 0x88: 0xe0, // lowercase a, grave accent + 0x89: 0x20, // transparent space (regular) + 0x8a: 0xe8, // lowercase e, grave accent + 0x8b: 0xe2, // lowercase a, circumflex accent + 0x8c: 0xea, // lowercase e, circumflex accent + 0x8d: 0xee, // lowercase i, circumflex accent + 0x8e: 0xf4, // lowercase o, circumflex accent + 0x8f: 0xfb, // lowercase u, circumflex accent + // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS + // THAT COME FROM HI BYTE=0x12 AND LOW BETWEEN 0x20 AND 0x3F + 0x90: 0xc1, // capital letter A with acute + 0x91: 0xc9, // capital letter E with acute + 0x92: 0xd3, // capital letter O with acute + 0x93: 0xda, // capital letter U with acute + 0x94: 0xdc, // capital letter U with diaresis + 0x95: 0xfc, // lowercase letter U with diaeresis + 0x96: 0x2018, // opening single quote + 0x97: 0xa1, // inverted exclamation mark + 0x98: 0x2a, // asterisk + 0x99: 0x2019, // closing single quote + 0x9a: 0x2501, // box drawings heavy horizontal + 0x9b: 0xa9, // copyright sign + 0x9c: 0x2120, // Service mark + 0x9d: 0x2022, // (round) bullet + 0x9e: 0x201c, // Left double quotation mark + 0x9f: 0x201d, // Right double quotation mark + 0xa0: 0xc0, // uppercase A, grave accent + 0xa1: 0xc2, // uppercase A, circumflex + 0xa2: 0xc7, // uppercase C with cedilla + 0xa3: 0xc8, // uppercase E, grave accent + 0xa4: 0xca, // uppercase E, circumflex + 0xa5: 0xcb, // capital letter E with diaresis + 0xa6: 0xeb, // lowercase letter e with diaresis + 0xa7: 0xce, // uppercase I, circumflex + 0xa8: 0xcf, // uppercase I, with diaresis + 0xa9: 0xef, // lowercase i, with diaresis + 0xaa: 0xd4, // uppercase O, circumflex + 0xab: 0xd9, // uppercase U, grave accent + 0xac: 0xf9, // lowercase u, grave accent + 0xad: 0xdb, // uppercase U, circumflex + 0xae: 0xab, // left-pointing double angle quotation mark + 0xaf: 0xbb, // right-pointing double angle quotation mark + // THIS BLOCK INCLUDES THE 32 EXTENDED (TWO-BYTE) LINE 21 CHARACTERS + // THAT COME FROM HI BYTE=0x13 AND LOW BETWEEN 0x20 AND 0x3F + 0xb0: 0xc3, // Uppercase A, tilde + 0xb1: 0xe3, // Lowercase a, tilde + 0xb2: 0xcd, // Uppercase I, acute accent + 0xb3: 0xcc, // Uppercase I, grave accent + 0xb4: 0xec, // Lowercase i, grave accent + 0xb5: 0xd2, // Uppercase O, grave accent + 0xb6: 0xf2, // Lowercase o, grave accent + 0xb7: 0xd5, // Uppercase O, tilde + 0xb8: 0xf5, // Lowercase o, tilde + 0xb9: 0x7b, // Open curly brace + 0xba: 0x7d, // Closing curly brace + 0xbb: 0x5c, // Backslash + 0xbc: 0x5e, // Caret + 0xbd: 0x5f, // Underscore + 0xbe: 0x7c, // Pipe (vertical line) + 0xbf: 0x223c, // Tilde operator + 0xc0: 0xc4, // Uppercase A, umlaut + 0xc1: 0xe4, // Lowercase A, umlaut + 0xc2: 0xd6, // Uppercase O, umlaut + 0xc3: 0xf6, // Lowercase o, umlaut + 0xc4: 0xdf, // Esszett (sharp S) + 0xc5: 0xa5, // Yen symbol + 0xc6: 0xa4, // Generic currency sign + 0xc7: 0x2503, // Box drawings heavy vertical + 0xc8: 0xc5, // Uppercase A, ring + 0xc9: 0xe5, // Lowercase A, ring + 0xca: 0xd8, // Uppercase O, stroke + 0xcb: 0xf8, // Lowercase o, strok + 0xcc: 0x250f, // Box drawings heavy down and right + 0xcd: 0x2513, // Box drawings heavy down and left + 0xce: 0x2517, // Box drawings heavy up and right + 0xcf: 0x251b // Box drawings heavy up and left +}; + +/** + * Utils + */ +var getCharForByte = function getCharForByte(byte) { + var charCode = byte; + if (specialCea608CharsCodes.hasOwnProperty(byte)) { + charCode = specialCea608CharsCodes[byte]; + } + return String.fromCharCode(charCode); +}; + +var NR_ROWS = 15, + NR_COLS = 100; +// Tables to look up row from PAC data +var rowsLowCh1 = { 0x11: 1, 0x12: 3, 0x15: 5, 0x16: 7, 0x17: 9, 0x10: 11, 0x13: 12, 0x14: 14 }; +var rowsHighCh1 = { 0x11: 2, 0x12: 4, 0x15: 6, 0x16: 8, 0x17: 10, 0x13: 13, 0x14: 15 }; +var rowsLowCh2 = { 0x19: 1, 0x1A: 3, 0x1D: 5, 0x1E: 7, 0x1F: 9, 0x18: 11, 0x1B: 12, 0x1C: 14 }; +var rowsHighCh2 = { 0x19: 2, 0x1A: 4, 0x1D: 6, 0x1E: 8, 0x1F: 10, 0x1B: 13, 0x1C: 15 }; + +var backgroundColors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'black', 'transparent']; + +/** + * Simple logger class to be able to write with time-stamps and filter on level. + */ +var logger = { + verboseFilter: { 'DATA': 3, 'DEBUG': 3, 'INFO': 2, 'WARNING': 2, 'TEXT': 1, 'ERROR': 0 }, + time: null, + verboseLevel: 0, // Only write errors + setTime: function setTime(newTime) { + this.time = newTime; + }, + log: function log(severity, msg) { + var minLevel = this.verboseFilter[severity]; + if (this.verboseLevel >= minLevel) { + console.log(this.time + ' [' + severity + '] ' + msg); + } + } +}; + +var numArrayToHexArray = function numArrayToHexArray(numArray) { + var hexArray = []; + for (var j = 0; j < numArray.length; j++) { + hexArray.push(numArray[j].toString(16)); + } + return hexArray; +}; + +var PenState = function () { + function PenState(foreground, underline, italics, background, flash) { + _classCallCheck(this, PenState); + + this.foreground = foreground || 'white'; + this.underline = underline || false; + this.italics = italics || false; + this.background = background || 'black'; + this.flash = flash || false; + } + + _createClass(PenState, [{ + key: 'reset', + value: function reset() { + this.foreground = 'white'; + this.underline = false; + this.italics = false; + this.background = 'black'; + this.flash = false; + } + }, { + key: 'setStyles', + value: function setStyles(styles) { + var attribs = ['foreground', 'underline', 'italics', 'background', 'flash']; + for (var i = 0; i < attribs.length; i++) { + var style = attribs[i]; + if (styles.hasOwnProperty(style)) { + this[style] = styles[style]; + } + } + } + }, { + key: 'isDefault', + value: function isDefault() { + return this.foreground === 'white' && !this.underline && !this.italics && this.background === 'black' && !this.flash; + } + }, { + key: 'equals', + value: function equals(other) { + return this.foreground === other.foreground && this.underline === other.underline && this.italics === other.italics && this.background === other.background && this.flash === other.flash; + } + }, { + key: 'copy', + value: function copy(newPenState) { + this.foreground = newPenState.foreground; + this.underline = newPenState.underline; + this.italics = newPenState.italics; + this.background = newPenState.background; + this.flash = newPenState.flash; + } + }, { + key: 'toString', + value: function toString() { + return 'color=' + this.foreground + ', underline=' + this.underline + ', italics=' + this.italics + ', background=' + this.background + ', flash=' + this.flash; + } + }]); + + return PenState; +}(); + +/** + * Unicode character with styling and background. + * @constructor + */ + + +var StyledUnicodeChar = function () { + function StyledUnicodeChar(uchar, foreground, underline, italics, background, flash) { + _classCallCheck(this, StyledUnicodeChar); + + this.uchar = uchar || ' '; // unicode character + this.penState = new PenState(foreground, underline, italics, background, flash); + } + + _createClass(StyledUnicodeChar, [{ + key: 'reset', + value: function reset() { + this.uchar = ' '; + this.penState.reset(); + } + }, { + key: 'setChar', + value: function setChar(uchar, newPenState) { + this.uchar = uchar; + this.penState.copy(newPenState); + } + }, { + key: 'setPenState', + value: function setPenState(newPenState) { + this.penState.copy(newPenState); + } + }, { + key: 'equals', + value: function equals(other) { + return this.uchar === other.uchar && this.penState.equals(other.penState); + } + }, { + key: 'copy', + value: function copy(newChar) { + this.uchar = newChar.uchar; + this.penState.copy(newChar.penState); + } + }, { + key: 'isEmpty', + value: function isEmpty() { + return this.uchar === ' ' && this.penState.isDefault(); + } + }]); + + return StyledUnicodeChar; +}(); + +/** + * CEA-608 row consisting of NR_COLS instances of StyledUnicodeChar. + * @constructor + */ + + +var Row = function () { + function Row() { + _classCallCheck(this, Row); + + this.chars = []; + for (var i = 0; i < NR_COLS; i++) { + this.chars.push(new StyledUnicodeChar()); + } + this.pos = 0; + this.currPenState = new PenState(); + } + + _createClass(Row, [{ + key: 'equals', + value: function equals(other) { + var equal = true; + for (var i = 0; i < NR_COLS; i++) { + if (!this.chars[i].equals(other.chars[i])) { + equal = false; + break; + } + } + return equal; + } + }, { + key: 'copy', + value: function copy(other) { + for (var i = 0; i < NR_COLS; i++) { + this.chars[i].copy(other.chars[i]); + } + } + }, { + key: 'isEmpty', + value: function isEmpty() { + var empty = true; + for (var i = 0; i < NR_COLS; i++) { + if (!this.chars[i].isEmpty()) { + empty = false; + break; + } + } + return empty; + } + + /** + * Set the cursor to a valid column. + */ + + }, { + key: 'setCursor', + value: function setCursor(absPos) { + if (this.pos !== absPos) { + this.pos = absPos; + } + if (this.pos < 0) { + logger.log('ERROR', 'Negative cursor position ' + this.pos); + this.pos = 0; + } else if (this.pos > NR_COLS) { + logger.log('ERROR', 'Too large cursor position ' + this.pos); + this.pos = NR_COLS; + } + } + + /** + * Move the cursor relative to current position. + */ + + }, { + key: 'moveCursor', + value: function moveCursor(relPos) { + var newPos = this.pos + relPos; + if (relPos > 1) { + for (var i = this.pos + 1; i < newPos + 1; i++) { + this.chars[i].setPenState(this.currPenState); + } + } + this.setCursor(newPos); + } + + /** + * Backspace, move one step back and clear character. + */ + + }, { + key: 'backSpace', + value: function backSpace() { + this.moveCursor(-1); + this.chars[this.pos].setChar(' ', this.currPenState); + } + }, { + key: 'insertChar', + value: function insertChar(byte) { + if (byte >= 0x90) { + //Extended char + this.backSpace(); + } + var char = getCharForByte(byte); + if (this.pos >= NR_COLS) { + logger.log('ERROR', 'Cannot insert ' + byte.toString(16) + ' (' + char + ') at position ' + this.pos + '. Skipping it!'); + return; + } + this.chars[this.pos].setChar(char, this.currPenState); + this.moveCursor(1); + } + }, { + key: 'clearFromPos', + value: function clearFromPos(startPos) { + var i; + for (i = startPos; i < NR_COLS; i++) { + this.chars[i].reset(); + } + } + }, { + key: 'clear', + value: function clear() { + this.clearFromPos(0); + this.pos = 0; + this.currPenState.reset(); + } + }, { + key: 'clearToEndOfRow', + value: function clearToEndOfRow() { + this.clearFromPos(this.pos); + } + }, { + key: 'getTextString', + value: function getTextString() { + var chars = []; + var empty = true; + for (var i = 0; i < NR_COLS; i++) { + var char = this.chars[i].uchar; + if (char !== ' ') { + empty = false; + } + chars.push(char); + } + if (empty) { + return ''; + } else { + return chars.join(''); + } + } + }, { + key: 'setPenStyles', + value: function setPenStyles(styles) { + this.currPenState.setStyles(styles); + var currChar = this.chars[this.pos]; + currChar.setPenState(this.currPenState); + } + }]); + + return Row; +}(); + +/** + * Keep a CEA-608 screen of 32x15 styled characters + * @constructor +*/ + + +var CaptionScreen = function () { + function CaptionScreen() { + _classCallCheck(this, CaptionScreen); + + this.rows = []; + for (var i = 0; i < NR_ROWS; i++) { + this.rows.push(new Row()); // Note that we use zero-based numbering (0-14) + } + this.currRow = NR_ROWS - 1; + this.nrRollUpRows = null; + this.reset(); + } + + _createClass(CaptionScreen, [{ + key: 'reset', + value: function reset() { + for (var i = 0; i < NR_ROWS; i++) { + this.rows[i].clear(); + } + this.currRow = NR_ROWS - 1; + } + }, { + key: 'equals', + value: function equals(other) { + var equal = true; + for (var i = 0; i < NR_ROWS; i++) { + if (!this.rows[i].equals(other.rows[i])) { + equal = false; + break; + } + } + return equal; + } + }, { + key: 'copy', + value: function copy(other) { + for (var i = 0; i < NR_ROWS; i++) { + this.rows[i].copy(other.rows[i]); + } + } + }, { + key: 'isEmpty', + value: function isEmpty() { + var empty = true; + for (var i = 0; i < NR_ROWS; i++) { + if (!this.rows[i].isEmpty()) { + empty = false; + break; + } + } + return empty; + } + }, { + key: 'backSpace', + value: function backSpace() { + var row = this.rows[this.currRow]; + row.backSpace(); + } + }, { + key: 'clearToEndOfRow', + value: function clearToEndOfRow() { + var row = this.rows[this.currRow]; + row.clearToEndOfRow(); + } + + /** + * Insert a character (without styling) in the current row. + */ + + }, { + key: 'insertChar', + value: function insertChar(char) { + var row = this.rows[this.currRow]; + row.insertChar(char); + } + }, { + key: 'setPen', + value: function setPen(styles) { + var row = this.rows[this.currRow]; + row.setPenStyles(styles); + } + }, { + key: 'moveCursor', + value: function moveCursor(relPos) { + var row = this.rows[this.currRow]; + row.moveCursor(relPos); + } + }, { + key: 'setCursor', + value: function setCursor(absPos) { + logger.log('INFO', 'setCursor: ' + absPos); + var row = this.rows[this.currRow]; + row.setCursor(absPos); + } + }, { + key: 'setPAC', + value: function setPAC(pacData) { + logger.log('INFO', 'pacData = ' + JSON.stringify(pacData)); + var newRow = pacData.row - 1; + if (this.nrRollUpRows && newRow < this.nrRollUpRows - 1) { + newRow = this.nrRollUpRows - 1; + } + + //Make sure this only affects Roll-up Captions by checking this.nrRollUpRows + if (this.nrRollUpRows && this.currRow !== newRow) { + //clear all rows first + for (var i = 0; i < NR_ROWS; i++) { + this.rows[i].clear(); + } + + //Copy this.nrRollUpRows rows from lastOutputScreen and place it in the newRow location + //topRowIndex - the start of rows to copy (inclusive index) + var topRowIndex = this.currRow + 1 - this.nrRollUpRows; + //We only copy if the last position was already shown. + //We use the cueStartTime value to check this. + var lastOutputScreen = this.lastOutputScreen; + if (lastOutputScreen) { + var prevLineTime = lastOutputScreen.rows[topRowIndex].cueStartTime; + if (prevLineTime && prevLineTime < logger.time) { + for (var _i = 0; _i < this.nrRollUpRows; _i++) { + this.rows[newRow - this.nrRollUpRows + _i + 1].copy(lastOutputScreen.rows[topRowIndex + _i]); + } + } + } + } + + this.currRow = newRow; + var row = this.rows[this.currRow]; + if (pacData.indent !== null) { + var indent = pacData.indent; + var prevPos = Math.max(indent - 1, 0); + row.setCursor(pacData.indent); + pacData.color = row.chars[prevPos].penState.foreground; + } + var styles = { foreground: pacData.color, underline: pacData.underline, italics: pacData.italics, background: 'black', flash: false }; + this.setPen(styles); + } + + /** + * Set background/extra foreground, but first do back_space, and then insert space (backwards compatibility). + */ + + }, { + key: 'setBkgData', + value: function setBkgData(bkgData) { + + logger.log('INFO', 'bkgData = ' + JSON.stringify(bkgData)); + this.backSpace(); + this.setPen(bkgData); + this.insertChar(0x20); //Space + } + }, { + key: 'setRollUpRows', + value: function setRollUpRows(nrRows) { + this.nrRollUpRows = nrRows; + } + }, { + key: 'rollUp', + value: function rollUp() { + if (this.nrRollUpRows === null) { + logger.log('DEBUG', 'roll_up but nrRollUpRows not set yet'); + return; //Not properly setup + } + logger.log('TEXT', this.getDisplayText()); + var topRowIndex = this.currRow + 1 - this.nrRollUpRows; + var topRow = this.rows.splice(topRowIndex, 1)[0]; + topRow.clear(); + this.rows.splice(this.currRow, 0, topRow); + logger.log('INFO', 'Rolling up'); + //logger.log('TEXT', this.get_display_text()) + } + + /** + * Get all non-empty rows with as unicode text. + */ + + }, { + key: 'getDisplayText', + value: function getDisplayText(asOneRow) { + asOneRow = asOneRow || false; + var displayText = []; + var text = ''; + var rowNr = -1; + for (var i = 0; i < NR_ROWS; i++) { + var rowText = this.rows[i].getTextString(); + if (rowText) { + rowNr = i + 1; + if (asOneRow) { + displayText.push('Row ' + rowNr + ': \'' + rowText + '\''); + } else { + displayText.push(rowText.trim()); + } + } + } + if (displayText.length > 0) { + if (asOneRow) { + text = '[' + displayText.join(' | ') + ']'; + } else { + text = displayText.join('\n'); + } + } + return text; + } + }, { + key: 'getTextAndFormat', + value: function getTextAndFormat() { + return this.rows; + } + }]); + + return CaptionScreen; +}(); + +//var modes = ['MODE_ROLL-UP', 'MODE_POP-ON', 'MODE_PAINT-ON', 'MODE_TEXT']; + +var Cea608Channel = function () { + function Cea608Channel(channelNumber, outputFilter) { + _classCallCheck(this, Cea608Channel); + + this.chNr = channelNumber; + this.outputFilter = outputFilter; + this.mode = null; + this.verbose = 0; + this.displayedMemory = new CaptionScreen(); + this.nonDisplayedMemory = new CaptionScreen(); + this.lastOutputScreen = new CaptionScreen(); + this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1]; + this.writeScreen = this.displayedMemory; + this.mode = null; + this.cueStartTime = null; // Keeps track of where a cue started. + } + + _createClass(Cea608Channel, [{ + key: 'reset', + value: function reset() { + this.mode = null; + this.displayedMemory.reset(); + this.nonDisplayedMemory.reset(); + this.lastOutputScreen.reset(); + this.currRollUpRow = this.displayedMemory.rows[NR_ROWS - 1]; + this.writeScreen = this.displayedMemory; + this.mode = null; + this.cueStartTime = null; + this.lastCueEndTime = null; + } + }, { + key: 'getHandler', + value: function getHandler() { + return this.outputFilter; + } + }, { + key: 'setHandler', + value: function setHandler(newHandler) { + this.outputFilter = newHandler; + } + }, { + key: 'setPAC', + value: function setPAC(pacData) { + this.writeScreen.setPAC(pacData); + } + }, { + key: 'setBkgData', + value: function setBkgData(bkgData) { + this.writeScreen.setBkgData(bkgData); + } + }, { + key: 'setMode', + value: function setMode(newMode) { + if (newMode === this.mode) { + return; + } + this.mode = newMode; + logger.log('INFO', 'MODE=' + newMode); + if (this.mode === 'MODE_POP-ON') { + this.writeScreen = this.nonDisplayedMemory; + } else { + this.writeScreen = this.displayedMemory; + this.writeScreen.reset(); + } + if (this.mode !== 'MODE_ROLL-UP') { + this.displayedMemory.nrRollUpRows = null; + this.nonDisplayedMemory.nrRollUpRows = null; + } + this.mode = newMode; + } + }, { + key: 'insertChars', + value: function insertChars(chars) { + for (var i = 0; i < chars.length; i++) { + this.writeScreen.insertChar(chars[i]); + } + var screen = this.writeScreen === this.displayedMemory ? 'DISP' : 'NON_DISP'; + logger.log('INFO', screen + ': ' + this.writeScreen.getDisplayText(true)); + if (this.mode === 'MODE_PAINT-ON' || this.mode === 'MODE_ROLL-UP') { + logger.log('TEXT', 'DISPLAYED: ' + this.displayedMemory.getDisplayText(true)); + this.outputDataUpdate(); + } + } + }, { + key: 'ccRCL', + value: function ccRCL() { + // Resume Caption Loading (switch mode to Pop On) + logger.log('INFO', 'RCL - Resume Caption Loading'); + this.setMode('MODE_POP-ON'); + } + }, { + key: 'ccBS', + value: function ccBS() { + // BackSpace + logger.log('INFO', 'BS - BackSpace'); + if (this.mode === 'MODE_TEXT') { + return; + } + this.writeScreen.backSpace(); + if (this.writeScreen === this.displayedMemory) { + this.outputDataUpdate(); + } + } + }, { + key: 'ccAOF', + value: function ccAOF() { + // Reserved (formerly Alarm Off) + return; + } + }, { + key: 'ccAON', + value: function ccAON() { + // Reserved (formerly Alarm On) + return; + } + }, { + key: 'ccDER', + value: function ccDER() { + // Delete to End of Row + logger.log('INFO', 'DER- Delete to End of Row'); + this.writeScreen.clearToEndOfRow(); + this.outputDataUpdate(); + } + }, { + key: 'ccRU', + value: function ccRU(nrRows) { + //Roll-Up Captions-2,3,or 4 Rows + logger.log('INFO', 'RU(' + nrRows + ') - Roll Up'); + this.writeScreen = this.displayedMemory; + this.setMode('MODE_ROLL-UP'); + this.writeScreen.setRollUpRows(nrRows); + } + }, { + key: 'ccFON', + value: function ccFON() { + //Flash On + logger.log('INFO', 'FON - Flash On'); + this.writeScreen.setPen({ flash: true }); + } + }, { + key: 'ccRDC', + value: function ccRDC() { + // Resume Direct Captioning (switch mode to PaintOn) + logger.log('INFO', 'RDC - Resume Direct Captioning'); + this.setMode('MODE_PAINT-ON'); + } + }, { + key: 'ccTR', + value: function ccTR() { + // Text Restart in text mode (not supported, however) + logger.log('INFO', 'TR'); + this.setMode('MODE_TEXT'); + } + }, { + key: 'ccRTD', + value: function ccRTD() { + // Resume Text Display in Text mode (not supported, however) + logger.log('INFO', 'RTD'); + this.setMode('MODE_TEXT'); + } + }, { + key: 'ccEDM', + value: function ccEDM() { + // Erase Displayed Memory + logger.log('INFO', 'EDM - Erase Displayed Memory'); + this.displayedMemory.reset(); + this.outputDataUpdate(); + } + }, { + key: 'ccCR', + value: function ccCR() { + // Carriage Return + logger.log('CR - Carriage Return'); + this.writeScreen.rollUp(); + this.outputDataUpdate(); + } + }, { + key: 'ccENM', + value: function ccENM() { + //Erase Non-Displayed Memory + logger.log('INFO', 'ENM - Erase Non-displayed Memory'); + this.nonDisplayedMemory.reset(); + } + }, { + key: 'ccEOC', + value: function ccEOC() { + //End of Caption (Flip Memories) + logger.log('INFO', 'EOC - End Of Caption'); + if (this.mode === 'MODE_POP-ON') { + var tmp = this.displayedMemory; + this.displayedMemory = this.nonDisplayedMemory; + this.nonDisplayedMemory = tmp; + this.writeScreen = this.nonDisplayedMemory; + logger.log('TEXT', 'DISP: ' + this.displayedMemory.getDisplayText()); + } + this.outputDataUpdate(); + } + }, { + key: 'ccTO', + value: function ccTO(nrCols) { + // Tab Offset 1,2, or 3 columns + logger.log('INFO', 'TO(' + nrCols + ') - Tab Offset'); + this.writeScreen.moveCursor(nrCols); + } + }, { + key: 'ccMIDROW', + value: function ccMIDROW(secondByte) { + // Parse MIDROW command + var styles = { flash: false }; + styles.underline = secondByte % 2 === 1; + styles.italics = secondByte >= 0x2e; + if (!styles.italics) { + var colorIndex = Math.floor(secondByte / 2) - 0x10; + var colors = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta']; + styles.foreground = colors[colorIndex]; + } else { + styles.foreground = 'white'; + } + logger.log('INFO', 'MIDROW: ' + JSON.stringify(styles)); + this.writeScreen.setPen(styles); + } + }, { + key: 'outputDataUpdate', + value: function outputDataUpdate() { + var t = logger.time; + if (t === null) { + return; + } + if (this.outputFilter) { + if (this.outputFilter.updateData) { + this.outputFilter.updateData(t, this.displayedMemory); + } + if (this.cueStartTime === null && !this.displayedMemory.isEmpty()) { + // Start of a new cue + this.cueStartTime = t; + } else { + if (!this.displayedMemory.equals(this.lastOutputScreen)) { + if (this.outputFilter.newCue) { + this.outputFilter.newCue(this.cueStartTime, t, this.lastOutputScreen); + } + this.cueStartTime = this.displayedMemory.isEmpty() ? null : t; + } + } + this.lastOutputScreen.copy(this.displayedMemory); + } + } + }, { + key: 'cueSplitAtTime', + value: function cueSplitAtTime(t) { + if (this.outputFilter) { + if (!this.displayedMemory.isEmpty()) { + if (this.outputFilter.newCue) { + this.outputFilter.newCue(this.cueStartTime, t, this.displayedMemory); + } + this.cueStartTime = t; + } + } + } + }]); + + return Cea608Channel; +}(); + +var Cea608Parser = function () { + function Cea608Parser(field, out1, out2) { + _classCallCheck(this, Cea608Parser); + + this.field = field || 1; + this.outputs = [out1, out2]; + this.channels = [new Cea608Channel(1, out1), new Cea608Channel(2, out2)]; + this.currChNr = -1; // Will be 1 or 2 + this.lastCmdA = null; // First byte of last command + this.lastCmdB = null; // Second byte of last command + this.bufferedData = []; + this.startTime = null; + this.lastTime = null; + this.dataCounters = { 'padding': 0, 'char': 0, 'cmd': 0, 'other': 0 }; + } + + _createClass(Cea608Parser, [{ + key: 'getHandler', + value: function getHandler(index) { + return this.channels[index].getHandler(); + } + }, { + key: 'setHandler', + value: function setHandler(index, newHandler) { + this.channels[index].setHandler(newHandler); + } + + /** + * Add data for time t in forms of list of bytes (unsigned ints). The bytes are treated as pairs. + */ + + }, { + key: 'addData', + value: function addData(t, byteList) { + var cmdFound, + a, + b, + charsFound = false; + + this.lastTime = t; + logger.setTime(t); + + for (var i = 0; i < byteList.length; i += 2) { + a = byteList[i] & 0x7f; + b = byteList[i + 1] & 0x7f; + if (a === 0 && b === 0) { + this.dataCounters.padding += 2; + continue; + } else { + logger.log('DATA', '[' + numArrayToHexArray([byteList[i], byteList[i + 1]]) + '] -> (' + numArrayToHexArray([a, b]) + ')'); + } + cmdFound = this.parseCmd(a, b); + if (!cmdFound) { + cmdFound = this.parseMidrow(a, b); + } + if (!cmdFound) { + cmdFound = this.parsePAC(a, b); + } + if (!cmdFound) { + cmdFound = this.parseBackgroundAttributes(a, b); + } + if (!cmdFound) { + charsFound = this.parseChars(a, b); + if (charsFound) { + if (this.currChNr && this.currChNr >= 0) { + var channel = this.channels[this.currChNr - 1]; + channel.insertChars(charsFound); + } else { + logger.log('WARNING', 'No channel found yet. TEXT-MODE?'); + } + } + } + if (cmdFound) { + this.dataCounters.cmd += 2; + } else if (charsFound) { + this.dataCounters.char += 2; + } else { + this.dataCounters.other += 2; + logger.log('WARNING', 'Couldn\'t parse cleaned data ' + numArrayToHexArray([a, b]) + ' orig: ' + numArrayToHexArray([byteList[i], byteList[i + 1]])); + } + } + } + + /** + * Parse Command. + * @returns {Boolean} Tells if a command was found + */ + + }, { + key: 'parseCmd', + value: function parseCmd(a, b) { + var chNr = null; + + var cond1 = (a === 0x14 || a === 0x1C) && 0x20 <= b && b <= 0x2F; + var cond2 = (a === 0x17 || a === 0x1F) && 0x21 <= b && b <= 0x23; + if (!(cond1 || cond2)) { + return false; + } + + if (a === this.lastCmdA && b === this.lastCmdB) { + this.lastCmdA = null; + this.lastCmdB = null; // Repeated commands are dropped (once) + logger.log('DEBUG', 'Repeated command (' + numArrayToHexArray([a, b]) + ') is dropped'); + return true; + } + + if (a === 0x14 || a === 0x17) { + chNr = 1; + } else { + chNr = 2; // (a === 0x1C || a=== 0x1f) + } + + var channel = this.channels[chNr - 1]; + + if (a === 0x14 || a === 0x1C) { + if (b === 0x20) { + channel.ccRCL(); + } else if (b === 0x21) { + channel.ccBS(); + } else if (b === 0x22) { + channel.ccAOF(); + } else if (b === 0x23) { + channel.ccAON(); + } else if (b === 0x24) { + channel.ccDER(); + } else if (b === 0x25) { + channel.ccRU(2); + } else if (b === 0x26) { + channel.ccRU(3); + } else if (b === 0x27) { + channel.ccRU(4); + } else if (b === 0x28) { + channel.ccFON(); + } else if (b === 0x29) { + channel.ccRDC(); + } else if (b === 0x2A) { + channel.ccTR(); + } else if (b === 0x2B) { + channel.ccRTD(); + } else if (b === 0x2C) { + channel.ccEDM(); + } else if (b === 0x2D) { + channel.ccCR(); + } else if (b === 0x2E) { + channel.ccENM(); + } else if (b === 0x2F) { + channel.ccEOC(); + } + } else { + //a == 0x17 || a == 0x1F + channel.ccTO(b - 0x20); + } + this.lastCmdA = a; + this.lastCmdB = b; + this.currChNr = chNr; + return true; + } + + /** + * Parse midrow styling command + * @returns {Boolean} + */ + + }, { + key: 'parseMidrow', + value: function parseMidrow(a, b) { + var chNr = null; + + if ((a === 0x11 || a === 0x19) && 0x20 <= b && b <= 0x2f) { + if (a === 0x11) { + chNr = 1; + } else { + chNr = 2; + } + if (chNr !== this.currChNr) { + logger.log('ERROR', 'Mismatch channel in midrow parsing'); + return false; + } + var channel = this.channels[chNr - 1]; + channel.ccMIDROW(b); + logger.log('DEBUG', 'MIDROW (' + numArrayToHexArray([a, b]) + ')'); + return true; + } + return false; + } + /** + * Parse Preable Access Codes (Table 53). + * @returns {Boolean} Tells if PAC found + */ + + }, { + key: 'parsePAC', + value: function parsePAC(a, b) { + + var chNr = null; + var row = null; + + var case1 = (0x11 <= a && a <= 0x17 || 0x19 <= a && a <= 0x1F) && 0x40 <= b && b <= 0x7F; + var case2 = (a === 0x10 || a === 0x18) && 0x40 <= b && b <= 0x5F; + if (!(case1 || case2)) { + return false; + } + + if (a === this.lastCmdA && b === this.lastCmdB) { + this.lastCmdA = null; + this.lastCmdB = null; + return true; // Repeated commands are dropped (once) + } + + chNr = a <= 0x17 ? 1 : 2; + + if (0x40 <= b && b <= 0x5F) { + row = chNr === 1 ? rowsLowCh1[a] : rowsLowCh2[a]; + } else { + // 0x60 <= b <= 0x7F + row = chNr === 1 ? rowsHighCh1[a] : rowsHighCh2[a]; + } + var pacData = this.interpretPAC(row, b); + var channel = this.channels[chNr - 1]; + channel.setPAC(pacData); + this.lastCmdA = a; + this.lastCmdB = b; + this.currChNr = chNr; + return true; + } + + /** + * Interpret the second byte of the pac, and return the information. + * @returns {Object} pacData with style parameters. + */ + + }, { + key: 'interpretPAC', + value: function interpretPAC(row, byte) { + var pacIndex = byte; + var pacData = { color: null, italics: false, indent: null, underline: false, row: row }; + + if (byte > 0x5F) { + pacIndex = byte - 0x60; + } else { + pacIndex = byte - 0x40; + } + pacData.underline = (pacIndex & 1) === 1; + if (pacIndex <= 0xd) { + pacData.color = ['white', 'green', 'blue', 'cyan', 'red', 'yellow', 'magenta', 'white'][Math.floor(pacIndex / 2)]; + } else if (pacIndex <= 0xf) { + pacData.italics = true; + pacData.color = 'white'; + } else { + pacData.indent = Math.floor((pacIndex - 0x10) / 2) * 4; + } + return pacData; // Note that row has zero offset. The spec uses 1. + } + + /** + * Parse characters. + * @returns An array with 1 to 2 codes corresponding to chars, if found. null otherwise. + */ + + }, { + key: 'parseChars', + value: function parseChars(a, b) { + + var channelNr = null, + charCodes = null, + charCode1 = null; + + if (a >= 0x19) { + channelNr = 2; + charCode1 = a - 8; + } else { + channelNr = 1; + charCode1 = a; + } + if (0x11 <= charCode1 && charCode1 <= 0x13) { + // Special character + var oneCode = b; + if (charCode1 === 0x11) { + oneCode = b + 0x50; + } else if (charCode1 === 0x12) { + oneCode = b + 0x70; + } else { + oneCode = b + 0x90; + } + logger.log('INFO', 'Special char \'' + getCharForByte(oneCode) + '\' in channel ' + channelNr); + charCodes = [oneCode]; + } else if (0x20 <= a && a <= 0x7f) { + charCodes = b === 0 ? [a] : [a, b]; + } + if (charCodes) { + var hexCodes = numArrayToHexArray(charCodes); + logger.log('DEBUG', 'Char codes = ' + hexCodes.join(',')); + this.lastCmdA = null; + this.lastCmdB = null; + } + return charCodes; + } + + /** + * Parse extended background attributes as well as new foreground color black. + * @returns{Boolean} Tells if background attributes are found + */ + + }, { + key: 'parseBackgroundAttributes', + value: function parseBackgroundAttributes(a, b) { + var bkgData, index, chNr, channel; + + var case1 = (a === 0x10 || a === 0x18) && 0x20 <= b && b <= 0x2f; + var case2 = (a === 0x17 || a === 0x1f) && 0x2d <= b && b <= 0x2f; + if (!(case1 || case2)) { + return false; + } + bkgData = {}; + if (a === 0x10 || a === 0x18) { + index = Math.floor((b - 0x20) / 2); + bkgData.background = backgroundColors[index]; + if (b % 2 === 1) { + bkgData.background = bkgData.background + '_semi'; + } + } else if (b === 0x2d) { + bkgData.background = 'transparent'; + } else { + bkgData.foreground = 'black'; + if (b === 0x2f) { + bkgData.underline = true; + } + } + chNr = a < 0x18 ? 1 : 2; + channel = this.channels[chNr - 1]; + channel.setBkgData(bkgData); + this.lastCmdA = null; + this.lastCmdB = null; + return true; + } + + /** + * Reset state of parser and its channels. + */ + + }, { + key: 'reset', + value: function reset() { + for (var i = 0; i < this.channels.length; i++) { + if (this.channels[i]) { + this.channels[i].reset(); + } + } + this.lastCmdA = null; + this.lastCmdB = null; + } + + /** + * Trigger the generation of a cue, and the start of a new one if displayScreens are not empty. + */ + + }, { + key: 'cueSplitAtTime', + value: function cueSplitAtTime(t) { + for (var i = 0; i < this.channels.length; i++) { + if (this.channels[i]) { + this.channels[i].cueSplitAtTime(t); + } + } + } + }]); + + return Cea608Parser; +}(); + +exports.default = Cea608Parser; + +},{}],50:[function(_dereq_,module,exports){ +'use strict'; + +var _vttparser = _dereq_(56); + +var Cues = { + + newCue: function newCue(track, startTime, endTime, captionScreen) { + var row; + var cue; + var indenting; + var indent; + var text; + var VTTCue = window.VTTCue || window.TextTrackCue; + + for (var r = 0; r < captionScreen.rows.length; r++) { + row = captionScreen.rows[r]; + indenting = true; + indent = 0; + text = ''; + + if (!row.isEmpty()) { + for (var c = 0; c < row.chars.length; c++) { + if (row.chars[c].uchar.match(/\s/) && indenting) { + indent++; + } else { + text += row.chars[c].uchar; + indenting = false; + } + } + //To be used for cleaning-up orphaned roll-up captions + row.cueStartTime = startTime; + + // Give a slight bump to the endTime if it's equal to startTime to avoid a SyntaxError in IE + if (startTime === endTime) { + endTime += 0.0001; + } + + cue = new VTTCue(startTime, endTime, (0, _vttparser.fixLineBreaks)(text.trim())); + + if (indent >= 16) { + indent--; + } else { + indent++; + } + + // VTTCue.line get's flakey when using controls, so let's now include line 13&14 + // also, drop line 1 since it's to close to the top + if (navigator.userAgent.match(/Firefox\//)) { + cue.line = r + 1; + } else { + cue.line = r > 7 ? r - 2 : r + 1; + } + cue.align = 'left'; + // Clamp the position between 0 and 100 - if out of these bounds, Firefox throws an exception and captions break + cue.position = Math.max(0, Math.min(100, 100 * (indent / 32) + (navigator.userAgent.match(/Firefox\//) ? 50 : 0))); + track.addCue(cue); + } + } + } + +}; + +module.exports = Cues; + +},{"56":56}],51:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /* + * EWMA Bandwidth Estimator + * - heavily inspired from shaka-player + * Tracks bandwidth samples and estimates available bandwidth. + * Based on the minimum of two exponentially-weighted moving averages with + * different half-lives. + */ + +var _ewma = _dereq_(52); + +var _ewma2 = _interopRequireDefault(_ewma); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var EwmaBandWidthEstimator = function () { + function EwmaBandWidthEstimator(hls, slow, fast, defaultEstimate) { + _classCallCheck(this, EwmaBandWidthEstimator); + + this.hls = hls; + this.defaultEstimate_ = defaultEstimate; + this.minWeight_ = 0.001; + this.minDelayMs_ = 50; + this.slow_ = new _ewma2.default(slow); + this.fast_ = new _ewma2.default(fast); + } + + _createClass(EwmaBandWidthEstimator, [{ + key: 'sample', + value: function sample(durationMs, numBytes) { + durationMs = Math.max(durationMs, this.minDelayMs_); + var bandwidth = 8000 * numBytes / durationMs, + + //console.log('instant bw:'+ Math.round(bandwidth)); + // we weight sample using loading duration.... + weight = durationMs / 1000; + this.fast_.sample(weight, bandwidth); + this.slow_.sample(weight, bandwidth); + } + }, { + key: 'canEstimate', + value: function canEstimate() { + var fast = this.fast_; + return fast && fast.getTotalWeight() >= this.minWeight_; + } + }, { + key: 'getEstimate', + value: function getEstimate() { + if (this.canEstimate()) { + //console.log('slow estimate:'+ Math.round(this.slow_.getEstimate())); + //console.log('fast estimate:'+ Math.round(this.fast_.getEstimate())); + // Take the minimum of these two estimates. This should have the effect of + // adapting down quickly, but up more slowly. + return Math.min(this.fast_.getEstimate(), this.slow_.getEstimate()); + } else { + return this.defaultEstimate_; + } + } + }, { + key: 'destroy', + value: function destroy() {} + }]); + + return EwmaBandWidthEstimator; +}(); + +exports.default = EwmaBandWidthEstimator; + +},{"52":52}],52:[function(_dereq_,module,exports){ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +/* + * compute an Exponential Weighted moving average + * - https://en.wikipedia.org/wiki/Moving_average#Exponential_moving_average + * - heavily inspired from shaka-player + */ + +var EWMA = function () { + + // About half of the estimated value will be from the last |halfLife| samples by weight. + function EWMA(halfLife) { + _classCallCheck(this, EWMA); + + // Larger values of alpha expire historical data more slowly. + this.alpha_ = halfLife ? Math.exp(Math.log(0.5) / halfLife) : 0; + this.estimate_ = 0; + this.totalWeight_ = 0; + } + + _createClass(EWMA, [{ + key: "sample", + value: function sample(weight, value) { + var adjAlpha = Math.pow(this.alpha_, weight); + this.estimate_ = value * (1 - adjAlpha) + adjAlpha * this.estimate_; + this.totalWeight_ += weight; + } + }, { + key: "getTotalWeight", + value: function getTotalWeight() { + return this.totalWeight_; + } + }, { + key: "getEstimate", + value: function getEstimate() { + if (this.alpha_) { + var zeroFactor = 1 - Math.pow(this.alpha_, this.totalWeight_); + return this.estimate_ / zeroFactor; + } else { + return this.estimate_; + } + } + }]); + + return EWMA; +}(); + +exports.default = EWMA; + +},{}],53:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +function noop() {} + +var fakeLogger = { + trace: noop, + debug: noop, + log: noop, + warn: noop, + info: noop, + error: noop +}; + +var exportedLogger = fakeLogger; + +/*globals self: false */ + +//let lastCallTime; +// function formatMsgWithTimeInfo(type, msg) { +// const now = Date.now(); +// const diff = lastCallTime ? '+' + (now - lastCallTime) : '0'; +// lastCallTime = now; +// msg = (new Date(now)).toISOString() + ' | [' + type + '] > ' + msg + ' ( ' + diff + ' ms )'; +// return msg; +// } + +function formatMsg(type, msg) { + msg = '[' + type + '] > ' + msg; + return msg; +} + +function consolePrintFn(type) { + var func = self.console[type]; + if (func) { + return function () { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (args[0]) { + args[0] = formatMsg(type, args[0]); + } + func.apply(self.console, args); + }; + } + return noop; +} + +function exportLoggerFunctions(debugConfig) { + for (var _len2 = arguments.length, functions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + functions[_key2 - 1] = arguments[_key2]; + } + + functions.forEach(function (type) { + exportedLogger[type] = debugConfig[type] ? debugConfig[type].bind(debugConfig) : consolePrintFn(type); + }); +} + +var enableLogs = exports.enableLogs = function enableLogs(debugConfig) { + if (debugConfig === true || (typeof debugConfig === 'undefined' ? 'undefined' : _typeof(debugConfig)) === 'object') { + exportLoggerFunctions(debugConfig, + // Remove out from list here to hard-disable a log-level + //'trace', + 'debug', 'log', 'info', 'warn', 'error'); + // Some browsers don't allow to use bind on console object anyway + // fallback to default if needed + try { + exportedLogger.log(); + } catch (e) { + exportedLogger = fakeLogger; + } + } else { + exportedLogger = fakeLogger; + } +}; + +var logger = exports.logger = exportedLogger; + +},{}],54:[function(_dereq_,module,exports){ +'use strict'; + +/** + * TimeRanges to string helper + */ + +var TimeRanges = { + toString: function toString(r) { + var log = '', + len = r.length; + for (var i = 0; i < len; i++) { + log += '[' + r.start(i).toFixed(3) + ',' + r.end(i).toFixed(3) + ']'; + } + return log; + } +}; + +module.exports = TimeRanges; + +},{}],55:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +/** + * Copyright 2013 vtt.js Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +exports.default = function () { + if (typeof window !== 'undefined' && window.VTTCue) { + return window.VTTCue; + } + + var autoKeyword = 'auto'; + var directionSetting = { + '': true, + lr: true, + rl: true + }; + var alignSetting = { + start: true, + middle: true, + end: true, + left: true, + right: true + }; + + function findDirectionSetting(value) { + if (typeof value !== 'string') { + return false; + } + var dir = directionSetting[value.toLowerCase()]; + return dir ? value.toLowerCase() : false; + } + + function findAlignSetting(value) { + if (typeof value !== 'string') { + return false; + } + var align = alignSetting[value.toLowerCase()]; + return align ? value.toLowerCase() : false; + } + + function extend(obj) { + var i = 1; + for (; i < arguments.length; i++) { + var cobj = arguments[i]; + for (var p in cobj) { + obj[p] = cobj[p]; + } + } + + return obj; + } + + function VTTCue(startTime, endTime, text) { + var cue = this; + var isIE8 = function () { + if (typeof navigator === 'undefined') { + return; + } + return (/MSIE\s8\.0/.test(navigator.userAgent) + ); + }(); + var baseObj = {}; + + if (isIE8) { + cue = document.createElement('custom'); + } else { + baseObj.enumerable = true; + } + + /** + * Shim implementation specific properties. These properties are not in + * the spec. + */ + + // Lets us know when the VTTCue's data has changed in such a way that we need + // to recompute its display state. This lets us compute its display state + // lazily. + cue.hasBeenReset = false; + + /** + * VTTCue and TextTrackCue properties + * http://dev.w3.org/html5/webvtt/#vttcue-interface + */ + + var _id = ''; + var _pauseOnExit = false; + var _startTime = startTime; + var _endTime = endTime; + var _text = text; + var _region = null; + var _vertical = ''; + var _snapToLines = true; + var _line = 'auto'; + var _lineAlign = 'start'; + var _position = 50; + var _positionAlign = 'middle'; + var _size = 50; + var _align = 'middle'; + + Object.defineProperty(cue, 'id', extend({}, baseObj, { + get: function get() { + return _id; + }, + set: function set(value) { + _id = '' + value; + } + })); + + Object.defineProperty(cue, 'pauseOnExit', extend({}, baseObj, { + get: function get() { + return _pauseOnExit; + }, + set: function set(value) { + _pauseOnExit = !!value; + } + })); + + Object.defineProperty(cue, 'startTime', extend({}, baseObj, { + get: function get() { + return _startTime; + }, + set: function set(value) { + if (typeof value !== 'number') { + throw new TypeError('Start time must be set to a number.'); + } + _startTime = value; + this.hasBeenReset = true; + } + })); + + Object.defineProperty(cue, 'endTime', extend({}, baseObj, { + get: function get() { + return _endTime; + }, + set: function set(value) { + if (typeof value !== 'number') { + throw new TypeError('End time must be set to a number.'); + } + _endTime = value; + this.hasBeenReset = true; + } + })); + + Object.defineProperty(cue, 'text', extend({}, baseObj, { + get: function get() { + return _text; + }, + set: function set(value) { + _text = '' + value; + this.hasBeenReset = true; + } + })); + + Object.defineProperty(cue, 'region', extend({}, baseObj, { + get: function get() { + return _region; + }, + set: function set(value) { + _region = value; + this.hasBeenReset = true; + } + })); + + Object.defineProperty(cue, 'vertical', extend({}, baseObj, { + get: function get() { + return _vertical; + }, + set: function set(value) { + var setting = findDirectionSetting(value); + // Have to check for false because the setting an be an empty string. + if (setting === false) { + throw new SyntaxError('An invalid or illegal string was specified.'); + } + _vertical = setting; + this.hasBeenReset = true; + } + })); + + Object.defineProperty(cue, 'snapToLines', extend({}, baseObj, { + get: function get() { + return _snapToLines; + }, + set: function set(value) { + _snapToLines = !!value; + this.hasBeenReset = true; + } + })); + + Object.defineProperty(cue, 'line', extend({}, baseObj, { + get: function get() { + return _line; + }, + set: function set(value) { + if (typeof value !== 'number' && value !== autoKeyword) { + throw new SyntaxError('An invalid number or illegal string was specified.'); + } + _line = value; + this.hasBeenReset = true; + } + })); + + Object.defineProperty(cue, 'lineAlign', extend({}, baseObj, { + get: function get() { + return _lineAlign; + }, + set: function set(value) { + var setting = findAlignSetting(value); + if (!setting) { + throw new SyntaxError('An invalid or illegal string was specified.'); + } + _lineAlign = setting; + this.hasBeenReset = true; + } + })); + + Object.defineProperty(cue, 'position', extend({}, baseObj, { + get: function get() { + return _position; + }, + set: function set(value) { + if (value < 0 || value > 100) { + throw new Error('Position must be between 0 and 100.'); + } + _position = value; + this.hasBeenReset = true; + } + })); + + Object.defineProperty(cue, 'positionAlign', extend({}, baseObj, { + get: function get() { + return _positionAlign; + }, + set: function set(value) { + var setting = findAlignSetting(value); + if (!setting) { + throw new SyntaxError('An invalid or illegal string was specified.'); + } + _positionAlign = setting; + this.hasBeenReset = true; + } + })); + + Object.defineProperty(cue, 'size', extend({}, baseObj, { + get: function get() { + return _size; + }, + set: function set(value) { + if (value < 0 || value > 100) { + throw new Error('Size must be between 0 and 100.'); + } + _size = value; + this.hasBeenReset = true; + } + })); + + Object.defineProperty(cue, 'align', extend({}, baseObj, { + get: function get() { + return _align; + }, + set: function set(value) { + var setting = findAlignSetting(value); + if (!setting) { + throw new SyntaxError('An invalid or illegal string was specified.'); + } + _align = setting; + this.hasBeenReset = true; + } + })); + + /** + * Other <track> spec defined properties + */ + + // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state + cue.displayState = undefined; + + if (isIE8) { + return cue; + } + } + + /** + * VTTCue methods + */ + + VTTCue.prototype.getCueAsHTML = function () { + // Assume WebVTT.convertCueToDOMTree is on the global. + var WebVTT = window.WebVTT; + return WebVTT.convertCueToDOMTree(window, this.text); + }; + + return VTTCue; +}(); + +},{}],56:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fixLineBreaks = undefined; + +var _vttcue = _dereq_(55); + +var _vttcue2 = _interopRequireDefault(_vttcue); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var StringDecoder = function StringDecoder() { + return { + decode: function decode(data) { + if (!data) { + return ''; + } + if (typeof data !== 'string') { + throw new Error('Error - expected string data.'); + } + return decodeURIComponent(encodeURIComponent(data)); + } + }; +}; /* + * Source: https://github.com/mozilla/vtt.js/blob/master/dist/vtt.js#L1716 + */ + +function VTTParser() { + this.window = window; + this.state = 'INITIAL'; + this.buffer = ''; + this.decoder = new StringDecoder(); + this.regionList = []; +} + +// Try to parse input as a time stamp. +function parseTimeStamp(input) { + + function computeSeconds(h, m, s, f) { + return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000; + } + + var m = input.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/); + if (!m) { + return null; + } + + if (m[3]) { + // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds] + return computeSeconds(m[1], m[2], m[3].replace(':', ''), m[4]); + } else if (m[1] > 59) { + // Timestamp takes the form of [hours]:[minutes].[milliseconds] + // First position is hours as it's over 59. + return computeSeconds(m[1], m[2], 0, m[4]); + } else { + // Timestamp takes the form of [minutes]:[seconds].[milliseconds] + return computeSeconds(0, m[1], m[2], m[4]); + } +} + +// A settings object holds key/value pairs and will ignore anything but the first +// assignment to a specific key. +function Settings() { + this.values = Object.create(null); +} + +Settings.prototype = { + // Only accept the first assignment to any key. + set: function set(k, v) { + if (!this.get(k) && v !== '') { + this.values[k] = v; + } + }, + // Return the value for a key, or a default value. + // If 'defaultKey' is passed then 'dflt' is assumed to be an object with + // a number of possible default values as properties where 'defaultKey' is + // the key of the property that will be chosen; otherwise it's assumed to be + // a single value. + get: function get(k, dflt, defaultKey) { + if (defaultKey) { + return this.has(k) ? this.values[k] : dflt[defaultKey]; + } + return this.has(k) ? this.values[k] : dflt; + }, + // Check whether we have a value for a key. + has: function has(k) { + return k in this.values; + }, + // Accept a setting if its one of the given alternatives. + alt: function alt(k, v, a) { + for (var n = 0; n < a.length; ++n) { + if (v === a[n]) { + this.set(k, v); + break; + } + } + }, + // Accept a setting if its a valid (signed) integer. + integer: function integer(k, v) { + if (/^-?\d+$/.test(v)) { + // integer + this.set(k, parseInt(v, 10)); + } + }, + // Accept a setting if its a valid percentage. + percent: function percent(k, v) { + var m; + if (m = v.match(/^([\d]{1,3})(\.[\d]*)?%$/)) { + v = parseFloat(v); + if (v >= 0 && v <= 100) { + this.set(k, v); + return true; + } + } + return false; + } +}; + +// Helper function to parse input into groups separated by 'groupDelim', and +// interprete each group as a key/value pair separated by 'keyValueDelim'. +function parseOptions(input, callback, keyValueDelim, groupDelim) { + var groups = groupDelim ? input.split(groupDelim) : [input]; + for (var i in groups) { + if (typeof groups[i] !== 'string') { + continue; + } + var kv = groups[i].split(keyValueDelim); + if (kv.length !== 2) { + continue; + } + var k = kv[0]; + var v = kv[1]; + callback(k, v); + } +} + +var defaults = new _vttcue2.default(0, 0, 0); +// 'middle' was changed to 'center' in the spec: https://github.com/w3c/webvtt/pull/244 +// Chrome and Safari don't yet support this change, but FF does +var center = defaults.align === 'middle' ? 'middle' : 'center'; + +function parseCue(input, cue, regionList) { + // Remember the original input if we need to throw an error. + var oInput = input; + // 4.1 WebVTT timestamp + function consumeTimeStamp() { + var ts = parseTimeStamp(input); + if (ts === null) { + throw new Error('Malformed timestamp: ' + oInput); + } + // Remove time stamp from input. + input = input.replace(/^[^\sa-zA-Z-]+/, ''); + return ts; + } + + // 4.4.2 WebVTT cue settings + function consumeCueSettings(input, cue) { + var settings = new Settings(); + + parseOptions(input, function (k, v) { + switch (k) { + case 'region': + // Find the last region we parsed with the same region id. + for (var i = regionList.length - 1; i >= 0; i--) { + if (regionList[i].id === v) { + settings.set(k, regionList[i].region); + break; + } + } + break; + case 'vertical': + settings.alt(k, v, ['rl', 'lr']); + break; + case 'line': + var vals = v.split(','), + vals0 = vals[0]; + settings.integer(k, vals0); + if (settings.percent(k, vals0)) { + settings.set('snapToLines', false); + } + settings.alt(k, vals0, ['auto']); + if (vals.length === 2) { + settings.alt('lineAlign', vals[1], ['start', center, 'end']); + } + break; + case 'position': + vals = v.split(','); + settings.percent(k, vals[0]); + if (vals.length === 2) { + settings.alt('positionAlign', vals[1], ['start', center, 'end', 'line-left', 'line-right', 'auto']); + } + break; + case 'size': + settings.percent(k, v); + break; + case 'align': + settings.alt(k, v, ['start', center, 'end', 'left', 'right']); + break; + } + }, /:/, /\s/); + + // Apply default values for any missing fields. + cue.region = settings.get('region', null); + cue.vertical = settings.get('vertical', ''); + var line = settings.get('line', 'auto'); + if (line === 'auto' && defaults.line === -1) { + // set numeric line number for Safari + line = -1; + } + cue.line = line; + cue.lineAlign = settings.get('lineAlign', 'start'); + cue.snapToLines = settings.get('snapToLines', true); + cue.size = settings.get('size', 100); + cue.align = settings.get('align', center); + var position = settings.get('position', 'auto'); + if (position === 'auto' && defaults.position === 50) { + // set numeric position for Safari + position = cue.align === 'start' || cue.align === 'left' ? 0 : cue.align === 'end' || cue.align === 'right' ? 100 : 50; + } + cue.position = position; + } + + function skipWhitespace() { + input = input.replace(/^\s+/, ''); + } + + // 4.1 WebVTT cue timings. + skipWhitespace(); + cue.startTime = consumeTimeStamp(); // (1) collect cue start time + skipWhitespace(); + if (input.substr(0, 3) !== '-->') { + // (3) next characters must match '-->' + throw new Error('Malformed time stamp (time stamps must be separated by \'-->\'): ' + oInput); + } + input = input.substr(3); + skipWhitespace(); + cue.endTime = consumeTimeStamp(); // (5) collect cue end time + + // 4.1 WebVTT cue settings list. + skipWhitespace(); + consumeCueSettings(input, cue); +} + +function fixLineBreaks(input) { + return input.replace(/<br(?: \/)?>/gi, '\n'); +} + +VTTParser.prototype = { + parse: function parse(data) { + var self = this; + + // If there is no data then we won't decode it, but will just try to parse + // whatever is in buffer already. This may occur in circumstances, for + // example when flush() is called. + if (data) { + // Try to decode the data that we received. + self.buffer += self.decoder.decode(data, { stream: true }); + } + + function collectNextLine() { + var buffer = self.buffer; + var pos = 0; + + buffer = fixLineBreaks(buffer); + + while (pos < buffer.length && buffer[pos] !== '\r' && buffer[pos] !== '\n') { + ++pos; + } + var line = buffer.substr(0, pos); + // Advance the buffer early in case we fail below. + if (buffer[pos] === '\r') { + ++pos; + } + if (buffer[pos] === '\n') { + ++pos; + } + self.buffer = buffer.substr(pos); + return line; + } + + // 3.2 WebVTT metadata header syntax + function parseHeader(input) { + parseOptions(input, function (k, v) { + switch (k) { + case 'Region': + // 3.3 WebVTT region metadata header syntax + console.log('parse region', v); + //parseRegion(v); + break; + } + }, /:/); + } + + // 5.1 WebVTT file parsing. + try { + var line; + if (self.state === 'INITIAL') { + // We can't start parsing until we have the first line. + if (!/\r\n|\n/.test(self.buffer)) { + return this; + } + + line = collectNextLine(); + + var m = line.match(/^WEBVTT([ \t].*)?$/); + if (!m || !m[0]) { + throw new Error('Malformed WebVTT signature.'); + } + + self.state = 'HEADER'; + } + + var alreadyCollectedLine = false; + while (self.buffer) { + // We can't parse a line until we have the full line. + if (!/\r\n|\n/.test(self.buffer)) { + return this; + } + + if (!alreadyCollectedLine) { + line = collectNextLine(); + } else { + alreadyCollectedLine = false; + } + + switch (self.state) { + case 'HEADER': + // 13-18 - Allow a header (metadata) under the WEBVTT line. + if (/:/.test(line)) { + parseHeader(line); + } else if (!line) { + // An empty line terminates the header and starts the body (cues). + self.state = 'ID'; + } + continue; + case 'NOTE': + // Ignore NOTE blocks. + if (!line) { + self.state = 'ID'; + } + continue; + case 'ID': + // Check for the start of NOTE blocks. + if (/^NOTE($|[ \t])/.test(line)) { + self.state = 'NOTE'; + break; + } + // 19-29 - Allow any number of line terminators, then initialize new cue values. + if (!line) { + continue; + } + self.cue = new _vttcue2.default(0, 0, ''); + self.state = 'CUE'; + // 30-39 - Check if self line contains an optional identifier or timing data. + if (line.indexOf('-->') === -1) { + self.cue.id = line; + continue; + } + // Process line as start of a cue. + /*falls through*/ + case 'CUE': + // 40 - Collect cue timings and settings. + try { + parseCue(line, self.cue, self.regionList); + } catch (e) { + // In case of an error ignore rest of the cue. + self.cue = null; + self.state = 'BADCUE'; + continue; + } + self.state = 'CUETEXT'; + continue; + case 'CUETEXT': + var hasSubstring = line.indexOf('-->') !== -1; + // 34 - If we have an empty line then report the cue. + // 35 - If we have the special substring '-->' then report the cue, + // but do not collect the line as we need to process the current + // one as a new cue. + if (!line || hasSubstring && (alreadyCollectedLine = true)) { + // We are done parsing self cue. + if (self.oncue) { + self.oncue(self.cue); + } + self.cue = null; + self.state = 'ID'; + continue; + } + if (self.cue.text) { + self.cue.text += '\n'; + } + self.cue.text += line; + continue; + case 'BADCUE': + // BADCUE + // 54-62 - Collect and discard the remaining cue. + if (!line) { + self.state = 'ID'; + } + continue; + } + } + } catch (e) { + + // If we are currently parsing a cue, report what we have. + if (self.state === 'CUETEXT' && self.cue && self.oncue) { + self.oncue(self.cue); + } + self.cue = null; + // Enter BADWEBVTT state if header was not parsed correctly otherwise + // another exception occurred so enter BADCUE state. + self.state = self.state === 'INITIAL' ? 'BADWEBVTT' : 'BADCUE'; + } + return this; + }, + flush: function flush() { + var self = this; + try { + // Finish decoding the stream. + self.buffer += self.decoder.decode(); + // Synthesize the end of the current cue or region. + if (self.cue || self.state === 'HEADER') { + self.buffer += '\n\n'; + self.parse(); + } + // If we've flushed, parsed, and we're still on the INITIAL state then + // that means we don't have enough of the stream to parse the first + // line. + if (self.state === 'INITIAL') { + throw new Error('Malformed WebVTT signature.'); + } + } catch (e) { + throw e; + } + if (self.onflush) { + self.onflush(); + } + return this; + } +}; + +exports.fixLineBreaks = fixLineBreaks; +exports.default = VTTParser; + +},{"55":55}],57:[function(_dereq_,module,exports){ +'use strict'; + +var _vttparser = _dereq_(56); + +var _vttparser2 = _interopRequireDefault(_vttparser); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// String.prototype.startsWith is not supported in IE11 +var startsWith = function startsWith(inputString, searchString, position) { + return inputString.substr(position || 0, searchString.length) === searchString; +}; + +var cueString2millis = function cueString2millis(timeString) { + var ts = parseInt(timeString.substr(-3)); + var secs = parseInt(timeString.substr(-6, 2)); + var mins = parseInt(timeString.substr(-9, 2)); + var hours = timeString.length > 9 ? parseInt(timeString.substr(0, timeString.indexOf(':'))) : 0; + + if (isNaN(ts) || isNaN(secs) || isNaN(mins) || isNaN(hours)) { + return -1; + } + + ts += 1000 * secs; + ts += 60 * 1000 * mins; + ts += 60 * 60 * 1000 * hours; + + return ts; +}; + +// From https://github.com/darkskyapp/string-hash +var hash = function hash(text) { + var hash = 5381; + var i = text.length; + while (i) { + hash = hash * 33 ^ text.charCodeAt(--i); + } + return (hash >>> 0).toString(); +}; + +var calculateOffset = function calculateOffset(vttCCs, cc, presentationTime) { + var currCC = vttCCs[cc]; + var prevCC = vttCCs[currCC.prevCC]; + + // This is the first discontinuity or cues have been processed since the last discontinuity + // Offset = current discontinuity time + if (!prevCC || !prevCC.new && currCC.new) { + vttCCs.ccOffset = vttCCs.presentationOffset = currCC.start; + currCC.new = false; + return; + } + + // There have been discontinuities since cues were last parsed. + // Offset = time elapsed + while (prevCC && prevCC.new) { + vttCCs.ccOffset += currCC.start - prevCC.start; + currCC.new = false; + currCC = prevCC; + prevCC = vttCCs[currCC.prevCC]; + } + + vttCCs.presentationOffset = presentationTime; +}; + +var WebVTTParser = { + parse: function parse(vttByteArray, syncPTS, vttCCs, cc, callBack, errorCallBack) { + // Convert byteArray into string, replacing any somewhat exotic linefeeds with "\n", then split on that character. + var re = /\r\n|\n\r|\n|\r/g; + var vttLines = String.fromCharCode.apply(null, new Uint8Array(vttByteArray)).trim().replace(re, '\n').split('\n'); + var cueTime = '00:00.000'; + var mpegTs = 0; + var localTime = 0; + var presentationTime = 0; + var cues = []; + var parsingError = void 0; + var inHeader = true; + // let VTTCue = VTTCue || window.TextTrackCue; + + // Create parser object using VTTCue with TextTrackCue fallback on certain browsers. + var parser = new _vttparser2.default(); + + parser.oncue = function (cue) { + // Adjust cue timing; clamp cues to start no earlier than - and drop cues that don't end after - 0 on timeline. + var currCC = vttCCs[cc]; + var cueOffset = vttCCs.ccOffset; + + // Update offsets for new discontinuities + if (currCC && currCC.new) { + if (localTime !== undefined) { + // When local time is provided, offset = discontinuity start time - local time + cueOffset = vttCCs.ccOffset = currCC.start; + } else { + calculateOffset(vttCCs, cc, presentationTime); + } + } + + if (presentationTime) { + // If we have MPEGTS, offset = presentation time + discontinuity offset + cueOffset = presentationTime + vttCCs.ccOffset - vttCCs.presentationOffset; + } + + cue.startTime += cueOffset - localTime; + cue.endTime += cueOffset - localTime; + + // Create a unique hash id for a cue based on start/end times and text. + // This helps timeline-controller to avoid showing repeated captions. + cue.id = hash(cue.startTime) + hash(cue.endTime) + hash(cue.text); + + // Fix encoding of special characters. TODO: Test with all sorts of weird characters. + cue.text = decodeURIComponent(escape(cue.text)); + if (cue.endTime > 0) { + cues.push(cue); + } + }; + + parser.onparsingerror = function (e) { + parsingError = e; + }; + + parser.onflush = function () { + if (parsingError && errorCallBack) { + errorCallBack(parsingError); + return; + } + callBack(cues); + }; + + // Go through contents line by line. + vttLines.forEach(function (line) { + if (inHeader) { + // Look for X-TIMESTAMP-MAP in header. + if (startsWith(line, 'X-TIMESTAMP-MAP=')) { + // Once found, no more are allowed anyway, so stop searching. + inHeader = false; + // Extract LOCAL and MPEGTS. + line.substr(16).split(',').forEach(function (timestamp) { + if (startsWith(timestamp, 'LOCAL:')) { + cueTime = timestamp.substr(6); + } else if (startsWith(timestamp, 'MPEGTS:')) { + mpegTs = parseInt(timestamp.substr(7)); + } + }); + try { + // Calculate subtitle offset in milliseconds. + // If sync PTS is less than zero, we have a 33-bit wraparound, which is fixed by adding 2^33 = 8589934592. + syncPTS = syncPTS < 0 ? syncPTS + 8589934592 : syncPTS; + // Adjust MPEGTS by sync PTS. + mpegTs -= syncPTS; + // Convert cue time to seconds + localTime = cueString2millis(cueTime) / 1000; + // Convert MPEGTS to seconds from 90kHz. + presentationTime = mpegTs / 90000; + + if (localTime === -1) { + parsingError = new Error('Malformed X-TIMESTAMP-MAP: ' + line); + } + } catch (e) { + parsingError = new Error('Malformed X-TIMESTAMP-MAP: ' + line); + } + // Return without parsing X-TIMESTAMP-MAP line. + return; + } else if (line === '') { + inHeader = false; + } + } + // Parse line by default. + parser.parse(line + '\n'); + }); + + parser.flush(); + } +}; + +module.exports = WebVTTParser; + +},{"56":56}],58:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); /** + * XHR based logger + */ + +var _logger = _dereq_(53); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var XhrLoader = function () { + function XhrLoader(config) { + _classCallCheck(this, XhrLoader); + + if (config && config.xhrSetup) { + this.xhrSetup = config.xhrSetup; + } + } + + _createClass(XhrLoader, [{ + key: 'destroy', + value: function destroy() { + this.abort(); + this.loader = null; + } + }, { + key: 'abort', + value: function abort() { + var loader = this.loader; + if (loader && loader.readyState !== 4) { + this.stats.aborted = true; + loader.abort(); + } + + window.clearTimeout(this.requestTimeout); + this.requestTimeout = null; + window.clearTimeout(this.retryTimeout); + this.retryTimeout = null; + } + }, { + key: 'load', + value: function load(context, config, callbacks) { + this.context = context; + this.config = config; + this.callbacks = callbacks; + this.stats = { trequest: performance.now(), retry: 0 }; + this.retryDelay = config.retryDelay; + this.loadInternal(); + } + }, { + key: 'loadInternal', + value: function loadInternal() { + var xhr, + context = this.context; + + if (typeof XDomainRequest !== 'undefined') { + xhr = this.loader = new XDomainRequest(); + } else { + xhr = this.loader = new XMLHttpRequest(); + } + var stats = this.stats; + stats.tfirst = 0; + stats.loaded = 0; + var xhrSetup = this.xhrSetup; + + try { + if (xhrSetup) { + try { + xhrSetup(xhr, context.url); + } catch (e) { + // fix xhrSetup: (xhr, url) => {xhr.setRequestHeader("Content-Language", "test");} + // not working, as xhr.setRequestHeader expects xhr.readyState === OPEN + xhr.open('GET', context.url, true); + xhrSetup(xhr, context.url); + } + } + if (!xhr.readyState) { + xhr.open('GET', context.url, true); + } + } catch (e) { + // IE11 throws an exception on xhr.open if attempting to access an HTTP resource over HTTPS + this.callbacks.onError({ code: xhr.status, text: e.message }, context); + return; + } + + if (context.rangeEnd) { + xhr.setRequestHeader('Range', 'bytes=' + context.rangeStart + '-' + (context.rangeEnd - 1)); + } + xhr.onreadystatechange = this.readystatechange.bind(this); + xhr.onprogress = this.loadprogress.bind(this); + xhr.responseType = context.responseType; + + // setup timeout before we perform request + this.requestTimeout = window.setTimeout(this.loadtimeout.bind(this), this.config.timeout); + xhr.send(); + } + }, { + key: 'readystatechange', + value: function readystatechange(event) { + var xhr = event.currentTarget, + readyState = xhr.readyState, + stats = this.stats, + context = this.context, + config = this.config; + + // don't proceed if xhr has been aborted + if (stats.aborted) { + return; + } + + // >= HEADERS_RECEIVED + if (readyState >= 2) { + // clear xhr timeout and rearm it if readyState less than 4 + window.clearTimeout(this.requestTimeout); + if (stats.tfirst === 0) { + stats.tfirst = Math.max(performance.now(), stats.trequest); + } + if (readyState === 4) { + var status = xhr.status; + // http status between 200 to 299 are all successful + if (status >= 200 && status < 300) { + stats.tload = Math.max(stats.tfirst, performance.now()); + var data = void 0, + len = void 0; + if (context.responseType === 'arraybuffer') { + data = xhr.response; + len = data.byteLength; + } else { + data = xhr.responseText; + len = data.length; + } + stats.loaded = stats.total = len; + var response = { url: xhr.responseURL, data: data }; + this.callbacks.onSuccess(response, stats, context); + } else { + // if max nb of retries reached or if http status between 400 and 499 (such error cannot be recovered, retrying is useless), return error + if (stats.retry >= config.maxRetry || status >= 400 && status < 499) { + _logger.logger.error(status + ' while loading ' + context.url); + this.callbacks.onError({ code: status, text: xhr.statusText }, context); + } else { + // retry + _logger.logger.warn(status + ' while loading ' + context.url + ', retrying in ' + this.retryDelay + '...'); + // aborts and resets internal state + this.destroy(); + // schedule retry + this.retryTimeout = window.setTimeout(this.loadInternal.bind(this), this.retryDelay); + // set exponential backoff + this.retryDelay = Math.min(2 * this.retryDelay, config.maxRetryDelay); + stats.retry++; + } + } + } else { + // readyState >= 2 AND readyState !==4 (readyState = HEADERS_RECEIVED || LOADING) rearm timeout as xhr not finished yet + this.requestTimeout = window.setTimeout(this.loadtimeout.bind(this), config.timeout); + } + } + } + }, { + key: 'loadtimeout', + value: function loadtimeout() { + _logger.logger.warn('timeout while loading ' + this.context.url); + this.callbacks.onTimeout(this.stats, this.context); + } + }, { + key: 'loadprogress', + value: function loadprogress(event) { + var stats = this.stats; + stats.loaded = event.loaded; + if (event.lengthComputable) { + stats.total = event.total; + } + var onProgress = this.callbacks.onProgress; + if (onProgress) { + // last args is to provide on progress data + onProgress(stats, this.context, null); + } + } + }]); + + return XhrLoader; +}(); + +exports.default = XhrLoader; + +},{"53":53}]},{},[40])(40) +}); +//# sourceMappingURL=hls.js.map diff --git a/src/main/webapp/static/movie/mediaelementjs/hls/hls.min.js b/src/main/webapp/static/movie/mediaelementjs/hls/hls.min.js new file mode 100644 index 0000000000000000000000000000000000000000..9bfa0ab305765052d10423b13af02f0485e4f1ff --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/hls/hls.min.js @@ -0,0 +1,8 @@ +!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Hls=e()}}(function(){var e;return function e(t,r,i){function a(s,o){if(!r[s]){if(!t[s]){var l="function"==typeof require&&require;if(!o&&l)return l(s,!0);if(n)return n(s,!0);var u=new Error("Cannot find module '"+s+"'");throw u.code="MODULE_NOT_FOUND",u}var d=r[s]={exports:{}};t[s][0].call(d.exports,function(e){var r=t[s][1][e];return a(r?r:e)},d,d.exports,e,t,r,i)}return r[s].exports}for(var n="function"==typeof require&&require,s=0;s<i.length;s++)a(i[s]);return a}({1:[function(e,t,r){function i(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function a(e){return"function"==typeof e}function n(e){return"number"==typeof e}function s(e){return"object"==typeof e&&null!==e}function o(e){return void 0===e}t.exports=i,i.EventEmitter=i,i.prototype._events=void 0,i.prototype._maxListeners=void 0,i.defaultMaxListeners=10,i.prototype.setMaxListeners=function(e){if(!n(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},i.prototype.emit=function(e){var t,r,i,n,l,u;if(this._events||(this._events={}),"error"===e&&(!this._events.error||s(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}if(r=this._events[e],o(r))return!1;if(a(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:n=Array.prototype.slice.call(arguments,1),r.apply(this,n)}else if(s(r))for(n=Array.prototype.slice.call(arguments,1),u=r.slice(),i=u.length,l=0;l<i;l++)u[l].apply(this,n);return!0},i.prototype.addListener=function(e,t){var r;if(!a(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,a(t.listener)?t.listener:t),this._events[e]?s(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,s(this._events[e])&&!this._events[e].warned&&(r=o(this._maxListeners)?i.defaultMaxListeners:this._maxListeners)&&r>0&&this._events[e].length>r&&(this._events[e].warned=!0,console.trace),this},i.prototype.on=i.prototype.addListener,i.prototype.once=function(e,t){function r(){this.removeListener(e,r),i||(i=!0,t.apply(this,arguments))}if(!a(t))throw TypeError("listener must be a function");var i=!1;return r.listener=t,this.on(e,r),this},i.prototype.removeListener=function(e,t){var r,i,n,o;if(!a(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],n=r.length,i=-1,r===t||a(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(r)){for(o=n;o-- >0;)if(r[o]===t||r[o].listener&&r[o].listener===t){i=o;break}if(i<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(i,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},i.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],a(r))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},i.prototype.listeners=function(e){return this._events&&this._events[e]?a(this._events[e])?[this._events[e]]:this._events[e].slice():[]},i.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(a(t))return 1;if(t)return t.length}return 0},i.listenerCount=function(e,t){return e.listenerCount(t)}},{}],2:[function(t,r,i){!function(t){var a=/^((?:[^\/;?#]+:)?)(\/\/[^\/\;?#]*)?(.*?)??(;.*?)?(\?.*?)?(#.*?)?$/,n=/^([^\/;?#]*)(.*)$/,s={buildAbsoluteURL:function(e,t,r){if(r=r||{},e=e.trim(),!(t=t.trim())){if(!r.alwaysNormalize)return e;var i=this.parseURL(e);if(!o)throw new Error("Error trying to parse base URL.");return i.path=s.normalizePath(i.path),s.buildURLFromParts(i)}var a=this.parseURL(t);if(!a)throw new Error("Error trying to parse relative URL.");if(a.scheme)return r.alwaysNormalize?(a.path=s.normalizePath(a.path),s.buildURLFromParts(a)):t;var o=this.parseURL(e);if(!o)throw new Error("Error trying to parse base URL.");if(!o.netLoc&&o.path&&"/"!==o.path[0]){var l=n.exec(o.path);o.netLoc=l[1],o.path=l[2]}o.netLoc&&!o.path&&(o.path="/");var u={scheme:o.scheme,netLoc:a.netLoc,path:null,params:a.params,query:a.query,fragment:a.fragment};if(!a.netLoc&&(u.netLoc=o.netLoc,"/"!==a.path[0]))if(a.path){var d=o.path,f=d.substring(0,d.lastIndexOf("/")+1)+a.path;u.path=s.normalizePath(f)}else u.path=o.path,a.params||(u.params=o.params,a.query||(u.query=o.query));return null===u.path&&(u.path=r.alwaysNormalize?s.normalizePath(a.path):a.path),s.buildURLFromParts(u)},parseURL:function(e){var t=a.exec(e);return t?{scheme:t[1]||"",netLoc:t[2]||"",path:t[3]||"",params:t[4]||"",query:t[5]||"",fragment:t[6]||""}:null},normalizePath:function(e){for(e=e.split("").reverse().join("").replace(/(?:\/|^)\.(?=\/)/g,"");e.length!==(e=e.replace(/(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g,"")).length;);return e.split("").reverse().join("")},buildURLFromParts:function(e){return e.scheme+e.netLoc+e.path+e.params+e.query+e.fragment}};"object"==typeof i&&"object"==typeof r?r.exports=s:"function"==typeof e&&e.amd?e([],function(){return s}):"object"==typeof i?i.URLToolkit=s:t.URLToolkit=s}(this)},{}],3:[function(e,t,r){var i=arguments[3],a=arguments[4],n=arguments[5],s=JSON.stringify;t.exports=function(e,t){function r(e){p[e]=!0;for(var t in a[e][1]){var i=a[e][1][t];p[i]||r(i)}}for(var o,l=Object.keys(n),u=0,d=l.length;u<d;u++){var f=l[u],c=n[f].exports;if(c===e||c&&c.default===e){o=f;break}}if(!o){o=Math.floor(Math.pow(16,8)*Math.random()).toString(16);for(var h={},u=0,d=l.length;u<d;u++){var f=l[u];h[f]=f}a[o]=[Function(["require","module","exports"],"("+e+")(self)"),h]}var g=Math.floor(Math.pow(16,8)*Math.random()).toString(16),v={};v[o]=o,a[g]=[Function(["require"],"var f = require("+s(o)+");(f.default ? f.default : f)(self);"),v];var p={};r(g);var y="("+i+")({"+Object.keys(p).map(function(e){return s(e)+":["+a[e][0]+","+s(a[e][1])+"]"}).join(",")+"},{},["+s(g)+"])",m=window.URL||window.webkitURL||window.mozURL||window.msURL,E=new Blob([y],{type:"text/javascript"});if(t&&t.bare)return E;var b=m.createObjectURL(E),T=new Worker(b);return T.objectURL=b,T}},{}],4:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0}),r.hlsDefaultConfig=void 0;var a=e(5),n=i(a),s=e(8),o=i(s),l=e(9),u=i(l),d=e(10),f=i(d),c=e(58),h=i(c),g=e(7),v=i(g),p=e(6),y=i(p),m=e(50),E=i(m),b=e(16),T=i(b),k=e(15),_=i(k),R=e(14),A=i(R);r.hlsDefaultConfig={autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,initialLiveManifestSize:1,maxBufferLength:30,maxBufferSize:6e7,maxBufferHole:.5,maxSeekHole:2,lowBufferWatchdogPeriod:.5,highBufferWatchdogPeriod:3,nudgeOffset:.1,nudgeMaxRetry:3,maxFragLookUpTolerance:.25,liveSyncDurationCount:3,liveMaxLatencyDurationCount:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxMaxBufferLength:600,enableWorker:!0,enableSoftwareAES:!0,manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,startLevel:void 0,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3,fragLoadingLoopThreshold:3,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,loader:h.default,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,fetchSetup:void 0,abrController:n.default,bufferController:o.default,capLevelController:u.default,fpsController:f.default,audioStreamController:y.default,audioTrackController:v.default,subtitleStreamController:A.default,subtitleTrackController:_.default,timelineController:T.default,cueHandler:E.default,enableCEA708Captions:!0,enableWebVTT:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",stretchShortVideoTrack:!1,forceKeyFrameOnDiscontinuity:!0,abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0}},{10:10,14:14,15:15,16:16,5:5,50:50,58:58,6:6,7:7,8:8,9:9}],5:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),l=e(35),u=i(l),d=e(34),f=i(d),c=e(37),h=i(c),g=e(33),v=e(53),p=e(51),y=i(p),m=function(e){function t(e){a(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,u.default.FRAG_LOADING,u.default.FRAG_LOADED,u.default.FRAG_BUFFERED,u.default.ERROR));return r.lastLoadedFragLevel=0,r._nextAutoLevel=-1,r.hls=e,r.onCheck=r._abandonRulesCheck.bind(r),r}return s(t,e),o(t,[{key:"destroy",value:function(){this.clearTimer(),f.default.prototype.destroy.call(this)}},{key:"onFragLoading",value:function(e){var t=e.frag;if("main"===t.type){if(this.timer||(this.timer=setInterval(this.onCheck,100)),!this._bwEstimator){var r=this.hls,i=e.frag.level,a=r.levels[i].details.live,n=r.config,s=void 0,o=void 0;a?(s=n.abrEwmaFastLive,o=n.abrEwmaSlowLive):(s=n.abrEwmaFastVoD,o=n.abrEwmaSlowVoD),this._bwEstimator=new y.default(r,o,s,n.abrEwmaDefaultEstimate)}this.fragCurrent=t}}},{key:"_abandonRulesCheck",value:function(){var e=this.hls,t=e.media,r=this.fragCurrent,i=r.loader,a=e.minAutoLevel;if(!i||i.stats&&i.stats.aborted)return v.logger.warn("frag loader destroy or aborted, disarm abandonRules"),void this.clearTimer();var n=i.stats;if(t&&(!t.paused&&0!==t.playbackRate||!t.readyState)&&r.autoLevel&&r.level){var s=performance.now()-n.trequest,o=Math.abs(t.playbackRate);if(s>500*r.duration/o){var l=e.levels,d=Math.max(1,n.bw?n.bw/8:1e3*n.loaded/s),f=l[r.level],c=f.realBitrate?Math.max(f.realBitrate,f.bitrate):f.bitrate,g=n.total?n.total:Math.max(n.loaded,Math.round(r.duration*c/8)),p=t.currentTime,y=(g-n.loaded)/d,m=(h.default.bufferInfo(t,p,e.config.maxBufferHole).end-p)/o;if(m<2*r.duration/o&&y>m){var E=void 0,b=void 0;for(b=r.level-1;b>a;b--){var T=l[b].realBitrate?Math.max(l[b].realBitrate,l[b].bitrate):l[b].bitrate;if((E=r.duration*T/(6.4*d))<m)break}E<y&&(v.logger.warn("loading too slow, abort fragment loading and switch to level "+b+":fragLoadedDelay["+b+"]<fragLoadedDelay["+(r.level-1)+"];bufferStarvationDelay:"+E.toFixed(1)+"<"+y.toFixed(1)+":"+m.toFixed(1)),e.nextLoadLevel=b,this._bwEstimator.sample(s,n.loaded),i.abort(),this.clearTimer(),e.trigger(u.default.FRAG_LOAD_EMERGENCY_ABORTED,{frag:r,stats:n}))}}}}},{key:"onFragLoaded",value:function(e){var t=e.frag;if("main"===t.type&&!isNaN(t.sn)){if(this.clearTimer(),this.lastLoadedFragLevel=t.level,this._nextAutoLevel=-1,this.hls.config.abrMaxWithRealBitrate){var r=this.hls.levels[t.level],i=(r.loaded?r.loaded.bytes:0)+e.stats.loaded,a=(r.loaded?r.loaded.duration:0)+e.frag.duration;r.loaded={bytes:i,duration:a},r.realBitrate=Math.round(8*i/a)}if(e.frag.bitrateTest){var n=e.stats;n.tparsed=n.tbuffered=n.tload,this.onFragBuffered(e)}}}},{key:"onFragBuffered",value:function(e){var t=e.stats,r=e.frag;if(!(t.aborted===!0||1!==r.loadCounter||"main"!==r.type||isNaN(r.sn)||r.bitrateTest&&t.tload!==t.tbuffered)){var i=t.tparsed-t.trequest;v.logger.log("latency/loading/parsing/append/kbps:"+Math.round(t.tfirst-t.trequest)+"/"+Math.round(t.tload-t.tfirst)+"/"+Math.round(t.tparsed-t.tload)+"/"+Math.round(t.tbuffered-t.tparsed)+"/"+Math.round(8*t.loaded/(t.tbuffered-t.trequest))),this._bwEstimator.sample(i,t.loaded),t.bwEstimate=this._bwEstimator.getEstimate(),r.bitrateTest?this.bitrateTestDelay=i/1e3:this.bitrateTestDelay=0}}},{key:"onError",value:function(e){switch(e.details){case g.ErrorDetails.FRAG_LOAD_ERROR:case g.ErrorDetails.FRAG_LOAD_TIMEOUT:this.clearTimer()}}},{key:"clearTimer",value:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}},{key:"_findBestLevel",value:function(e,t,r,i,a,n,s,o,l){for(var u=a;u>=i;u--){var d=l[u],f=d.details,c=f?f.totalduration/f.fragments.length:t,h=!!f&&f.live,g=void 0;g=u<=e?s*r:o*r;var p=l[u].realBitrate?Math.max(l[u].realBitrate,l[u].bitrate):l[u].bitrate,y=p*c/g;if(v.logger.trace("level/adjustedbw/bitrate/avgDuration/maxFetchDuration/fetchDuration: "+u+"/"+Math.round(g)+"/"+p+"/"+c+"/"+n+"/"+y),g>p&&(!y||h&&!this.bitrateTestDelay||y<n))return u}return-1}},{key:"nextAutoLevel",get:function(){var e=this._nextAutoLevel,t=this._bwEstimator;if(!(e===-1||t&&t.canEstimate()))return e;var r=this._nextABRAutoLevel;return e!==-1&&(r=Math.min(e,r)),r},set:function(e){this._nextAutoLevel=e}},{key:"_nextABRAutoLevel",get:function(){var e=this.hls,t=e.maxAutoLevel,r=e.levels,i=e.config,a=e.minAutoLevel,n=e.media,s=this.lastLoadedFragLevel,o=this.fragCurrent?this.fragCurrent.duration:0,l=n?n.currentTime:0,u=n&&0!==n.playbackRate?Math.abs(n.playbackRate):1,d=this._bwEstimator?this._bwEstimator.getEstimate():i.abrEwmaDefaultEstimate,f=(h.default.bufferInfo(n,l,i.maxBufferHole).end-l)/u,c=this._findBestLevel(s,o,d,a,t,f,i.abrBandWidthFactor,i.abrBandWidthUpFactor,r);if(c>=0)return c;v.logger.trace("rebuffering expected to happen, lets try to find a quality level minimizing the rebuffering");var g=o?Math.min(o,i.maxStarvationDelay):i.maxStarvationDelay,p=i.abrBandWidthFactor,y=i.abrBandWidthUpFactor;if(0===f){var m=this.bitrateTestDelay;if(m){g=(o?Math.min(o,i.maxLoadingDelay):i.maxLoadingDelay)-m,v.logger.trace("bitrate test took "+Math.round(1e3*m)+"ms, set first fragment max fetchDuration to "+Math.round(1e3*g)+" ms"),p=y=1}}return c=this._findBestLevel(s,o,d,a,t,f+g,p,y,r),Math.max(c,0)}}]),t}(f.default);r.default=m},{33:33,34:34,35:35,37:37,51:51,53:53}],6:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),l=e(48),u=i(l),d=e(37),f=i(d),c=e(25),h=i(c),g=e(35),v=i(g),p=e(34),y=i(p),m=e(38),E=i(m),b=e(54),T=i(b),k=e(33),_=e(53),R={STOPPED:"STOPPED",STARTING:"STARTING",IDLE:"IDLE",PAUSED:"PAUSED",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING",FRAG_LOADING_WAITING_RETRY:"FRAG_LOADING_WAITING_RETRY",WAITING_TRACK:"WAITING_TRACK",PARSING:"PARSING",PARSED:"PARSED",BUFFER_FLUSHING:"BUFFER_FLUSHING",ENDED:"ENDED",ERROR:"ERROR",WAITING_INIT_PTS:"WAITING_INIT_PTS"},A=function(e){function t(e){a(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,v.default.MEDIA_ATTACHED,v.default.MEDIA_DETACHING,v.default.AUDIO_TRACKS_UPDATED,v.default.AUDIO_TRACK_SWITCHING,v.default.AUDIO_TRACK_LOADED,v.default.KEY_LOADED,v.default.FRAG_LOADED,v.default.FRAG_PARSING_INIT_SEGMENT,v.default.FRAG_PARSING_DATA,v.default.FRAG_PARSED,v.default.ERROR,v.default.BUFFER_CREATED,v.default.BUFFER_APPENDED,v.default.BUFFER_FLUSHED,v.default.INIT_PTS_FOUND));return r.config=e.config,r.audioCodecSwap=!1,r.ticks=0,r._state=R.STOPPED,r.ontick=r.tick.bind(r),r.initPTS=[],r.waitingFragment=null,r}return s(t,e),o(t,[{key:"destroy",value:function(){this.stopLoad(),this.timer&&(clearInterval(this.timer),this.timer=null),y.default.prototype.destroy.call(this),this.state=R.STOPPED}},{key:"onInitPtsFound",value:function(e){var t=e.id,r=e.frag.cc,i=e.initPTS;"main"===t&&(this.initPTS[r]=i,_.logger.log("InitPTS for cc:"+r+" found from video track:"+i),this.state===R.WAITING_INIT_PTS&&(_.logger.log("sending pending audio frag to demuxer"),this.state=R.FRAG_LOADING,this.onFragLoaded(this.waitingFragment),this.waitingFragment=null))}},{key:"startLoad",value:function(e){if(this.tracks){var t=this.lastCurrentTime;this.stopLoad(),this.timer||(this.timer=setInterval(this.ontick,100)),this.fragLoadError=0,t>0&&e===-1?(_.logger.log("audio:override startPosition with lastCurrentTime @"+t.toFixed(3)),this.state=R.IDLE):(this.lastCurrentTime=this.startPosition?this.startPosition:e,this.state=R.STARTING),this.nextLoadPosition=this.startPosition=this.lastCurrentTime,this.tick()}else this.startPosition=e,this.state=R.STOPPED}},{key:"stopLoad",value:function(){var e=this.fragCurrent;e&&(e.loader&&e.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=R.STOPPED}},{key:"tick",value:function(){1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)}},{key:"doTick",value:function(){var e,t,r,i=this.hls,a=i.config;switch(this.state){case R.ERROR:case R.PAUSED:case R.BUFFER_FLUSHING:break;case R.STARTING:this.state=R.WAITING_TRACK,this.loadedmetadata=!1;break;case R.IDLE:var n=this.tracks;if(!n)break;if(!this.media&&(this.startFragRequested||!a.startFragPrefetch))break;e=this.loadedmetadata?this.media.currentTime:this.nextLoadPosition;var s=this.mediaBuffer?this.mediaBuffer:this.media,o=f.default.bufferInfo(s,e,a.maxBufferHole),l=o.len,d=o.end,c=this.fragPrevious,h=a.maxMaxBufferLength,g=this.audioSwitch,p=this.trackId;if((l<h||g)&&p<n.length){if(void 0===(r=n[p].details)){this.state=R.WAITING_TRACK;break}if(!g&&!r.live&&c&&c.sn===r.endSN&&(!this.media.seeking||this.media.duration-d<c.duration/2)){this.hls.trigger(v.default.BUFFER_EOS,{type:"audio"}),this.state=R.ENDED;break}var y=r.fragments,m=y.length,E=y[0].start,b=y[m-1].start+y[m-1].duration,T=void 0;if(g)if(r.live&&!r.PTSKnown)_.logger.log("switching audiotrack, live stream, unknown PTS,load first fragment"),d=0;else if(d=e,r.PTSKnown&&e<E){if(!(o.end>E||o.nextStart))return;_.logger.log("alt audio track ahead of main track, seek to start of alt audio track"),this.media.currentTime=E+.05}if(r.initSegment&&!r.initSegment.data)T=r.initSegment;else if(d<=E){if(T=y[0],r.live&&T.loadIdx&&T.loadIdx===this.fragLoadIdx){var A=o.nextStart?o.nextStart:E;return _.logger.log("no alt audio available @currentTime:"+this.media.currentTime+", seeking @"+(A+.05)),void(this.media.currentTime=A+.05)}}else{var S=void 0,L=a.maxFragLookUpTolerance,w=c?y[c.sn-y[0].sn+1]:void 0,D=function(e){var t=Math.min(L,e.duration);return e.start+e.duration-t<=d?1:e.start-t>d&&e.start?-1:0};d<b?(d>b-L&&(L=0),S=w&&!D(w)?w:u.default.search(y,D)):S=y[m-1],S&&(T=S,E=S.start,c&&T.level===c.level&&T.sn===c.sn&&(T.sn<r.endSN?(T=y[T.sn+1-r.startSN],_.logger.log("SN just loaded, load next one: "+T.sn)):T=null))}if(T)if(T.decryptdata&&null!=T.decryptdata.uri&&null==T.decryptdata.key)_.logger.log("Loading key for "+T.sn+" of ["+r.startSN+" ,"+r.endSN+"],track "+p),this.state=R.KEY_LOADING,i.trigger(v.default.KEY_LOADING,{frag:T});else{if(_.logger.log("Loading "+T.sn+" of ["+r.startSN+" ,"+r.endSN+"],track "+p+", currentTime:"+e+",bufferEnd:"+d.toFixed(3)),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,T.loadCounter){T.loadCounter++;var O=a.fragLoadingLoopThreshold;if(T.loadCounter>O&&Math.abs(this.fragLoadIdx-T.loadIdx)<O)return void i.trigger(v.default.ERROR,{type:k.ErrorTypes.MEDIA_ERROR,details:k.ErrorDetails.FRAG_LOOP_LOADING_ERROR,fatal:!1,frag:T})}else T.loadCounter=1;T.loadIdx=this.fragLoadIdx,this.fragCurrent=T,this.startFragRequested=!0,isNaN(T.sn)||(this.nextLoadPosition=T.start+T.duration),i.trigger(v.default.FRAG_LOADING,{frag:T}),this.state=R.FRAG_LOADING}}break;case R.WAITING_TRACK:t=this.tracks[this.trackId],t&&t.details&&(this.state=R.IDLE);break;case R.FRAG_LOADING_WAITING_RETRY:var I=performance.now(),P=this.retryDate;s=this.media;var C=s&&s.seeking;(!P||I>=P||C)&&(_.logger.log("audioStreamController: retryDate reached, switch back to IDLE state"),this.state=R.IDLE);break;case R.WAITING_INIT_PTS:case R.STOPPED:case R.FRAG_LOADING:case R.PARSING:case R.PARSED:case R.ENDED:}}},{key:"onMediaAttached",value:function(e){var t=this.media=this.mediaBuffer=e.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvended=this.onMediaEnded.bind(this),t.addEventListener("seeking",this.onvseeking),t.addEventListener("ended",this.onvended);var r=this.config;this.tracks&&r.autoStartLoad&&this.startLoad(r.startPosition)}},{key:"onMediaDetaching",value:function(){var e=this.media;e&&e.ended&&(_.logger.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var t=this.tracks;t&&t.forEach(function(e){e.details&&e.details.fragments.forEach(function(e){e.loadCounter=void 0})}),e&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.stopLoad()}},{key:"onMediaSeeking",value:function(){this.state===R.ENDED&&(this.state=R.IDLE),this.media&&(this.lastCurrentTime=this.media.currentTime),void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold),this.tick()}},{key:"onMediaEnded",value:function(){this.startPosition=this.lastCurrentTime=0}},{key:"onAudioTracksUpdated",value:function(e){_.logger.log("audio tracks updated"),this.tracks=e.audioTracks}},{key:"onAudioTrackSwitching",value:function(e){var t=!!e.url;this.trackId=e.id,this.state=R.IDLE,this.fragCurrent=null,this.state=R.PAUSED,this.waitingFragment=null,t?this.timer||(this.timer=setInterval(this.ontick,100)):this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),t&&(this.audioSwitch=!0,this.state=R.IDLE,void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold)),this.tick()}},{key:"onAudioTrackLoaded",value:function(e){var t=e.details,r=e.id,i=this.tracks[r],a=t.totalduration,n=0;if(_.logger.log("track "+r+" loaded ["+t.startSN+","+t.endSN+"],duration:"+a),t.live){var s=i.details;s&&t.fragments.length>0?(E.default.mergeDetails(s,t),n=t.fragments[0].start,t.PTSKnown?_.logger.log("live audio playlist sliding:"+n.toFixed(3)):_.logger.log("live audio playlist - outdated PTS, unknown sliding")):(t.PTSKnown=!1,_.logger.log("live audio playlist - first load, unknown sliding"))}else t.PTSKnown=!1;if(i.details=t,!this.startFragRequested){if(this.startPosition===-1){var o=t.startTimeOffset;isNaN(o)?this.startPosition=0:(_.logger.log("start time offset found in playlist, adjust startPosition to "+o),this.startPosition=o)}this.nextLoadPosition=this.startPosition}this.state===R.WAITING_TRACK&&(this.state=R.IDLE),this.tick()}},{key:"onKeyLoaded",value:function(){this.state===R.KEY_LOADING&&(this.state=R.IDLE,this.tick())}},{key:"onFragLoaded",value:function(e){var t=this.fragCurrent,r=e.frag;if(this.state===R.FRAG_LOADING&&t&&"audio"===r.type&&r.level===t.level&&r.sn===t.sn){var i=this.tracks[this.trackId],a=i.details,n=a.totalduration,s=t.level,o=t.sn,l=t.cc,u=this.config.defaultAudioCodec||i.audioCodec||"mp4a.40.2",d=this.stats=e.stats;if("initSegment"===o)this.state=R.IDLE,d.tparsed=d.tbuffered=performance.now(),a.initSegment.data=e.payload,this.hls.trigger(v.default.FRAG_BUFFERED,{stats:d,frag:t,id:"audio"}),this.tick();else{this.state=R.PARSING,this.appended=!1,this.demuxer||(this.demuxer=new h.default(this.hls,"audio"));var f=this.initPTS[l],c=a.initSegment?a.initSegment.data:[];if(a.initSegment||void 0!==f){this.pendingBuffering=!0,_.logger.log("Demuxing "+o+" of ["+a.startSN+" ,"+a.endSN+"],track "+s);this.demuxer.push(e.payload,c,u,null,t,n,!1,f)}else _.logger.log("unknown video PTS for continuity counter "+l+", waiting for video PTS before demuxing audio frag "+o+" of ["+a.startSN+" ,"+a.endSN+"],track "+s),this.waitingFragment=e,this.state=R.WAITING_INIT_PTS}}this.fragLoadError=0}},{key:"onFragParsingInitSegment",value:function(e){var t=this.fragCurrent,r=e.frag;if(t&&"audio"===e.id&&r.sn===t.sn&&r.level===t.level&&this.state===R.PARSING){var i=e.tracks,a=void 0;if(i.video&&delete i.video,a=i.audio){a.levelCodec="mp4a.40.2",a.id=e.id,this.hls.trigger(v.default.BUFFER_CODECS,i),_.logger.log("audio track:audio,container:"+a.container+",codecs[level/parsed]=["+a.levelCodec+"/"+a.codec+"]");var n=a.initSegment;if(n){var s={type:"audio",data:n,parent:"audio",content:"initSegment"};this.audioSwitch?this.pendingData=[s]:(this.appended=!0,this.pendingBuffering=!0,this.hls.trigger(v.default.BUFFER_APPENDING,s))}this.tick()}}}},{key:"onFragParsingData",value:function(e){var t=this,r=this.fragCurrent,i=e.frag;if(r&&"audio"===e.id&&"audio"===e.type&&i.sn===r.sn&&i.level===r.level&&this.state===R.PARSING){var a=this.trackId,n=this.tracks[a],s=this.hls;isNaN(e.endPTS)&&(e.endPTS=e.startPTS+r.duration,e.endDTS=e.startDTS+r.duration),_.logger.log("parsed "+e.type+",PTS:["+e.startPTS.toFixed(3)+","+e.endPTS.toFixed(3)+"],DTS:["+e.startDTS.toFixed(3)+"/"+e.endDTS.toFixed(3)+"],nb:"+e.nb),E.default.updateFragPTSDTS(n.details,r,e.startPTS,e.endPTS);var o=this.audioSwitch,l=this.media,u=!1;if(o&&l)if(l.readyState){var d=l.currentTime;_.logger.log("switching audio track : currentTime:"+d),d>=e.startPTS&&(_.logger.log("switching audio track : flushing all audio"),this.state=R.BUFFER_FLUSHING,s.trigger(v.default.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),u=!0,this.audioSwitch=!1,s.trigger(v.default.AUDIO_TRACK_SWITCHED,{id:a}))}else this.audioSwitch=!1,s.trigger(v.default.AUDIO_TRACK_SWITCHED,{id:a});var f=this.pendingData;this.audioSwitch||([e.data1,e.data2].forEach(function(t){t&&t.length&&f.push({type:e.type,data:t,parent:"audio",content:"data"})}),!u&&f.length&&(f.forEach(function(e){t.state===R.PARSING&&(t.pendingBuffering=!0,t.hls.trigger(v.default.BUFFER_APPENDING,e))}),this.pendingData=[],this.appended=!0)),this.tick()}}},{key:"onFragParsed",value:function(e){var t=this.fragCurrent,r=e.frag;t&&"audio"===e.id&&r.sn===t.sn&&r.level===t.level&&this.state===R.PARSING&&(this.stats.tparsed=performance.now(),this.state=R.PARSED,this._checkAppendedParsed())}},{key:"onBufferCreated",value:function(e){var t=e.tracks.audio;t&&(this.mediaBuffer=t.buffer,this.loadedmetadata=!0)}},{key:"onBufferAppended",value:function(e){if("audio"===e.parent){var t=this.state;t!==R.PARSING&&t!==R.PARSED||(this.pendingBuffering=e.pending>0,this._checkAppendedParsed())}}},{key:"_checkAppendedParsed",value:function(){if(!(this.state!==R.PARSED||this.appended&&this.pendingBuffering)){var e=this.fragCurrent,t=this.stats,r=this.hls;if(e){this.fragPrevious=e,t.tbuffered=performance.now(),r.trigger(v.default.FRAG_BUFFERED,{stats:t,frag:e,id:"audio"});var i=this.mediaBuffer?this.mediaBuffer:this.media;_.logger.log("audio buffered : "+T.default.toString(i.buffered)),this.audioSwitch&&this.appended&&(this.audioSwitch=!1,r.trigger(v.default.AUDIO_TRACK_SWITCHED,{id:this.trackId})),this.state=R.IDLE}this.tick()}}},{key:"onError",value:function(e){var t=e.frag;if(!t||"audio"===t.type)switch(e.details){case k.ErrorDetails.FRAG_LOAD_ERROR:case k.ErrorDetails.FRAG_LOAD_TIMEOUT:if(!e.fatal){var r=this.fragLoadError;r?r++:r=1;var i=this.config;if(r<=i.fragLoadingMaxRetry){this.fragLoadError=r,t.loadCounter=0;var a=Math.min(Math.pow(2,r-1)*i.fragLoadingRetryDelay,i.fragLoadingMaxRetryTimeout);_.logger.warn("audioStreamController: frag loading failed, retry in "+a+" ms"),this.retryDate=performance.now()+a,this.state=R.FRAG_LOADING_WAITING_RETRY}else _.logger.error("audioStreamController: "+e.details+" reaches max retry, redispatch as fatal ..."),e.fatal=!0,this.state=R.ERROR}break;case k.ErrorDetails.FRAG_LOOP_LOADING_ERROR:case k.ErrorDetails.AUDIO_TRACK_LOAD_ERROR:case k.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT:case k.ErrorDetails.KEY_LOAD_ERROR:case k.ErrorDetails.KEY_LOAD_TIMEOUT:this.state!==R.ERROR&&(this.state=e.fatal?R.ERROR:R.IDLE,_.logger.warn("audioStreamController: "+e.details+" while loading frag,switch to "+this.state+" state ..."));break;case k.ErrorDetails.BUFFER_FULL_ERROR:if("audio"===e.parent&&(this.state===R.PARSING||this.state===R.PARSED)){var n=this.mediaBuffer,s=this.media.currentTime;if(n&&f.default.isBuffered(n,s)&&f.default.isBuffered(n,s+.5)){var o=this.config;o.maxMaxBufferLength>=o.maxBufferLength&&(o.maxMaxBufferLength/=2,_.logger.warn("audio:reduce max buffer length to "+o.maxMaxBufferLength+"s"),this.fragLoadIdx+=2*o.fragLoadingLoopThreshold),this.state=R.IDLE}else _.logger.warn("buffer full error also media.currentTime is not buffered, flush audio buffer"),this.fragCurrent=null,this.state=R.BUFFER_FLUSHING,this.hls.trigger(v.default.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"})}}}},{key:"onBufferFlushed",value:function(){var e=this,t=this.pendingData;t&&t.length?(_.logger.log("appending pending audio data on Buffer Flushed"),t.forEach(function(t){e.hls.trigger(v.default.BUFFER_APPENDING,t)}),this.appended=!0,this.pendingData=[],this.state=R.PARSED):(this.state=R.IDLE,this.fragPrevious=null,this.tick())}},{key:"state",set:function(e){if(this.state!==e){var t=this.state;this._state=e,_.logger.log("audio stream:"+t+"->"+e)}},get:function(){return this._state}}]),t}(y.default);r.default=A},{25:25,33:33,34:34,35:35,37:37,38:38,48:48,53:53,54:54}],7:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r), +i&&e(t,i),t}}(),l=e(35),u=i(l),d=e(34),f=i(d),c=e(53),h=function(e){function t(e){a(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,u.default.MANIFEST_LOADING,u.default.MANIFEST_LOADED,u.default.AUDIO_TRACK_LOADED));return r.ticks=0,r.ontick=r.tick.bind(r),r}return s(t,e),o(t,[{key:"destroy",value:function(){f.default.prototype.destroy.call(this)}},{key:"tick",value:function(){1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)}},{key:"doTick",value:function(){this.updateTrack(this.trackId)}},{key:"onManifestLoading",value:function(){this.tracks=[],this.trackId=-1}},{key:"onManifestLoaded",value:function(e){var t=this,r=e.audioTracks||[],i=!1;this.tracks=r,this.hls.trigger(u.default.AUDIO_TRACKS_UPDATED,{audioTracks:r});var a=0;r.forEach(function(e){if(e.default)return t.audioTrack=a,void(i=!0);a++}),i===!1&&r.length&&(c.logger.log("no default audio track defined, use first audio track as default"),this.audioTrack=0)}},{key:"onAudioTrackLoaded",value:function(e){e.id<this.tracks.length&&(c.logger.log("audioTrack "+e.id+" loaded"),this.tracks[e.id].details=e.details,e.details.live&&!this.timer&&(this.timer=setInterval(this.ontick,1e3*e.details.targetduration)),!e.details.live&&this.timer&&(clearInterval(this.timer),this.timer=null))}},{key:"setAudioTrackInternal",value:function(e){if(e>=0&&e<this.tracks.length){this.timer&&(clearInterval(this.timer),this.timer=null),this.trackId=e,c.logger.log("switching to audioTrack "+e);var t=this.tracks[e],r=this.hls,i=t.type,a=t.url,n={id:e,type:i,url:a};r.trigger(u.default.AUDIO_TRACK_SWITCH,n),r.trigger(u.default.AUDIO_TRACK_SWITCHING,n);var s=t.details;!a||void 0!==s&&s.live!==!0||(c.logger.log("(re)loading playlist for audioTrack "+e),r.trigger(u.default.AUDIO_TRACK_LOADING,{url:a,id:e}))}}},{key:"updateTrack",value:function(e){if(e>=0&&e<this.tracks.length){this.timer&&(clearInterval(this.timer),this.timer=null),this.trackId=e,c.logger.log("updating audioTrack "+e);var t=this.tracks[e],r=t.url,i=t.details;!r||void 0!==i&&i.live!==!0||(c.logger.log("(re)loading playlist for audioTrack "+e),this.hls.trigger(u.default.AUDIO_TRACK_LOADING,{url:r,id:e}))}}},{key:"audioTracks",get:function(){return this.tracks}},{key:"audioTrack",get:function(){return this.trackId},set:function(e){this.trackId===e&&void 0!==this.tracks[e].details||this.setAudioTrackInternal(e)}}]),t}(f.default);r.default=h},{34:34,35:35,53:53}],8:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),l=e(35),u=i(l),d=e(34),f=i(d),c=e(53),h=e(33),g=function(e){function t(e){a(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,u.default.MEDIA_ATTACHING,u.default.MEDIA_DETACHING,u.default.MANIFEST_PARSED,u.default.BUFFER_RESET,u.default.BUFFER_APPENDING,u.default.BUFFER_CODECS,u.default.BUFFER_EOS,u.default.BUFFER_FLUSHING,u.default.LEVEL_PTS_UPDATED,u.default.LEVEL_UPDATED));return r._msDuration=null,r._levelDuration=null,r.onsbue=r.onSBUpdateEnd.bind(r),r.onsbe=r.onSBUpdateError.bind(r),r.pendingTracks={},r.tracks={},r}return s(t,e),o(t,[{key:"destroy",value:function(){f.default.prototype.destroy.call(this)}},{key:"onLevelPtsUpdated",value:function(e){var t=e.type,r=this.tracks.audio;if("audio"===t&&r&&"audio/mpeg"===r.container){var i=this.sourceBuffer.audio;if(Math.abs(i.timestampOffset-e.start)>.1){var a=i.updating;try{i.abort()}catch(e){a=!0,c.logger.warn("can not abort audio buffer: "+e)}a?this.audioTimestampOffset=e.start:(c.logger.warn("change mpeg audio timestamp offset from "+i.timestampOffset+" to "+e.start),i.timestampOffset=e.start)}}}},{key:"onManifestParsed",value:function(e){var t=e.audio,r=e.video,i=0;e.altAudio&&(t||r)&&(i=(t?1:0)+(r?1:0),c.logger.log(i+" sourceBuffer(s) expected")),this.sourceBufferNb=i}},{key:"onMediaAttaching",value:function(e){var t=this.media=e.media;if(t){var r=this.mediaSource=new MediaSource;this.onmso=this.onMediaSourceOpen.bind(this),this.onmse=this.onMediaSourceEnded.bind(this),this.onmsc=this.onMediaSourceClose.bind(this),r.addEventListener("sourceopen",this.onmso),r.addEventListener("sourceended",this.onmse),r.addEventListener("sourceclose",this.onmsc),t.src=URL.createObjectURL(r)}}},{key:"onMediaDetaching",value:function(){c.logger.log("media source detaching");var e=this.mediaSource;if(e){if("open"===e.readyState)try{e.endOfStream()}catch(e){c.logger.warn("onMediaDetaching:"+e.message+" while calling endOfStream")}e.removeEventListener("sourceopen",this.onmso),e.removeEventListener("sourceended",this.onmse),e.removeEventListener("sourceclose",this.onmsc),this.media&&(URL.revokeObjectURL(this.media.src),this.media.removeAttribute("src"),this.media.load()),this.mediaSource=null,this.media=null,this.pendingTracks={},this.tracks={},this.sourceBuffer={},this.flushRange=[],this.segments=[],this.appended=0}this.onmso=this.onmse=this.onmsc=null,this.hls.trigger(u.default.MEDIA_DETACHED)}},{key:"onMediaSourceOpen",value:function(){c.logger.log("media source opened"),this.hls.trigger(u.default.MEDIA_ATTACHED,{media:this.media});var e=this.mediaSource;e&&e.removeEventListener("sourceopen",this.onmso),this.checkPendingTracks()}},{key:"checkPendingTracks",value:function(){var e=this.pendingTracks,t=Object.keys(e).length;t&&(this.sourceBufferNb<=t||0===this.sourceBufferNb)&&(this.createSourceBuffers(e),this.pendingTracks={},this.doAppending())}},{key:"onMediaSourceClose",value:function(){c.logger.log("media source closed")}},{key:"onMediaSourceEnded",value:function(){c.logger.log("media source ended")}},{key:"onSBUpdateEnd",value:function(){if(this.audioTimestampOffset){var e=this.sourceBuffer.audio;c.logger.warn("change mpeg audio timestamp offset from "+e.timestampOffset+" to "+this.audioTimestampOffset),e.timestampOffset=this.audioTimestampOffset,delete this.audioTimestampOffset}this._needsFlush&&this.doFlush(),this._needsEos&&this.checkEos(),this.appending=!1;var t=this.parent,r=this.segments.reduce(function(e,r){return r.parent===t?e+1:e},0);this.hls.trigger(u.default.BUFFER_APPENDED,{parent:t,pending:r}),this._needsFlush||this.doAppending(),this.updateMediaElementDuration()}},{key:"onSBUpdateError",value:function(e){c.logger.error("sourceBuffer error:",e),this.hls.trigger(u.default.ERROR,{type:h.ErrorTypes.MEDIA_ERROR,details:h.ErrorDetails.BUFFER_APPENDING_ERROR,fatal:!1})}},{key:"onBufferReset",value:function(){var e=this.sourceBuffer;for(var t in e){var r=e[t];try{this.mediaSource.removeSourceBuffer(r),r.removeEventListener("updateend",this.onsbue),r.removeEventListener("error",this.onsbe)}catch(e){}}this.sourceBuffer={},this.flushRange=[],this.segments=[],this.appended=0}},{key:"onBufferCodecs",value:function(e){if(0===Object.keys(this.sourceBuffer).length){for(var t in e)this.pendingTracks[t]=e[t];var r=this.mediaSource;r&&"open"===r.readyState&&this.checkPendingTracks()}}},{key:"createSourceBuffers",value:function(e){var t=this.sourceBuffer,r=this.mediaSource;for(var i in e)if(!t[i]){var a=e[i],n=a.levelCodec||a.codec,s=a.container+";codecs="+n;c.logger.log("creating sourceBuffer("+s+")");try{var o=t[i]=r.addSourceBuffer(s);o.addEventListener("updateend",this.onsbue),o.addEventListener("error",this.onsbe),this.tracks[i]={codec:n,container:a.container},a.buffer=o}catch(e){c.logger.error("error while trying to add sourceBuffer:"+e.message),this.hls.trigger(u.default.ERROR,{type:h.ErrorTypes.MEDIA_ERROR,details:h.ErrorDetails.BUFFER_ADD_CODEC_ERROR,fatal:!1,err:e,mimeType:s})}}this.hls.trigger(u.default.BUFFER_CREATED,{tracks:e})}},{key:"onBufferAppending",value:function(e){this._needsFlush||(this.segments?this.segments.push(e):this.segments=[e],this.doAppending())}},{key:"onBufferAppendFail",value:function(e){c.logger.error("sourceBuffer error:",e.event),this.hls.trigger(u.default.ERROR,{type:h.ErrorTypes.MEDIA_ERROR,details:h.ErrorDetails.BUFFER_APPENDING_ERROR,fatal:!1})}},{key:"onBufferEos",value:function(e){var t=this.sourceBuffer,r=e.type;for(var i in t)r&&i!==r||t[i].ended||(t[i].ended=!0,c.logger.log(i+" sourceBuffer now EOS"));this.checkEos()}},{key:"checkEos",value:function(){var e=this.sourceBuffer,t=this.mediaSource;if(!t||"open"!==t.readyState)return void(this._needsEos=!1);for(var r in e){var i=e[r];if(!i.ended)return;if(i.updating)return void(this._needsEos=!0)}c.logger.log("all media data available, signal endOfStream() to MediaSource and stop loading fragment");try{t.endOfStream()}catch(e){c.logger.warn("exception while calling mediaSource.endOfStream()")}this._needsEos=!1}},{key:"onBufferFlushing",value:function(e){this.flushRange.push({start:e.startOffset,end:e.endOffset,type:e.type}),this.flushBufferCounter=0,this.doFlush()}},{key:"onLevelUpdated",value:function(e){var t=e.details;0!==t.fragments.length&&(this._levelDuration=t.totalduration+t.fragments[0].start,this.updateMediaElementDuration())}},{key:"updateMediaElementDuration",value:function(){var e=this.media,t=this.mediaSource,r=this.sourceBuffer,i=this._levelDuration;if(null!==i&&e&&t&&r&&0!==e.readyState&&"open"===t.readyState){for(var a in r)if(r[a].updating)return;null===this._msDuration&&(this._msDuration=t.duration);var n=e.duration;(i>this._msDuration&&i>n||n===1/0||isNaN(n))&&(c.logger.log("Updating mediasource duration to "+i.toFixed(3)),this._msDuration=t.duration=i)}}},{key:"doFlush",value:function(){for(;this.flushRange.length;){var e=this.flushRange[0];if(!this.flushBuffer(e.start,e.end,e.type))return void(this._needsFlush=!0);this.flushRange.shift(),this.flushBufferCounter=0}if(0===this.flushRange.length){this._needsFlush=!1;var t=0,r=this.sourceBuffer;try{for(var i in r)t+=r[i].buffered.length}catch(e){c.logger.error("error while accessing sourceBuffer.buffered")}this.appended=t,this.hls.trigger(u.default.BUFFER_FLUSHED)}}},{key:"doAppending",value:function(){var e=this.hls,t=this.sourceBuffer,r=this.segments;if(Object.keys(t).length){if(this.media.error)return this.segments=[],void c.logger.error("trying to append although a media error occured, flush segment and abort");if(this.appending)return;if(r&&r.length){var i=r.shift();try{var a=i.type,n=t[a];n?n.updating?r.unshift(i):(n.ended=!1,this.parent=i.parent,n.appendBuffer(i.data),this.appendError=0,this.appended++,this.appending=!0):this.onSBUpdateEnd()}catch(t){c.logger.error("error while trying to append buffer:"+t.message),r.unshift(i);var s={type:h.ErrorTypes.MEDIA_ERROR,parent:i.parent};if(22===t.code)return this.segments=[],s.details=h.ErrorDetails.BUFFER_FULL_ERROR,s.fatal=!1,void e.trigger(u.default.ERROR,s);if(this.appendError?this.appendError++:this.appendError=1,s.details=h.ErrorDetails.BUFFER_APPEND_ERROR,this.appendError>e.config.appendErrorMaxRetry)return c.logger.log("fail "+e.config.appendErrorMaxRetry+" times to append segment in sourceBuffer"),r=[],s.fatal=!0,void e.trigger(u.default.ERROR,s);s.fatal=!1,e.trigger(u.default.ERROR,s)}}}}},{key:"flushBuffer",value:function(e,t,r){var i,a,n,s,o,l,u=this.sourceBuffer;if(Object.keys(u).length){if(c.logger.log("flushBuffer,pos/start/end: "+this.media.currentTime.toFixed(3)+"/"+e+"/"+t),this.flushBufferCounter<this.appended){for(var d in u)if(!r||d===r){if(i=u[d],i.ended=!1,i.updating)return c.logger.warn("cannot flush, sb updating in progress"),!1;try{for(a=0;a<i.buffered.length;a++)if(n=i.buffered.start(a),s=i.buffered.end(a),navigator.userAgent.toLowerCase().indexOf("firefox")!==-1&&t===Number.POSITIVE_INFINITY?(o=e,l=t):(o=Math.max(n,e),l=Math.min(s,t)),Math.min(l,s)-o>.5)return this.flushBufferCounter++,c.logger.log("flush "+d+" ["+o+","+l+"], of ["+n+","+s+"], pos:"+this.media.currentTime),i.remove(o,l),!1}catch(e){c.logger.warn("exception while accessing sourcebuffer, it might have been removed from MediaSource")}}}else c.logger.warn("abort flushing too many retries");c.logger.log("buffer flushed")}return!0}}]),t}(f.default);r.default=g},{33:33,34:34,35:35,53:53}],9:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),l=e(35),u=i(l),d=e(34),f=i(d),c=function(e){function t(e){return a(this,t),n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,u.default.FPS_DROP_LEVEL_CAPPING,u.default.MEDIA_ATTACHING,u.default.MANIFEST_PARSED))}return s(t,e),o(t,[{key:"destroy",value:function(){this.hls.config.capLevelToPlayerSize&&(this.media=this.restrictedLevels=null,this.autoLevelCapping=Number.POSITIVE_INFINITY,this.timer&&(this.timer=clearInterval(this.timer)))}},{key:"onFpsDropLevelCapping",value:function(e){this.restrictedLevels||(this.restrictedLevels=[]),this.isLevelRestricted(e.droppedLevel)||this.restrictedLevels.push(e.droppedLevel)}},{key:"onMediaAttaching",value:function(e){this.media=e.media instanceof HTMLVideoElement?e.media:null}},{key:"onManifestParsed",value:function(e){var t=this.hls;t.config.capLevelToPlayerSize&&(this.autoLevelCapping=Number.POSITIVE_INFINITY,this.levels=e.levels,t.firstLevel=this.getMaxLevel(e.firstLevel),clearInterval(this.timer),this.timer=setInterval(this.detectPlayerSize.bind(this),1e3),this.detectPlayerSize())}},{key:"detectPlayerSize",value:function(){if(this.media){var e=this.levels?this.levels.length:0;if(e){var t=this.hls;t.autoLevelCapping=this.getMaxLevel(e-1),t.autoLevelCapping>this.autoLevelCapping&&t.streamController.nextLevelSwitch(),this.autoLevelCapping=t.autoLevelCapping}}}},{key:"getMaxLevel",value:function(e){var t=0,r=void 0,i=void 0,a=this.mediaWidth,n=this.mediaHeight,s=0,o=0;for(r=0;r<=e&&(i=this.levels[r],!this.isLevelRestricted(r))&&(t=r,s=i.width,o=i.height,!(a<=s||n<=o));r++);return t}},{key:"isLevelRestricted",value:function(e){return!(!this.restrictedLevels||this.restrictedLevels.indexOf(e)===-1)}},{key:"contentScaleFactor",get:function(){var e=1;try{e=window.devicePixelRatio}catch(e){}return e}},{key:"mediaWidth",get:function(){var e=void 0,t=this.media;return t&&(e=t.width||t.clientWidth||t.offsetWidth,e*=this.contentScaleFactor),e}},{key:"mediaHeight",get:function(){var e=void 0,t=this.media;return t&&(e=t.height||t.clientHeight||t.offsetHeight,e*=this.contentScaleFactor),e}}]),t}(f.default);r.default=c},{34:34,35:35}],10:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),l=e(35),u=i(l),d=e(34),f=i(d),c=e(53),h=function(e){function t(e){return a(this,t),n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,u.default.MEDIA_ATTACHING))}return s(t,e),o(t,[{key:"destroy",value:function(){this.timer&&clearInterval(this.timer),this.isVideoPlaybackQualityAvailable=!1}},{key:"onMediaAttaching",value:function(e){var t=this.hls.config;if(t.capLevelOnFPSDrop){"function"==typeof(this.video=e.media instanceof HTMLVideoElement?e.media:null).getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),clearInterval(this.timer),this.timer=setInterval(this.checkFPSInterval.bind(this),t.fpsDroppedMonitoringPeriod)}}},{key:"checkFPS",value:function(e,t,r){var i=performance.now();if(t){if(this.lastTime){var a=i-this.lastTime,n=r-this.lastDroppedFrames,s=t-this.lastDecodedFrames,o=1e3*n/a,l=this.hls;if(l.trigger(u.default.FPS_DROP,{currentDropped:n,currentDecoded:s,totalDroppedFrames:r}),o>0&&n>l.config.fpsDroppedMonitoringThreshold*s){var d=l.currentLevel;c.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: "+d),d>0&&(l.autoLevelCapping===-1||l.autoLevelCapping>=d)&&(d-=1,l.trigger(u.default.FPS_DROP_LEVEL_CAPPING,{level:d,droppedLevel:l.currentLevel}),l.autoLevelCapping=d,l.streamController.nextLevelSwitch())}}this.lastTime=i,this.lastDroppedFrames=r,this.lastDecodedFrames=t}}},{key:"checkFPSInterval",value:function(){var e=this.video;if(e)if(this.isVideoPlaybackQualityAvailable){var t=e.getVideoPlaybackQuality();this.checkFPS(e,t.totalVideoFrames,t.droppedVideoFrames)}else this.checkFPS(e,e.webkitDecodedFrameCount,e.webkitDroppedFrameCount)}}]),t}(f.default);r.default=h},{34:34,35:35,53:53}],11:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),l=e(35),u=i(l),d=e(34),f=i(d),c=function(e){function t(e){a(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,u.default.MEDIA_ATTACHED,u.default.MEDIA_DETACHING,u.default.FRAG_PARSING_METADATA));return r.id3Track=void 0,r.media=void 0,r}return s(t,e),o(t,[{key:"destroy",value:function(){f.default.prototype.destroy.call(this)}},{key:"onMediaAttached",value:function(e){this.media=e.media,this.media&&(this.id3Track=this.media.addTextTrack("metadata","id3"),this.id3Track.mode="hidden")}},{key:"onMediaDetaching",value:function(){this.media=void 0}},{key:"onFragParsingMetadata",value:function(e){var t=e.frag,r=e.samples,i=t.start,a=t.start+t.duration;i===a&&(a+=1e-4);for(var n=window.WebKitDataCue||window.VTTCue||window.TextTrackCue,s=0;s<r.length;s++){var o=this.parseID3Frame(r[s].data),l=this.decodeID3Frame(o);if(l){var u=new n(i,a,"");u.value=l,this.id3Track.addCue(u)}}}},{key:"parseID3Frame",value:function(e){if(!(e.length<21)&&73===e[0]&&68===e[1]&&51===e[2]){var t=String.fromCharCode(e[10],e[11],e[12],e[13]);return e=e.subarray(20),{type:t,data:e}}}},{key:"decodeID3Frame",value:function(e){return"TXXX"===e.type?this.decodeTxxxFrame(e):"PRIV"===e.type?this.decodePrivFrame(e):"T"===e.type[0]?this.decodeTextFrame(e):void 0}},{key:"decodeTxxxFrame",value:function(e){if(!(e.size<2)&&3===e.data[0]){var t=1,r=this.utf8ArrayToStr(e.data.subarray(t));t+=r.length+1;return{key:"TXXX",description:r,data:this.utf8ArrayToStr(e.data.subarray(t))}}}},{key:"decodeTextFrame",value:function(e){if(!(e.size<2)&&3===e.data[0]){var t=e.data.subarray(1);return{key:e.type,data:this.utf8ArrayToStr(t)}}}},{key:"decodePrivFrame",value:function(e){if(!(e.size<2)){var t=this.utf8ArrayToStr(e.data);return{key:"PRIV",info:t,data:e.data.subarray(t.length+1).buffer}}}},{key:"utf8ArrayToStr",value:function(e){for(var t=void 0,r=void 0,i="",a=0,n=e.length;a<n;){var s=e[a++];switch(s>>4){case 0:return i;case 1:case 2:case 3:case 4:case 5:case 6:case 7:i+=String.fromCharCode(s);break;case 12:case 13:t=e[a++],i+=String.fromCharCode((31&s)<<6|63&t);break;case 14:t=e[a++],r=e[a++],i+=String.fromCharCode((15&s)<<12|(63&t)<<6|(63&r)<<0)}}return i}}]),t}(f.default);r.default=c},{34:34,35:35}],12:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),l=e(35),u=i(l),d=e(34),f=i(d),c=e(53),h=e(33),g=e(37),v=i(g),p=function(e){function t(e){a(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,u.default.MANIFEST_LOADED,u.default.LEVEL_LOADED,u.default.FRAG_LOADED,u.default.ERROR));return r.ontick=r.tick.bind(r),r._manualLevel=-1,r}return s(t,e),o(t,[{key:"destroy",value:function(){this.timer&&(clearTimeout(this.timer),this.timer=null),this._manualLevel=-1}},{key:"startLoad",value:function(){this.canload=!0;var e=this._levels;e&&e.forEach(function(e){e.loadError=0;var t=e.details;t&&t.live&&(e.details=void 0)}),this.timer&&this.tick()}},{key:"stopLoad",value:function(){this.canload=!1}},{key:"onManifestLoaded",value:function(e){var t,r=[],i=[],a={},n=!1,s=!1,o=this.hls,l=/chrome|firefox/.test(navigator.userAgent.toLowerCase()),d=function(e,t){return MediaSource.isTypeSupported(e+"/mp4;codecs="+t)};if(e.levels.forEach(function(e){e.videoCodec&&(n=!0),l&&e.audioCodec&&e.audioCodec.indexOf("mp4a.40.34")!==-1&&(e.audioCodec=void 0),(e.audioCodec||e.attrs&&e.attrs.AUDIO)&&(s=!0);var t=a[e.bitrate];void 0===t?(a[e.bitrate]=r.length,e.url=[e.url],e.urlId=0,r.push(e)):r[t].url.push(e.url)}),n&&s?r.forEach(function(e){e.videoCodec&&i.push(e)}):i=r,i=i.filter(function(e){var t=e.audioCodec,r=e.videoCodec;return(!t||d("audio",t))&&(!r||d("video",r))}),i.length){t=i[0].bitrate,i.sort(function(e,t){return e.bitrate-t.bitrate}),this._levels=i;for(var f=0;f<i.length;f++)if(i[f].bitrate===t){this._firstLevel=f,c.logger.log("manifest loaded,"+i.length+" level(s) found, first bitrate:"+t);break}o.trigger(u.default.MANIFEST_PARSED,{levels:i,firstLevel:this._firstLevel,stats:e.stats,audio:s,video:n,altAudio:e.audioTracks.length>0})}else o.trigger(u.default.ERROR,{type:h.ErrorTypes.MEDIA_ERROR,details:h.ErrorDetails.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:o.url,reason:"no level with compatible codecs found in manifest"})}},{key:"setLevelInternal",value:function(e){var t=this._levels,r=this.hls;if(e>=0&&e<t.length){if(this.timer&&(clearTimeout(this.timer),this.timer=null),this._level!==e){c.logger.log("switching to level "+e),this._level=e;var i=t[e];i.level=e,r.trigger(u.default.LEVEL_SWITCH,i),r.trigger(u.default.LEVEL_SWITCHING,i)}var a=t[e],n=a.details;if(!n||n.live===!0){var s=a.urlId;r.trigger(u.default.LEVEL_LOADING,{url:a.url[s],level:e,id:s})}}else r.trigger(u.default.ERROR,{type:h.ErrorTypes.OTHER_ERROR,details:h.ErrorDetails.LEVEL_SWITCH_ERROR,level:e,fatal:!1,reason:"invalid level idx"})}},{key:"onError",value:function(e){if(!e.fatal){var t=e.details,r=this.hls,i=void 0,a=void 0,n=!1;switch(t){case h.ErrorDetails.FRAG_LOAD_ERROR:case h.ErrorDetails.FRAG_LOAD_TIMEOUT:case h.ErrorDetails.FRAG_LOOP_LOADING_ERROR:case h.ErrorDetails.KEY_LOAD_ERROR:case h.ErrorDetails.KEY_LOAD_TIMEOUT:i=e.frag.level;break;case h.ErrorDetails.LEVEL_LOAD_ERROR:case h.ErrorDetails.LEVEL_LOAD_TIMEOUT:i=e.context.level,n=!0;break;case h.ErrorDetails.REMUX_ALLOC_ERROR:i=e.level}if(void 0!==i){a=this._levels[i],a.loadError?a.loadError++:a.loadError=1;var s=a.url.length;if(s>1&&a.loadError<s)a.urlId=(a.urlId+1)%s,a.details=void 0,c.logger.warn("level controller,"+t+" for level "+i+": switching to redundant stream id "+a.urlId);else{if(this._manualLevel===-1&&i)c.logger.warn("level controller,"+t+": switch-down for next fragment"),r.nextAutoLevel=Math.max(0,i-1);else if(a&&a.details&&a.details.live)c.logger.warn("level controller,"+t+" on live stream, discard"),n&&(this._level=void 0);else if(t===h.ErrorDetails.LEVEL_LOAD_ERROR||t===h.ErrorDetails.LEVEL_LOAD_TIMEOUT){var o=r.media,l=o&&v.default.isBuffered(o,o.currentTime)&&v.default.isBuffered(o,o.currentTime+.5);if(l){var u=r.config.levelLoadingRetryDelay;c.logger.warn("level controller,"+t+", but media buffered, retry in "+u+"ms"),this.timer=setTimeout(this.ontick,u),e.levelRetry=!0}else c.logger.error("cannot recover "+t+" error"),this._level=void 0,this.timer&&(clearTimeout(this.timer),this.timer=null),e.fatal=!0}}}}}},{key:"onFragLoaded",value:function(e){var t=e.frag;if(t&&"main"===t.type){var r=this._levels[t.level];r&&(r.loadError=0)}}},{key:"onLevelLoaded",value:function(e){var t=e.level;if(t===this._level){var r=this._levels[t];r.loadError=0;var i=e.details;if(i.live){var a=1e3*(i.averagetargetduration?i.averagetargetduration:i.targetduration),n=r.details;n&&i.endSN===n.endSN&&(a/=2,c.logger.log("same live playlist, reload twice faster")),a-=performance.now()-e.stats.trequest,a=Math.max(1e3,Math.round(a)),c.logger.log("live playlist, reload in "+a+" ms"),this.timer=setTimeout(this.ontick,a)}else this.timer=null}}},{key:"tick",value:function(){var e=this._level;if(void 0!==e&&this.canload){var t=this._levels[e];if(t&&t.url){var r=t.urlId;this.hls.trigger(u.default.LEVEL_LOADING,{url:t.url[r],level:e,id:r})}}}},{key:"levels",get:function(){return this._levels}},{key:"level",get:function(){return this._level},set:function(e){var t=this._levels;t&&t.length>e&&(this._level===e&&void 0!==t[e].details||this.setLevelInternal(e))}},{key:"manualLevel",get:function(){return this._manualLevel},set:function(e){this._manualLevel=e,void 0===this._startLevel&&(this._startLevel=e),e!==-1&&(this.level=e)}},{key:"firstLevel",get:function(){return this._firstLevel},set:function(e){this._firstLevel=e}},{key:"startLevel",get:function(){if(void 0===this._startLevel){var e=this.hls.config.startLevel;return void 0!==e?e:this._firstLevel}return this._startLevel},set:function(e){this._startLevel=e}},{key:"nextLoadLevel",get:function(){return this._manualLevel!==-1?this._manualLevel:this.hls.nextAutoLevel},set:function(e){this.level=e,this._manualLevel===-1&&(this.hls.nextAutoLevel=e)}}]),t}(f.default);r.default=p},{33:33,34:34,35:35,37:37,53:53}],13:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),l=e(48),u=i(l),d=e(37),f=i(d),c=e(25),h=i(c),g=e(35),v=i(g),p=e(34),y=i(p),m=e(38),E=i(m),b=e(54),T=i(b),k=e(33),_=e(53),R={STOPPED:"STOPPED",IDLE:"IDLE",KEY_LOADING:"KEY_LOADING",FRAG_LOADING:"FRAG_LOADING",FRAG_LOADING_WAITING_RETRY:"FRAG_LOADING_WAITING_RETRY",WAITING_LEVEL:"WAITING_LEVEL",PARSING:"PARSING",PARSED:"PARSED",BUFFER_FLUSHING:"BUFFER_FLUSHING",ENDED:"ENDED",ERROR:"ERROR"},A=function(e){function t(e){a(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,v.default.MEDIA_ATTACHED,v.default.MEDIA_DETACHING,v.default.MANIFEST_LOADING,v.default.MANIFEST_PARSED,v.default.LEVEL_LOADED,v.default.KEY_LOADED,v.default.FRAG_LOADED,v.default.FRAG_LOAD_EMERGENCY_ABORTED,v.default.FRAG_PARSING_INIT_SEGMENT,v.default.FRAG_PARSING_DATA,v.default.FRAG_PARSED,v.default.ERROR,v.default.AUDIO_TRACK_SWITCHING,v.default.AUDIO_TRACK_SWITCHED,v.default.BUFFER_CREATED,v.default.BUFFER_APPENDED,v.default.BUFFER_FLUSHED));return r.config=e.config,r.audioCodecSwap=!1,r.ticks=0,r._state=R.STOPPED,r.ontick=r.tick.bind(r),r}return s(t,e),o(t,[{key:"destroy",value:function(){this.stopLoad(),this.timer&&(clearInterval(this.timer),this.timer=null),y.default.prototype.destroy.call(this),this.state=R.STOPPED}},{key:"startLoad",value:function(e){if(this.levels){var t=this.lastCurrentTime,r=this.hls;if(this.stopLoad(),this.timer||(this.timer=setInterval(this.ontick,100)),this.level=-1,this.fragLoadError=0,!this.startFragRequested){var i=r.startLevel;i===-1&&(i=0,this.bitrateTest=!0),this.level=r.nextLoadLevel=i,this.loadedmetadata=!1}t>0&&e===-1&&(_.logger.log("override startPosition with lastCurrentTime @"+t.toFixed(3)),e=t),this.state=R.IDLE,this.nextLoadPosition=this.startPosition=this.lastCurrentTime=e,this.tick()}else this.forceStartLoad=!0,this.state=R.STOPPED}},{key:"stopLoad",value:function(){var e=this.fragCurrent;e&&(e.loader&&e.loader.abort(),this.fragCurrent=null),this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=R.STOPPED,this.forceStartLoad=!1}},{key:"tick",value:function(){1===++this.ticks&&(this.doTick(),this.ticks>1&&setTimeout(this.tick,1),this.ticks=0)}},{key:"doTick",value:function(){switch(this.state){case R.ERROR:break;case R.BUFFER_FLUSHING:this.fragLoadError=0;break;case R.IDLE:this._doTickIdle();break;case R.WAITING_LEVEL:var e=this.levels[this.level];e&&e.details&&(this.state=R.IDLE);break;case R.FRAG_LOADING_WAITING_RETRY:var t=performance.now(),r=this.retryDate;(!r||t>=r||this.media&&this.media.seeking)&&(_.logger.log("mediaController: retryDate reached, switch back to IDLE state"),this.state=R.IDLE);break;case R.ERROR:case R.STOPPED:case R.FRAG_LOADING:case R.PARSING:case R.PARSED:case R.ENDED:}this._checkBuffer(),this._checkFragmentChanged()}},{key:"_doTickIdle", +value:function(){var e=this.hls,t=e.config,r=this.media;if(void 0===this.levelLastLoaded||r||!this.startFragRequested&&t.startFragPrefetch){var i=void 0;i=this.loadedmetadata?r.currentTime:this.nextLoadPosition;var a=e.nextLoadLevel,n=this.levels[a];if(n){var s=n.bitrate,o=void 0;o=s?Math.max(8*t.maxBufferSize/s,t.maxBufferLength):t.maxBufferLength,o=Math.min(o,t.maxMaxBufferLength);var l=f.default.bufferInfo(this.mediaBuffer?this.mediaBuffer:r,i,t.maxBufferHole),u=l.len;if(!(u>=o)){_.logger.trace("buffer length of "+u.toFixed(3)+" is below max of "+o.toFixed(3)+". checking for more payload ..."),this.level=e.nextLoadLevel=a;var d=n.details;if(void 0===d||d.live&&this.levelLastLoaded!==a)return void(this.state=R.WAITING_LEVEL);var c=this.fragPrevious;if(!d.live&&c&&c.sn===d.endSN){if(Math.min(r.duration,c.start+c.duration)-Math.max(l.end,c.start)<=Math.max(.2,c.duration)){var h={};return this.altAudio&&(h.type="video"),this.hls.trigger(v.default.BUFFER_EOS,h),void(this.state=R.ENDED)}}this._fetchPayloadOrEos(i,l,d)}}}}},{key:"_fetchPayloadOrEos",value:function(e,t,r){var i=this.fragPrevious,a=this.level,n=r.fragments,s=n.length;if(0!==s){var o=n[0].start,l=n[s-1].start+n[s-1].duration,u=t.end,d=void 0;if(r.initSegment&&!r.initSegment.data)d=r.initSegment;else if(r.live){var f=this.config.initialLiveManifestSize;if(s<f)return void _.logger.warn("Can not start playback of a level, reason: not enough fragments "+s+" < "+f);if(null===(d=this._ensureFragmentAtLivePoint(r,u,o,l,i,n,s)))return}else u<o&&(d=n[0]);d||(d=this._findFragment(o,i,s,n,u,l,r)),d&&this._loadFragmentOrKey(d,a,r,e,u)}}},{key:"_ensureFragmentAtLivePoint",value:function(e,t,r,i,a,n,s){var o=this.hls.config,l=this.media,u=void 0,d=void 0!==o.liveMaxLatencyDuration?o.liveMaxLatencyDuration:o.liveMaxLatencyDurationCount*e.targetduration;if(t<Math.max(r-o.maxFragLookUpTolerance,i-d)){var f=this.liveSyncPosition=this.computeLivePosition(r,e);_.logger.log("buffer end: "+t.toFixed(3)+" is located too far from the end of live sliding playlist, reset currentTime to : "+f.toFixed(3)),t=f,l&&l.readyState&&l.duration>f&&(l.currentTime=f)}if(e.PTSKnown&&t>i&&l&&l.readyState)return null;if(this.startFragRequested&&!e.PTSKnown){if(a){var c=a.sn+1;c>=e.startSN&&c<=e.endSN&&(u=n[c-e.startSN],_.logger.log("live playlist, switching playlist, load frag with next SN: "+u.sn))}u||(u=n[Math.min(s-1,Math.round(s/2))],_.logger.log("live playlist, switching playlist, unknown, load middle frag : "+u.sn))}return u}},{key:"_findFragment",value:function(e,t,r,i,a,n,s){var o=this.hls.config,l=void 0,d=void 0,f=o.maxFragLookUpTolerance,c=t?i[t.sn-i[0].sn+1]:void 0,h=function(e){var t=Math.min(f,e.duration);return e.start+e.duration-t<=a?1:e.start-t>a&&e.start?-1:0};if(a<n?(a>n-f&&(f=0),d=c&&!h(c)?c:u.default.search(i,h)):d=i[r-1],d){l=d;var g=l.sn-s.startSN,v=t&&l.level===t.level,p=i[g-1],y=i[g+1];if(t&&l.sn===t.sn)if(v&&!l.backtracked)if(l.sn<s.endSN){var m=t.deltaPTS;m&&m>o.maxBufferHole&&t.dropped&&g?(l=p,_.logger.warn("SN just loaded, with large PTS gap between audio and video, maybe frag is not starting with a keyframe ? load previous one to try to overcome this"),t.loadCounter--):(l=y,_.logger.log("SN just loaded, load next one: "+l.sn))}else l=null;else l.backtracked&&(y&&y.backtracked?(_.logger.warn("Already backtracked from fragment "+y.sn+", will not backtrack to fragment "+l.sn+". Loading fragment "+y.sn),l=y):(_.logger.warn("Loaded fragment with dropped frames, backtracking 1 segment to find a keyframe"),l.dropped=0,p?(p.loadCounter&&p.loadCounter--,l=p,l.backtracked=!0):l=null))}return l}},{key:"_loadFragmentOrKey",value:function(e,t,r,i,a){var n=this.hls,s=n.config;if(!e.decryptdata||null==e.decryptdata.uri||null!=e.decryptdata.key){if(_.logger.log("Loading "+e.sn+" of ["+r.startSN+" ,"+r.endSN+"],level "+t+", currentTime:"+i.toFixed(3)+",bufferEnd:"+a.toFixed(3)),void 0!==this.fragLoadIdx?this.fragLoadIdx++:this.fragLoadIdx=0,e.loadCounter){e.loadCounter++;var o=s.fragLoadingLoopThreshold;if(e.loadCounter>o&&Math.abs(this.fragLoadIdx-e.loadIdx)<o)return void n.trigger(v.default.ERROR,{type:k.ErrorTypes.MEDIA_ERROR,details:k.ErrorDetails.FRAG_LOOP_LOADING_ERROR,fatal:!1,frag:e})}else e.loadCounter=1;return e.loadIdx=this.fragLoadIdx,this.fragCurrent=e,this.startFragRequested=!0,isNaN(e.sn)||(this.nextLoadPosition=e.start+e.duration),e.autoLevel=n.autoLevelEnabled,e.bitrateTest=this.bitrateTest,n.trigger(v.default.FRAG_LOADING,{frag:e}),this.demuxer||(this.demuxer=new h.default(n,"main")),void(this.state=R.FRAG_LOADING)}_.logger.log("Loading key for "+e.sn+" of ["+r.startSN+" ,"+r.endSN+"],level "+t),this.state=R.KEY_LOADING,n.trigger(v.default.KEY_LOADING,{frag:e})}},{key:"getBufferedFrag",value:function(e){return u.default.search(this._bufferedFrags,function(t){return e<t.startPTS?-1:e>t.endPTS?1:0})}},{key:"followingBufferedFrag",value:function(e){return e?this.getBufferedFrag(e.endPTS+.5):null}},{key:"_checkFragmentChanged",value:function(){var e,t,r=this.media;if(r&&r.readyState&&r.seeking===!1&&(t=r.currentTime,t>r.playbackRate*this.lastCurrentTime&&(this.lastCurrentTime=t),f.default.isBuffered(r,t)?e=this.getBufferedFrag(t):f.default.isBuffered(r,t+.1)&&(e=this.getBufferedFrag(t+.1)),e)){var i=e;if(i!==this.fragPlaying){this.hls.trigger(v.default.FRAG_CHANGED,{frag:i});var a=i.level;this.fragPlaying&&this.fragPlaying.level===a||this.hls.trigger(v.default.LEVEL_SWITCHED,{level:a}),this.fragPlaying=i}}}},{key:"immediateLevelSwitch",value:function(){if(_.logger.log("immediateLevelSwitch"),!this.immediateSwitch){this.immediateSwitch=!0;var e=this.media,t=void 0;e?(t=e.paused,e.pause()):t=!0,this.previouslyPaused=t}var r=this.fragCurrent;r&&r.loader&&r.loader.abort(),this.fragCurrent=null,this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,this.flushMainBuffer(0,Number.POSITIVE_INFINITY)}},{key:"immediateLevelSwitchEnd",value:function(){var e=this.media;e&&e.buffered.length&&(this.immediateSwitch=!1,f.default.isBuffered(e,e.currentTime)&&(e.currentTime-=1e-4),this.previouslyPaused||e.play())}},{key:"nextLevelSwitch",value:function(){var e=this.media;if(e&&e.readyState){var t=void 0,r=void 0,i=void 0;if(this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,r=this.getBufferedFrag(e.currentTime),r&&r.startPTS>1&&this.flushMainBuffer(0,r.startPTS-1),e.paused)t=0;else{var a=this.hls.nextLoadLevel,n=this.levels[a],s=this.fragLastKbps;t=s&&this.fragCurrent?this.fragCurrent.duration*n.bitrate/(1e3*s)+1:0}if((i=this.getBufferedFrag(e.currentTime+t))&&(i=this.followingBufferedFrag(i))){var o=this.fragCurrent;o&&o.loader&&o.loader.abort(),this.fragCurrent=null,this.flushMainBuffer(i.startPTS,Number.POSITIVE_INFINITY)}}}},{key:"flushMainBuffer",value:function(e,t){this.state=R.BUFFER_FLUSHING;var r={startOffset:e,endOffset:t};this.altAudio&&(r.type="video"),this.hls.trigger(v.default.BUFFER_FLUSHING,r)}},{key:"onMediaAttached",value:function(e){var t=this.media=this.mediaBuffer=e.media;this.onvseeking=this.onMediaSeeking.bind(this),this.onvseeked=this.onMediaSeeked.bind(this),this.onvended=this.onMediaEnded.bind(this),t.addEventListener("seeking",this.onvseeking),t.addEventListener("seeked",this.onvseeked),t.addEventListener("ended",this.onvended);var r=this.config;this.levels&&r.autoStartLoad&&this.hls.startLoad(r.startPosition)}},{key:"onMediaDetaching",value:function(){var e=this.media;e&&e.ended&&(_.logger.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0);var t=this.levels;t&&t.forEach(function(e){e.details&&e.details.fragments.forEach(function(e){e.loadCounter=void 0,e.backtracked=void 0})}),e&&(e.removeEventListener("seeking",this.onvseeking),e.removeEventListener("seeked",this.onvseeked),e.removeEventListener("ended",this.onvended),this.onvseeking=this.onvseeked=this.onvended=null),this.media=this.mediaBuffer=null,this.loadedmetadata=!1,this.stopLoad()}},{key:"onMediaSeeking",value:function(){var e=this.media,t=e?e.currentTime:void 0,r=this.config;isNaN(t)||_.logger.log("media seeking to "+t.toFixed(3));var i=this.mediaBuffer?this.mediaBuffer:e,a=f.default.bufferInfo(i,t,this.config.maxBufferHole);if(this.state===R.FRAG_LOADING){var n=this.fragCurrent;if(0===a.len&&n){var s=r.maxFragLookUpTolerance,o=n.start-s,l=n.start+n.duration+s;t<o||t>l?(n.loader&&(_.logger.log("seeking outside of buffer while fragment load in progress, cancel fragment load"),n.loader.abort()),this.fragCurrent=null,this.fragPrevious=null,this.state=R.IDLE):_.logger.log("seeking outside of buffer but within currently loaded fragment range")}}else this.state===R.ENDED&&(0===a.len&&(this.fragPrevious=0),this.state=R.IDLE);e&&(this.lastCurrentTime=t),this.state!==R.FRAG_LOADING&&void 0!==this.fragLoadIdx&&(this.fragLoadIdx+=2*r.fragLoadingLoopThreshold),this.loadedmetadata||(this.nextLoadPosition=this.startPosition=t),this.tick()}},{key:"onMediaSeeked",value:function(){var e=this.media,t=e?e.currentTime:void 0;isNaN(t)||_.logger.log("media seeked to "+t.toFixed(3)),this.tick()}},{key:"onMediaEnded",value:function(){_.logger.log("media ended"),this.startPosition=this.lastCurrentTime=0}},{key:"onManifestLoading",value:function(){_.logger.log("trigger BUFFER_RESET"),this.hls.trigger(v.default.BUFFER_RESET),this._bufferedFrags=[],this.stalled=!1,this.startPosition=this.lastCurrentTime=0}},{key:"onManifestParsed",value:function(e){var t,r=!1,i=!1;e.levels.forEach(function(e){(t=e.audioCodec)&&(t.indexOf("mp4a.40.2")!==-1&&(r=!0),t.indexOf("mp4a.40.5")!==-1&&(i=!0))}),this.audioCodecSwitch=r&&i,this.audioCodecSwitch&&_.logger.log("both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=e.levels,this.startLevelLoaded=!1,this.startFragRequested=!1;var a=this.config;(a.autoStartLoad||this.forceStartLoad)&&this.hls.startLoad(a.startPosition)}},{key:"onLevelLoaded",value:function(e){var t=e.details,r=e.level,i=this.levels[r],a=t.totalduration,n=0;if(_.logger.log("level "+r+" loaded ["+t.startSN+","+t.endSN+"],duration:"+a),this.levelLastLoaded=r,t.live){var s=i.details;s&&t.fragments.length>0?(E.default.mergeDetails(s,t),n=t.fragments[0].start,this.liveSyncPosition=this.computeLivePosition(n,s),t.PTSKnown?_.logger.log("live playlist sliding:"+n.toFixed(3)):_.logger.log("live playlist - outdated PTS, unknown sliding")):(t.PTSKnown=!1,_.logger.log("live playlist - first load, unknown sliding"))}else t.PTSKnown=!1;if(i.details=t,this.hls.trigger(v.default.LEVEL_UPDATED,{details:t,level:r}),this.startFragRequested===!1){if(this.startPosition===-1||this.lastCurrentTime===-1){var o=t.startTimeOffset;isNaN(o)?t.live?(this.startPosition=this.computeLivePosition(n,t),_.logger.log("configure startPosition to "+this.startPosition)):this.startPosition=0:(o<0&&(_.logger.log("negative start time offset "+o+", count from end of last fragment"),o=n+a+o),_.logger.log("start time offset found in playlist, adjust startPosition to "+o),this.startPosition=o),this.lastCurrentTime=this.startPosition}this.nextLoadPosition=this.startPosition}this.state===R.WAITING_LEVEL&&(this.state=R.IDLE),this.tick()}},{key:"onKeyLoaded",value:function(){this.state===R.KEY_LOADING&&(this.state=R.IDLE,this.tick())}},{key:"onFragLoaded",value:function(e){var t=this.fragCurrent,r=e.frag;if(this.state===R.FRAG_LOADING&&t&&"main"===r.type&&r.level===t.level&&r.sn===t.sn){var i=e.stats,a=this.levels[t.level],n=a.details;if(_.logger.log("Loaded "+t.sn+" of ["+n.startSN+" ,"+n.endSN+"],level "+t.level),this.bitrateTest=!1,this.stats=i,r.bitrateTest===!0&&this.hls.nextLoadLevel)this.state=R.IDLE,this.startFragRequested=!1,i.tparsed=i.tbuffered=performance.now(),this.hls.trigger(v.default.FRAG_BUFFERED,{stats:i,frag:t,id:"main"}),this.tick();else if("initSegment"===r.sn)this.state=R.IDLE,i.tparsed=i.tbuffered=performance.now(),n.initSegment.data=e.payload,this.hls.trigger(v.default.FRAG_BUFFERED,{stats:i,frag:t,id:"main"}),this.tick();else{this.state=R.PARSING;var s=n.totalduration,o=t.level,l=t.sn,u=this.config.defaultAudioCodec||a.audioCodec;this.audioCodecSwap&&(_.logger.log("swapping playlist audio codec"),void 0===u&&(u=this.lastAudioCodec),u&&(u=u.indexOf("mp4a.40.5")!==-1?"mp4a.40.2":"mp4a.40.5")),this.pendingBuffering=!0,this.appended=!1,_.logger.log("Parsing "+l+" of ["+n.startSN+" ,"+n.endSN+"],level "+o+", cc "+t.cc);var d=this.demuxer;d||(d=this.demuxer=new h.default(this.hls,"main"));var f=this.media,c=f&&f.seeking,g=!c&&(n.PTSKnown||!n.live),p=n.initSegment?n.initSegment.data:[];d.push(e.payload,p,u,a.videoCodec,t,s,g,void 0)}}this.fragLoadError=0}},{key:"onFragParsingInitSegment",value:function(e){var t=this.fragCurrent,r=e.frag;if(t&&"main"===e.id&&r.sn===t.sn&&r.level===t.level&&this.state===R.PARSING){var i,a,n=e.tracks;if(n.audio&&this.altAudio&&delete n.audio,a=n.audio){var s=this.levels[this.level].audioCodec,o=navigator.userAgent.toLowerCase();s&&this.audioCodecSwap&&(_.logger.log("swapping playlist audio codec"),s=s.indexOf("mp4a.40.5")!==-1?"mp4a.40.2":"mp4a.40.5"),this.audioCodecSwitch&&1!==a.metadata.channelCount&&o.indexOf("firefox")===-1&&(s="mp4a.40.5"),o.indexOf("android")!==-1&&"audio/mpeg"!==a.container&&(s="mp4a.40.2",_.logger.log("Android: force audio codec to "+s)),a.levelCodec=s,a.id=e.id}a=n.video,a&&(a.levelCodec=this.levels[this.level].videoCodec,a.id=e.id),this.hls.trigger(v.default.BUFFER_CODECS,n);for(i in n){a=n[i],_.logger.log("main track:"+i+",container:"+a.container+",codecs[level/parsed]=["+a.levelCodec+"/"+a.codec+"]");var l=a.initSegment;l&&(this.appended=!0,this.pendingBuffering=!0,this.hls.trigger(v.default.BUFFER_APPENDING,{type:i,data:l,parent:"main",content:"initSegment"}))}this.tick()}}},{key:"onFragParsingData",value:function(e){var t=this,r=this.fragCurrent,i=e.frag;if(r&&"main"===e.id&&i.sn===r.sn&&i.level===r.level&&("audio"!==e.type||!this.altAudio)&&this.state===R.PARSING){var a=this.levels[this.level],n=r;if(isNaN(e.endPTS)&&(e.endPTS=e.startPTS+r.duration,e.endDTS=e.startDTS+r.duration),_.logger.log("Parsed "+e.type+",PTS:["+e.startPTS.toFixed(3)+","+e.endPTS.toFixed(3)+"],DTS:["+e.startDTS.toFixed(3)+"/"+e.endDTS.toFixed(3)+"],nb:"+e.nb+",dropped:"+(e.dropped||0)),"video"===e.type)if(n.dropped=e.dropped,n.dropped){if(!n.backtracked)return _.logger.warn("missing video frame(s), backtracking fragment"),n.backtracked=!0,this.nextLoadPosition=e.startPTS,this.state=R.IDLE,this.fragPrevious=n,void this.tick();_.logger.warn("Already backtracked on this fragment, appending with the gap")}else n.backtracked=!1;var s=E.default.updateFragPTSDTS(a.details,n,e.startPTS,e.endPTS,e.startDTS,e.endDTS),o=this.hls;o.trigger(v.default.LEVEL_PTS_UPDATED,{details:a.details,level:this.level,drift:s,type:e.type,start:e.startPTS,end:e.endPTS}),[e.data1,e.data2].forEach(function(r){r&&r.length&&t.state===R.PARSING&&(t.appended=!0,t.pendingBuffering=!0,o.trigger(v.default.BUFFER_APPENDING,{type:e.type,data:r,parent:"main",content:"data"}))}),this.tick()}}},{key:"onFragParsed",value:function(e){var t=this.fragCurrent,r=e.frag;t&&"main"===e.id&&r.sn===t.sn&&r.level===t.level&&this.state===R.PARSING&&(this.stats.tparsed=performance.now(),this.state=R.PARSED,this._checkAppendedParsed())}},{key:"onAudioTrackSwitching",value:function(e){var t=!!e.url,r=e.id;if(!t){if(this.mediaBuffer!==this.media){_.logger.log("switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;var i=this.fragCurrent;i.loader&&(_.logger.log("switching to main audio track, cancel main fragment load"),i.loader.abort()),this.fragCurrent=null,this.fragPrevious=null,this.demuxer&&(this.demuxer.destroy(),this.demuxer=null),this.state=R.IDLE}var a=this.hls;a.trigger(v.default.BUFFER_FLUSHING,{startOffset:0,endOffset:Number.POSITIVE_INFINITY,type:"audio"}),a.trigger(v.default.AUDIO_TRACK_SWITCHED,{id:r}),this.altAudio=!1}}},{key:"onAudioTrackSwitched",value:function(e){var t=e.id,r=!!this.hls.audioTracks[t].url;if(r){var i=this.videoBuffer;i&&this.mediaBuffer!==i&&(_.logger.log("switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=i)}this.altAudio=r,this.tick()}},{key:"onBufferCreated",value:function(e){var t=e.tracks,r=void 0,i=void 0,a=!1;for(var n in t){var s=t[n];"main"===s.id?(i=n,r=s,"video"===n&&(this.videoBuffer=t[n].buffer)):a=!0}a&&r?(_.logger.log("alternate track found, use "+i+".buffered to schedule main fragment loading"),this.mediaBuffer=r.buffer):this.mediaBuffer=this.media}},{key:"onBufferAppended",value:function(e){if("main"===e.parent){var t=this.state;t!==R.PARSING&&t!==R.PARSED||(this.pendingBuffering=e.pending>0,this._checkAppendedParsed())}}},{key:"_checkAppendedParsed",value:function(){if(!(this.state!==R.PARSED||this.appended&&this.pendingBuffering)){var e=this.fragCurrent;if(e){var t=this.mediaBuffer?this.mediaBuffer:this.media;_.logger.log("main buffered : "+T.default.toString(t.buffered));var r=this._bufferedFrags.filter(function(e){return f.default.isBuffered(t,(e.startPTS+e.endPTS)/2)});r.push(e),this._bufferedFrags=r.sort(function(e,t){return e.startPTS-t.startPTS}),this.fragPrevious=e;var i=this.stats;i.tbuffered=performance.now(),this.fragLastKbps=Math.round(8*i.total/(i.tbuffered-i.tfirst)),this.hls.trigger(v.default.FRAG_BUFFERED,{stats:i,frag:e,id:"main"}),this.state=R.IDLE}this.tick()}}},{key:"onError",value:function(e){var t=e.frag||this.fragCurrent;if(!t||"main"===t.type){var r=this.media,i=r&&f.default.isBuffered(r,r.currentTime)&&f.default.isBuffered(r,r.currentTime+.5);switch(e.details){case k.ErrorDetails.FRAG_LOAD_ERROR:case k.ErrorDetails.FRAG_LOAD_TIMEOUT:case k.ErrorDetails.KEY_LOAD_ERROR:case k.ErrorDetails.KEY_LOAD_TIMEOUT:if(!e.fatal){var a=this.fragLoadError;a?a++:a=1;var n=this.config;if(a<=n.fragLoadingMaxRetry||i||t.autoLevel&&t.level){this.fragLoadError=a,t.loadCounter=0;var s=Math.min(Math.pow(2,a-1)*n.fragLoadingRetryDelay,n.fragLoadingMaxRetryTimeout);_.logger.warn("mediaController: frag loading failed, retry in "+s+" ms"),this.retryDate=performance.now()+s,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.state=R.FRAG_LOADING_WAITING_RETRY}else _.logger.error("mediaController: "+e.details+" reaches max retry, redispatch as fatal ..."),e.fatal=!0,this.state=R.ERROR}break;case k.ErrorDetails.FRAG_LOOP_LOADING_ERROR:e.fatal||(i?(this._reduceMaxBufferLength(t.duration),this.state=R.IDLE):t.autoLevel&&0!==t.level||(e.fatal=!0,this.state=R.ERROR));break;case k.ErrorDetails.LEVEL_LOAD_ERROR:case k.ErrorDetails.LEVEL_LOAD_TIMEOUT:this.state!==R.ERROR&&(e.fatal?(this.state=R.ERROR,_.logger.warn("streamController: "+e.details+",switch to "+this.state+" state ...")):e.levelRetry||this.state!==R.WAITING_LEVEL||(this.state=R.IDLE));break;case k.ErrorDetails.BUFFER_FULL_ERROR:"main"!==e.parent||this.state!==R.PARSING&&this.state!==R.PARSED||(i?(this._reduceMaxBufferLength(this.config.maxBufferLength),this.state=R.IDLE):(_.logger.warn("buffer full error also media.currentTime is not buffered, flush everything"),this.fragCurrent=null,this.flushMainBuffer(0,Number.POSITIVE_INFINITY)))}}}},{key:"_reduceMaxBufferLength",value:function(e){var t=this.config;t.maxMaxBufferLength>=e&&(t.maxMaxBufferLength/=2,_.logger.warn("main:reduce max buffer length to "+t.maxMaxBufferLength+"s"),this.fragLoadIdx+=2*t.fragLoadingLoopThreshold)}},{key:"_checkBuffer",value:function(){var e=this.media;if(e&&e.readyState){var t=e.currentTime,r=this.mediaBuffer?this.mediaBuffer:e,i=r.buffered;if(!this.loadedmetadata&&i.length){this.loadedmetadata=!0;var a=e.seeking?t:this.startPosition,n=f.default.isBuffered(r,a);t===a&&n||(_.logger.log("target start position:"+a),n||(a=i.start(0),_.logger.log("target start position not buffered, seek to buffered.start(0) "+a)),_.logger.log("adjust currentTime from "+t+" to "+a),e.currentTime=a)}else if(this.immediateSwitch)this.immediateLevelSwitchEnd();else{var s=f.default.bufferInfo(e,t,0),o=!(e.paused||e.ended||0===e.buffered.length),l=t!==this.lastCurrentTime,u=this.config;if(l)this.stallReported&&(_.logger.warn("playback not stuck anymore @"+t+", after "+Math.round(performance.now()-this.stalled)+"ms"),this.stallReported=!1),this.stalled=void 0,this.nudgeRetry=0;else if(o){var d=performance.now(),c=this.hls;if(this.stalled){var h=d-this.stalled,g=s.len,p=this.nudgeRetry||0;if(g<=.5&&h>1e3*u.lowBufferWatchdogPeriod){this.stallReported||(this.stallReported=!0,_.logger.warn("playback stalling in low buffer @"+t),c.trigger(v.default.ERROR,{type:k.ErrorTypes.MEDIA_ERROR,details:k.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1,buffer:g}));var y=s.nextStart,m=y-t;if(y&&m<u.maxSeekHole&&m>0){this.nudgeRetry=++p;var E=p*u.nudgeOffset;_.logger.log("adjust currentTime from "+e.currentTime+" to next buffered @ "+y+" + nudge "+E),e.currentTime=y+E,this.stalled=void 0,c.trigger(v.default.ERROR,{type:k.ErrorTypes.MEDIA_ERROR,details:k.ErrorDetails.BUFFER_SEEK_OVER_HOLE,fatal:!1,hole:y+E-t})}}else if(g>.5&&h>1e3*u.highBufferWatchdogPeriod)if(this.stallReported||(this.stallReported=!0,_.logger.warn("playback stalling in high buffer @"+t),c.trigger(v.default.ERROR,{type:k.ErrorTypes.MEDIA_ERROR,details:k.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!1,buffer:g})),this.stalled=void 0,this.nudgeRetry=++p,p<u.nudgeMaxRetry){var b=e.currentTime,T=b+p*u.nudgeOffset;_.logger.log("adjust currentTime from "+b+" to "+T),e.currentTime=T,c.trigger(v.default.ERROR,{type:k.ErrorTypes.MEDIA_ERROR,details:k.ErrorDetails.BUFFER_NUDGE_ON_STALL,fatal:!1})}else _.logger.error("still stuck in high buffer @"+t+" after "+u.nudgeMaxRetry+", raise fatal error"),c.trigger(v.default.ERROR,{type:k.ErrorTypes.MEDIA_ERROR,details:k.ErrorDetails.BUFFER_STALLED_ERROR,fatal:!0})}else this.stalled=d,this.stallReported=!1}}}}},{key:"onFragLoadEmergencyAborted",value:function(){this.state=R.IDLE,this.loadedmetadata||(this.startFragRequested=!1,this.nextLoadPosition=this.startPosition),this.tick()}},{key:"onBufferFlushed",value:function(){var e=this.mediaBuffer?this.mediaBuffer:this.media;this._bufferedFrags=this._bufferedFrags.filter(function(t){return f.default.isBuffered(e,(t.startPTS+t.endPTS)/2)}),this.fragLoadIdx+=2*this.config.fragLoadingLoopThreshold,this.state=R.IDLE,this.fragPrevious=null}},{key:"swapAudioCodec",value:function(){this.audioCodecSwap=!this.audioCodecSwap}},{key:"computeLivePosition",value:function(e,t){var r=void 0!==this.config.liveSyncDuration?this.config.liveSyncDuration:this.config.liveSyncDurationCount*t.targetduration;return e+Math.max(0,t.totalduration-r)}},{key:"state",set:function(e){if(this.state!==e){var t=this.state;this._state=e,_.logger.log("main stream:"+t+"->"+e),this.hls.trigger(v.default.STREAM_STATE_TRANSITION,{previousState:t,nextState:e})}},get:function(){return this._state}},{key:"currentLevel",get:function(){var e=this.media;if(e){var t=this.getBufferedFrag(e.currentTime);if(t)return t.level}return-1}},{key:"nextBufferedFrag",get:function(){var e=this.media;return e?this.followingBufferedFrag(this.getBufferedFrag(e.currentTime)):null}},{key:"nextLevel",get:function(){var e=this.nextBufferedFrag;return e?e.level:-1}},{key:"liveSyncPosition",get:function(){return this._liveSyncPosition},set:function(e){this._liveSyncPosition=e}}]),t}(y.default);r.default=A},{25:25,33:33,34:34,35:35,37:37,38:38,48:48,53:53,54:54}],14:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),l=e(35),u=i(l),d=e(34),f=i(d),c=e(53),h=function(e){function t(e){a(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,u.default.ERROR,u.default.SUBTITLE_TRACKS_UPDATED,u.default.SUBTITLE_TRACK_SWITCH,u.default.SUBTITLE_TRACK_LOADED,u.default.SUBTITLE_FRAG_PROCESSED));return r.config=e.config,r.vttFragSNsProcessed={},r.vttFragQueues=void 0,r.currentlyProcessing=null,r.currentTrackId=-1,r}return s(t,e),o(t,[{key:"destroy",value:function(){f.default.prototype.destroy.call(this)}},{key:"clearVttFragQueues",value:function(){var e=this;this.vttFragQueues={},this.tracks.forEach(function(t){e.vttFragQueues[t.id]=[]})}},{key:"nextFrag",value:function(){if(null===this.currentlyProcessing&&this.currentTrackId>-1&&this.vttFragQueues[this.currentTrackId].length){var e=this.currentlyProcessing=this.vttFragQueues[this.currentTrackId].shift();this.hls.trigger(u.default.FRAG_LOADING,{frag:e})}}},{key:"onSubtitleFragProcessed",value:function(e){e.success&&this.vttFragSNsProcessed[e.frag.trackId].push(e.frag.sn),this.currentlyProcessing=null,this.nextFrag()}},{key:"onError",value:function(e){var t=e.frag;t&&"subtitle"!==t.type||this.currentlyProcessing&&(this.currentlyProcessing=null,this.nextFrag())}},{key:"onSubtitleTracksUpdated",value:function(e){var t=this;c.logger.log("subtitle tracks updated"),this.tracks=e.subtitleTracks,this.clearVttFragQueues(),this.vttFragSNsProcessed={},this.tracks.forEach(function(e){t.vttFragSNsProcessed[e.id]=[]})}},{key:"onSubtitleTrackSwitch",value:function(e){this.currentTrackId=e.id,this.clearVttFragQueues()}},{key:"onSubtitleTrackLoaded",value:function(e){var t=this.vttFragSNsProcessed[e.id],r=this.vttFragQueues[e.id],i=this.currentlyProcessing?this.currentlyProcessing.sn:-1,a=function(e){return t.indexOf(e.sn)>-1},n=function(e){return r.some(function(t){return t.sn===e.sn})};e.details.fragments.forEach(function(t){a(t)||t.sn===i||n(t)||(t.trackId=e.id,r.push(t))}),this.nextFrag()}}]),t}(f.default);r.default=h},{34:34,35:35,53:53}],15:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function o(e){for(var t=[],r=0;r<e.length;r++)"subtitles"===e[r].kind&&t.push(e[r]);return t}Object.defineProperty(r,"__esModule",{value:!0});var l=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),u=e(35),d=i(u),f=e(34),c=i(f),h=e(53),g=function(e){function t(e){a(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,d.default.MEDIA_ATTACHED,d.default.MEDIA_DETACHING,d.default.MANIFEST_LOADING,d.default.MANIFEST_LOADED,d.default.SUBTITLE_TRACK_LOADED));return r.tracks=[],r.trackId=-1,r.media=void 0,r}return s(t,e),l(t,[{key:"destroy",value:function(){c.default.prototype.destroy.call(this)}},{key:"onMediaAttached",value:function(e){var t=this;this.media=e.media,this.media&&this.media.textTracks.addEventListener("change",function(){if(t.media){for(var e=-1,r=o(t.media.textTracks),i=0;i<r.length;i++)"showing"===r[i].mode&&(e=i);t.subtitleTrack=e}})}},{key:"onMediaDetaching",value:function(){this.media=void 0}},{key:"onManifestLoading",value:function(){this.tracks=[],this.trackId=-1}},{key:"onManifestLoaded",value:function(e){var t=this,r=e.subtitles||[],i=!1;this.tracks=r,this.trackId=-1,this.hls.trigger(d.default.SUBTITLE_TRACKS_UPDATED,{subtitleTracks:r}),r.forEach(function(e){e.default&&(t.subtitleTrack=e.id,i=!0)})}},{key:"onTick",value:function(){var e=this.trackId,t=this.tracks[e];if(t){var r=t.details;void 0!==r&&r.live!==!0||(h.logger.log("(re)loading playlist for subtitle track "+e),this.hls.trigger(d.default.SUBTITLE_TRACK_LOADING,{url:t.url,id:e}))}}},{key:"onSubtitleTrackLoaded",value:function(e){var t=this;e.id<this.tracks.length&&(h.logger.log("subtitle track "+e.id+" loaded"),this.tracks[e.id].details=e.details,e.details.live&&!this.timer&&(this.timer=setInterval(function(){t.onTick()},1e3*e.details.targetduration,this)),!e.details.live&&this.timer&&(clearInterval(this.timer),this.timer=null))}},{key:"setSubtitleTrackInternal",value:function(e){if(e>=0&&e<this.tracks.length){this.timer&&(clearInterval(this.timer),this.timer=null),this.trackId=e,h.logger.log("switching to subtitle track "+e);var t=this.tracks[e];this.hls.trigger(d.default.SUBTITLE_TRACK_SWITCH,{id:e});var r=t.details;void 0!==r&&r.live!==!0||(h.logger.log("(re)loading playlist for subtitle track "+e),this.hls.trigger(d.default.SUBTITLE_TRACK_LOADING,{url:t.url,id:e}))}}},{key:"subtitleTracks",get:function(){return this.tracks}},{key:"subtitleTrack",get:function(){return this.trackId},set:function(e){this.trackId!==e&&this.setSubtitleTrackInternal(e)}}]),t}(c.default);r.default=g},{34:34,35:35,53:53}],16:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function o(e){if(e&&e.cues)for(;e.cues.length>0;)e.removeCue(e.cues[0])}function l(e,t){return e&&e.label===t.name&&!(e.textTrack1||e.textTrack2)}function u(e,t,r,i){return Math.min(t,i)-Math.max(e,r)}Object.defineProperty(r,"__esModule",{value:!0});var d=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),f=e(35),c=i(f),h=e(34),g=i(h),v=e(49),p=i(v),y=e(57),m=i(y),E=e(53),b=function(e){function t(e){a(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,c.default.MEDIA_ATTACHING,c.default.MEDIA_DETACHING,c.default.FRAG_PARSING_USERDATA,c.default.MANIFEST_LOADING,c.default.MANIFEST_LOADED,c.default.FRAG_LOADED,c.default.LEVEL_SWITCHING,c.default.INIT_PTS_FOUND));if(r.hls=e,r.config=e.config,r.enabled=!0,r.Cues=e.config.cueHandler,r.textTracks=[],r.tracks=[],r.unparsedVttFrags=[],r.initPTS=void 0,r.cueRanges=[],r.config.enableCEA708Captions){var i=r,s=function(e,t){var r=null;try{r=new window.Event("addtrack")}catch(e){r=document.createEvent("Event"),r.initEvent("addtrack",!1,!1)}r.track=e,t.dispatchEvent(r)},l={newCue:function(e,t,r){if(!i.textTrack1){var a=i.getExistingTrack("1");if(a)i.textTrack1=a,o(i.textTrack1),s(i.textTrack1,i.media);else{var n=i.createTextTrack("captions",i.config.captionsTextTrack1Label,i.config.captionsTextTrack1LanguageCode);n&&(n.textTrack1=!0,i.textTrack1=n)}}i.addCues("textTrack1",e,t,r)}},u={newCue:function(e,t,r){if(!i.textTrack2){var a=i.getExistingTrack("2");if(a)i.textTrack2=a,o(i.textTrack2),s(i.textTrack2,i.media);else{ +var n=i.createTextTrack("captions",i.config.captionsTextTrack2Label,i.config.captionsTextTrack1LanguageCode);n&&(n.textTrack2=!0,i.textTrack2=n)}}i.addCues("textTrack2",e,t,r)}};r.cea608Parser=new p.default(0,l,u)}return r}return s(t,e),d(t,[{key:"addCues",value:function(e,t,r,i){for(var a=this.cueRanges,n=!1,s=a.length;s--;){var o=a[s],l=u(o[0],o[1],t,r);if(l>=0&&(o[0]=Math.min(o[0],t),o[1]=Math.max(o[1],r),n=!0,l/(r-t)>.5))return}n||a.push([t,r]),this.Cues.newCue(this[e],t,r,i)}},{key:"onInitPtsFound",value:function(e){var t=this;void 0===this.initPTS&&(this.initPTS=e.initPTS),this.unparsedVttFrags.length&&(this.unparsedVttFrags.forEach(function(e){t.onFragLoaded(e)}),this.unparsedVttFrags=[])}},{key:"getExistingTrack",value:function(e){var t=this.media;if(t)for(var r=0;r<t.textTracks.length;r++){var i=t.textTracks[r],a="textTrack"+e;if(i[a]===!0)return i}return null}},{key:"createTextTrack",value:function(e,t,r){var i=this.media;if(i)return i.addTextTrack(e,t,r)}},{key:"destroy",value:function(){g.default.prototype.destroy.call(this)}},{key:"onMediaAttaching",value:function(e){this.media=e.media}},{key:"onMediaDetaching",value:function(){o(this.textTrack1),o(this.textTrack2)}},{key:"onManifestLoading",value:function(){this.lastSn=-1,this.prevCC=-1,this.vttCCs={ccOffset:0,presentationOffset:0};var e=this.media;if(e){var t=e.textTracks;if(t)for(var r=0;r<t.length;r++)o(t[r])}}},{key:"onManifestLoaded",value:function(e){var t=this;if(this.textTracks=[],this.unparsedVttFrags=this.unparsedVttFrags||[],this.initPTS=void 0,this.cueRanges=[],this.config.enableWebVTT){this.tracks=e.subtitles||[];var r=this.media?this.media.textTracks:[];this.tracks.forEach(function(e,i){var a=void 0;if(i<r.length){var n=r[i];l(n,e)&&(a=n)}a||(a=t.createTextTrack("subtitles",e.name,e.lang)),a.mode=e.default?"showing":"hidden",t.textTracks.push(a)})}}},{key:"onLevelSwitching",value:function(){this.enabled="NONE"!==this.hls.currentLevel.closedCaptions}},{key:"onFragLoaded",value:function(e){var t=e.frag,r=e.payload;if("main"===t.type){var i=t.sn;if(i!==this.lastSn+1){var a=this.cea608Parser;a&&a.reset()}this.lastSn=i}else if("subtitle"===t.type)if(r.byteLength){if(void 0===this.initPTS)return void this.unparsedVttFrags.push(e);var n=this.vttCCs;n[t.cc]||(n[t.cc]={start:t.start,prevCC:this.prevCC,new:!0},this.prevCC=t.cc);var s=this.textTracks,o=this.hls;m.default.parse(r,this.initPTS,n,t.cc,function(e){var r=s[t.trackId];e.forEach(function(e){r.cues.getCueById(e.id)||r.addCue(e)}),o.trigger(c.default.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:t})},function(e){E.logger.log("Failed to parse VTT cue: "+e),o.trigger(c.default.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t})})}else this.hls.trigger(c.default.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:t})}},{key:"onFragParsingUserdata",value:function(e){if(this.enabled&&this.config.enableCEA708Captions)for(var t=0;t<e.samples.length;t++){var r=this.extractCea608Data(e.samples[t].bytes);this.cea608Parser.addData(e.samples[t].pts,r)}}},{key:"extractCea608Data",value:function(e){for(var t,r,i,a,n,s=31&e[0],o=2,l=[],u=0;u<s;u++)t=e[o++],r=127&e[o++],i=127&e[o++],a=0!=(4&t),n=3&t,0===r&&0===i||a&&0===n&&(l.push(r),l.push(i));return l}}]),t}(g.default);r.default=b},{34:34,35:35,49:49,53:53,57:57}],17:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=function(){function e(t,r){i(this,e),this.subtle=t,this.aesIV=r}return a(e,[{key:"decrypt",value:function(e,t){return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},t,e)}}]),e}();r.default=n},{}],18:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=function(){function e(){i(this,e),this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array(0),this.initTable()}return a(e,[{key:"uint8ArrayToUint32Array_",value:function(e){for(var t=new DataView(e),r=new Uint32Array(4),i=0;i<4;i++)r[i]=t.getUint32(4*i);return r}},{key:"initTable",value:function(){var e=this.sBox,t=this.invSBox,r=this.subMix,i=r[0],a=r[1],n=r[2],s=r[3],o=this.invSubMix,l=o[0],u=o[1],d=o[2],f=o[3],c=new Uint32Array(256),h=0,g=0,v=0;for(v=0;v<256;v++)c[v]=v<128?v<<1:v<<1^283;for(v=0;v<256;v++){var p=g^g<<1^g<<2^g<<3^g<<4;p=p>>>8^255&p^99,e[h]=p,t[p]=h;var y=c[h],m=c[y],E=c[m],b=257*c[p]^16843008*p;i[h]=b<<24|b>>>8,a[h]=b<<16|b>>>16,n[h]=b<<8|b>>>24,s[h]=b,b=16843009*E^65537*m^257*y^16843008*h,l[p]=b<<24|b>>>8,u[p]=b<<16|b>>>16,d[p]=b<<8|b>>>24,f[p]=b,h?(h=y^c[c[c[E^y]]],g^=c[c[g]]):h=g=1}}},{key:"expandKey",value:function(e){for(var t=this.uint8ArrayToUint32Array_(e),r=!0,i=0;i<t.length&&r;)r=t[i]===this.key[i],i++;if(!r){this.key=t;var a=this.keySize=t.length;if(4!==a&&6!==a&&8!==a)throw new Error("Invalid aes key size="+a);var n=this.ksRows=4*(a+6+1),s=void 0,o=void 0,l=this.keySchedule=new Uint32Array(n),u=this.invKeySchedule=new Uint32Array(n),d=this.sBox,f=this.rcon,c=this.invSubMix,h=c[0],g=c[1],v=c[2],p=c[3],y=void 0,m=void 0;for(s=0;s<n;s++)s<a?y=l[s]=t[s]:(m=y,s%a==0?(m=m<<8|m>>>24,m=d[m>>>24]<<24|d[m>>>16&255]<<16|d[m>>>8&255]<<8|d[255&m],m^=f[s/a|0]<<24):a>6&&s%a==4&&(m=d[m>>>24]<<24|d[m>>>16&255]<<16|d[m>>>8&255]<<8|d[255&m]),l[s]=y=(l[s-a]^m)>>>0);for(o=0;o<n;o++)s=n-o,m=3&o?l[s]:l[s-4],u[o]=o<4||s<=4?m:h[d[m>>>24]]^g[d[m>>>16&255]]^v[d[m>>>8&255]]^p[d[255&m]],u[o]=u[o]>>>0}}},{key:"networkToHostOrderSwap",value:function(e){return e<<24|(65280&e)<<8|(16711680&e)>>8|e>>>24}},{key:"decrypt",value:function(e,t,r){for(var i,a,n=this.keySize+6,s=this.invKeySchedule,o=this.invSBox,l=this.invSubMix,u=l[0],d=l[1],f=l[2],c=l[3],h=this.uint8ArrayToUint32Array_(r),g=h[0],v=h[1],p=h[2],y=h[3],m=new Int32Array(e),E=new Int32Array(m.length),b=void 0,T=void 0,k=void 0,_=void 0,R=void 0,A=void 0,S=void 0,L=void 0,w=void 0,D=void 0,O=void 0,I=void 0,P=this.networkToHostOrderSwap;t<m.length;){for(w=P(m[t]),D=P(m[t+1]),O=P(m[t+2]),I=P(m[t+3]),R=w^s[0],A=I^s[1],S=O^s[2],L=D^s[3],i=4,a=1;a<n;a++)b=u[R>>>24]^d[A>>16&255]^f[S>>8&255]^c[255&L]^s[i],T=u[A>>>24]^d[S>>16&255]^f[L>>8&255]^c[255&R]^s[i+1],k=u[S>>>24]^d[L>>16&255]^f[R>>8&255]^c[255&A]^s[i+2],_=u[L>>>24]^d[R>>16&255]^f[A>>8&255]^c[255&S]^s[i+3],R=b,A=T,S=k,L=_,i+=4;b=o[R>>>24]<<24^o[A>>16&255]<<16^o[S>>8&255]<<8^o[255&L]^s[i],T=o[A>>>24]<<24^o[S>>16&255]<<16^o[L>>8&255]<<8^o[255&R]^s[i+1],k=o[S>>>24]<<24^o[L>>16&255]<<16^o[R>>8&255]<<8^o[255&A]^s[i+2],_=o[L>>>24]<<24^o[R>>16&255]<<16^o[A>>8&255]<<8^o[255&S]^s[i+3],i+=3,E[t]=P(b^g),E[t+1]=P(_^v),E[t+2]=P(k^p),E[t+3]=P(T^y),g=w,v=D,p=O,y=I,t+=4}return E.buffer}},{key:"destroy",value:function(){this.key=void 0,this.keySize=void 0,this.ksRows=void 0,this.sBox=void 0,this.invSBox=void 0,this.subMix=void 0,this.invSubMix=void 0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.rcon=void 0}}]),e}();r.default=n},{}],19:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),s=e(17),o=i(s),l=e(20),u=i(l),d=e(18),f=i(d),c=e(33),h=e(53),g=function(){function e(t,r){a(this,e),this.observer=t,this.config=r,this.logEnabled=!0;try{var i=crypto?crypto:self.crypto;this.subtle=i.subtle||i.webkitSubtle}catch(e){}this.disableWebCrypto=!this.subtle}return n(e,[{key:"isSync",value:function(){return this.disableWebCrypto&&this.config.enableSoftwareAES}},{key:"decrypt",value:function(e,t,r,i){var a=this;if(this.disableWebCrypto&&this.config.enableSoftwareAES){this.logEnabled&&(h.logger.log("JS AES decrypt"),this.logEnabled=!1);var n=this.decryptor;n||(this.decryptor=n=new f.default),n.expandKey(t),i(n.decrypt(e,0,r))}else{this.logEnabled&&(h.logger.log("WebCrypto AES decrypt"),this.logEnabled=!1);var s=this.subtle;this.key!==t&&(this.key=t,this.fastAesKey=new u.default(s,t)),this.fastAesKey.expandKey().then(function(n){new o.default(s,r).decrypt(e,n).catch(function(n){a.onWebCryptoError(n,e,t,r,i)}).then(function(e){i(e)})}).catch(function(n){a.onWebCryptoError(n,e,t,r,i)})}}},{key:"onWebCryptoError",value:function(e,t,r,i,a){this.config.enableSoftwareAES?(h.logger.log("WebCrypto Error, disable WebCrypto API"),this.disableWebCrypto=!0,this.logEnabled=!0,this.decrypt(t,r,i,a)):(h.logger.error("decrypting error : "+e.message),this.observer.trigger(Event.ERROR,{type:c.ErrorTypes.MEDIA_ERROR,details:c.ErrorDetails.FRAG_DECRYPT_ERROR,fatal:!0,reason:e.message}))}},{key:"destroy",value:function(){var e=this.decryptor;e&&(e.destroy(),this.decryptor=void 0)}}]),e}();r.default=g},{17:17,18:18,20:20,33:33,53:53}],20:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=function(){function e(t,r){i(this,e),this.subtle=t,this.key=r}return a(e,[{key:"expandKey",value:function(){return this.subtle.importKey("raw",this.key,{name:"AES-CBC"},!1,["encrypt","decrypt"])}}]),e}();r.default=n},{}],21:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),s=e(22),o=i(s),l=e(53),u=e(27),d=i(u),f=function(){function e(t,r,i){a(this,e),this.observer=t,this.config=i,this.remuxer=r}return n(e,[{key:"resetInitSegment",value:function(e,t,r,i){this._audioTrack={container:"audio/adts",type:"audio",id:-1,sequenceNumber:0,isAAC:!0,samples:[],len:0,manifestCodec:t,duration:i,inputTimeScale:9e4}}},{key:"resetTimeStamp",value:function(){}},{key:"append",value:function(e,t,r,i){var a,n,s,u,f,c,h,g,v,p,y=new d.default(e),m=90*y.timeStamp;for(a=this._audioTrack,c=y.length,v=e.length;c<v-1&&(255!==e[c]||240!=(246&e[c+1]));c++);for(a.samplerate||(n=o.default.getAudioConfig(this.observer,e,c,a.manifestCodec),a.config=n.config,a.samplerate=n.samplerate,a.channelCount=n.channelCount,a.codec=n.codec,l.logger.log("parsed codec:"+a.codec+",rate:"+n.samplerate+",nb channel:"+n.channelCount)),f=0,u=9216e4/a.samplerate;c+5<v&&(h=1&e[c+1]?7:9,s=(3&e[c+3])<<11|e[c+4]<<3|(224&e[c+5])>>>5,(s-=h)>0&&c+h+s<=v);)for(g=m+f*u,p={unit:e.subarray(c+h,c+h+s),pts:g,dts:g},a.samples.push(p),a.len+=s,c+=s+h,f++;c<v-1&&(255!==e[c]||240!=(246&e[c+1]));c++);this.remuxer.remux(a,{samples:[]},{samples:[{pts:m,dts:m,data:y.payload}],inputTimeScale:9e4},{samples:[]},t,r,i)}},{key:"destroy",value:function(){}}],[{key:"probe",value:function(e){var t,r,i=new d.default(e);if(i.hasTimeStamp)for(t=i.length,r=Math.min(e.length-1,t+100);t<r;t++)if(255===e[t]&&240==(246&e[t+1]))return!0;return!1}}]),e}();r.default=f},{22:22,27:27,53:53}],22:[function(e,t,r){"use strict";var i=e(53),a=e(33),n={getAudioConfig:function(e,t,r,n){var s,o,l,u,d,f=navigator.userAgent.toLowerCase(),c=n,h=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];return s=1+((192&t[r+2])>>>6),(o=(60&t[r+2])>>>2)>h.length-1?void e.trigger(Event.ERROR,{type:a.ErrorTypes.MEDIA_ERROR,details:a.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"invalid ADTS sampling index:"+o}):(u=(1&t[r+2])<<2,u|=(192&t[r+3])>>>6,i.logger.log("manifest codec:"+n+",ADTS data:type:"+s+",sampleingIndex:"+o+"["+h[o]+"Hz],channelConfig:"+u),/firefox/i.test(f)?o>=6?(s=5,d=new Array(4),l=o-3):(s=2,d=new Array(2),l=o):f.indexOf("android")!==-1?(s=2,d=new Array(2),l=o):(s=5,d=new Array(4),n&&(n.indexOf("mp4a.40.29")!==-1||n.indexOf("mp4a.40.5")!==-1)||!n&&o>=6?l=o-3:((n&&n.indexOf("mp4a.40.2")!==-1&&o>=6&&1===u||!n&&1===u)&&(s=2,d=new Array(2)),l=o)),d[0]=s<<3,d[0]|=(14&o)>>1,d[1]|=(1&o)<<7,d[1]|=u<<3,5===s&&(d[1]|=(14&l)>>1,d[2]=(1&l)<<7,d[2]|=8,d[3]=0),{config:d,samplerate:h[o],channelCount:u,codec:"mp4a.40."+s,manifestCodec:c})}};t.exports=n},{33:33,53:53}],23:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),s=e(35),o=i(s),l=e(33),u=e(19),d=i(u),f=e(21),c=i(f),h=e(29),g=i(h),v=e(32),p=i(v),y=e(28),m=i(y),E=e(45),b=i(E),T=e(46),k=i(T),_=function(){function e(t,r,i,n){a(this,e),this.observer=t,this.typeSupported=r,this.config=i,this.vendor=n}return n(e,[{key:"destroy",value:function(){var e=this.demuxer;e&&e.destroy()}},{key:"push",value:function(e,t,r,i,a,n,s,l,u,f,c,h){if(e.byteLength>0&&null!=t&&null!=t.key&&"AES-128"===t.method){var g=this.decrypter;null==g&&(g=this.decrypter=new d.default(this.observer,this.config));var v,p=this;try{v=performance.now()}catch(e){v=Date.now()}g.decrypt(e,t.key.buffer,t.iv.buffer,function(e){var d;try{d=performance.now()}catch(e){d=Date.now()}p.observer.trigger(o.default.FRAG_DECRYPTED,{stats:{tstart:v,tdecrypt:d}}),p.pushDecrypted(new Uint8Array(e),t,new Uint8Array(r),i,a,n,s,l,u,f,c,h)})}else this.pushDecrypted(new Uint8Array(e),t,new Uint8Array(r),i,a,n,s,l,u,f,c,h)}},{key:"pushDecrypted",value:function(e,t,r,i,a,n,s,u,d,f,h,v){var y=this.demuxer;if(!y||s&&!this.probe(e)){var E=this.observer,T=this.typeSupported,_=this.config,R=[{demux:p.default,remux:b.default},{demux:m.default,remux:b.default},{demux:c.default,remux:b.default},{demux:g.default,remux:k.default}];for(var A in R){var S=R[A],L=S.demux.probe;if(L(e)){var w=this.remuxer=new S.remux(E,_,T,this.vendor);y=new S.demux(E,w,_,T),this.probe=L;break}}if(!y)return void E.trigger(o.default.ERROR,{type:l.ErrorTypes.MEDIA_ERROR,details:l.ErrorDetails.FRAG_PARSING_ERROR,fatal:!0,reason:"no demux matching with content found"});this.demuxer=y}var D=this.remuxer;(s||u)&&(y.resetInitSegment(r,i,a,f),D.resetInitSegment()),s&&(y.resetTimeStamp(),D.resetTimeStamp(v)),"function"==typeof y.setDecryptData&&y.setDecryptData(t),y.append(e,n,d,h)}}]),e}();r.default=_},{19:19,21:21,28:28,29:29,32:32,33:33,35:35,45:45,46:46}],24:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(r,"__esModule",{value:!0});var a=e(23),n=i(a),s=e(35),o=i(s),l=e(53),u=e(1),d=i(u),f=function(e){var t=new d.default;t.trigger=function(e){for(var r=arguments.length,i=Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];t.emit.apply(t,[e,e].concat(i))},t.off=function(e){for(var r=arguments.length,i=Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];t.removeListener.apply(t,[e].concat(i))};var r=function(t,r){e.postMessage({event:t,data:r})};e.addEventListener("message",function(i){var a=i.data;switch(a.cmd){case"init":var s=JSON.parse(a.config);e.demuxer=new n.default(t,a.typeSupported,s,a.vendor);try{(0,l.enableLogs)(s.debug===!0)}catch(e){}r("init",null);break;case"demux":e.demuxer.push(a.data,a.decryptdata,a.initSegment,a.audioCodec,a.videoCodec,a.timeOffset,a.discontinuity,a.trackSwitch,a.contiguous,a.duration,a.accurateTimeOffset,a.defaultInitPTS)}}),t.on(o.default.FRAG_DECRYPTED,r),t.on(o.default.FRAG_PARSING_INIT_SEGMENT,r),t.on(o.default.FRAG_PARSED,r),t.on(o.default.ERROR,r),t.on(o.default.FRAG_PARSING_METADATA,r),t.on(o.default.FRAG_PARSING_USERDATA,r),t.on(o.default.INIT_PTS_FOUND,r),t.on(o.default.FRAG_PARSING_DATA,function(t,r){var i=[],a={event:t,data:r};r.data1&&(a.data1=r.data1.buffer,i.push(r.data1.buffer),delete r.data1),r.data2&&(a.data2=r.data2.buffer,i.push(r.data2.buffer),delete r.data2),e.postMessage(a,i)})};r.default=f},{1:1,23:23,35:35,53:53}],25:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),s=e(35),o=i(s),l=e(23),u=i(l),d=e(24),f=i(d),c=e(53),h=e(33),g=e(1),v=i(g),p=function(){function t(r,i){a(this,t),this.hls=r,this.id=i;var n=this.observer=new v.default,s=r.config;n.trigger=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];n.emit.apply(n,[e,e].concat(r))},n.off=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];n.removeListener.apply(n,[e].concat(r))};var l=function(e,t){t=t||{},t.frag=this.frag,t.id=this.id,r.trigger(e,t)}.bind(this);n.on(o.default.FRAG_DECRYPTED,l),n.on(o.default.FRAG_PARSING_INIT_SEGMENT,l),n.on(o.default.FRAG_PARSING_DATA,l),n.on(o.default.FRAG_PARSED,l),n.on(o.default.ERROR,l),n.on(o.default.FRAG_PARSING_METADATA,l),n.on(o.default.FRAG_PARSING_USERDATA,l),n.on(o.default.INIT_PTS_FOUND,l);var d={mp4:MediaSource.isTypeSupported("video/mp4"),mpeg:MediaSource.isTypeSupported("audio/mpeg"),mp3:MediaSource.isTypeSupported('audio/mp4; codecs="mp3"')},g=navigator.vendor;if(s.enableWorker&&"undefined"!=typeof Worker){c.logger.log("demuxing in webworker");var p=void 0;try{var y=e(3);p=this.w=y(f.default),this.onwmsg=this.onWorkerMessage.bind(this),p.addEventListener("message",this.onwmsg),p.onerror=function(e){r.trigger(o.default.ERROR,{type:h.ErrorTypes.OTHER_ERROR,details:h.ErrorDetails.INTERNAL_EXCEPTION,fatal:!0,event:"demuxerWorker",err:{message:e.message+" ("+e.filename+":"+e.lineno+")"}})},p.postMessage({cmd:"init",typeSupported:d,vendor:g,id:i,config:JSON.stringify(s)})}catch(e){c.logger.error("error while initializing DemuxerWorker, fallback on DemuxerInline"),p&&URL.revokeObjectURL(p.objectURL),this.demuxer=new u.default(n,d,s,g),this.w=void 0}}else this.demuxer=new u.default(n,d,s,g)}return n(t,[{key:"destroy",value:function(){var e=this.w;if(e)e.removeEventListener("message",this.onwmsg),e.terminate(),this.w=null;else{var t=this.demuxer;t&&(t.destroy(),this.demuxer=null)}var r=this.observer;r&&(r.removeAllListeners(),this.observer=null)}},{key:"push",value:function(e,t,r,i,a,n,s,o){var l=this.w,u=isNaN(a.startDTS)?a.start:a.startDTS,d=a.decryptdata,f=this.frag,h=!(f&&a.cc===f.cc),g=!(f&&a.level===f.level),v=f&&a.sn===f.sn+1,p=!g&&v;if(h&&c.logger.log(this.id+":discontinuity detected"),g&&c.logger.log(this.id+":switch detected"),this.frag=a,l)l.postMessage({cmd:"demux",data:e,decryptdata:d,initSegment:t,audioCodec:r,videoCodec:i,timeOffset:u,discontinuity:h,trackSwitch:g,contiguous:p,duration:n,accurateTimeOffset:s,defaultInitPTS:o},[e]);else{var y=this.demuxer;y&&y.push(e,d,t,r,i,u,h,g,p,n,s,o)}}},{key:"onWorkerMessage",value:function(e){var t=e.data,r=this.hls;switch(t.event){case"init":URL.revokeObjectURL(this.w.objectURL);break;case o.default.FRAG_PARSING_DATA:t.data.data1=new Uint8Array(t.data1),t.data2&&(t.data.data2=new Uint8Array(t.data2));default:t.data=t.data||{},t.data.frag=this.frag,t.data.id=this.id,r.trigger(t.event,t.data)}}}]),t}();r.default=p},{1:1,23:23,24:24,3:3,33:33,35:35,53:53}],26:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=e(53),s=function(){function e(t){i(this,e),this.data=t,this.bytesAvailable=t.byteLength,this.word=0,this.bitsAvailable=0}return a(e,[{key:"loadWord",value:function(){var e=this.data,t=this.bytesAvailable,r=e.byteLength-t,i=new Uint8Array(4),a=Math.min(4,t);if(0===a)throw new Error("no bytes available");i.set(e.subarray(r,r+a)),this.word=new DataView(i.buffer).getUint32(0),this.bitsAvailable=8*a,this.bytesAvailable-=a}},{key:"skipBits",value:function(e){var t;this.bitsAvailable>e?(this.word<<=e,this.bitsAvailable-=e):(e-=this.bitsAvailable,t=e>>3,e-=t>>3,this.bytesAvailable-=t,this.loadWord(),this.word<<=e,this.bitsAvailable-=e)}},{key:"readBits",value:function(e){var t=Math.min(this.bitsAvailable,e),r=this.word>>>32-t;return e>32&&n.logger.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=t,this.bitsAvailable>0?this.word<<=t:this.bytesAvailable>0&&this.loadWord(),t=e-t,t>0&&this.bitsAvailable?r<<t|this.readBits(t):r}},{key:"skipLZ",value:function(){var e;for(e=0;e<this.bitsAvailable;++e)if(0!=(this.word&2147483648>>>e))return this.word<<=e,this.bitsAvailable-=e,e;return this.loadWord(),e+this.skipLZ()}},{key:"skipUEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"skipEG",value:function(){this.skipBits(1+this.skipLZ())}},{key:"readUEG",value:function(){var e=this.skipLZ();return this.readBits(e+1)-1}},{key:"readEG",value:function(){var e=this.readUEG();return 1&e?1+e>>>1:-1*(e>>>1)}},{key:"readBoolean",value:function(){return 1===this.readBits(1)}},{key:"readUByte",value:function(){return this.readBits(8)}},{key:"readUShort",value:function(){return this.readBits(16)}},{key:"readUInt",value:function(){return this.readBits(32)}},{key:"skipScalingList",value:function(e){var t,r,i=8,a=8;for(t=0;t<e;t++)0!==a&&(r=this.readEG(),a=(i+r+256)%256),i=0===a?i:a}},{key:"readSPS",value:function(){var e,t,r,i,a,n,s,o=0,l=0,u=0,d=0,f=this.readUByte.bind(this),c=this.readBits.bind(this),h=this.readUEG.bind(this),g=this.readBoolean.bind(this),v=this.skipBits.bind(this),p=this.skipEG.bind(this),y=this.skipUEG.bind(this),m=this.skipScalingList.bind(this);if(f(),e=f(),c(5),v(3),f(),y(),100===e||110===e||122===e||244===e||44===e||83===e||86===e||118===e||128===e){var E=h();if(3===E&&v(1),y(),y(),v(1),g())for(n=3!==E?8:12,s=0;s<n;s++)g()&&m(s<6?16:64)}y();var b=h();if(0===b)h();else if(1===b)for(v(1),p(),p(),t=h(),s=0;s<t;s++)p();y(),v(1),r=h(),i=h(),a=c(1),0===a&&v(1),v(1),g()&&(o=h(),l=h(),u=h(),d=h());var T=[1,1];if(g()&&g()){switch(f()){case 1:T=[1,1];break;case 2:T=[12,11];break;case 3:T=[10,11];break;case 4:T=[16,11];break;case 5:T=[40,33];break;case 6:T=[24,11];break;case 7:T=[20,11];break;case 8:T=[32,11];break;case 9:T=[80,33];break;case 10:T=[18,11];break;case 11:T=[15,11];break;case 12:T=[64,33];break;case 13:T=[160,99];break;case 14:T=[4,3];break;case 15:T=[3,2];break;case 16:T=[2,1];break;case 255:T=[f()<<8|f(),f()<<8|f()]}}return{width:Math.ceil(16*(r+1)-2*o-2*l),height:(2-a)*(i+1)*16-(a?2:4)*(u+d),pixelRatio:T}}},{key:"readSliceType",value:function(){return this.readUByte(),this.readUEG(),this.readUEG()}}]),e}();r.default=s},{53:53}],27:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=e(53),s=function(){function e(t){i(this,e),this._hasTimeStamp=!1,this._length=0;for(var r,a,s,o,l,u,d,f,c=0;;)if(d=this.readUTF(t,c,3),c+=3,"ID3"===d)c+=3,r=127&t[c++],a=127&t[c++],s=127&t[c++],o=127&t[c++],l=(r<<21)+(a<<14)+(s<<7)+o,u=c+l,this._parseID3Frames(t,c,u),c=u;else{if("3DI"!==d)return c-=3,void((f=c)&&(this.hasTimeStamp||n.logger.warn("ID3 tag found, but no timestamp"),this._length=f,this._payload=t.subarray(0,f)));c+=7,n.logger.log("3DI footer found, end: "+c)}}return a(e,[{key:"readUTF",value:function(e,t,r){var i="",a=t,n=t+r;do{i+=String.fromCharCode(e[a++])}while(a<n);return i}},{key:"_parseID3Frames",value:function(e,t,r){for(var i,a;t+8<=r;)switch(i=this.readUTF(e,t,4),t+=4,e[t++]<<24+e[t++]<<16+e[t++]<<8+e[t++],e[t++]<<8+e[t++],t,i){case"PRIV":if("com.apple.streaming.transportStreamTimestamp"===this.readUTF(e,t,44)){t+=44,t+=4;var s=1&e[t++];this._hasTimeStamp=!0,a=((e[t++]<<23)+(e[t++]<<15)+(e[t++]<<7)+e[t++])/45,s&&(a+=47721858.84),a=Math.round(a),n.logger.trace("ID3 timestamp found: "+a),this._timeStamp=a}}}},{key:"hasTimeStamp",get:function(){return this._hasTimeStamp}},{key:"timeStamp",get:function(){return this._timeStamp}},{key:"length",get:function(){return this._length}},{key:"payload",get:function(){return this._payload}}]),e}();r.default=s},{53:53}],28:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),s=e(27),o=i(s),l=e(30),u=i(l),d=function(){function e(t,r,i){a(this,e),this.observer=t,this.config=i,this.remuxer=r}return n(e,[{key:"resetInitSegment",value:function(e,t,r,i){this._audioTrack={container:"audio/mpeg",type:"audio",id:-1,sequenceNumber:0,isAAC:!1,samples:[],len:0,manifestCodec:t,duration:i,inputTimeScale:9e4}}},{key:"resetTimeStamp",value:function(){}},{key:"append",value:function(e,t,r,i){var a,n,s=new o.default(e),l=90*s.timeStamp,d=s.length;for(a=d,n=e.length;a<n-1&&(255!==e[a]||224!=(224&e[a+1])||0==(6&e[a+1]));a++);u.default.parse(this._audioTrack,e,s.length,l),this.remuxer.remux(this._audioTrack,{samples:[]},{samples:[{pts:l,dts:l,data:s.payload}],inputTimeScale:9e4},{samples:[]},t,r,i)}},{key:"destroy",value:function(){}}],[{key:"probe",value:function(e){var t,r,i=new o.default(e);if(i.hasTimeStamp)for(t=i.length,r=Math.min(e.length-1,t+100);t<r;t++)if(255===e[t]&&224==(224&e[t+1])&&0!=(6&e[t+1]))return!0;return!1}}]),e}();r.default=d},{27:27,30:30}],29:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=e(35),s=function(e){return e&&e.__esModule?e:{default:e}}(n),o=function(){function e(t,r){i(this,e),this.observer=t,this.remuxer=r}return a(e,[{key:"resetTimeStamp",value:function(){}},{key:"resetInitSegment",value:function(t,r,i,a){var n=this.initData=e.parseInitSegment(t),o={};n.audio&&(o.audio={container:"audio/mp4",codec:r,initSegment:t}),n.video&&(o.video={container:"video/mp4",codec:i,initSegment:t}),this.observer.trigger(s.default.FRAG_PARSING_INIT_SEGMENT,{tracks:o})}},{key:"append",value:function(t,r,i,a){var n=this.initData,s=e.startDTS(n,t);this.remuxer.remux(n.audio,n.video,null,null,s,i,a,t)}},{key:"destroy",value:function(){}}],[{key:"probe",value:function(t){if(t.length>=8){var r=e.bin2str(t.subarray(4,8));return["moof","ftyp","styp"].indexOf(r)>=0}return!1}},{key:"bin2str",value:function(e){return String.fromCharCode.apply(null,e)}},{key:"readUint32",value:function(e,t){var r=e[t]<<24|e[t+1]<<16|e[t+2]<<8|e[t+3];return r<0?4294967296+r:r}},{key:"findBox",value:function(t,r){var i,a,n,s,o,l=[];if(!r.length)return null;for(i=0;i<t.byteLength;)a=e.readUint32(t,i),n=e.bin2str(t.subarray(i+4,i+8)),s=a>1?i+a:t.byteLength,n===r[0]&&(1===r.length?l.push(t.subarray(i+8,s)):(o=e.findBox(t.subarray(i+8,s),r.slice(1)),o.length&&(l=l.concat(o)))),i=s;return l}},{key:"parseInitSegment",value:function(t){var r=[];return e.findBox(t,["moov","trak"]).forEach(function(t){var i=e.findBox(t,["tkhd"])[0];if(i){var a=i[0],n=0===a?12:20,s=e.readUint32(i,n),o=e.findBox(t,["mdia","mdhd"])[0];if(o){a=o[0],n=0===a?12:20;var l=e.readUint32(o,n),u=e.findBox(t,["mdia","hdlr"])[0];if(u){var d=e.bin2str(u.subarray(8,12)),f={soun:"audio",vide:"video"}[d];f&&(r[s]={timescale:l,type:f},r[f]={timescale:l,id:s})}}}}),r}},{key:"startDTS",value:function(t,r){var i,a,n;return i=e.findBox(r,["moof","traf"]),a=[].concat.apply([],i.map(function(r){return e.findBox(r,["tfhd"]).map(function(i){var a,n,s;return a=e.readUint32(i,4),n=t[a].timescale||9e4,s=e.findBox(r,["tfdt"]).map(function(t){var r,i;return r=t[0],i=e.readUint32(t,4),1===r&&(i*=Math.pow(2,32),i+=e.readUint32(t,8)),i})[0],(s=s||1/0)/n})})),n=Math.min.apply(null,a),isFinite(n)?n:0}}]),e}();r.default=o},{35:35}],30:[function(e,t,r){"use strict";var i=e(53),a={onFrame:function(e,t,r,i,a,n,s){var o=10368e4/i,l=s+n*o;e.config=[],e.channelCount=a,e.samplerate=i,e.samples.push({unit:t,pts:l,dts:l}),e.len+=t.length},onNoise:function(e){i.logger.warn("mpeg audio has noise: "+e.length+" bytes")},parseFrames:function(e,t,r,i,a,n){var s=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],o=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3];if(r+2>i)return-1;if(255===t[r]||224==(224&t[r+1])){if(r+24>i)return-1;var l=t[r+1]>>3&3,u=t[r+1]>>1&3,d=t[r+2]>>4&15,f=t[r+2]>>2&3,c=!!(2&t[r+2]);if(1!==l&&0!==d&&15!==d&&3!==f){var h=3===l?3-u:3===u?3:4,g=1e3*s[14*h+d-1],v=3===l?0:2===l?1:2,p=o[3*v+f],y=c?1:0,m=t[r+3]>>6==3?1:2,E=3===u?(3===l?12:6)*g/p+y<<2:(3===l?144:72)*g/p+y|0;return r+E>i?-1:(this.onFrame(e,t.subarray(r,r+E),g,p,m,a,n),E)}}for(var b=r+2;b<i;){if(255===t[b-1]&&224==(224&t[b]))return this.onNoise(t.subarray(r,b-1)),b-r-1;b++}return-1},parse:function(e,t,r,i){for(var a,n=t.length,s=0;r<n&&(a=this.parseFrames(e,t,r,n,s++,i))>0;)r+=a}};t.exports=a},{53:53}],31:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=e(19),s=function(e){return e&&e.__esModule?e:{default:e}}(n),o=function(){function e(t,r,a,n){i(this,e),this.decryptdata=a,this.discardEPB=n,this.decrypter=new s.default(t,r)}return a(e,[{key:"decryptBuffer",value:function(e,t){this.decrypter.decrypt(e,this.decryptdata.key.buffer,this.decryptdata.iv.buffer,t)}},{key:"decryptAacSample",value:function(e,t,r,i){ +var a=e[t].unit,n=a.subarray(16,a.length-a.length%16),s=n.buffer.slice(n.byteOffset,n.byteOffset+n.length),o=this;this.decryptBuffer(s,function(n){n=new Uint8Array(n),a.set(n,16),i||o.decryptAacSamples(e,t+1,r)})}},{key:"decryptAacSamples",value:function(e,t,r){for(;;t++){if(t>=e.length)return void r();if(!(e[t].unit.length<32)){var i=this.decrypter.isSync();if(this.decryptAacSample(e,t,r,i),!i)return}}}},{key:"getAvcEncryptedData",value:function(e){for(var t=16*Math.floor((e.length-48)/160)+16,r=new Int8Array(t),i=0,a=32;a<=e.length-16;a+=160,i+=16)r.set(e.subarray(a,a+16),i);return r}},{key:"getAvcDecryptedUnit",value:function(e,t){t=new Uint8Array(t);for(var r=0,i=32;i<=e.length-16;i+=160,r+=16)e.set(t.subarray(r,r+16),i);return e}},{key:"decryptAvcSample",value:function(e,t,r,i,a,n){var s=this.discardEPB(a.data),o=this.getAvcEncryptedData(s),l=this;this.decryptBuffer(o.buffer,function(o){a.data=l.getAvcDecryptedUnit(s,o),n||l.decryptAvcSamples(e,t,r+1,i)})}},{key:"decryptAvcSamples",value:function(e,t,r,i){for(;;t++,r=0){if(t>=e.length)return void i();for(var a=e[t].units;!(r>=a.length);r++){var n=a[r];if(!(n.length<=48||1!==n.type&&5!==n.type)){var s=this.decrypter.isSync();if(this.decryptAvcSample(e,t,r,i,n,s),!s)return}}}}}]),e}();r.default=o},{19:19}],32:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),s=e(22),o=i(s),l=e(30),u=i(l),d=e(35),f=i(d),c=e(26),h=i(c),g=e(31),v=i(g),p=e(53),y=e(33),m=function(){function e(t,r,i,n){a(this,e),this.observer=t,this.config=i,this.typeSupported=n,this.remuxer=r,this.sampleAes=null}return n(e,[{key:"setDecryptData",value:function(e){null!=e&&null!=e.key&&"SAMPLE-AES"===e.method?this.sampleAes=new v.default(this.observer,this.config,e,this.discardEPB):this.sampleAes=null}},{key:"resetInitSegment",value:function(e,t,r,i){this.pmtParsed=!1,this._pmtId=-1,this._avcTrack={container:"video/mp2t",type:"video",id:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],len:0,dropped:0},this._audioTrack={container:"video/mp2t",type:"audio",id:-1,inputTimeScale:9e4,duration:i,sequenceNumber:0,samples:[],len:0,isAAC:!0},this._id3Track={type:"id3",id:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],len:0},this._txtTrack={type:"text",id:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],len:0},this.aacOverFlow=null,this.aacLastPTS=null,this.avcSample=null,this.audioCodec=t,this.videoCodec=r,this._duration=i}},{key:"resetTimeStamp",value:function(){}},{key:"append",value:function(e,t,r,i){var a,n,s,o,l,u=e.length,d=!1;this.contiguous=r;var c=this.pmtParsed,h=this._avcTrack,g=this._audioTrack,v=this._id3Track,m=h.id,E=g.id,b=v.id,T=this._pmtId,k=h.pesData,_=g.pesData,R=v.pesData,A=this._parsePAT,S=this._parsePMT,L=this._parsePES,w=this._parseAVCPES.bind(this),D=this._parseAACPES.bind(this),O=this._parseMPEGPES.bind(this),I=this._parseID3PES.bind(this);for(u-=u%188,a=0;a<u;a+=188)if(71===e[a]){if(n=!!(64&e[a+1]),s=((31&e[a+1])<<8)+e[a+2],(48&e[a+3])>>4>1){if((o=a+5+e[a+4])===a+188)continue}else o=a+4;switch(s){case m:n&&(k&&(l=L(k))&&w(l,!1),k={data:[],size:0}),k&&(k.data.push(e.subarray(o,a+188)),k.size+=a+188-o);break;case E:n&&(_&&(l=L(_))&&(g.isAAC?D(l):O(l)),_={data:[],size:0}),_&&(_.data.push(e.subarray(o,a+188)),_.size+=a+188-o);break;case b:n&&(R&&(l=L(R))&&I(l),R={data:[],size:0}),R&&(R.data.push(e.subarray(o,a+188)),R.size+=a+188-o);break;case 0:n&&(o+=e[o]+1),T=this._pmtId=A(e,o);break;case T:n&&(o+=e[o]+1);var P=S(e,o,this.typeSupported.mpeg===!0||this.typeSupported.mp3===!0,null!=this.sampleAes);m=P.avc,m>0&&(h.id=m),E=P.audio,E>0&&(g.id=E,g.isAAC=P.isAAC),b=P.id3,b>0&&(v.id=b),d&&!c&&(p.logger.log("reparse from beginning"),d=!1,a=-188),c=this.pmtParsed=!0;break;case 17:case 8191:break;default:d=!0}}else this.observer.trigger(f.default.ERROR,{type:y.ErrorTypes.MEDIA_ERROR,details:y.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"TS packet did not start with 0x47"});k&&(l=L(k))?(w(l,!0),h.pesData=null):h.pesData=k,_&&(l=L(_))?(g.isAAC?D(l):O(l),g.pesData=null):(_&&_.size&&p.logger.log("last AAC PES packet truncated,might overlap between fragments"),g.pesData=_),R&&(l=L(R))?(I(l),v.pesData=null):v.pesData=R,null==this.sampleAes?this.remuxer.remux(g,h,v,this._txtTrack,t,r,i):this.decryptAndRemux(g,h,v,this._txtTrack,t,r,i)}},{key:"decryptAndRemux",value:function(e,t,r,i,a,n,s){if(e.samples&&e.isAAC){var o=this;this.sampleAes.decryptAacSamples(e.samples,0,function(){o.decryptAndRemuxAvc(e,t,r,i,a,n,s)})}else this.decryptAndRemuxAvc(e,t,r,i,a,n,s)}},{key:"decryptAndRemuxAvc",value:function(e,t,r,i,a,n,s){if(t.samples){var o=this;this.sampleAes.decryptAvcSamples(t.samples,0,0,function(){o.remuxer.remux(e,t,r,i,a,n,s)})}else this.remuxer.remux(e,t,r,i,a,n,s)}},{key:"destroy",value:function(){this._initPTS=this._initDTS=void 0,this._duration=0}},{key:"_parsePAT",value:function(e,t){return(31&e[t+10])<<8|e[t+11]}},{key:"_parsePMT",value:function(e,t,r,i){var a,n,s,o,l={audio:-1,avc:-1,id3:-1,isAAC:!0};for(a=(15&e[t+1])<<8|e[t+2],n=t+3+a-4,s=(15&e[t+10])<<8|e[t+11],t+=12+s;t<n;){switch(o=(31&e[t+1])<<8|e[t+2],e[t]){case 207:if(!i){p.logger.log("unkown stream type:"+e[t]);break}case 15:l.audio===-1&&(l.audio=o);break;case 21:l.id3===-1&&(l.id3=o);break;case 219:if(!i){p.logger.log("unkown stream type:"+e[t]);break}case 27:l.avc===-1&&(l.avc=o);break;case 3:case 4:r?l.audio===-1&&(l.audio=o,l.isAAC=!1):p.logger.log("MPEG audio found, not supported in this browser for now");break;case 36:p.logger.warn("HEVC stream type found, not supported for now");break;default:p.logger.log("unkown stream type:"+e[t])}t+=5+((15&e[t+3])<<8|e[t+4])}return l}},{key:"_parsePES",value:function(e){var t,r,i,a,n,s,o,l,u=0,d=e.data;if(!e||0===e.size)return null;for(;d[0].length<19&&d.length>1;){var f=new Uint8Array(d[0].length+d[1].length);f.set(d[0]),f.set(d[1],d[0].length),d[0]=f,d.splice(1,1)}if(t=d[0],1===(t[0]<<16)+(t[1]<<8)+t[2]){if((i=(t[4]<<8)+t[5])&&i>e.size-6)return null;r=t[7],192&r&&(s=536870912*(14&t[9])+4194304*(255&t[10])+16384*(254&t[11])+128*(255&t[12])+(254&t[13])/2,s>4294967295&&(s-=8589934592),64&r?(o=536870912*(14&t[14])+4194304*(255&t[15])+16384*(254&t[16])+128*(255&t[17])+(254&t[18])/2,o>4294967295&&(o-=8589934592),s-o>54e5&&(p.logger.warn(Math.round((s-o)/9e4)+"s delta between PTS and DTS, align them"),s=o)):o=s),a=t[8],l=a+9,e.size-=l,n=new Uint8Array(e.size);for(var c=0,h=d.length;c<h;c++){t=d[c];var g=t.byteLength;if(l){if(l>g){l-=g;continue}t=t.subarray(l),g-=l,l=0}n.set(t,u),u+=g}return i&&(i-=a+3),{data:n,pts:s,dts:o,len:i}}return null}},{key:"pushAccesUnit",value:function(e,t){if(e.units.length&&e.frame){var r=t.samples,i=r.length;!this.config.forceKeyFrameOnDiscontinuity||e.key===!0||t.sps&&(i||this.contiguous)?(e.id=i,r.push(e)):t.dropped++}e.debug.length&&p.logger.log(e.pts+"/"+e.dts+":"+e.debug)}},{key:"_parseAVCPES",value:function(e,t){var r,i,a,n=this,s=this._avcTrack,o=this._parseAVCNALu(e.data),l=this.avcSample;e.data=null,o.forEach(function(t){switch(t.type){case 1:i=!0,l.frame=!0;var o=t.data;if(o.length>4){var u=new h.default(o).readSliceType();2!==u&&4!==u&&7!==u&&9!==u||(l.key=!0)}break;case 5:i=!0,l||(l=n.avcSample=n._createAVCSample(!0,e.pts,e.dts,"")),l.key=!0,l.frame=!0;break;case 6:i=!0,r=new h.default(n.discardEPB(t.data)),r.readUByte();for(var d=0,f=0,c=!1,g=0;!c&&r.bytesAvailable>1;){d=0;do{g=r.readUByte(),d+=g}while(255===g);f=0;do{g=r.readUByte(),f+=g}while(255===g);if(4===d&&0!==r.bytesAvailable){c=!0;if(181===r.readUByte()){if(49===r.readUShort()){if(1195456820===r.readUInt()){if(3===r.readUByte()){var v=r.readUByte(),p=r.readUByte(),y=31&v,m=[v,p];for(a=0;a<y;a++)m.push(r.readUByte()),m.push(r.readUByte()),m.push(r.readUByte());n._insertSampleInOrder(n._txtTrack.samples,{type:3,pts:e.pts,bytes:m})}}}}}else if(f<r.bytesAvailable)for(a=0;a<f;a++)r.readUByte()}break;case 7:if(i=!0,!s.sps){r=new h.default(t.data);var E=r.readSPS();s.width=E.width,s.height=E.height,s.pixelRatio=E.pixelRatio,s.sps=[t.data],s.duration=n._duration;var b=t.data.subarray(1,4),T="avc1.";for(a=0;a<3;a++){var k=b[a].toString(16);k.length<2&&(k="0"+k),T+=k}s.codec=T}break;case 8:i=!0,s.pps||(s.pps=[t.data]);break;case 9:i=!1,l&&n.pushAccesUnit(l,s),l=n.avcSample=n._createAVCSample(!1,e.pts,e.dts,"");break;case 12:i=!1;break;default:i=!1,l&&(l.debug+="unknown NAL "+t.type+" ")}if(l&&i){l.units.push(t)}}),t&&l&&(this.pushAccesUnit(l,s),this.avcSample=null)}},{key:"_createAVCSample",value:function(e,t,r,i){return{key:e,pts:t,dts:r,units:[],debug:i}}},{key:"_insertSampleInOrder",value:function(e,t){var r=e.length;if(r>0){if(t.pts>=e[r-1].pts)e.push(t);else for(var i=r-1;i>=0;i--)if(t.pts<e[i].pts){e.splice(i,0,t);break}}else e.push(t)}},{key:"_getLastNalUnit",value:function(){var e=this.avcSample,t=void 0;if(!e||0===e.units.length){var r=this._avcTrack,i=r.samples;e=i[i.length-1]}if(e){var a=e.units;t=a[a.length-1]}return t}},{key:"_parseAVCNALu",value:function(e){var t,r,i,a,n,s=0,o=e.byteLength,l=this._avcTrack,u=l.naluState||0,d=u,f=[],c=-1;for(u===-1&&(c=0,n=31&e[0],u=0,s=1);s<o;)if(t=e[s++],u)if(1!==u)if(t)if(1===t){if(c>=0)i={data:e.subarray(c,s-u-1),type:n},f.push(i);else{var h=this._getLastNalUnit();if(h&&(d&&s<=4-d&&h.state&&(h.data=h.data.subarray(0,h.data.byteLength-d)),(r=s-u-1)>0)){var g=new Uint8Array(h.data.byteLength+r);g.set(h.data,0),g.set(e.subarray(0,r),h.data.byteLength),h.data=g}}s<o?(a=31&e[s],c=s,n=a,u=0):u=-1}else u=0;else u=3;else u=t?0:2;else u=t?0:1;if(c>=0&&u>=0&&(i={data:e.subarray(c,o),type:n,state:u},f.push(i)),0===f.length){var v=this._getLastNalUnit();if(v){var p=new Uint8Array(v.data.byteLength+e.byteLength);p.set(v.data,0),p.set(e,v.data.byteLength),v.data=p}}return l.naluState=u,f}},{key:"discardEPB",value:function(e){for(var t,r,i=e.byteLength,a=[],n=1;n<i-2;)0===e[n]&&0===e[n+1]&&3===e[n+2]?(a.push(n+2),n+=2):n++;if(0===a.length)return e;t=i-a.length,r=new Uint8Array(t);var s=0;for(n=0;n<t;s++,n++)s===a[0]&&(s++,a.shift()),r[n]=e[s];return r}},{key:"_parseAACPES",value:function(e){var t,r,i,a,n,s,l,u,d,c=this._audioTrack,h=e.data,g=e.pts,v=this.aacOverFlow,m=this.aacLastPTS;if(v){var E=new Uint8Array(v.byteLength+h.byteLength);E.set(v,0),E.set(h,v.byteLength),h=E}for(n=0,u=h.length;n<u-1&&(255!==h[n]||240!=(240&h[n+1]));n++);if(n){var b,T;if(n<u-1?(b="AAC PES did not start with ADTS header,offset:"+n,T=!1):(b="no ADTS header found in AAC PES",T=!0),p.logger.warn("parsing error:"+b),this.observer.trigger(f.default.ERROR,{type:y.ErrorTypes.MEDIA_ERROR,details:y.ErrorDetails.FRAG_PARSING_ERROR,fatal:T,reason:b}),T)return}if(!c.samplerate){var k=this.audioCodec;t=o.default.getAudioConfig(this.observer,h,n,k),c.config=t.config,c.samplerate=t.samplerate,c.channelCount=t.channelCount,c.codec=t.codec,c.manifestCodec=t.manifestCodec,p.logger.log("parsed codec:"+c.codec+",rate:"+t.samplerate+",nb channel:"+t.channelCount)}if(a=0,i=9216e4/c.samplerate,v&&m){var _=m+i;Math.abs(_-g)>1&&(p.logger.log("AAC: align PTS for overlapping frames by "+Math.round((_-g)/90)),g=_)}for(;n+5<u&&(s=1&h[n+1]?7:9,r=(3&h[n+3])<<11|h[n+4]<<3|(224&h[n+5])>>>5,(r-=s)>0&&n+s+r<=u);)for(l=g+a*i,d={unit:h.subarray(n+s,n+s+r),pts:l,dts:l},c.samples.push(d),c.len+=r,n+=r+s,a++;n<u-1&&(255!==h[n]||240!=(240&h[n+1]));n++);v=n<u?h.subarray(n,u):null,this.aacOverFlow=v,this.aacLastPTS=l}},{key:"_parseMPEGPES",value:function(e){u.default.parse(this._audioTrack,e.data,0,e.pts)}},{key:"_parseID3PES",value:function(e){this._id3Track.samples.push(e)}}],[{key:"probe",value:function(e){return e.length>=564&&71===e[0]&&71===e[188]&&71===e[376]}}]),e}();r.default=m},{22:22,26:26,30:30,31:31,33:33,35:35,53:53}],33:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0});r.ErrorTypes={NETWORK_ERROR:"networkError",MEDIA_ERROR:"mediaError",MUX_ERROR:"muxError",OTHER_ERROR:"otherError"},r.ErrorDetails={MANIFEST_LOAD_ERROR:"manifestLoadError",MANIFEST_LOAD_TIMEOUT:"manifestLoadTimeOut",MANIFEST_PARSING_ERROR:"manifestParsingError",MANIFEST_INCOMPATIBLE_CODECS_ERROR:"manifestIncompatibleCodecsError",LEVEL_LOAD_ERROR:"levelLoadError",LEVEL_LOAD_TIMEOUT:"levelLoadTimeOut",LEVEL_SWITCH_ERROR:"levelSwitchError",AUDIO_TRACK_LOAD_ERROR:"audioTrackLoadError",AUDIO_TRACK_LOAD_TIMEOUT:"audioTrackLoadTimeOut",FRAG_LOAD_ERROR:"fragLoadError",FRAG_LOOP_LOADING_ERROR:"fragLoopLoadingError",FRAG_LOAD_TIMEOUT:"fragLoadTimeOut",FRAG_DECRYPT_ERROR:"fragDecryptError",FRAG_PARSING_ERROR:"fragParsingError",REMUX_ALLOC_ERROR:"remuxAllocError",KEY_LOAD_ERROR:"keyLoadError",KEY_LOAD_TIMEOUT:"keyLoadTimeOut",BUFFER_ADD_CODEC_ERROR:"bufferAddCodecError",BUFFER_APPEND_ERROR:"bufferAppendError",BUFFER_APPENDING_ERROR:"bufferAppendingError",BUFFER_STALLED_ERROR:"bufferStalledError",BUFFER_FULL_ERROR:"bufferFullError",BUFFER_SEEK_OVER_HOLE:"bufferSeekOverHole",BUFFER_NUDGE_ON_STALL:"bufferNudgeOnStall",INTERNAL_EXCEPTION:"internalException",WEBVTT_EXCEPTION:"webVTTException"}},{}],34:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),s=e(53),o=e(33),l=e(35),u=function(e){return e&&e.__esModule?e:{default:e}}(l),d=function(){function e(t){i(this,e),this.hls=t,this.onEvent=this.onEvent.bind(this);for(var r=arguments.length,a=Array(r>1?r-1:0),n=1;n<r;n++)a[n-1]=arguments[n];this.handledEvents=a,this.useGenericHandler=!0,this.registerListeners()}return n(e,[{key:"destroy",value:function(){this.unregisterListeners()}},{key:"isEventHandler",value:function(){return"object"===a(this.handledEvents)&&this.handledEvents.length&&"function"==typeof this.onEvent}},{key:"registerListeners",value:function(){this.isEventHandler()&&this.handledEvents.forEach(function(e){if("hlsEventGeneric"===e)throw new Error("Forbidden event name: "+e);this.hls.on(e,this.onEvent)}.bind(this))}},{key:"unregisterListeners",value:function(){this.isEventHandler()&&this.handledEvents.forEach(function(e){this.hls.off(e,this.onEvent)}.bind(this))}},{key:"onEvent",value:function(e,t){this.onEventGeneric(e,t)}},{key:"onEventGeneric",value:function(e,t){var r=function(e,t){var r="on"+e.replace("hls","");if("function"!=typeof this[r])throw new Error("Event "+e+" has no generic handler in this "+this.constructor.name+" class (tried "+r+")");return this[r].bind(this,t)};try{r.call(this,e,t).call()}catch(t){s.logger.error("internal error happened while processing "+e+":"+t.message),this.hls.trigger(u.default.ERROR,{type:o.ErrorTypes.OTHER_ERROR,details:o.ErrorDetails.INTERNAL_EXCEPTION,fatal:!1,event:e,err:t})}}}]),e}();r.default=d},{33:33,35:35,53:53}],35:[function(e,t,r){"use strict";t.exports={MEDIA_ATTACHING:"hlsMediaAttaching",MEDIA_ATTACHED:"hlsMediaAttached",MEDIA_DETACHING:"hlsMediaDetaching",MEDIA_DETACHED:"hlsMediaDetached",BUFFER_RESET:"hlsBufferReset",BUFFER_CODECS:"hlsBufferCodecs",BUFFER_CREATED:"hlsBufferCreated",BUFFER_APPENDING:"hlsBufferAppending",BUFFER_APPENDED:"hlsBufferAppended",BUFFER_EOS:"hlsBufferEos",BUFFER_FLUSHING:"hlsBufferFlushing",BUFFER_FLUSHED:"hlsBufferFlushed",MANIFEST_LOADING:"hlsManifestLoading",MANIFEST_LOADED:"hlsManifestLoaded",MANIFEST_PARSED:"hlsManifestParsed",LEVEL_SWITCH:"hlsLevelSwitch",LEVEL_SWITCHING:"hlsLevelSwitching",LEVEL_SWITCHED:"hlsLevelSwitched",LEVEL_LOADING:"hlsLevelLoading",LEVEL_LOADED:"hlsLevelLoaded",LEVEL_UPDATED:"hlsLevelUpdated",LEVEL_PTS_UPDATED:"hlsLevelPtsUpdated",AUDIO_TRACKS_UPDATED:"hlsAudioTracksUpdated",AUDIO_TRACK_SWITCH:"hlsAudioTrackSwitch",AUDIO_TRACK_SWITCHING:"hlsAudioTrackSwitching",AUDIO_TRACK_SWITCHED:"hlsAudioTrackSwitched",AUDIO_TRACK_LOADING:"hlsAudioTrackLoading",AUDIO_TRACK_LOADED:"hlsAudioTrackLoaded",SUBTITLE_TRACKS_UPDATED:"hlsSubtitleTracksUpdated",SUBTITLE_TRACK_SWITCH:"hlsSubtitleTrackSwitch",SUBTITLE_TRACK_LOADING:"hlsSubtitleTrackLoading",SUBTITLE_TRACK_LOADED:"hlsSubtitleTrackLoaded",SUBTITLE_FRAG_PROCESSED:"hlsSubtitleFragProcessed",INIT_PTS_FOUND:"hlsInitPtsFound",FRAG_LOADING:"hlsFragLoading",FRAG_LOAD_PROGRESS:"hlsFragLoadProgress",FRAG_LOAD_EMERGENCY_ABORTED:"hlsFragLoadEmergencyAborted",FRAG_LOADED:"hlsFragLoaded",FRAG_DECRYPTED:"hlsFragDecrypted",FRAG_PARSING_INIT_SEGMENT:"hlsFragParsingInitSegment",FRAG_PARSING_USERDATA:"hlsFragParsingUserdata",FRAG_PARSING_METADATA:"hlsFragParsingMetadata",FRAG_PARSING_DATA:"hlsFragParsingData",FRAG_PARSED:"hlsFragParsed",FRAG_BUFFERED:"hlsFragBuffered",FRAG_CHANGED:"hlsFragChanged",FPS_DROP:"hlsFpsDrop",FPS_DROP_LEVEL_CAPPING:"hlsFpsDropLevelCapping",ERROR:"hlsError",DESTROYING:"hlsDestroying",KEY_LOADING:"hlsKeyLoading",KEY_LOADED:"hlsKeyLoaded",STREAM_STATE_TRANSITION:"hlsStreamStateTransition"}},{}],36:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=function(){function e(){i(this,e)}return a(e,null,[{key:"getSilentFrame",value:function(e,t){switch(e){case"mp4a.40.2":if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224]);break;default:if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}return null}}]),e}();r.default=n},{}],37:[function(e,t,r){"use strict";var i={isBuffered:function(e,t){if(e)for(var r=e.buffered,i=0;i<r.length;i++)if(t>=r.start(i)&&t<=r.end(i))return!0;return!1},bufferInfo:function(e,t,r){if(e){var i,a=e.buffered,n=[];for(i=0;i<a.length;i++)n.push({start:a.start(i),end:a.end(i)});return this.bufferedInfo(n,t,r)}return{len:0,start:t,end:t,nextStart:void 0}},bufferedInfo:function(e,t,r){var i,a,n,s,o,l=[];for(e.sort(function(e,t){var r=e.start-t.start;return r?r:t.end-e.end}),o=0;o<e.length;o++){var u=l.length;if(u){var d=l[u-1].end;e[o].start-d<r?e[o].end>d&&(l[u-1].end=e[o].end):l.push(e[o])}else l.push(e[o])}for(o=0,i=0,a=n=t;o<l.length;o++){var f=l[o].start,c=l[o].end;if(t+r>=f&&t<c)a=f,n=c,i=n-t;else if(t+r<f){s=f;break}}return{len:i,start:a,end:n,nextStart:s}}};t.exports=i},{}],38:[function(e,t,r){"use strict";var i=e(53),a={mergeDetails:function(e,t){var r,n=Math.max(e.startSN,t.startSN)-t.startSN,s=Math.min(e.endSN,t.endSN)-t.startSN,o=t.startSN-e.startSN,l=e.fragments,u=t.fragments,d=0;if(s<n)return void(t.PTSKnown=!1);for(var f=n;f<=s;f++){var c=l[o+f],h=u[f];h&&c&&(d=c.cc-h.cc,isNaN(c.startPTS)||(h.start=h.startPTS=c.startPTS,h.endPTS=c.endPTS,h.duration=c.duration,h.backtracked=c.backtracked,h.dropped=c.dropped,r=h))}if(d)for(i.logger.log("discontinuity sliding from playlist, take drift into account"),f=0;f<u.length;f++)u[f].cc+=d;if(r)a.updateFragPTSDTS(t,r,r.startPTS,r.endPTS,r.startDTS,r.endDTS);else if(o>=0&&o<l.length){var g=l[o].start;for(f=0;f<u.length;f++)u[f].start+=g}t.PTSKnown=e.PTSKnown},updateFragPTSDTS:function(e,t,r,i,n,s){if(!isNaN(t.startPTS)){var o=Math.abs(t.startPTS-r);isNaN(t.deltaPTS)?t.deltaPTS=o:t.deltaPTS=Math.max(o,t.deltaPTS),r=Math.min(r,t.startPTS),i=Math.max(i,t.endPTS),n=Math.min(n,t.startDTS),s=Math.max(s,t.endDTS)}var l=r-t.start;t.start=t.startPTS=r,t.endPTS=i,t.startDTS=n,t.endDTS=s,t.duration=i-r;var u=t.sn;if(!e||u<e.startSN||u>e.endSN)return 0;var d,f,c;for(d=u-e.startSN,f=e.fragments,t=f[d],c=d;c>0;c--)a.updatePTS(f,c,c-1);for(c=d;c<f.length-1;c++)a.updatePTS(f,c,c+1);return e.PTSKnown=!0,l},updatePTS:function(e,t,r){var a=e[t],n=e[r],s=n.startPTS;isNaN(s)?n.start=r>t?a.start+a.duration:Math.max(a.start-n.duration,0):r>t?(a.duration=s-a.start,a.duration<0&&i.logger.warn("negative duration computed for frag "+a.sn+",level "+a.level+", there should be some duration drift between playlist and fragment!")):(n.duration=a.start-s,n.duration<0&&i.logger.warn("negative duration computed for frag "+n.sn+",level "+n.level+", there should be some duration drift between playlist and fragment!"))}};t.exports=a},{53:53}],39:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),s=e(2),o=i(s),l=e(35),u=i(l),d=e(33),f=e(43),c=i(f),h=e(41),g=i(h),v=e(42),p=i(v),y=e(13),m=i(y),E=e(12),b=i(E),T=e(11),k=i(T),_=e(53),R=e(1),A=i(R),S=e(4),L=function(){function e(){var t=this,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};a(this,e);var i=e.DefaultConfig;if((r.liveSyncDurationCount||r.liveMaxLatencyDurationCount)&&(r.liveSyncDuration||r.liveMaxLatencyDuration))throw new Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");for(var n in i)n in r||(r[n]=i[n]);if(void 0!==r.liveMaxLatencyDurationCount&&r.liveMaxLatencyDurationCount<=r.liveSyncDurationCount)throw new Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be gt "liveSyncDurationCount"');if(void 0!==r.liveMaxLatencyDuration&&(r.liveMaxLatencyDuration<=r.liveSyncDuration||void 0===r.liveSyncDuration))throw new Error('Illegal hls.js config: "liveMaxLatencyDuration" must be gt "liveSyncDuration"');(0,_.enableLogs)(r.debug),this.config=r,this._autoLevelCapping=-1;var s=this.observer=new A.default;s.trigger=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];s.emit.apply(s,[e,e].concat(r))},s.off=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];s.removeListener.apply(s,[e].concat(r))},this.on=s.on.bind(s),this.off=s.off.bind(s),this.trigger=s.trigger.bind(s);var o=this.abrController=new r.abrController(this),l=new r.bufferController(this),u=new r.capLevelController(this),d=new r.fpsController(this),f=new c.default(this),h=new g.default(this),v=new p.default(this),y=new k.default(this),E=this.levelController=new b.default(this),T=this.streamController=new m.default(this),R=[E,T],S=r.audioStreamController;S&&R.push(new S(this)),this.networkControllers=R;var L=[f,h,v,o,l,u,d,y];if(S=r.audioTrackController){var w=new S(this);this.audioTrackController=w,L.push(w)}if(S=r.subtitleTrackController){var D=new S(this);this.subtitleTrackController=D,L.push(D)}[r.subtitleStreamController,r.timelineController].forEach(function(e){e&&L.push(new e(t))}),this.coreComponents=L}return n(e,null,[{key:"isSupported",value:function(){var e=window.MediaSource=window.MediaSource||window.WebKitMediaSource,t=window.SourceBuffer=window.SourceBuffer||window.WebKitSourceBuffer,r=e&&"function"==typeof e.isTypeSupported&&e.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"'),i=!t||t.prototype&&"function"==typeof t.prototype.appendBuffer&&"function"==typeof t.prototype.remove;return r&&i}},{key:"version",get:function(){return"0.7.9"}},{key:"Events",get:function(){return u.default}},{key:"ErrorTypes",get:function(){return d.ErrorTypes}},{key:"ErrorDetails",get:function(){return d.ErrorDetails}},{key:"DefaultConfig",get:function(){return e.defaultConfig?e.defaultConfig:S.hlsDefaultConfig},set:function(t){e.defaultConfig=t}}]),n(e,[{key:"destroy",value:function(){_.logger.log("destroy"),this.trigger(u.default.DESTROYING),this.detachMedia(),this.coreComponents.concat(this.networkControllers).forEach(function(e){e.destroy()}),this.url=null,this.observer.removeAllListeners(),this._autoLevelCapping=-1}},{key:"attachMedia",value:function(e){_.logger.log("attachMedia"),this.media=e,this.trigger(u.default.MEDIA_ATTACHING,{media:e})}},{key:"detachMedia",value:function(){_.logger.log("detachMedia"),this.trigger(u.default.MEDIA_DETACHING),this.media=null}},{key:"loadSource",value:function(e){e=o.default.buildAbsoluteURL(window.location.href,e,{alwaysNormalize:!0}),_.logger.log("loadSource:"+e),this.url=e,this.trigger(u.default.MANIFEST_LOADING,{url:e})}},{key:"startLoad",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1;_.logger.log("startLoad("+e+")"),this.networkControllers.forEach(function(t){t.startLoad(e)})}},{key:"stopLoad",value:function(){_.logger.log("stopLoad"),this.networkControllers.forEach(function(e){e.stopLoad()})}},{key:"swapAudioCodec",value:function(){_.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()}},{key:"recoverMediaError",value:function(){_.logger.log("recoverMediaError");var e=this.media;this.detachMedia(),this.attachMedia(e)}},{key:"levels",get:function(){return this.levelController.levels}},{key:"currentLevel",get:function(){return this.streamController.currentLevel},set:function(e){_.logger.log("set currentLevel:"+e),this.loadLevel=e,this.streamController.immediateLevelSwitch()}},{key:"nextLevel",get:function(){return this.streamController.nextLevel},set:function(e){_.logger.log("set nextLevel:"+e),this.levelController.manualLevel=e,this.streamController.nextLevelSwitch()}},{key:"loadLevel",get:function(){return this.levelController.level},set:function(e){_.logger.log("set loadLevel:"+e),this.levelController.manualLevel=e}},{key:"nextLoadLevel",get:function(){return this.levelController.nextLoadLevel},set:function(e){this.levelController.nextLoadLevel=e}},{key:"firstLevel",get:function(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)},set:function(e){_.logger.log("set firstLevel:"+e),this.levelController.firstLevel=e}},{key:"startLevel",get:function(){return this.levelController.startLevel},set:function(e){_.logger.log("set startLevel:"+e);var t=this;e!==-1&&(e=Math.max(e,t.minAutoLevel)),t.levelController.startLevel=e}},{key:"autoLevelCapping",get:function(){return this._autoLevelCapping},set:function(e){_.logger.log("set autoLevelCapping:"+e),this._autoLevelCapping=e}},{key:"autoLevelEnabled",get:function(){return this.levelController.manualLevel===-1}},{key:"manualLevel",get:function(){return this.levelController.manualLevel}},{key:"minAutoLevel",get:function(){for(var e=this,t=e.levels,r=e.config.minAutoBitrate,i=t?t.length:0,a=0;a<i;a++){if((t[a].realBitrate?Math.max(t[a].realBitrate,t[a].bitrate):t[a].bitrate)>r)return a}return 0}},{key:"maxAutoLevel",get:function(){var e=this,t=e.levels,r=e.autoLevelCapping;return r===-1&&t&&t.length?t.length-1:r}},{key:"nextAutoLevel",get:function(){var e=this;return Math.min(Math.max(e.abrController.nextAutoLevel,e.minAutoLevel),e.maxAutoLevel)},set:function(e){var t=this;t.abrController.nextAutoLevel=Math.max(t.minAutoLevel,e)}},{key:"audioTracks",get:function(){var e=this.audioTrackController;return e?e.audioTracks:[]}},{key:"audioTrack",get:function(){var e=this.audioTrackController;return e?e.audioTrack:-1},set:function(e){var t=this.audioTrackController;t&&(t.audioTrack=e)}},{key:"liveSyncPosition",get:function(){return this.streamController.liveSyncPosition}},{key:"subtitleTracks",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTracks:[]}},{key:"subtitleTrack",get:function(){var e=this.subtitleTrackController;return e?e.subtitleTrack:-1},set:function(e){var t=this.subtitleTrackController;t&&(t.subtitleTrack=e)}}]),e}();r.default=L},{1:1,11:11,12:12,13:13,2:2,33:33,35:35,4:4,41:41,42:42,43:43,53:53}],40:[function(e,t,r){"use strict";t.exports=e(39).default},{39:39}],41:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),l=e(35),u=i(l),d=e(34),f=i(d),c=e(33),h=e(53),g=function(e){function t(e){a(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,u.default.FRAG_LOADING));return r.loaders={},r}return s(t,e),o(t,[{key:"destroy",value:function(){var e=this.loaders;for(var t in e){var r=e[t];r&&r.destroy()}this.loaders={},f.default.prototype.destroy.call(this)}},{key:"onFragLoading",value:function(e){var t=e.frag,r=t.type,i=this.loaders[r],a=this.hls.config;t.loaded=0,i&&(h.logger.warn("abort previous fragment loader for type:"+r),i.abort()),i=this.loaders[r]=t.loader=void 0!==a.fLoader?new a.fLoader(a):new a.loader(a);var n=void 0,s=void 0,o=void 0;n={url:t.url,frag:t,responseType:"arraybuffer",progressData:!1};var l=t.byteRangeStartOffset,u=t.byteRangeEndOffset;isNaN(l)||isNaN(u)||(n.rangeStart=l,n.rangeEnd=u),s={timeout:a.fragLoadingTimeOut,maxRetry:0,retryDelay:0,maxRetryDelay:a.fragLoadingMaxRetryTimeout},o={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this),onProgress:this.loadprogress.bind(this)},i.load(n,s,o)}},{key:"loadsuccess",value:function(e,t,r){var i=e.data,a=r.frag;a.loader=void 0,this.loaders[a.type]=void 0,this.hls.trigger(u.default.FRAG_LOADED,{payload:i,frag:a,stats:t})}},{key:"loaderror",value:function(e,t){var r=t.loader;r&&r.abort(),this.loaders[t.type]=void 0,this.hls.trigger(u.default.ERROR,{type:c.ErrorTypes.NETWORK_ERROR,details:c.ErrorDetails.FRAG_LOAD_ERROR,fatal:!1,frag:t.frag,response:e})}},{key:"loadtimeout",value:function(e,t){var r=t.loader;r&&r.abort(),this.loaders[t.type]=void 0,this.hls.trigger(u.default.ERROR,{type:c.ErrorTypes.NETWORK_ERROR,details:c.ErrorDetails.FRAG_LOAD_TIMEOUT,fatal:!1,frag:t.frag})}},{key:"loadprogress",value:function(e,t,r){var i=t.frag;i.loaded=e.loaded,this.hls.trigger(u.default.FRAG_LOAD_PROGRESS,{frag:i,stats:e})}}]),t +}(f.default);r.default=g},{33:33,34:34,35:35,53:53}],42:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function s(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),l=e(35),u=i(l),d=e(34),f=i(d),c=e(33),h=e(53),g=function(e){function t(e){a(this,t);var r=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,u.default.KEY_LOADING));return r.loaders={},r.decryptkey=null,r.decrypturl=null,r}return s(t,e),o(t,[{key:"destroy",value:function(){for(var e in this.loaders){var t=this.loaders[e];t&&t.destroy()}this.loaders={},f.default.prototype.destroy.call(this)}},{key:"onKeyLoading",value:function(e){var t=e.frag,r=t.type,i=this.loaders[r],a=t.decryptdata,n=a.uri;if(n!==this.decrypturl||null===this.decryptkey){var s=this.hls.config;i&&(h.logger.warn("abort previous key loader for type:"+r),i.abort()),t.loader=this.loaders[r]=new s.loader(s),this.decrypturl=n,this.decryptkey=null;var o=void 0,l=void 0,d=void 0;o={url:n,frag:t,responseType:"arraybuffer"},l={timeout:s.fragLoadingTimeOut,maxRetry:s.fragLoadingMaxRetry,retryDelay:s.fragLoadingRetryDelay,maxRetryDelay:s.fragLoadingMaxRetryTimeout},d={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)},t.loader.load(o,l,d)}else this.decryptkey&&(a.key=this.decryptkey,this.hls.trigger(u.default.KEY_LOADED,{frag:t}))}},{key:"loadsuccess",value:function(e,t,r){var i=r.frag;this.decryptkey=i.decryptdata.key=new Uint8Array(e.data),i.loader=void 0,this.loaders[i.type]=void 0,this.hls.trigger(u.default.KEY_LOADED,{frag:i})}},{key:"loaderror",value:function(e,t){var r=t.frag,i=r.loader;i&&i.abort(),this.loaders[t.type]=void 0,this.hls.trigger(u.default.ERROR,{type:c.ErrorTypes.NETWORK_ERROR,details:c.ErrorDetails.KEY_LOAD_ERROR,fatal:!1,frag:r,response:e})}},{key:"loadtimeout",value:function(e,t){var r=t.frag,i=r.loader;i&&i.abort(),this.loaders[t.type]=void 0,this.hls.trigger(u.default.ERROR,{type:c.ErrorTypes.NETWORK_ERROR,details:c.ErrorDetails.KEY_LOAD_TIMEOUT,fatal:!1,frag:r})}}]),t}(f.default);r.default=g},{33:33,34:34,35:35,53:53}],43:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function n(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var o=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),l=e(2),u=i(l),d=e(35),f=i(d),c=e(34),h=i(c),g=e(33),v=e(47),p=i(v),y=e(53),m=/#EXT-X-STREAM-INF:([^\n\r]*)[\r\n]+([^\r\n]+)/g,E=/#EXT-X-MEDIA:(.*)/g,b=/#EXTINF:(\d*(?:\.\d+)?)(?:,(.*))?|(?!#)(\S.+)|#EXT-X-BYTERANGE: *(.+)|#EXT-X-PROGRAM-DATE-TIME:(.+)|#.*/g,T=function(){function e(){s(this,e),this.method=null,this.key=null,this.iv=null,this._uri=null}return o(e,[{key:"uri",get:function(){return!this._uri&&this.reluri&&(this._uri=u.default.buildAbsoluteURL(this.baseuri,this.reluri,{alwaysNormalize:!0})),this._uri}}]),e}(),k=function(){function e(){s(this,e),this._url=null,this._byteRange=null,this._decryptdata=null,this.tagList=[]}return o(e,[{key:"createInitializationVector",value:function(e){for(var t=new Uint8Array(16),r=12;r<16;r++)t[r]=e>>8*(15-r)&255;return t}},{key:"fragmentDecryptdataFromLevelkey",value:function(e,t){var r=e;return e&&e.method&&e.uri&&!e.iv&&(r=new T,r.method=e.method,r.baseuri=e.baseuri,r.reluri=e.reluri,r.iv=this.createInitializationVector(t)),r}},{key:"cloneObj",value:function(e){return JSON.parse(JSON.stringify(e))}},{key:"url",get:function(){return!this._url&&this.relurl&&(this._url=u.default.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url},set:function(e){this._url=e}},{key:"programDateTime",get:function(){return!this._programDateTime&&this.rawProgramDateTime&&(this._programDateTime=new Date(Date.parse(this.rawProgramDateTime))),this._programDateTime}},{key:"byteRange",get:function(){if(!this._byteRange){var e=this._byteRange=[];if(this.rawByteRange){var t=this.rawByteRange.split("@",2);if(1===t.length){var r=this.lastByteRangeEndOffset;e[0]=r?r:0}else e[0]=parseInt(t[1]);e[1]=parseInt(t[0])+e[0]}}return this._byteRange}},{key:"byteRangeStartOffset",get:function(){return this.byteRange[0]}},{key:"byteRangeEndOffset",get:function(){return this.byteRange[1]}},{key:"decryptdata",get:function(){return this._decryptdata||(this._decryptdata=this.fragmentDecryptdataFromLevelkey(this.levelkey,this.sn)),this._decryptdata}}]),e}(),_=function(e){function t(e){s(this,t);var r=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,f.default.MANIFEST_LOADING,f.default.LEVEL_LOADING,f.default.AUDIO_TRACK_LOADING,f.default.SUBTITLE_TRACK_LOADING));return r.loaders={},r}return n(t,e),o(t,[{key:"destroy",value:function(){for(var e in this.loaders){var t=this.loaders[e];t&&t.destroy()}this.loaders={},h.default.prototype.destroy.call(this)}},{key:"onManifestLoading",value:function(e){this.load(e.url,{type:"manifest"})}},{key:"onLevelLoading",value:function(e){this.load(e.url,{type:"level",level:e.level,id:e.id})}},{key:"onAudioTrackLoading",value:function(e){this.load(e.url,{type:"audioTrack",id:e.id})}},{key:"onSubtitleTrackLoading",value:function(e){this.load(e.url,{type:"subtitleTrack",id:e.id})}},{key:"load",value:function(e,t){var r=this.loaders[t.type];if(r){var i=r.context;if(i&&i.url===e)return void y.logger.trace("playlist request ongoing");y.logger.warn("abort previous loader for type:"+t.type),r.abort()}var a=this.hls.config,n=void 0,s=void 0,o=void 0,l=void 0;"manifest"===t.type?(n=a.manifestLoadingMaxRetry,s=a.manifestLoadingTimeOut,o=a.manifestLoadingRetryDelay,l=a.manifestLoadingMaxRetryTimeout):(n=a.levelLoadingMaxRetry,s=a.levelLoadingTimeOut,o=a.levelLoadingRetryDelay,l=a.levelLoadingMaxRetryTimeout,y.logger.log("loading playlist for "+t.type+" "+(t.level||t.id))),r=this.loaders[t.type]=t.loader=void 0!==a.pLoader?new a.pLoader(a):new a.loader(a),t.url=e,t.responseType="";var u=void 0,d=void 0;u={timeout:s,maxRetry:n,retryDelay:o,maxRetryDelay:l},d={onSuccess:this.loadsuccess.bind(this),onError:this.loaderror.bind(this),onTimeout:this.loadtimeout.bind(this)},r.load(t,u,d)}},{key:"resolve",value:function(e,t){return u.default.buildAbsoluteURL(t,e,{alwaysNormalize:!0})}},{key:"parseMasterPlaylist",value:function(e,t){var r=[],i=void 0;for(m.lastIndex=0;null!=(i=m.exec(e));){var a={},n=a.attrs=new p.default(i[1]);a.url=this.resolve(i[2],t);var s=n.decimalResolution("RESOLUTION");s&&(a.width=s.width,a.height=s.height),a.bitrate=n.decimalInteger("AVERAGE-BANDWIDTH")||n.decimalInteger("BANDWIDTH"),a.name=n.NAME;var o=n.CODECS;if(o){o=o.split(/[ ,]+/);for(var l=0;l<o.length;l++){var u=o[l];u.indexOf("avc1")!==-1?a.videoCodec=this.avc1toavcoti(u):a.audioCodec=u}}r.push(a)}return r}},{key:"parseMasterPlaylistMedia",value:function(e,t,r){var i=void 0,a=[],n=0;for(E.lastIndex=0;null!=(i=E.exec(e));){var s={},o=new p.default(i[1]);o.TYPE===r&&(s.groupId=o["GROUP-ID"],s.name=o.NAME,s.type=r,s.default="YES"===o.DEFAULT,s.autoselect="YES"===o.AUTOSELECT,s.forced="YES"===o.FORCED,o.URI&&(s.url=this.resolve(o.URI,t)),s.lang=o.LANGUAGE,s.name||(s.name=s.lang),s.id=n++,a.push(s))}return a}},{key:"avc1toavcoti",value:function(e){var t,r=e.split(".");return r.length>2?(t=r.shift()+".",t+=parseInt(r.shift()).toString(16),t+=("000"+parseInt(r.shift()).toString(16)).substr(-4)):t=e,t}},{key:"parseLevelPlaylist",value:function(e,t,r,i){var a,n,s=0,o=0,l={type:null,version:null,url:t,fragments:[],live:!0,startSN:0},u=new T,d=0,f=null,c=new k;for(b.lastIndex=0;null!==(a=b.exec(e));){var h=a[1];if(h){c.duration=parseFloat(h);var g=(" "+a[2]).slice(1);c.title=g?g:null,c.tagList.push(g?["INF",h,g]:["INF",h])}else if(a[3]){if(!isNaN(c.duration)){var v=s++;c.type=i,c.start=o,c.levelkey=u,c.sn=v,c.level=r,c.cc=d,c.baseurl=t,c.relurl=(" "+a[3]).slice(1),l.fragments.push(c),f=c,o+=c.duration,c=new k}}else if(a[4]){if(c.rawByteRange=(" "+a[4]).slice(1),f){var m=f.byteRangeEndOffset;m&&(c.lastByteRangeEndOffset=m)}}else if(a[5])c.rawProgramDateTime=(" "+a[5]).slice(1),c.tagList.push(["PROGRAM-DATE-TIME",c.rawProgramDateTime]);else{for(a=a[0].match(/(?:(?:#(EXTM3U))|(?:#EXT-X-(PLAYLIST-TYPE):(.+))|(?:#EXT-X-(MEDIA-SEQUENCE): *(\d+))|(?:#EXT-X-(TARGETDURATION): *(\d+))|(?:#EXT-X-(KEY):(.+))|(?:#EXT-X-(START):(.+))|(?:#EXT-X-(ENDLIST))|(?:#EXT-X-(DISCONTINUITY-SEQ)UENCE:(\d+))|(?:#EXT-X-(DIS)CONTINUITY))|(?:#EXT-X-(VERSION):(\d+))|(?:#EXT-X-(MAP):(.+))|(?:(#)(.*):(.*))|(?:(#)(.*))(?:.*)\r?\n?/),n=1;n<a.length&&void 0===a[n];n++);var E=(" "+a[n+1]).slice(1),_=(" "+a[n+2]).slice(1);switch(a[n]){case"#":c.tagList.push(_?[E,_]:[E]);break;case"PLAYLIST-TYPE":l.type=E.toUpperCase();break;case"MEDIA-SEQUENCE":s=l.startSN=parseInt(E);break;case"TARGETDURATION":l.targetduration=parseFloat(E);break;case"VERSION":l.version=parseInt(E);break;case"EXTM3U":break;case"ENDLIST":l.live=!1;break;case"DIS":d++,c.tagList.push(["DIS"]);break;case"DISCONTINUITY-SEQ":d=parseInt(E);break;case"KEY":var R=E,A=new p.default(R),S=A.enumeratedString("METHOD"),L=A.URI,w=A.hexadecimalInteger("IV");S&&(u=new T,L&&["AES-128","SAMPLE-AES"].indexOf(S)>=0&&(u.method=S,u.baseuri=t,u.reluri=L,u.key=null,u.iv=w));break;case"START":var D=E,O=new p.default(D),I=O.decimalFloatingPoint("TIME-OFFSET");isNaN(I)||(l.startTimeOffset=I);break;case"MAP":var P=new p.default(E);c.relurl=P.URI,c.rawByteRange=P.BYTERANGE,c.baseurl=t,c.level=r,c.type=i,c.sn="initSegment",l.initSegment=c,c=new k;break;default:y.logger.warn("line parsed but not handled: "+a)}}}return c=f,c&&!c.relurl&&(l.fragments.pop(),o-=c.duration),l.totalduration=o,l.averagetargetduration=o/l.fragments.length,l.endSN=s-1,l}},{key:"loadsuccess",value:function(e,t,r){var i=e.data,a=e.url,n=r.type,s=r.id,o=r.level,l=this.hls;if(this.loaders[n]=void 0,void 0!==a&&0!==a.indexOf("data:")||(a=r.url),t.tload=performance.now(),0===i.indexOf("#EXTM3U"))if(i.indexOf("#EXTINF:")>0){var u="audioTrack"!==n&&"subtitleTrack"!==n,d=isNaN(o)?isNaN(s)?0:s:o,c=this.parseLevelPlaylist(i,a,d,"audioTrack"===n?"audio":"subtitleTrack"===n?"subtitle":"main");c.tload=t.tload,"manifest"===n&&l.trigger(f.default.MANIFEST_LOADED,{levels:[{url:a,details:c}],audioTracks:[],url:a,stats:t}),t.tparsed=performance.now(),c.targetduration?u?l.trigger(f.default.LEVEL_LOADED,{details:c,level:o||0,id:s||0,stats:t}):"audioTrack"===n?l.trigger(f.default.AUDIO_TRACK_LOADED,{details:c,id:s,stats:t}):"subtitleTrack"===n&&l.trigger(f.default.SUBTITLE_TRACK_LOADED,{details:c,id:s,stats:t}):l.trigger(f.default.ERROR,{type:g.ErrorTypes.NETWORK_ERROR,details:g.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:a,reason:"invalid targetduration"})}else{var h=this.parseMasterPlaylist(i,a);if(h.length){var v=this.parseMasterPlaylistMedia(i,a,"AUDIO"),p=this.parseMasterPlaylistMedia(i,a,"SUBTITLES");if(v.length){var m=!1;v.forEach(function(e){e.url||(m=!0)}),m===!1&&h[0].audioCodec&&!h[0].attrs.AUDIO&&(y.logger.log("audio codec signaled in quality level, but no embedded audio track signaled, create one"),v.unshift({type:"main",name:"main"}))}l.trigger(f.default.MANIFEST_LOADED,{levels:h,audioTracks:v,subtitles:p,url:a,stats:t})}else l.trigger(f.default.ERROR,{type:g.ErrorTypes.NETWORK_ERROR,details:g.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:a,reason:"no level found in manifest"})}else l.trigger(f.default.ERROR,{type:g.ErrorTypes.NETWORK_ERROR,details:g.ErrorDetails.MANIFEST_PARSING_ERROR,fatal:!0,url:a,reason:"no EXTM3U delimiter"})}},{key:"loaderror",value:function(e,t){var r,i,a=t.loader;switch(t.type){case"manifest":r=g.ErrorDetails.MANIFEST_LOAD_ERROR,i=!0;break;case"level":r=g.ErrorDetails.LEVEL_LOAD_ERROR,i=!1;break;case"audioTrack":r=g.ErrorDetails.AUDIO_TRACK_LOAD_ERROR,i=!1}a&&(a.abort(),this.loaders[t.type]=void 0),this.hls.trigger(f.default.ERROR,{type:g.ErrorTypes.NETWORK_ERROR,details:r,fatal:i,url:a.url,loader:a,response:e,context:t})}},{key:"loadtimeout",value:function(e,t){var r,i,a=t.loader;switch(t.type){case"manifest":r=g.ErrorDetails.MANIFEST_LOAD_TIMEOUT,i=!0;break;case"level":r=g.ErrorDetails.LEVEL_LOAD_TIMEOUT,i=!1;break;case"audioTrack":r=g.ErrorDetails.AUDIO_TRACK_LOAD_TIMEOUT,i=!1}a&&(a.abort(),this.loaders[t.type]=void 0),this.hls.trigger(f.default.ERROR,{type:g.ErrorTypes.NETWORK_ERROR,details:r,fatal:i,url:a.url,loader:a,context:t})}}]),t}(h.default);r.default=_},{2:2,33:33,34:34,35:35,47:47,53:53}],44:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=Math.pow(2,32)-1,s=function(){function e(){i(this,e)}return a(e,null,[{key:"init",value:function(){e.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],".mp3":[],mvex:[],mvhd:[],pasp:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[]};var t;for(t in e.types)e.types.hasOwnProperty(t)&&(e.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);var r=new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),i=new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]);e.HDLR_TYPES={video:r,audio:i};var a=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),n=new Uint8Array([0,0,0,0,0,0,0,0]);e.STTS=e.STSC=e.STCO=n,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSD=new Uint8Array([0,0,0,0,0,0,0,1]);var s=new Uint8Array([105,115,111,109]),o=new Uint8Array([97,118,99,49]),l=new Uint8Array([0,0,0,1]);e.FTYP=e.box(e.types.ftyp,s,l,s,o),e.DINF=e.box(e.types.dinf,e.box(e.types.dref,a))}},{key:"box",value:function(e){for(var t,r=Array.prototype.slice.call(arguments,1),i=8,a=r.length,n=a;a--;)i+=r[a].byteLength;for(t=new Uint8Array(i),t[0]=i>>24&255,t[1]=i>>16&255,t[2]=i>>8&255,t[3]=255&i,t.set(e,4),a=0,i=8;a<n;a++)t.set(r[a],i),i+=r[a].byteLength;return t}},{key:"hdlr",value:function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}},{key:"mdhd",value:function(t,r){r*=t;var i=Math.floor(r/(n+1)),a=Math.floor(r%(n+1));return e.box(e.types.mdhd,new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,i>>24,i>>16&255,i>>8&255,255&i,a>>24,a>>16&255,a>>8&255,255&a,85,196,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t.timescale,t.duration),e.hdlr(t.type),e.minf(t))}},{key:"mfhd",value:function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"minf",value:function(t){return"audio"===t.type?e.box(e.types.minf,e.box(e.types.smhd,e.SMHD),e.DINF,e.stbl(t)):e.box(e.types.minf,e.box(e.types.vmhd,e.VMHD),e.DINF,e.stbl(t))}},{key:"moof",value:function(t,r,i){return e.box(e.types.moof,e.mfhd(t),e.traf(i,r))}},{key:"moov",value:function(t){for(var r=t.length,i=[];r--;)i[r]=e.trak(t[r]);return e.box.apply(null,[e.types.moov,e.mvhd(t[0].timescale,t[0].duration)].concat(i).concat(e.mvex(t)))}},{key:"mvex",value:function(t){for(var r=t.length,i=[];r--;)i[r]=e.trex(t[r]);return e.box.apply(null,[e.types.mvex].concat(i))}},{key:"mvhd",value:function(t,r){r*=t;var i=Math.floor(r/(n+1)),a=Math.floor(r%(n+1)),s=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,t>>24&255,t>>16&255,t>>8&255,255&t,i>>24,i>>16&255,i>>8&255,255&i,a>>24,a>>16&255,a>>8&255,255&a,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return e.box(e.types.mvhd,s)}},{key:"sdtp",value:function(t){var r,i,a=t.samples||[],n=new Uint8Array(4+a.length);for(i=0;i<a.length;i++)r=a[i].flags,n[i+4]=r.dependsOn<<4|r.isDependedOn<<2|r.hasRedundancy;return e.box(e.types.sdtp,n)}},{key:"stbl",value:function(t){return e.box(e.types.stbl,e.stsd(t),e.box(e.types.stts,e.STTS),e.box(e.types.stsc,e.STSC),e.box(e.types.stsz,e.STSZ),e.box(e.types.stco,e.STCO))}},{key:"avc1",value:function(t){var r,i,a,n=[],s=[];for(r=0;r<t.sps.length;r++)i=t.sps[r],a=i.byteLength,n.push(a>>>8&255),n.push(255&a),n=n.concat(Array.prototype.slice.call(i));for(r=0;r<t.pps.length;r++)i=t.pps[r],a=i.byteLength,s.push(a>>>8&255),s.push(255&a),s=s.concat(Array.prototype.slice.call(i));var o=e.box(e.types.avcC,new Uint8Array([1,n[3],n[4],n[5],255,224|t.sps.length].concat(n).concat([t.pps.length]).concat(s))),l=t.width,u=t.height,d=t.pixelRatio[0],f=t.pixelRatio[1];return e.box(e.types.avc1,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,l>>8&255,255&l,u>>8&255,255&u,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),o,e.box(e.types.btrt,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),e.box(e.types.pasp,new Uint8Array([d>>24,d>>16&255,d>>8&255,255&d,f>>24,f>>16&255,f>>8&255,255&f])))}},{key:"esds",value:function(e){var t=e.config.length;return new Uint8Array([0,0,0,0,3,23+t,0,1,0,4,15+t,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([t]).concat(e.config).concat([6,1,2]))}},{key:"mp4a",value:function(t){var r=t.samplerate;return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]),e.box(e.types.esds,e.esds(t)))}},{key:"mp3",value:function(t){var r=t.samplerate;return e.box(e.types[".mp3"],new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,r>>8&255,255&r,0,0]))}},{key:"stsd",value:function(t){return"audio"===t.type?t.isAAC||"mp3"!==t.codec?e.box(e.types.stsd,e.STSD,e.mp4a(t)):e.box(e.types.stsd,e.STSD,e.mp3(t)):e.box(e.types.stsd,e.STSD,e.avc1(t))}},{key:"tkhd",value:function(t){var r=t.id,i=t.duration*t.timescale,a=t.width,s=t.height,o=Math.floor(i/(n+1)),l=Math.floor(i%(n+1));return e.box(e.types.tkhd,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,l>>24,l>>16&255,l>>8&255,255&l,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,a>>8&255,255&a,0,0,s>>8&255,255&s,0,0]))}},{key:"traf",value:function(t,r){var i=e.sdtp(t),a=t.id,s=Math.floor(r/(n+1)),o=Math.floor(r%(n+1));return e.box(e.types.traf,e.box(e.types.tfhd,new Uint8Array([0,0,0,0,a>>24,a>>16&255,a>>8&255,255&a])),e.box(e.types.tfdt,new Uint8Array([1,0,0,0,s>>24,s>>16&255,s>>8&255,255&s,o>>24,o>>16&255,o>>8&255,255&o])),e.trun(t,i.length+16+20+8+16+8+8),i)}},{key:"trak",value:function(t){return t.duration=t.duration||4294967295,e.box(e.types.trak,e.tkhd(t),e.mdia(t))}},{key:"trex",value:function(t){var r=t.id;return e.box(e.types.trex,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trun",value:function(t,r){var i,a,n,s,o,l,u=t.samples||[],d=u.length,f=12+16*d,c=new Uint8Array(f);for(r+=8+f,c.set([0,0,15,1,d>>>24&255,d>>>16&255,d>>>8&255,255&d,r>>>24&255,r>>>16&255,r>>>8&255,255&r],0),i=0;i<d;i++)a=u[i],n=a.duration,s=a.size,o=a.flags,l=a.cts,c.set([n>>>24&255,n>>>16&255,n>>>8&255,255&n,s>>>24&255,s>>>16&255,s>>>8&255,255&s,o.isLeading<<2|o.dependsOn,o.isDependedOn<<6|o.hasRedundancy<<4|o.paddingValue<<1|o.isNonSync,61440&o.degradPrio,15&o.degradPrio,l>>>24&255,l>>>16&255,l>>>8&255,255&l],12+16*i);return e.box(e.types.trun,c)}},{key:"initSegment",value:function(t){e.types||e.init();var r,i=e.moov(t);return r=new Uint8Array(e.FTYP.byteLength+i.byteLength),r.set(e.FTYP),r.set(i,e.FTYP.byteLength),r}}]),e}();r.default=s},{}],45:[function(e,t,r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),s=e(36),o=i(s),l=e(35),u=i(l),d=e(53),f=e(44),c=i(f),h=e(33),g=function(){function e(t,r,i,n){a(this,e),this.observer=t,this.config=r,this.typeSupported=i;var s=navigator.userAgent;this.isSafari=n&&n.indexOf("Apple")>-1&&s&&!s.match("CriOS"),this.ISGenerated=!1}return n(e,[{key:"destroy",value:function(){}},{key:"resetTimeStamp",value:function(e){this._initPTS=this._initDTS=e}},{key:"resetInitSegment",value:function(){this.ISGenerated=!1}},{key:"remux",value:function(e,t,r,i,a,n,s){if(this.ISGenerated||this.generateIS(e,t,a),this.ISGenerated)if(e.samples.length){e.timescale||(d.logger.warn("regenerate InitSegment as audio detected"),this.generateIS(e,t,a));var o=this.remuxAudio(e,a,n,s);if(t.samples.length){var l=void 0;o&&(l=o.endPTS-o.startPTS),t.timescale||(d.logger.warn("regenerate InitSegment as video detected"),this.generateIS(e,t,a)),this.remuxVideo(t,a,n,l,s)}}else{var f=void 0;t.samples.length&&(f=this.remuxVideo(t,a,n,s)),f&&e.codec&&this.remuxEmptyAudio(e,a,n,f)}r.samples.length&&this.remuxID3(r,a),i.samples.length&&this.remuxText(i,a),this.observer.trigger(u.default.FRAG_PARSED)}},{key:"generateIS",value:function(e,t,r){var i,a,n=this.observer,s=e.samples,o=t.samples,l=this.typeSupported,f="audio/mp4",g={},v={tracks:g},p=void 0===this._initPTS;if(p&&(i=a=1/0),e.config&&s.length&&(e.timescale=e.samplerate,d.logger.log("audio sampling rate : "+e.samplerate),e.isAAC||(l.mpeg?(f="audio/mpeg",e.codec=""):l.mp3&&(e.codec="mp3")),g.audio={container:f,codec:e.codec,initSegment:!e.isAAC&&l.mpeg?new Uint8Array:c.default.initSegment([e]),metadata:{channelCount:e.channelCount}},p&&(i=a=s[0].pts-e.inputTimeScale*r)),t.sps&&t.pps&&o.length){var y=t.inputTimeScale;t.timescale=y,g.video={container:"video/mp4",codec:t.codec,initSegment:c.default.initSegment([t]),metadata:{width:t.width,height:t.height}},p&&(i=Math.min(i,o[0].pts-y*r),a=Math.min(a,o[0].dts-y*r),this.observer.trigger(u.default.INIT_PTS_FOUND,{initPTS:i}))}Object.keys(g).length?(n.trigger(u.default.FRAG_PARSING_INIT_SEGMENT,v),this.ISGenerated=!0,p&&(this._initPTS=i,this._initDTS=a)):n.trigger(u.default.ERROR,{type:h.ErrorTypes.MEDIA_ERROR,details:h.ErrorDetails.FRAG_PARSING_ERROR,fatal:!1,reason:"no audio/video samples found"})}},{key:"remuxVideo",value:function(e,t,r,i,a){var n,s,o,l,f,g,v,p=8,y=e.timescale,m=e.samples,E=[],b=m.length,T=this._PTSNormalize,k=this._initDTS,_=this.nextAvcDts,R=this.isSafari;R&&(r|=m.length&&_&&(a&&Math.abs(t-_/y)<.1||Math.abs(m[0].pts-_-k)<y/5)),r||(_=t*y),m.forEach(function(e){e.pts=T(e.pts-k,_),e.dts=T(e.dts-k,_)}),m.sort(function(e,t){var r=e.dts-t.dts,i=e.pts-t.pts;return r?r:i?i:e.id-t.id});var A=m.reduce(function(e,t){return Math.max(Math.min(e,t.pts-t.dts),-18e3)},0);if(A<0){d.logger.warn("PTS < DTS detected in video samples, shifting DTS by "+Math.round(A/90)+" ms to overcome this issue");for(var S=0;S<m.length;S++)m[S].dts+=A}var L=m[0];f=Math.max(L.dts,0),l=Math.max(L.pts,0);var w=Math.round((f-_)/90);r&&w&&(w>1?d.logger.log("AVC:"+w+" ms hole between fragments detected,filling it"):w<-1&&d.logger.log("AVC:"+-w+" ms overlapping between fragments detected"),f=_,m[0].dts=f,l=Math.max(l-w,_),m[0].pts=l,d.logger.log("Video/PTS/DTS adjusted: "+Math.round(l/90)+"/"+Math.round(f/90)+",delta:"+w+" ms")),L=m[m.length-1],v=Math.max(L.dts,0),g=Math.max(L.pts,0,v),R&&(n=Math.round((v-f)/(m.length-1)));for(var D=0,O=0,I=0;I<b;I++){for(var P=m[I],C=P.units,x=C.length,F=0,M=0;M<x;M++)F+=C[M].data.length;O+=F,D+=x,P.length=F,P.dts=R?f+I*n:Math.max(P.dts,f),P.pts=Math.max(P.pts,P.dts)}var N=O+4*D+8;try{s=new Uint8Array(N)}catch(e){return void this.observer.trigger(u.default.ERROR,{type:h.ErrorTypes.MUX_ERROR,details:h.ErrorDetails.REMUX_ALLOC_ERROR,fatal:!1,bytes:N,reason:"fail allocating video mdat "+N})}var U=new DataView(s.buffer);U.setUint32(0,N),s.set(c.default.types.mdat,4);for(var B=0;B<b;B++){for(var G=m[B],j=G.units,K=0,H=void 0,W=0,V=j.length;W<V;W++){var Y=j[W],X=Y.data,q=Y.data.byteLength;U.setUint32(p,q),p+=4,s.set(X,p),p+=q,K+=4+q}if(R)H=Math.max(0,n*Math.round((G.pts-G.dts)/n));else{if(B<b-1)n=m[B+1].dts-G.dts;else{var z=this.config,Q=G.dts-m[B>0?B-1:B].dts;if(z.stretchShortVideoTrack){var J=z.maxBufferHole,Z=z.maxSeekHole,$=Math.floor(Math.min(J,Z)*y),ee=(i?l+i*y:this.nextAudioPts)-G.pts;ee>$?(n=ee-Q,n<0&&(n=Q),d.logger.log("It is approximately "+ee/90+" ms to the next segment; using duration "+n/90+" ms for the last video frame.")):n=Q}else n=Q}H=Math.round(G.pts-G.dts)}E.push({size:K,duration:n,cts:H,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:G.key?2:1,isNonSync:G.key?0:1}})}this.nextAvcDts=v+n;var te=e.dropped;if(e.len=0,e.nbNalu=0,e.dropped=0,E.length&&navigator.userAgent.toLowerCase().indexOf("chrome")>-1){var re=E[0].flags;re.dependsOn=2,re.isNonSync=0}e.samples=E,o=c.default.moof(e.sequenceNumber++,f,e),e.samples=[];var ie={data1:o,data2:s,startPTS:l/y,endPTS:(g+n)/y,startDTS:f/y,endDTS:this.nextAvcDts/y,type:"video",nb:E.length,dropped:te};return this.observer.trigger(u.default.FRAG_PARSING_DATA,ie),ie}},{key:"remuxAudio",value:function(e,t,r,i){var a,n,s,l,f,g,v,p=e.inputTimeScale,y=e.timescale,m=p/y,E=e.isAAC?1024:1152,b=E*m,T=this._PTSNormalize,k=this._initDTS,_=!e.isAAC&&this.typeSupported.mpeg,R=e.samples,A=[],S=this.nextAudioPts;if(r|=R.length&&S&&(i&&Math.abs(t-S/p)<.1||Math.abs(R[0].pts-S-k)<20*b),r||(S=t*p),R.forEach(function(e){e.pts=e.dts=T(e.pts-k,S)}),R.sort(function(e,t){return e.pts-t.pts}),i&&e.isAAC)for(var L=0,w=S;L<R.length;){var D,O=R[L],I=O.pts;D=I-w;var P=Math.abs(1e3*D/p);if(D<=-b)d.logger.warn("Dropping 1 audio frame @ "+(w/p).toFixed(3)+"s due to "+P+" ms overlap."),R.splice(L,1),e.len-=O.unit.length;else if(D>=b&&P<1e4&&w){var C=Math.round(D/b);d.logger.warn("Injecting "+C+" audio frame @ "+(w/p).toFixed(3)+"s due to "+Math.round(1e3*D/p)+" ms gap.");for(var x=0;x<C;x++){var F=Math.max(w,0);s=o.default.getSilentFrame(e.manifestCodec||e.codec,e.channelCount),s||(d.logger.log("Unable to get silent frame for given audio codec; duplicating last frame instead."),s=O.unit.subarray()),R.splice(L,0,{unit:s,pts:F,dts:F}),e.len+=s.length,w+=b,L++}O.pts=O.dts=w,w+=b,L++}else Math.abs(D),O.pts=O.dts=w,w+=b,L++}for(var M=0,N=R.length;M<N;M++){var U=R[M],B=U.unit,G=U.pts;if(void 0!==v)n.duration=Math.round((G-v)/m);else{var j=Math.round(1e3*(G-S)/p),K=0;if(r&&e.isAAC&&j){if(j>0&&j<1e4)K=Math.round((G-S)/b),d.logger.log(j+" ms hole between AAC samples detected,filling it"),K>0&&(s=o.default.getSilentFrame(e.manifestCodec||e.codec,e.channelCount),s||(s=B.subarray()),e.len+=K*s.length);else if(j<-12){d.logger.log("drop overlapping AAC sample, expected/parsed/delta:"+(S/p).toFixed(3)+"s/"+(G/p).toFixed(3)+"s/"+-j+"ms"),e.len-=B.byteLength;continue}G=S}if(g=Math.max(0,G),!(e.len>0))return;var H=_?e.len:e.len+8;a=_?0:8;try{l=new Uint8Array(H)}catch(e){return void this.observer.trigger(u.default.ERROR,{type:h.ErrorTypes.MUX_ERROR,details:h.ErrorDetails.REMUX_ALLOC_ERROR,fatal:!1,bytes:H,reason:"fail allocating audio mdat "+H})}if(!_){new DataView(l.buffer).setUint32(0,H),l.set(c.default.types.mdat,4)}for(var W=0;W<K;W++)s=o.default.getSilentFrame(e.manifestCodec||e.codec,e.channelCount),s||(d.logger.log("Unable to get silent frame for given audio codec; duplicating this frame instead."),s=B.subarray()),l.set(s,a),a+=s.byteLength,n={size:s.byteLength,cts:0,duration:1024,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},A.push(n)}l.set(B,a);var V=B.byteLength;a+=V,n={size:V,cts:0,duration:0,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1}},A.push(n),v=G}var Y=0,X=A.length;if(X>=2&&(Y=A[X-2].duration,n.duration=Y),X){this.nextAudioPts=S=v+m*Y,e.len=0,e.samples=A,f=_?new Uint8Array:c.default.moof(e.sequenceNumber++,g/m,e),e.samples=[];var q=g/p,z=S/p,Q={data1:f,data2:l,startPTS:q,endPTS:z,startDTS:q,endDTS:z,type:"audio",nb:X};return this.observer.trigger(u.default.FRAG_PARSING_DATA,Q),Q}return null}},{key:"remuxEmptyAudio",value:function(e,t,r,i){var a=e.inputTimeScale,n=e.samplerate?e.samplerate:a,s=a/n,l=this.nextAudioPts,u=(void 0!==l?l:i.startDTS*a)+this._initDTS,f=i.endDTS*a+this._initDTS,c=1024*s,h=Math.ceil((f-u)/c),g=o.default.getSilentFrame(e.manifestCodec||e.codec,e.channelCount);if(d.logger.warn("remux empty Audio"),!g)return void d.logger.trace("Unable to remuxEmptyAudio since we were unable to get a silent frame for given audio codec!");for(var v=[],p=0;p<h;p++){var y=u+p*c;v.push({unit:g,pts:y,dts:y}),e.len+=g.length}e.samples=v,this.remuxAudio(e,t,r)}},{key:"remuxID3",value:function(e,t){var r,i=e.samples.length,a=e.inputTimeScale,n=this._initPTS,s=this._initDTS;if(i){for(var o=0;o<i;o++)r=e.samples[o],r.pts=(r.pts-n)/a,r.dts=(r.dts-s)/a;this.observer.trigger(u.default.FRAG_PARSING_METADATA,{samples:e.samples})}e.samples=[],t=t}},{key:"remuxText",value:function(e,t){e.samples.sort(function(e,t){return e.pts-t.pts});var r,i=e.samples.length,a=e.inputTimeScale,n=this._initPTS;if(i){for(var s=0;s<i;s++)r=e.samples[s],r.pts=(r.pts-n)/a;this.observer.trigger(u.default.FRAG_PARSING_USERDATA,{samples:e.samples})}e.samples=[],t=t}},{key:"_PTSNormalize",value:function(e,t){var r;if(void 0===t)return e;for(r=t<e?-8589934592:8589934592;Math.abs(e-t)>4294967296;)e+=r;return e}}]),e}();r.default=g},{33:33,35:35,36:36,44:44,53:53}],46:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=e(35),s=function(e){return e&&e.__esModule?e:{default:e}}(n),o=function(){function e(t){i(this,e),this.observer=t}return a(e,[{key:"destroy",value:function(){}},{key:"resetTimeStamp",value:function(){}},{key:"resetInitSegment",value:function(){}},{key:"remux",value:function(e,t,r,i,a,n,o,l){var u=this.observer,d="";e&&(d+="audio"),t&&(d+="video"),u.trigger(s.default.FRAG_PARSING_DATA,{data1:l,startPTS:a,startDTS:a,type:d,nb:1, +dropped:0}),u.trigger(s.default.FRAG_PARSED)}}]),e}();r.default=o},{35:35}],47:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=/^(\d+)x(\d+)$/,s=/\s*(.+?)\s*=((?:\".*?\")|.*?)(?:,|$)/g,o=function(){function e(t){i(this,e),"string"==typeof t&&(t=e.parseAttrList(t));for(var r in t)t.hasOwnProperty(r)&&(this[r]=t[r])}return a(e,[{key:"decimalInteger",value:function(e){var t=parseInt(this[e],10);return t>Number.MAX_SAFE_INTEGER?1/0:t}},{key:"hexadecimalInteger",value:function(e){if(this[e]){var t=(this[e]||"0x").slice(2);t=(1&t.length?"0":"")+t;for(var r=new Uint8Array(t.length/2),i=0;i<t.length/2;i++)r[i]=parseInt(t.slice(2*i,2*i+2),16);return r}return null}},{key:"hexadecimalIntegerAsNumber",value:function(e){var t=parseInt(this[e],16);return t>Number.MAX_SAFE_INTEGER?1/0:t}},{key:"decimalFloatingPoint",value:function(e){return parseFloat(this[e])}},{key:"enumeratedString",value:function(e){return this[e]}},{key:"decimalResolution",value:function(e){var t=n.exec(this[e]);if(null!==t)return{width:parseInt(t[1],10),height:parseInt(t[2],10)}}}],[{key:"parseAttrList",value:function(e){var t,r={};for(s.lastIndex=0;null!==(t=s.exec(e));){var i=t[2];0===i.indexOf('"')&&i.lastIndexOf('"')===i.length-1&&(i=i.slice(1,-1)),r[t[1]]=i}return r}}]),e}();r.default=o},{}],48:[function(e,t,r){"use strict";var i={search:function(e,t){for(var r=0,i=e.length-1,a=null,n=null;r<=i;){a=(r+i)/2|0,n=e[a];var s=t(n);if(s>0)r=a+1;else{if(!(s<0))return n;i=a-1}}return null}};t.exports=i},{}],49:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},s=function(e){var t=e;return n.hasOwnProperty(e)&&(t=n[e]),String.fromCharCode(t)},o=15,l=100,u={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},d={17:2,18:4,21:6,22:8,23:10,19:13,20:15},f={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},c={25:2,26:4,29:6,30:8,31:10,27:13,28:15},h=["white","green","blue","cyan","red","yellow","magenta","black","transparent"],g={verboseFilter:{DATA:3,DEBUG:3,INFO:2,WARNING:2,TEXT:1,ERROR:0},time:null,verboseLevel:0,setTime:function(e){this.time=e},log:function(e,t){this.verboseFilter[e];this.verboseLevel}},v=function(e){for(var t=[],r=0;r<e.length;r++)t.push(e[r].toString(16));return t},p=function(){function e(t,r,a,n,s){i(this,e),this.foreground=t||"white",this.underline=r||!1,this.italics=a||!1,this.background=n||"black",this.flash=s||!1}return a(e,[{key:"reset",value:function(){this.foreground="white",this.underline=!1,this.italics=!1,this.background="black",this.flash=!1}},{key:"setStyles",value:function(e){for(var t=["foreground","underline","italics","background","flash"],r=0;r<t.length;r++){var i=t[r];e.hasOwnProperty(i)&&(this[i]=e[i])}}},{key:"isDefault",value:function(){return"white"===this.foreground&&!this.underline&&!this.italics&&"black"===this.background&&!this.flash}},{key:"equals",value:function(e){return this.foreground===e.foreground&&this.underline===e.underline&&this.italics===e.italics&&this.background===e.background&&this.flash===e.flash}},{key:"copy",value:function(e){this.foreground=e.foreground,this.underline=e.underline,this.italics=e.italics,this.background=e.background,this.flash=e.flash}},{key:"toString",value:function(){return"color="+this.foreground+", underline="+this.underline+", italics="+this.italics+", background="+this.background+", flash="+this.flash}}]),e}(),y=function(){function e(t,r,a,n,s,o){i(this,e),this.uchar=t||" ",this.penState=new p(r,a,n,s,o)}return a(e,[{key:"reset",value:function(){this.uchar=" ",this.penState.reset()}},{key:"setChar",value:function(e,t){this.uchar=e,this.penState.copy(t)}},{key:"setPenState",value:function(e){this.penState.copy(e)}},{key:"equals",value:function(e){return this.uchar===e.uchar&&this.penState.equals(e.penState)}},{key:"copy",value:function(e){this.uchar=e.uchar,this.penState.copy(e.penState)}},{key:"isEmpty",value:function(){return" "===this.uchar&&this.penState.isDefault()}}]),e}(),m=function(){function e(){i(this,e),this.chars=[];for(var t=0;t<l;t++)this.chars.push(new y);this.pos=0,this.currPenState=new p}return a(e,[{key:"equals",value:function(e){for(var t=!0,r=0;r<l;r++)if(!this.chars[r].equals(e.chars[r])){t=!1;break}return t}},{key:"copy",value:function(e){for(var t=0;t<l;t++)this.chars[t].copy(e.chars[t])}},{key:"isEmpty",value:function(){for(var e=!0,t=0;t<l;t++)if(!this.chars[t].isEmpty()){e=!1;break}return e}},{key:"setCursor",value:function(e){this.pos!==e&&(this.pos=e),this.pos<0?(g.log("ERROR","Negative cursor position "+this.pos),this.pos=0):this.pos>l&&(g.log("ERROR","Too large cursor position "+this.pos),this.pos=l)}},{key:"moveCursor",value:function(e){var t=this.pos+e;if(e>1)for(var r=this.pos+1;r<t+1;r++)this.chars[r].setPenState(this.currPenState);this.setCursor(t)}},{key:"backSpace",value:function(){this.moveCursor(-1),this.chars[this.pos].setChar(" ",this.currPenState)}},{key:"insertChar",value:function(e){e>=144&&this.backSpace();var t=s(e);if(this.pos>=l)return void g.log("ERROR","Cannot insert "+e.toString(16)+" ("+t+") at position "+this.pos+". Skipping it!");this.chars[this.pos].setChar(t,this.currPenState),this.moveCursor(1)}},{key:"clearFromPos",value:function(e){var t;for(t=e;t<l;t++)this.chars[t].reset()}},{key:"clear",value:function(){this.clearFromPos(0),this.pos=0,this.currPenState.reset()}},{key:"clearToEndOfRow",value:function(){this.clearFromPos(this.pos)}},{key:"getTextString",value:function(){for(var e=[],t=!0,r=0;r<l;r++){var i=this.chars[r].uchar;" "!==i&&(t=!1),e.push(i)}return t?"":e.join("")}},{key:"setPenStyles",value:function(e){this.currPenState.setStyles(e),this.chars[this.pos].setPenState(this.currPenState)}}]),e}(),E=function(){function e(){i(this,e),this.rows=[];for(var t=0;t<o;t++)this.rows.push(new m);this.currRow=o-1,this.nrRollUpRows=null,this.reset()}return a(e,[{key:"reset",value:function(){for(var e=0;e<o;e++)this.rows[e].clear();this.currRow=o-1}},{key:"equals",value:function(e){for(var t=!0,r=0;r<o;r++)if(!this.rows[r].equals(e.rows[r])){t=!1;break}return t}},{key:"copy",value:function(e){for(var t=0;t<o;t++)this.rows[t].copy(e.rows[t])}},{key:"isEmpty",value:function(){for(var e=!0,t=0;t<o;t++)if(!this.rows[t].isEmpty()){e=!1;break}return e}},{key:"backSpace",value:function(){this.rows[this.currRow].backSpace()}},{key:"clearToEndOfRow",value:function(){this.rows[this.currRow].clearToEndOfRow()}},{key:"insertChar",value:function(e){this.rows[this.currRow].insertChar(e)}},{key:"setPen",value:function(e){this.rows[this.currRow].setPenStyles(e)}},{key:"moveCursor",value:function(e){this.rows[this.currRow].moveCursor(e)}},{key:"setCursor",value:function(e){g.log("INFO","setCursor: "+e),this.rows[this.currRow].setCursor(e)}},{key:"setPAC",value:function(e){g.log("INFO","pacData = "+JSON.stringify(e));var t=e.row-1;if(this.nrRollUpRows&&t<this.nrRollUpRows-1&&(t=this.nrRollUpRows-1),this.nrRollUpRows&&this.currRow!==t){for(var r=0;r<o;r++)this.rows[r].clear();var i=this.currRow+1-this.nrRollUpRows,a=this.lastOutputScreen;if(a){var n=a.rows[i].cueStartTime;if(n&&n<g.time)for(var s=0;s<this.nrRollUpRows;s++)this.rows[t-this.nrRollUpRows+s+1].copy(a.rows[i+s])}}this.currRow=t;var l=this.rows[this.currRow];if(null!==e.indent){var u=e.indent,d=Math.max(u-1,0);l.setCursor(e.indent),e.color=l.chars[d].penState.foreground}var f={foreground:e.color,underline:e.underline,italics:e.italics,background:"black",flash:!1};this.setPen(f)}},{key:"setBkgData",value:function(e){g.log("INFO","bkgData = "+JSON.stringify(e)),this.backSpace(),this.setPen(e),this.insertChar(32)}},{key:"setRollUpRows",value:function(e){this.nrRollUpRows=e}},{key:"rollUp",value:function(){if(null===this.nrRollUpRows)return void g.log("DEBUG","roll_up but nrRollUpRows not set yet");g.log("TEXT",this.getDisplayText());var e=this.currRow+1-this.nrRollUpRows,t=this.rows.splice(e,1)[0];t.clear(),this.rows.splice(this.currRow,0,t),g.log("INFO","Rolling up")}},{key:"getDisplayText",value:function(e){e=e||!1;for(var t=[],r="",i=-1,a=0;a<o;a++){var n=this.rows[a].getTextString();n&&(i=a+1,e?t.push("Row "+i+": '"+n+"'"):t.push(n.trim()))}return t.length>0&&(r=e?"["+t.join(" | ")+"]":t.join("\n")),r}},{key:"getTextAndFormat",value:function(){return this.rows}}]),e}(),b=function(){function e(t,r){i(this,e),this.chNr=t,this.outputFilter=r,this.mode=null,this.verbose=0,this.displayedMemory=new E,this.nonDisplayedMemory=new E,this.lastOutputScreen=new E,this.currRollUpRow=this.displayedMemory.rows[o-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}return a(e,[{key:"reset",value:function(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.currRollUpRow=this.displayedMemory.rows[o-1],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.lastCueEndTime=null}},{key:"getHandler",value:function(){return this.outputFilter}},{key:"setHandler",value:function(e){this.outputFilter=e}},{key:"setPAC",value:function(e){this.writeScreen.setPAC(e)}},{key:"setBkgData",value:function(e){this.writeScreen.setBkgData(e)}},{key:"setMode",value:function(e){e!==this.mode&&(this.mode=e,g.log("INFO","MODE="+e),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=e)}},{key:"insertChars",value:function(e){for(var t=0;t<e.length;t++)this.writeScreen.insertChar(e[t]);var r=this.writeScreen===this.displayedMemory?"DISP":"NON_DISP";g.log("INFO",r+": "+this.writeScreen.getDisplayText(!0)),"MODE_PAINT-ON"!==this.mode&&"MODE_ROLL-UP"!==this.mode||(g.log("TEXT","DISPLAYED: "+this.displayedMemory.getDisplayText(!0)),this.outputDataUpdate())}},{key:"ccRCL",value:function(){g.log("INFO","RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}},{key:"ccBS",value:function(){g.log("INFO","BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}},{key:"ccAOF",value:function(){}},{key:"ccAON",value:function(){}},{key:"ccDER",value:function(){g.log("INFO","DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}},{key:"ccRU",value:function(e){g.log("INFO","RU("+e+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(e)}},{key:"ccFON",value:function(){g.log("INFO","FON - Flash On"),this.writeScreen.setPen({flash:!0})}},{key:"ccRDC",value:function(){g.log("INFO","RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}},{key:"ccTR",value:function(){g.log("INFO","TR"),this.setMode("MODE_TEXT")}},{key:"ccRTD",value:function(){g.log("INFO","RTD"),this.setMode("MODE_TEXT")}},{key:"ccEDM",value:function(){g.log("INFO","EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate()}},{key:"ccCR",value:function(){g.log("CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate()}},{key:"ccENM",value:function(){g.log("INFO","ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}},{key:"ccEOC",value:function(){if(g.log("INFO","EOC - End Of Caption"),"MODE_POP-ON"===this.mode){var e=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=e,this.writeScreen=this.nonDisplayedMemory,g.log("TEXT","DISP: "+this.displayedMemory.getDisplayText())}this.outputDataUpdate()}},{key:"ccTO",value:function(e){g.log("INFO","TO("+e+") - Tab Offset"),this.writeScreen.moveCursor(e)}},{key:"ccMIDROW",value:function(e){var t={flash:!1};if(t.underline=e%2==1,t.italics=e>=46,t.italics)t.foreground="white";else{var r=Math.floor(e/2)-16,i=["white","green","blue","cyan","red","yellow","magenta"];t.foreground=i[r]}g.log("INFO","MIDROW: "+JSON.stringify(t)),this.writeScreen.setPen(t)}},{key:"outputDataUpdate",value:function(){var e=g.time;null!==e&&this.outputFilter&&(this.outputFilter.updateData&&this.outputFilter.updateData(e,this.displayedMemory),null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.lastOutputScreen),this.cueStartTime=this.displayedMemory.isEmpty()?null:e):this.cueStartTime=e,this.lastOutputScreen.copy(this.displayedMemory))}},{key:"cueSplitAtTime",value:function(e){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,e,this.displayedMemory),this.cueStartTime=e))}}]),e}(),T=function(){function e(t,r,a){i(this,e),this.field=t||1,this.outputs=[r,a],this.channels=[new b(1,r),new b(2,a)],this.currChNr=-1,this.lastCmdA=null,this.lastCmdB=null,this.bufferedData=[],this.startTime=null,this.lastTime=null,this.dataCounters={padding:0,char:0,cmd:0,other:0}}return a(e,[{key:"getHandler",value:function(e){return this.channels[e].getHandler()}},{key:"setHandler",value:function(e,t){this.channels[e].setHandler(t)}},{key:"addData",value:function(e,t){var r,i,a,n=!1;this.lastTime=e,g.setTime(e);for(var s=0;s<t.length;s+=2)if(i=127&t[s],a=127&t[s+1],0!==i||0!==a){if(g.log("DATA","["+v([t[s],t[s+1]])+"] -> ("+v([i,a])+")"),r=this.parseCmd(i,a),r||(r=this.parseMidrow(i,a)),r||(r=this.parsePAC(i,a)),r||(r=this.parseBackgroundAttributes(i,a)),!r&&(n=this.parseChars(i,a)))if(this.currChNr&&this.currChNr>=0){var o=this.channels[this.currChNr-1];o.insertChars(n)}else g.log("WARNING","No channel found yet. TEXT-MODE?");r?this.dataCounters.cmd+=2:n?this.dataCounters.char+=2:(this.dataCounters.other+=2,g.log("WARNING","Couldn't parse cleaned data "+v([i,a])+" orig: "+v([t[s],t[s+1]])))}else this.dataCounters.padding+=2}},{key:"parseCmd",value:function(e,t){var r=null,i=(20===e||28===e)&&32<=t&&t<=47,a=(23===e||31===e)&&33<=t&&t<=35;if(!i&&!a)return!1;if(e===this.lastCmdA&&t===this.lastCmdB)return this.lastCmdA=null,this.lastCmdB=null,g.log("DEBUG","Repeated command ("+v([e,t])+") is dropped"),!0;r=20===e||23===e?1:2;var n=this.channels[r-1];return 20===e||28===e?32===t?n.ccRCL():33===t?n.ccBS():34===t?n.ccAOF():35===t?n.ccAON():36===t?n.ccDER():37===t?n.ccRU(2):38===t?n.ccRU(3):39===t?n.ccRU(4):40===t?n.ccFON():41===t?n.ccRDC():42===t?n.ccTR():43===t?n.ccRTD():44===t?n.ccEDM():45===t?n.ccCR():46===t?n.ccENM():47===t&&n.ccEOC():n.ccTO(t-32),this.lastCmdA=e,this.lastCmdB=t,this.currChNr=r,!0}},{key:"parseMidrow",value:function(e,t){var r=null;if((17===e||25===e)&&32<=t&&t<=47){if((r=17===e?1:2)!==this.currChNr)return g.log("ERROR","Mismatch channel in midrow parsing"),!1;return this.channels[r-1].ccMIDROW(t),g.log("DEBUG","MIDROW ("+v([e,t])+")"),!0}return!1}},{key:"parsePAC",value:function(e,t){var r=null,i=null,a=(17<=e&&e<=23||25<=e&&e<=31)&&64<=t&&t<=127,n=(16===e||24===e)&&64<=t&&t<=95;if(!a&&!n)return!1;if(e===this.lastCmdA&&t===this.lastCmdB)return this.lastCmdA=null,this.lastCmdB=null,!0;r=e<=23?1:2,i=64<=t&&t<=95?1===r?u[e]:f[e]:1===r?d[e]:c[e];var s=this.interpretPAC(i,t);return this.channels[r-1].setPAC(s),this.lastCmdA=e,this.lastCmdB=t,this.currChNr=r,!0}},{key:"interpretPAC",value:function(e,t){var r=t,i={color:null,italics:!1,indent:null,underline:!1,row:e};return r=t>95?t-96:t-64,i.underline=1==(1&r),r<=13?i.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(r/2)]:r<=15?(i.italics=!0,i.color="white"):i.indent=4*Math.floor((r-16)/2),i}},{key:"parseChars",value:function(e,t){var r=null,i=null,a=null;if(e>=25?(r=2,a=e-8):(r=1,a=e),17<=a&&a<=19){var n=t;n=17===a?t+80:18===a?t+112:t+144,g.log("INFO","Special char '"+s(n)+"' in channel "+r),i=[n]}else 32<=e&&e<=127&&(i=0===t?[e]:[e,t]);if(i){var o=v(i);g.log("DEBUG","Char codes = "+o.join(",")),this.lastCmdA=null,this.lastCmdB=null}return i}},{key:"parseBackgroundAttributes",value:function(e,t){var r,i,a,n,s=(16===e||24===e)&&32<=t&&t<=47,o=(23===e||31===e)&&45<=t&&t<=47;return!(!s&&!o)&&(r={},16===e||24===e?(i=Math.floor((t-32)/2),r.background=h[i],t%2==1&&(r.background=r.background+"_semi")):45===t?r.background="transparent":(r.foreground="black",47===t&&(r.underline=!0)),a=e<24?1:2,n=this.channels[a-1],n.setBkgData(r),this.lastCmdA=null,this.lastCmdB=null,!0)}},{key:"reset",value:function(){for(var e=0;e<this.channels.length;e++)this.channels[e]&&this.channels[e].reset();this.lastCmdA=null,this.lastCmdB=null}},{key:"cueSplitAtTime",value:function(e){for(var t=0;t<this.channels.length;t++)this.channels[t]&&this.channels[t].cueSplitAtTime(e)}}]),e}();r.default=T},{}],50:[function(e,t,r){"use strict";var i=e(56),a={newCue:function(e,t,r,a){for(var n,s,o,l,u,d=window.VTTCue||window.TextTrackCue,f=0;f<a.rows.length;f++)if(n=a.rows[f],o=!0,l=0,u="",!n.isEmpty()){for(var c=0;c<n.chars.length;c++)n.chars[c].uchar.match(/\s/)&&o?l++:(u+=n.chars[c].uchar,o=!1);n.cueStartTime=t,t===r&&(r+=1e-4),s=new d(t,r,(0,i.fixLineBreaks)(u.trim())),l>=16?l--:l++,navigator.userAgent.match(/Firefox\//)?s.line=f+1:s.line=f>7?f-2:f+1,s.align="left",s.position=Math.max(0,Math.min(100,l/32*100+(navigator.userAgent.match(/Firefox\//)?50:0))),e.addCue(s)}}};t.exports=a},{56:56}],51:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=e(52),s=function(e){return e&&e.__esModule?e:{default:e}}(n),o=function(){function e(t,r,a,n){i(this,e),this.hls=t,this.defaultEstimate_=n,this.minWeight_=.001,this.minDelayMs_=50,this.slow_=new s.default(r),this.fast_=new s.default(a)}return a(e,[{key:"sample",value:function(e,t){e=Math.max(e,this.minDelayMs_);var r=8e3*t/e,i=e/1e3;this.fast_.sample(i,r),this.slow_.sample(i,r)}},{key:"canEstimate",value:function(){var e=this.fast_;return e&&e.getTotalWeight()>=this.minWeight_}},{key:"getEstimate",value:function(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}},{key:"destroy",value:function(){}}]),e}();r.default=o},{52:52}],52:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=function(){function e(t){i(this,e),this.alpha_=t?Math.exp(Math.log(.5)/t):0,this.estimate_=0,this.totalWeight_=0}return a(e,[{key:"sample",value:function(e,t){var r=Math.pow(this.alpha_,e);this.estimate_=t*(1-r)+r*this.estimate_,this.totalWeight_+=e}},{key:"getTotalWeight",value:function(){return this.totalWeight_}},{key:"getEstimate",value:function(){if(this.alpha_){var e=1-Math.pow(this.alpha_,this.totalWeight_);return this.estimate_/e}return this.estimate_}}]),e}();r.default=n},{}],53:[function(e,t,r){"use strict";function i(){}function a(e,t){return t="["+e+"] > "+t}function n(e){var t=self.console[e];return t?function(){for(var r=arguments.length,i=Array(r),n=0;n<r;n++)i[n]=arguments[n];i[0]&&(i[0]=a(e,i[0])),t.apply(self.console,i)}:i}function s(e){for(var t=arguments.length,r=Array(t>1?t-1:0),i=1;i<t;i++)r[i-1]=arguments[i];r.forEach(function(t){u[t]=e[t]?e[t].bind(e):n(t)})}Object.defineProperty(r,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l={trace:i,debug:i,log:i,warn:i,info:i,error:i},u=l;r.enableLogs=function(e){if(e===!0||"object"===(void 0===e?"undefined":o(e))){s(e,"debug","log","info","warn","error");try{u.log()}catch(e){u=l}}else u=l},r.logger=u},{}],54:[function(e,t,r){"use strict";var i={toString:function(e){for(var t="",r=e.length,i=0;i<r;i++)t+="["+e.start(i).toFixed(3)+","+e.end(i).toFixed(3)+"]";return t}};t.exports=i},{}],55:[function(e,t,r){"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.default=function(){function e(e){return"string"==typeof e&&(!!n[e.toLowerCase()]&&e.toLowerCase())}function t(e){return"string"==typeof e&&(!!s[e.toLowerCase()]&&e.toLowerCase())}function r(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var i in r)e[i]=r[i]}return e}function i(i,n,s){var o=this,l=function(){if("undefined"!=typeof navigator)return/MSIE\s8\.0/.test(navigator.userAgent)}(),u={};l?o=document.createElement("custom"):u.enumerable=!0,o.hasBeenReset=!1;var d="",f=!1,c=i,h=n,g=s,v=null,p="",y=!0,m="auto",E="start",b=50,T="middle",k=50,_="middle";if(Object.defineProperty(o,"id",r({},u,{get:function(){return d},set:function(e){d=""+e}})),Object.defineProperty(o,"pauseOnExit",r({},u,{get:function(){return f},set:function(e){f=!!e}})),Object.defineProperty(o,"startTime",r({},u,{get:function(){return c},set:function(e){if("number"!=typeof e)throw new TypeError("Start time must be set to a number.");c=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"endTime",r({},u,{get:function(){return h},set:function(e){if("number"!=typeof e)throw new TypeError("End time must be set to a number.");h=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"text",r({},u,{get:function(){return g},set:function(e){g=""+e,this.hasBeenReset=!0}})),Object.defineProperty(o,"region",r({},u,{get:function(){return v},set:function(e){v=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"vertical",r({},u,{get:function(){return p},set:function(t){var r=e(t);if(r===!1)throw new SyntaxError("An invalid or illegal string was specified.");p=r,this.hasBeenReset=!0}})),Object.defineProperty(o,"snapToLines",r({},u,{get:function(){return y},set:function(e){y=!!e,this.hasBeenReset=!0}})),Object.defineProperty(o,"line",r({},u,{get:function(){return m},set:function(e){if("number"!=typeof e&&e!==a)throw new SyntaxError("An invalid number or illegal string was specified.");m=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"lineAlign",r({},u,{get:function(){return E},set:function(e){var r=t(e);if(!r)throw new SyntaxError("An invalid or illegal string was specified.");E=r,this.hasBeenReset=!0}})),Object.defineProperty(o,"position",r({},u,{get:function(){return b},set:function(e){if(e<0||e>100)throw new Error("Position must be between 0 and 100.");b=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"positionAlign",r({},u,{get:function(){return T},set:function(e){var r=t(e);if(!r)throw new SyntaxError("An invalid or illegal string was specified.");T=r,this.hasBeenReset=!0}})),Object.defineProperty(o,"size",r({},u,{get:function(){return k},set:function(e){if(e<0||e>100)throw new Error("Size must be between 0 and 100.");k=e,this.hasBeenReset=!0}})),Object.defineProperty(o,"align",r({},u,{get:function(){return _},set:function(e){var r=t(e);if(!r)throw new SyntaxError("An invalid or illegal string was specified.");_=r,this.hasBeenReset=!0}})),o.displayState=void 0,l)return o}if("undefined"!=typeof window&&window.VTTCue)return window.VTTCue;var a="auto",n={"":!0,lr:!0,rl:!0},s={start:!0,middle:!0,end:!0,left:!0,right:!0};return i.prototype.getCueAsHTML=function(){return window.WebVTT.convertCueToDOMTree(window,this.text)},i}()},{}],56:[function(e,t,r){"use strict";function i(){this.window=window,this.state="INITIAL",this.buffer="",this.decoder=new f,this.regionList=[]}function a(e){function t(e,t,r,i){return 3600*(0|e)+60*(0|t)+(0|r)+(0|i)/1e3}var r=e.match(/^(\d+):(\d{2})(:\d{2})?\.(\d{3})/);return r?r[3]?t(r[1],r[2],r[3].replace(":",""),r[4]):r[1]>59?t(r[1],r[2],0,r[4]):t(0,r[1],r[2],r[4]):null}function n(){this.values=Object.create(null)}function s(e,t,r,i){var a=i?e.split(i):[e];for(var n in a)if("string"==typeof a[n]){var s=a[n].split(r);if(2===s.length){var o=s[0],l=s[1];t(o,l)}}}function o(e,t,r){function i(){var t=a(e);if(null===t)throw new Error("Malformed timestamp: "+l);return e=e.replace(/^[^\sa-zA-Z-]+/,""),t}function o(){e=e.replace(/^\s+/,"")}var l=e;if(o(),t.startTime=i(),o(),"-->"!==e.substr(0,3))throw new Error("Malformed time stamp (time stamps must be separated by '-->'): "+l);e=e.substr(3),o(),t.endTime=i(),o(),function(e,t){var i=new n;s(e,function(e,t){switch(e){case"region":for(var a=r.length-1;a>=0;a--)if(r[a].id===t){i.set(e,r[a].region);break}break;case"vertical":i.alt(e,t,["rl","lr"]);break;case"line":var n=t.split(","),s=n[0];i.integer(e,s),i.percent(e,s)&&i.set("snapToLines",!1),i.alt(e,s,["auto"]),2===n.length&&i.alt("lineAlign",n[1],["start",h,"end"]);break;case"position":n=t.split(","),i.percent(e,n[0]),2===n.length&&i.alt("positionAlign",n[1],["start",h,"end","line-left","line-right","auto"]);break;case"size":i.percent(e,t);break;case"align":i.alt(e,t,["start",h,"end","left","right"])}},/:/,/\s/),t.region=i.get("region",null),t.vertical=i.get("vertical","");var a=i.get("line","auto");"auto"===a&&c.line===-1&&(a=-1),t.line=a,t.lineAlign=i.get("lineAlign","start"),t.snapToLines=i.get("snapToLines",!0),t.size=i.get("size",100),t.align=i.get("align",h);var o=i.get("position","auto");"auto"===o&&50===c.position&&(o="start"===t.align||"left"===t.align?0:"end"===t.align||"right"===t.align?100:50),t.position=o}(e,t)}function l(e){return e.replace(/<br(?: \/)?>/gi,"\n")}Object.defineProperty(r,"__esModule",{value:!0}),r.fixLineBreaks=void 0;var u=e(55),d=function(e){return e&&e.__esModule?e:{default:e}}(u),f=function(){return{decode:function(e){if(!e)return"";if("string"!=typeof e)throw new Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(e))}}};n.prototype={set:function(e,t){this.get(e)||""===t||(this.values[e]=t)},get:function(e,t,r){return r?this.has(e)?this.values[e]:t[r]:this.has(e)?this.values[e]:t},has:function(e){return e in this.values},alt:function(e,t,r){for(var i=0;i<r.length;++i)if(t===r[i]){this.set(e,t);break}},integer:function(e,t){/^-?\d+$/.test(t)&&this.set(e,parseInt(t,10))},percent:function(e,t){return!!(t.match(/^([\d]{1,3})(\.[\d]*)?%$/)&&(t=parseFloat(t))>=0&&t<=100)&&(this.set(e,t),!0)}};var c=new d.default(0,0,0),h="middle"===c.align?"middle":"center";i.prototype={parse:function(e){function t(){var e=r.buffer,t=0;for(e=l(e);t<e.length&&"\r"!==e[t]&&"\n"!==e[t];)++t;var i=e.substr(0,t);return"\r"===e[t]&&++t,"\n"===e[t]&&++t,r.buffer=e.substr(t),i}var r=this;e&&(r.buffer+=r.decoder.decode(e,{stream:!0}));try{var i;if("INITIAL"===r.state){if(!/\r\n|\n/.test(r.buffer))return this;i=t();var a=i.match(/^WEBVTT([ \t].*)?$/);if(!a||!a[0])throw new Error("Malformed WebVTT signature.");r.state="HEADER"}for(var n=!1;r.buffer;){if(!/\r\n|\n/.test(r.buffer))return this;switch(n?n=!1:i=t(),r.state){case"HEADER":/:/.test(i)?function(e){s(e,function(e,t){switch(e){case"Region":}},/:/)}(i):i||(r.state="ID");continue;case"NOTE":i||(r.state="ID");continue;case"ID":if(/^NOTE($|[ \t])/.test(i)){r.state="NOTE";break}if(!i)continue;if(r.cue=new d.default(0,0,""),r.state="CUE",i.indexOf("-->")===-1){r.cue.id=i;continue}case"CUE":try{o(i,r.cue,r.regionList)}catch(e){r.cue=null,r.state="BADCUE";continue}r.state="CUETEXT";continue;case"CUETEXT":var u=i.indexOf("-->")!==-1;if(!i||u&&(n=!0)){r.oncue&&r.oncue(r.cue),r.cue=null,r.state="ID";continue}r.cue.text&&(r.cue.text+="\n"),r.cue.text+=i;continue;case"BADCUE":i||(r.state="ID");continue}}}catch(e){"CUETEXT"===r.state&&r.cue&&r.oncue&&r.oncue(r.cue),r.cue=null,r.state="INITIAL"===r.state?"BADWEBVTT":"BADCUE"}return this},flush:function(){var e=this;try{if(e.buffer+=e.decoder.decode(),(e.cue||"HEADER"===e.state)&&(e.buffer+="\n\n",e.parse()),"INITIAL"===e.state)throw new Error("Malformed WebVTT signature.")}catch(e){throw e}return e.onflush&&e.onflush(),this}},r.fixLineBreaks=l,r.default=i},{55:55}],57:[function(e,t,r){"use strict";var i=e(56),a=function(e){return e&&e.__esModule?e:{default:e}}(i),n=function(e,t,r){return e.substr(r||0,t.length)===t},s=function(e){var t=parseInt(e.substr(-3)),r=parseInt(e.substr(-6,2)),i=parseInt(e.substr(-9,2)),a=e.length>9?parseInt(e.substr(0,e.indexOf(":"))):0;return isNaN(t)||isNaN(r)||isNaN(i)||isNaN(a)?-1:(t+=1e3*r,t+=6e4*i,t+=36e5*a)},o=function e(t){for(var e=5381,r=t.length;r;)e=33*e^t.charCodeAt(--r);return(e>>>0).toString()},l=function(e,t,r){var i=e[t],a=e[i.prevCC];if(!a||!a.new&&i.new)return e.ccOffset=e.presentationOffset=i.start,void(i.new=!1);for(;a&&a.new;)e.ccOffset+=i.start-a.start,i.new=!1,i=a,a=e[i.prevCC];e.presentationOffset=r},u={parse:function(e,t,r,i,u,d){var f=String.fromCharCode.apply(null,new Uint8Array(e)).trim().replace(/\r\n|\n\r|\n|\r/g,"\n").split("\n"),c="00:00.000",h=0,g=0,v=0,p=[],y=void 0,m=!0,E=new a.default;E.oncue=function(e){var t=r[i],a=r.ccOffset;t&&t.new&&(void 0!==g?a=r.ccOffset=t.start:l(r,i,v)),v&&(a=v+r.ccOffset-r.presentationOffset),e.startTime+=a-g,e.endTime+=a-g,e.id=o(e.startTime)+o(e.endTime)+o(e.text),e.text=decodeURIComponent(escape(e.text)),e.endTime>0&&p.push(e)},E.onparsingerror=function(e){y=e},E.onflush=function(){if(y&&d)return void d(y);u(p)},f.forEach(function(e){if(m){if(n(e,"X-TIMESTAMP-MAP=")){m=!1,e.substr(16).split(",").forEach(function(e){n(e,"LOCAL:")?c=e.substr(6):n(e,"MPEGTS:")&&(h=parseInt(e.substr(7)))});try{t=t<0?t+8589934592:t,h-=t,g=s(c)/1e3,v=h/9e4,g===-1&&(y=new Error("Malformed X-TIMESTAMP-MAP: "+e))}catch(t){y=new Error("Malformed X-TIMESTAMP-MAP: "+e)}return}""===e&&(m=!1)}E.parse(e+"\n")}),E.flush()}};t.exports=u},{56:56}],58:[function(e,t,r){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(r,"__esModule",{value:!0});var a=function(){function e(e,t){for(var r=0;r<t.length;r++){var i=t[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,r,i){return r&&e(t.prototype,r),i&&e(t,i),t}}(),n=e(53),s=function(){function e(t){i(this,e),t&&t.xhrSetup&&(this.xhrSetup=t.xhrSetup)}return a(e,[{key:"destroy",value:function(){this.abort(),this.loader=null}},{key:"abort",value:function(){var e=this.loader;e&&4!==e.readyState&&(this.stats.aborted=!0,e.abort()),window.clearTimeout(this.requestTimeout),this.requestTimeout=null,window.clearTimeout(this.retryTimeout),this.retryTimeout=null}},{key:"load",value:function(e,t,r){this.context=e,this.config=t,this.callbacks=r,this.stats={trequest:performance.now(),retry:0}, +this.retryDelay=t.retryDelay,this.loadInternal()}},{key:"loadInternal",value:function(){var e,t=this.context;e="undefined"!=typeof XDomainRequest?this.loader=new XDomainRequest:this.loader=new XMLHttpRequest;var r=this.stats;r.tfirst=0,r.loaded=0;var i=this.xhrSetup;try{if(i)try{i(e,t.url)}catch(r){e.open("GET",t.url,!0),i(e,t.url)}e.readyState||e.open("GET",t.url,!0)}catch(r){return void this.callbacks.onError({code:e.status,text:r.message},t)}t.rangeEnd&&e.setRequestHeader("Range","bytes="+t.rangeStart+"-"+(t.rangeEnd-1)),e.onreadystatechange=this.readystatechange.bind(this),e.onprogress=this.loadprogress.bind(this),e.responseType=t.responseType,this.requestTimeout=window.setTimeout(this.loadtimeout.bind(this),this.config.timeout),e.send()}},{key:"readystatechange",value:function(e){var t=e.currentTarget,r=t.readyState,i=this.stats,a=this.context,s=this.config;if(!i.aborted&&r>=2)if(window.clearTimeout(this.requestTimeout),0===i.tfirst&&(i.tfirst=Math.max(performance.now(),i.trequest)),4===r){var o=t.status;if(o>=200&&o<300){i.tload=Math.max(i.tfirst,performance.now());var l=void 0,u=void 0;"arraybuffer"===a.responseType?(l=t.response,u=l.byteLength):(l=t.responseText,u=l.length),i.loaded=i.total=u;var d={url:t.responseURL,data:l};this.callbacks.onSuccess(d,i,a)}else i.retry>=s.maxRetry||o>=400&&o<499?(n.logger.error(o+" while loading "+a.url),this.callbacks.onError({code:o,text:t.statusText},a)):(n.logger.warn(o+" while loading "+a.url+", retrying in "+this.retryDelay+"..."),this.destroy(),this.retryTimeout=window.setTimeout(this.loadInternal.bind(this),this.retryDelay),this.retryDelay=Math.min(2*this.retryDelay,s.maxRetryDelay),i.retry++)}else this.requestTimeout=window.setTimeout(this.loadtimeout.bind(this),s.timeout)}},{key:"loadtimeout",value:function(){n.logger.warn("timeout while loading "+this.context.url),this.callbacks.onTimeout(this.stats,this.context)}},{key:"loadprogress",value:function(e){var t=this.stats;t.loaded=e.loaded,e.lengthComputable&&(t.total=e.total);var r=this.callbacks.onProgress;r&&r(t,this.context,null)}}]),e}();r.default=s},{53:53}]},{},[40])(40)}); diff --git a/src/main/webapp/static/movie/mediaelementjs/jumpforward.png b/src/main/webapp/static/movie/mediaelementjs/jumpforward.png deleted file mode 100644 index 64d03841e251a7741eaaf3e90b21c49a2ddb97ec..0000000000000000000000000000000000000000 Binary files a/src/main/webapp/static/movie/mediaelementjs/jumpforward.png and /dev/null differ diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/ca.js b/src/main/webapp/static/movie/mediaelementjs/lang/ca.js new file mode 100755 index 0000000000000000000000000000000000000000..0c90c17c884a877e089f27524b8d0341f4890357 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/ca.js @@ -0,0 +1,89 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Catalan + * + * @author + * Tongro + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.ca === undefined) { + exports.ca = { + "mejs.plural-form": 1, + "mejs.download-file": "Descarregar arxiu", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Pantalla completa", + "mejs.play": "Reproducció", + "mejs.pause": "Pausa", + // "mejs.time-slider": "Time Slider", + // "mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.", + //"mejs.live-broadcast" : "Live Broadcast", + // "mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.", + "mejs.unmute": "Reactivar silenci", + "mejs.mute": "Silenci", + // "mejs.volume-slider": "Volume Slider", + "mejs.video-player": "Reproductor de vÃdeo", + "mejs.audio-player": "Reproductor d'à udio", + "mejs.captions-subtitles": "Llegendes/SubtÃtols", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "Ningú" + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + // "mejs.chinese": "Chinese", + // "mejs.chinese-simplified": "Chinese (Simplified)", + // "mejs.chinese-traditional": "Chinese (Traditional)", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/ca.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/ca.min.js new file mode 100644 index 0000000000000000000000000000000000000000..858f9df13ca7b24be9d6439d60d51ade70a65b05 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/ca.min.js @@ -0,0 +1,12 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Catalan + * + * @author + * Tongro + * + * @see core/i18n.js + */ +(function(a){if(a.ca===undefined){a.ca={"mejs.plural-form":1,"mejs.download-file":"Descarregar arxiu","mejs.fullscreen":"Pantalla completa","mejs.play":"Reproducció","mejs.pause":"Pausa","mejs.unmute":"Reactivar silenci","mejs.mute":"Silenci","mejs.video-player":"Reproductor de vÃdeo","mejs.audio-player":"Reproductor d'à udio","mejs.captions-subtitles":"Llegendes/SubtÃtols","mejs.none":"Ningú"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/cs.js b/src/main/webapp/static/movie/mediaelementjs/lang/cs.js new file mode 100755 index 0000000000000000000000000000000000000000..0a0656c25d731571daaa9b2b97f6d326efc7c760 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/cs.js @@ -0,0 +1,90 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Czech + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.cs === undefined) { + exports.cs = { + "mejs.plural-form": 8, + "mejs.download-file": "Stáhnout soubor", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Celá obrazovka", + "mejs.play": "PÅ™ehrát", + "mejs.pause": "Pozastavit", + "mejs.time-slider": "Posuvný běžec nastavenà Äasu", + "mejs.time-help-text": "Použijte tlaÄÃtka se Å¡ipkami doleva / doprava pro posun o jednu vteÅ™inu, tlaÄÃtka se Å¡ipkami nahoru / dolů pro posun o deset vteÅ™in.", + //"mejs.live-broadcast" : "Live Broadcast", + "mejs.volume-help-text": "Použijte tlaÄÃtka se Å¡ipkami nahoru / dolů pro zesÃlenà nebo zeslabenà hlasitosti.", + "mejs.unmute": "Zapnout zvuk", + "mejs.mute": "Vypnout zvuk", + "mejs.volume-slider": "Posuvný běžec nastavenà hlasitosti", + "mejs.video-player": "PÅ™ehrávaÄ videa", + "mejs.audio-player": "PÅ™ehrávaÄ hudby", + "mejs.captions-subtitles": "Titulky", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "Žádný" + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + // "mejs.chinese": "Chinese", + // "mejs.chinese-simplified": "Chinese (Simplified)", + // "mejs.chinese-traditional": "Chinese (Traditional)", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/cs.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/cs.min.js new file mode 100644 index 0000000000000000000000000000000000000000..81f1eb6a04fb48fcf5614f0339fafaf2c7029e5d --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/cs.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Czech + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function(a){if(a.cs===undefined){a.cs={"mejs.plural-form":8,"mejs.download-file":"Stáhnout soubor","mejs.fullscreen":"Celá obrazovka","mejs.play":"PÅ™ehrát","mejs.pause":"Pozastavit","mejs.time-slider":"Posuvný běžec nastavenà Äasu","mejs.time-help-text":"Použijte tlaÄÃtka se Å¡ipkami doleva / doprava pro posun o jednu vteÅ™inu, tlaÄÃtka se Å¡ipkami nahoru / dolů pro posun o deset vteÅ™in.","mejs.volume-help-text":"Použijte tlaÄÃtka se Å¡ipkami nahoru / dolů pro zesÃlenà nebo zeslabenà hlasitosti.","mejs.unmute":"Zapnout zvuk","mejs.mute":"Vypnout zvuk","mejs.volume-slider":"Posuvný běžec nastavenà hlasitosti","mejs.video-player":"PÅ™ehrávaÄ videa","mejs.audio-player":"PÅ™ehrávaÄ hudby","mejs.captions-subtitles":"Titulky","mejs.none":"Žádný"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/de.js b/src/main/webapp/static/movie/mediaelementjs/lang/de.js new file mode 100755 index 0000000000000000000000000000000000000000..27bfa9a51bbaee05b1019dc4d9a680f2d3ad422f --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/de.js @@ -0,0 +1,90 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * German + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.de === undefined) { + exports.de = { + "mejs.plural-form": 1, + "mejs.download-file": "Datei herunterladen", + "mejs.install-flash": "Ihr Browser unterstützt kein Flash. Bitte aktivieren Sie Flash bzw. laden Sie die aktuellste Flash-Version herunter unter https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Vollbild", + "mejs.play": "Abspielen", + "mejs.pause": "Pause", + "mejs.time-slider": "Zeitschieberegler", + "mejs.time-help-text": "Verwende die Pfeiltaste nach links/rechts, um eine Sekunde zu spulen, hoch/runter um zehn Sekunden zu spulen.", + "mejs.live-broadcast" : "Live-Übertragung", + "mejs.volume-help-text": "Verwende die Pfeiltaste nach oben/nach unten um die Lautstärke zu erhöhen oder zu verringern.", + "mejs.unmute": "Stummschaltung aufheben", + "mejs.mute": "Stummschalten", + "mejs.volume-slider": "Lautstärkeregler", + "mejs.video-player": "Video-Player", + "mejs.audio-player": "Audio-Player", + "mejs.captions-subtitles": "Überschriften/Untertitel", + "mejs.captions-chapters": "Kapitel", + "mejs.none": "Keine", + "mejs.afrikaans": "Afrikanisch", + "mejs.albanian": "Albanisch", + "mejs.arabic": "Arabisch", + "mejs.belarusian": "Weißrussisch", + "mejs.bulgarian": "Bulgarisch", + "mejs.catalan": "Katalanisch", + "mejs.chinese": "Chinesisch", + "mejs.chinese-simplified": "Chinesisch (Vereinfacht)", + "mejs.chinese-traditional": "Chinesisch (Traditionell)", + "mejs.croatian": "Kroatisch", + "mejs.czech": "Tschechisch", + "mejs.danish": "Dänisch", + "mejs.dutch": "Niederländisch", + "mejs.english": "Englisch", + "mejs.estonian": "Estnisch", + "mejs.filipino": "Filipino", + "mejs.finnish": "Finnisch", + "mejs.french": "Französisch", + "mejs.galician": "Galicisch", + "mejs.german": "Deutsch", + "mejs.greek": "Griechisch", + "mejs.haitian-creole": "Haitianisch", + "mejs.hebrew": "Hebräisch", + "mejs.hindi": "Hindi", + "mejs.hungarian": "Ungarisch", + "mejs.icelandic": "Isländisch", + "mejs.indonesian": "Indonesisch", + "mejs.irish": "Irisch", + "mejs.italian": "Italienisch", + "mejs.japanese": "Japanisch", + "mejs.korean": "Koreanisch", + "mejs.latvian": "Lettisch", + "mejs.lithuanian": "Litauisch", + "mejs.macedonian": "Mazedonisch", + "mejs.malay": "Malaysisch", + "mejs.maltese": "Maltesisch", + "mejs.norwegian": "Norwegisch", + "mejs.persian": "Persisch", + "mejs.polish": "Polnisch", + "mejs.portuguese": "Portugiesisch", + "mejs.romanian": "Rumänisch", + "mejs.russian": "Russisch", + "mejs.serbian": "Serbisch", + "mejs.slovak": "Slovakisch", + "mejs.slovenian": "Slovenisch", + "mejs.spanish": "Spanisch", + "mejs.swahili": "Swahili", + "mejs.swedish": "Schwedisch", + "mejs.tagalog": "Tagalog", + "mejs.thai": "Thailändisch", + "mejs.turkish": "Türkisch", + "mejs.ukrainian": "Ukrainisch", + "mejs.vietnamese": "Vietnamnesisch", + "mejs.welsh": "Walisisch", + "mejs.yiddish": "Jiddisch" + }; + } +})(mejs.i18n); diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/de.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/de.min.js new file mode 100644 index 0000000000000000000000000000000000000000..c0242b2f7daa1754e68656a3336c258fc294c9ab --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/de.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * German + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function(a){if(a.de===undefined){a.de={"mejs.plural-form":1,"mejs.download-file":"Datei herunterladen","mejs.install-flash":"Ihr Browser unterstützt kein Flash. Bitte aktivieren Sie Flash bzw. laden Sie die aktuellste Flash-Version herunter unter https://get.adobe.com/flashplayer/","mejs.fullscreen":"Vollbild","mejs.play":"Abspielen","mejs.pause":"Pause","mejs.time-slider":"Zeitschieberegler","mejs.time-help-text":"Verwende die Pfeiltaste nach links/rechts, um eine Sekunde zu spulen, hoch/runter um zehn Sekunden zu spulen.","mejs.live-broadcast":"Live-Übertragung","mejs.volume-help-text":"Verwende die Pfeiltaste nach oben/nach unten um die Lautstärke zu erhöhen oder zu verringern.","mejs.unmute":"Stummschaltung aufheben","mejs.mute":"Stummschalten","mejs.volume-slider":"Lautstärkeregler","mejs.video-player":"Video-Player","mejs.audio-player":"Audio-Player","mejs.captions-subtitles":"Überschriften/Untertitel","mejs.captions-chapters":"Kapitel","mejs.none":"Keine","mejs.afrikaans":"Afrikanisch","mejs.albanian":"Albanisch","mejs.arabic":"Arabisch","mejs.belarusian":"Weißrussisch","mejs.bulgarian":"Bulgarisch","mejs.catalan":"Katalanisch","mejs.chinese":"Chinesisch","mejs.chinese-simplified":"Chinesisch (Vereinfacht)","mejs.chinese-traditional":"Chinesisch (Traditionell)","mejs.croatian":"Kroatisch","mejs.czech":"Tschechisch","mejs.danish":"Dänisch","mejs.dutch":"Niederländisch","mejs.english":"Englisch","mejs.estonian":"Estnisch","mejs.filipino":"Filipino","mejs.finnish":"Finnisch","mejs.french":"Französisch","mejs.galician":"Galicisch","mejs.german":"Deutsch","mejs.greek":"Griechisch","mejs.haitian-creole":"Haitianisch","mejs.hebrew":"Hebräisch","mejs.hindi":"Hindi","mejs.hungarian":"Ungarisch","mejs.icelandic":"Isländisch","mejs.indonesian":"Indonesisch","mejs.irish":"Irisch","mejs.italian":"Italienisch","mejs.japanese":"Japanisch","mejs.korean":"Koreanisch","mejs.latvian":"Lettisch","mejs.lithuanian":"Litauisch","mejs.macedonian":"Mazedonisch","mejs.malay":"Malaysisch","mejs.maltese":"Maltesisch","mejs.norwegian":"Norwegisch","mejs.persian":"Persisch","mejs.polish":"Polnisch","mejs.portuguese":"Portugiesisch","mejs.romanian":"Rumänisch","mejs.russian":"Russisch","mejs.serbian":"Serbisch","mejs.slovak":"Slovakisch","mejs.slovenian":"Slovenisch","mejs.spanish":"Spanisch","mejs.swahili":"Swahili","mejs.swedish":"Schwedisch","mejs.tagalog":"Tagalog","mejs.thai":"Thailändisch","mejs.turkish":"Türkisch","mejs.ukrainian":"Ukrainisch","mejs.vietnamese":"Vietnamnesisch","mejs.welsh":"Walisisch","mejs.yiddish":"Jiddisch"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/es.js b/src/main/webapp/static/movie/mediaelementjs/lang/es.js new file mode 100755 index 0000000000000000000000000000000000000000..11465e84d763d1b148f992cc188a5570dd2739cb --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/es.js @@ -0,0 +1,90 @@ +/*! + * This is a `i18n` language object. + * + * Spanish + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * Rafael Miranda (GitHub: @rafa8626) + * + * @see core/i18n.js + */(function (exports) { + if (exports.es === undefined) { + exports.es = { + "mejs.plural-form": 1, + "mejs.download-file": "Descargar archivo", + "mejs.install-flash": "Esta usando un navegador que no tiene activado o instalado el reproductor de Flash. Por favor active el plugin del reproductor de Flash o descargue la versión más reciente en https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Pantalla completa", + "mejs.play": "Reproducción", + "mejs.pause": "Pausa", + "mejs.time-slider": "Control deslizante de tiempo", + "mejs.time-help-text": "Use las flechas Izquierda/Derecha para avanzar un segundo y las flechas Arriba/Abajo para avanzar diez segundos.", + "mejs.live-broadcast": "Transmisión en Vivo", + "mejs.volume-help-text": "Use las flechas Arriba/Abajo para subir o bajar el volumen.", + "mejs.unmute": "Reactivar silencio", + "mejs.mute": "Silencio", + "mejs.volume-slider": "Control deslizante de volumen", + "mejs.video-player": "Reproductor de video", + "mejs.audio-player": "Reproductor de audio", + "mejs.captions-subtitles": "Leyendas/SubtÃtulos", + "mejs.captions-chapters": "CapÃtulos", + "mejs.none": "Ninguno", + "mejs.afrikaans": "Afrikaans", + "mejs.albanian": "Albano", + "mejs.arabic": "Ãrabe", + "mejs.belarusian": "Bielorruso", + "mejs.bulgarian": "Búlgaro", + "mejs.catalan": "Catalán", + "mejs.chinese": "Chino", + "mejs.chinese-simplified": "Chino (Simplificado)", + "mejs.chinese-traditional": "Chino (Tradicional)", + "mejs.croatian": "Croata", + "mejs.czech": "Checo", + "mejs.danish": "Danés", + "mejs.dutch": "Holandés", + "mejs.english": "Inglés", + "mejs.estonian": "Estoniano", + "mejs.filipino": "Filipino", + "mejs.finnish": "Finlandés", + "mejs.french": "Francés", + "mejs.galician": "Gallego", + "mejs.german": "Alemán", + "mejs.greek": "Griego", + "mejs.haitian-creole": "Haitiano Criollo", + "mejs.hebrew": "Hebreo", + "mejs.hindi": "Hindi", + "mejs.hungarian": "Húngaro", + "mejs.icelandic": "Islandés", + "mejs.indonesian": "Indonesio", + "mejs.irish": "Irlandés", + "mejs.italian": "Italiano", + "mejs.japanese": "Japonés", + "mejs.korean": "Coreano", + "mejs.latvian": "Letón", + "mejs.lithuanian": "Lituano", + "mejs.macedonian": "Macedonio", + "mejs.malay": "Malayo", + "mejs.maltese": "Maltés", + "mejs.norwegian": "Noruego", + "mejs.persian": "Persa", + "mejs.polish": "Polaco", + "mejs.portuguese": "Portugués", + "mejs.romanian": "Rumano", + "mejs.russian": "Ruso", + "mejs.serbian": "Serbio", + "mejs.slovak": "Eslovaco", + "mejs.slovenian": "Eslovenio", + "mejs.spanish": "Español", + "mejs.swahili": "Swahili", + "mejs.swedish": "Suizo", + "mejs.tagalog": "Tagalog", + "mejs.thai": "Tailandés", + "mejs.turkish": "Turco", + "mejs.ukrainian": "Ucraniano", + "mejs.vietnamese": "Vietnamita", + "mejs.welsh": "Galés", + "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/es.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/es.min.js new file mode 100644 index 0000000000000000000000000000000000000000..4b0c5a888dff567004d8b76b27eb873951c2575d --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/es.min.js @@ -0,0 +1,13 @@ +/*! + * This is a `i18n` language object. + * + * Spanish + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * Rafael Miranda (GitHub: @rafa8626) + * + * @see core/i18n.js + */ +(function(a){if(a.es===undefined){a.es={"mejs.plural-form":1,"mejs.download-file":"Descargar archivo","mejs.install-flash":"Esta usando un navegador que no tiene activado o instalado el reproductor de Flash. Por favor active el plugin del reproductor de Flash o descargue la versión más reciente en https://get.adobe.com/flashplayer/","mejs.fullscreen":"Pantalla completa","mejs.play":"Reproducción","mejs.pause":"Pausa","mejs.time-slider":"Control deslizante de tiempo","mejs.time-help-text":"Use las flechas Izquierda/Derecha para avanzar un segundo y las flechas Arriba/Abajo para avanzar diez segundos.","mejs.live-broadcast":"Transmisión en Vivo","mejs.volume-help-text":"Use las flechas Arriba/Abajo para subir o bajar el volumen.","mejs.unmute":"Reactivar silencio","mejs.mute":"Silencio","mejs.volume-slider":"Control deslizante de volumen","mejs.video-player":"Reproductor de video","mejs.audio-player":"Reproductor de audio","mejs.captions-subtitles":"Leyendas/SubtÃtulos","mejs.captions-chapters":"CapÃtulos","mejs.none":"Ninguno","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albano","mejs.arabic":"Ãrabe","mejs.belarusian":"Bielorruso","mejs.bulgarian":"Búlgaro","mejs.catalan":"Catalán","mejs.chinese":"Chino","mejs.chinese-simplified":"Chino (Simplificado)","mejs.chinese-traditional":"Chino (Tradicional)","mejs.croatian":"Croata","mejs.czech":"Checo","mejs.danish":"Danés","mejs.dutch":"Holandés","mejs.english":"Inglés","mejs.estonian":"Estoniano","mejs.filipino":"Filipino","mejs.finnish":"Finlandés","mejs.french":"Francés","mejs.galician":"Gallego","mejs.german":"Alemán","mejs.greek":"Griego","mejs.haitian-creole":"Haitiano Criollo","mejs.hebrew":"Hebreo","mejs.hindi":"Hindi","mejs.hungarian":"Húngaro","mejs.icelandic":"Islandés","mejs.indonesian":"Indonesio","mejs.irish":"Irlandés","mejs.italian":"Italiano","mejs.japanese":"Japonés","mejs.korean":"Coreano","mejs.latvian":"Letón","mejs.lithuanian":"Lituano","mejs.macedonian":"Macedonio","mejs.malay":"Malayo","mejs.maltese":"Maltés","mejs.norwegian":"Noruego","mejs.persian":"Persa","mejs.polish":"Polaco","mejs.portuguese":"Portugués","mejs.romanian":"Rumano","mejs.russian":"Ruso","mejs.serbian":"Serbio","mejs.slovak":"Eslovaco","mejs.slovenian":"Eslovenio","mejs.spanish":"Español","mejs.swahili":"Swahili","mejs.swedish":"Suizo","mejs.tagalog":"Tagalog","mejs.thai":"Tailandés","mejs.turkish":"Turco","mejs.ukrainian":"Ucraniano","mejs.vietnamese":"Vietnamita","mejs.welsh":"Galés","mejs.yiddish":"Yiddish"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/fa.js b/src/main/webapp/static/movie/mediaelementjs/lang/fa.js new file mode 100755 index 0000000000000000000000000000000000000000..172481f09025aefe7f95846458e0c6624608863c --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/fa.js @@ -0,0 +1,90 @@ +/*! + * This is a `i18n` language object. + * + * Persian + * + * @author + * wmateam (GitHub: @wmateam) + * + * @see core/i18n.js + */(function (exports) { + "use strict"; + + if (exports.fa === undefined) { + exports.fa = { + "mejs.plural-form": 0, + "mejs.download-file": "Ø¯Ø±ÛŒØ§ÙØª ÙØ§ÛŒÙ„", + "mejs.install-flash": "Ø§ÙØ²ÙˆÙ†Ù‡ Ùلش پلیر روی مرورگر شما نصب نیست یا غیر ÙØ¹Ø§Ù„ است.Ø§ÙØ²ÙˆÙ†Ù‡ را ÙØ¹Ø§Ù„ کنید Ùˆ یا از https://get.adobe.com/flashplayer/ Ø¯Ø±ÛŒØ§ÙØª Ùˆ نصب کنید.", + "mejs.fullscreen": "تمام ØµÙØÙ‡", + "mejs.play": "پخش", + "mejs.pause": "توقÙ", + "mejs.time-slider": "تغییر زمان", + "mejs.time-help-text": "از کلید های Ú†Ù¾ Ùˆ راست کیبورد برای جا به جایی به میزان یک ثانیه Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید.همچنین کلید های بالا Ùˆ پایین 10 ثانیه زمان را جا به جا Ù…ÛŒ کند.", + "mejs.live-broadcast": "پخش زنده", + "mejs.volume-help-text": "از دکمه های بالا Ùˆ پایین برای Ú©Ù… Ùˆ زیاد کردن ØØ¬Ù… صدا Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید.", + "mejs.unmute": "صدا دار", + "mejs.mute": "بی صدا", + "mejs.volume-slider": "تغییر ØØ¬Ù… صدا", + "mejs.video-player": "پخش کننده ویدیو", + "mejs.audio-player": "پخش کننده صدا", + "mejs.captions-subtitles": "زیرنویس", + "mejs.captions-chapters": "قسمت", + "mejs.none": "هیچ", + "mejs.afrikaans": "Ø¢ÙØ±ÛŒÙ‚ایی", + "mejs.albanian": "آلبانیایی", + "mejs.arabic": "عربی", + "mejs.belarusian": "بلاروس", + "mejs.bulgarian": "بلغاری", + "mejs.catalan": "کاتالان", + "mejs.chinese": "چینی", + "mejs.chinese-simplified": "چینی (ساده شده)", + "mejs.chinese-traditional": "چینی (سنتی)", + "mejs.croatian": "کروات", + "mejs.czech": "Ú†Ú©", + "mejs.danish": "دانمارکی", + "mejs.dutch": "هلندی", + "mejs.english": "انگلیسی", + "mejs.estonian": "استونی", + "mejs.filipino": "Ùیلیپینی", + "mejs.finnish": "Ùنلاندری", + "mejs.french": "ÙØ±Ø§Ù†Ø³ÙˆÛŒ", + "mejs.galician": "گالیسی", + "mejs.german": "آلمانی", + "mejs.greek": "یونانی", + "mejs.haitian-creole": "کریول هائیتی", + "mejs.hebrew": "عبری", + "mejs.hindi": "هندی", + "mejs.hungarian": "مجارستانی", + "mejs.icelandic": "ایسلندی", + "mejs.indonesian": "اندونزی", + "mejs.irish": "ایرلندی", + "mejs.italian": "ایتالیایی", + "mejs.japanese": "ژاپنی", + "mejs.korean": "کره ای", + "mejs.latvian": "لتونی", + "mejs.lithuanian": "لیتوانی", + "mejs.macedonian": "مقدونی", + "mejs.malay": "مالایی", + "mejs.maltese": "مالتی", + "mejs.norwegian": "نروژی", + "mejs.persian": "ÙØ§Ø±Ø³ÛŒ", + "mejs.polish": "لهستانی", + "mejs.portuguese": "پرتغالی", + "mejs.romanian": "روانی", + "mejs.russian": "روسی", + "mejs.serbian": "صرب", + "mejs.slovak": "اسلواکی", + "mejs.slovenian": "اسلوونیایی", + "mejs.spanish": "اسپانیایی", + "mejs.swahili": "سواØÛŒÙ„ÛŒ", + "mejs.swedish": "سوئد", + "mejs.tagalog": "تاگالوگ", + "mejs.thai": "تایلندی", + "mejs.turkish": "ترکی", + "mejs.ukrainian": "اوکراین", + "mejs.vietnamese": "ویتنامی", + "mejs.welsh": "ولزی", + "mejs.yiddish": "ییدیش" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/fa.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/fa.min.js new file mode 100644 index 0000000000000000000000000000000000000000..cc36d97436cfa0122b177a14c15b0a76d2c5305e --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/fa.min.js @@ -0,0 +1,11 @@ +/*! + * This is a `i18n` language object. + * + * Persian + * + * @author + * wmateam (GitHub: @wmateam) + * + * @see core/i18n.js + */ +(function(a){if(a.fa===undefined){a.fa={"mejs.plural-form":0,"mejs.download-file":"Ø¯Ø±ÛŒØ§ÙØª ÙØ§ÛŒÙ„","mejs.install-flash":"Ø§ÙØ²ÙˆÙ†Ù‡ Ùلش پلیر روی مرورگر شما نصب نیست یا غیر ÙØ¹Ø§Ù„ است.Ø§ÙØ²ÙˆÙ†Ù‡ را ÙØ¹Ø§Ù„ کنید Ùˆ یا از https://get.adobe.com/flashplayer/ Ø¯Ø±ÛŒØ§ÙØª Ùˆ نصب کنید.","mejs.fullscreen":"تمام ØµÙØÙ‡","mejs.play":"پخش","mejs.pause":"توقÙ","mejs.time-slider":"تغییر زمان","mejs.time-help-text":"از کلید های Ú†Ù¾ Ùˆ راست کیبورد برای جا به جایی به میزان یک ثانیه Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید.همچنین کلید های بالا Ùˆ پایین 10 ثانیه زمان را جا به جا Ù…ÛŒ کند.","mejs.live-broadcast":"پخش زنده","mejs.volume-help-text":"از دکمه های بالا Ùˆ پایین برای Ú©Ù… Ùˆ زیاد کردن ØØ¬Ù… صدا Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید.","mejs.unmute":"صدا دار","mejs.mute":"بی صدا","mejs.volume-slider":"تغییر ØØ¬Ù… صدا","mejs.video-player":"پخش کننده ویدیو","mejs.audio-player":"پخش کننده صدا","mejs.captions-subtitles":"زیرنویس","mejs.captions-chapters":"قسمت","mejs.none":"هیچ","mejs.afrikaans":"Ø¢ÙØ±ÛŒÙ‚ایی","mejs.albanian":"آلبانیایی","mejs.arabic":"عربی","mejs.belarusian":"بلاروس","mejs.bulgarian":"بلغاری","mejs.catalan":"کاتالان","mejs.chinese":"چینی","mejs.chinese-simplified":"چینی (ساده شده)","mejs.chinese-traditional":"چینی (سنتی)","mejs.croatian":"کروات","mejs.czech":"Ú†Ú©","mejs.danish":"دانمارکی","mejs.dutch":"هلندی","mejs.english":"انگلیسی","mejs.estonian":"استونی","mejs.filipino":"Ùیلیپینی","mejs.finnish":"Ùنلاندری","mejs.french":"ÙØ±Ø§Ù†Ø³ÙˆÛŒ","mejs.galician":"گالیسی","mejs.german":"آلمانی","mejs.greek":"یونانی","mejs.haitian-creole":"کریول هائیتی","mejs.hebrew":"عبری","mejs.hindi":"هندی","mejs.hungarian":"مجارستانی","mejs.icelandic":"ایسلندی","mejs.indonesian":"اندونزی","mejs.irish":"ایرلندی","mejs.italian":"ایتالیایی","mejs.japanese":"ژاپنی","mejs.korean":"کره ای","mejs.latvian":"لتونی","mejs.lithuanian":"لیتوانی","mejs.macedonian":"مقدونی","mejs.malay":"مالایی","mejs.maltese":"مالتی","mejs.norwegian":"نروژی","mejs.persian":"ÙØ§Ø±Ø³ÛŒ","mejs.polish":"لهستانی","mejs.portuguese":"پرتغالی","mejs.romanian":"روانی","mejs.russian":"روسی","mejs.serbian":"صرب","mejs.slovak":"اسلواکی","mejs.slovenian":"اسلوونیایی","mejs.spanish":"اسپانیایی","mejs.swahili":"سواØÛŒÙ„ÛŒ","mejs.swedish":"سوئد","mejs.tagalog":"تاگالوگ","mejs.thai":"تایلندی","mejs.turkish":"ترکی","mejs.ukrainian":"اوکراین","mejs.vietnamese":"ویتنامی","mejs.welsh":"ولزی","mejs.yiddish":"ییدیش"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/fr.js b/src/main/webapp/static/movie/mediaelementjs/lang/fr.js new file mode 100755 index 0000000000000000000000000000000000000000..155fceef85e127ef3158665c74eb8867a2dcce54 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/fr.js @@ -0,0 +1,91 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * French + * + * @author + * Luc Poupard (Twitter: @klohFR) + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.fr === undefined) { + exports.fr = { + "mejs.plural-form": 2, + "mejs.download-file": "Télécharger le fichier", + "mejs.install-flash": "Vous utilisez un navigateur sur lequel Flash ne semble pas installé ou activé. Veuillez activer le plugin Flash ou télécharger la dernière version sur https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Plein écran", + "mejs.play": "Lecture", + "mejs.pause": "Pause", + "mejs.time-slider": "Curseur temporel", + "mejs.time-help-text": "Utilisez les flèches Gauche/Droite du clavier pour avancer d'une seconde, les flèches Haut/Bas pour avancer de 10 secondes.", + "mejs.live-broadcast" : "Diffusion en direct", + "mejs.volume-help-text": "Utilisez les flèches Haut/Bas du clavier pour augmenter ou diminuer le volume.", + "mejs.unmute": "Activer le son", + "mejs.mute": "Désactiver le son", + "mejs.volume-slider": "Volume", + "mejs.video-player": "Lecteur Vidéo", + "mejs.audio-player": "Lecteur Audio", + "mejs.captions-subtitles": "Sous-titres", + "mejs.captions-chapters": "Chapitres", + "mejs.none": "Aucun", + "mejs.afrikaans": "Afrikaans", + "mejs.albanian": "Albanais", + "mejs.arabic": "Arabe", + "mejs.belarusian": "Biélorusse", + "mejs.bulgarian": "Bulgare", + "mejs.catalan": "Catalan", + "mejs.chinese": "Chinois", + "mejs.chinese-simplified": "Chinois (simplifié)", + "mejs.chinese-traditional": "Chinois (traditionnel)", + "mejs.croatian": "Croate", + "mejs.czech": "Tchèque", + "mejs.danish": "Danois", + "mejs.dutch": "Néerlandais", + "mejs.english": "Anglais", + "mejs.estonian": "Estonien", + "mejs.filipino": "Filipino", + "mejs.finnish": "Finnois", + "mejs.french": "Français", + "mejs.galician": "Galicien", + "mejs.german": "Allemand", + "mejs.greek": "Grec", + "mejs.haitian-creole": "Créole haïtien", + "mejs.hebrew": "Hébreu", + "mejs.hindi": "Hindi", + "mejs.hungarian": "Hongrois", + "mejs.icelandic": "Islandais", + "mejs.indonesian": "Indonésien", + "mejs.irish": "Irlandais", + "mejs.italian": "Italien", + "mejs.japanese": "Japonais", + "mejs.korean": "Coréen", + "mejs.latvian": "Letton", + "mejs.lithuanian": "Lituanien", + "mejs.macedonian": "Macédonien", + "mejs.malay": "Malais", + "mejs.maltese": "Maltais", + "mejs.norwegian": "Norvégien", + "mejs.persian": "Perse", + "mejs.polish": "Polonais", + "mejs.portuguese": "Portugais", + "mejs.romanian": "Roumain", + "mejs.russian": "Russe", + "mejs.serbian": "Serbe", + "mejs.slovak": "Slovaque", + "mejs.slovenian": "Slovène", + "mejs.spanish": "Espagnol", + "mejs.swahili": "Swahili", + "mejs.swedish": "Suédois", + "mejs.tagalog": "Tagalog", + "mejs.thai": "Thaï", + "mejs.turkish": "Turque", + "mejs.ukrainian": "Ukrainien", + "mejs.vietnamese": "Vietnamien", + "mejs.welsh": "Gallois", + "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/fr.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/fr.min.js new file mode 100644 index 0000000000000000000000000000000000000000..29f72ed6f7c2619cd748a860b2ced19e59f79d00 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/fr.min.js @@ -0,0 +1,14 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * French + * + * @author + * Luc Poupard (Twitter: @klohFR) + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function(a){if(a.fr===undefined){a.fr={"mejs.plural-form":2,"mejs.download-file":"Télécharger le fichier","mejs.install-flash":"Vous utilisez un navigateur sur lequel Flash ne semble pas installé ou activé. Veuillez activer le plugin Flash ou télécharger la dernière version sur https://get.adobe.com/flashplayer/","mejs.fullscreen":"Plein écran","mejs.play":"Lecture","mejs.pause":"Pause","mejs.time-slider":"Curseur temporel","mejs.time-help-text":"Utilisez les flèches Gauche/Droite du clavier pour avancer d'une seconde, les flèches Haut/Bas pour avancer de 10 secondes.","mejs.live-broadcast":"Diffusion en direct","mejs.volume-help-text":"Utilisez les flèches Haut/Bas du clavier pour augmenter ou diminuer le volume.","mejs.unmute":"Activer le son","mejs.mute":"Désactiver le son","mejs.volume-slider":"Volume","mejs.video-player":"Lecteur Vidéo","mejs.audio-player":"Lecteur Audio","mejs.captions-subtitles":"Sous-titres","mejs.captions-chapters":"Chapitres","mejs.none":"Aucun","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanais","mejs.arabic":"Arabe","mejs.belarusian":"Biélorusse","mejs.bulgarian":"Bulgare","mejs.catalan":"Catalan","mejs.chinese":"Chinois","mejs.chinese-simplified":"Chinois (simplifié)","mejs.chinese-traditional":"Chinois (traditionnel)","mejs.croatian":"Croate","mejs.czech":"Tchèque","mejs.danish":"Danois","mejs.dutch":"Néerlandais","mejs.english":"Anglais","mejs.estonian":"Estonien","mejs.filipino":"Filipino","mejs.finnish":"Finnois","mejs.french":"Français","mejs.galician":"Galicien","mejs.german":"Allemand","mejs.greek":"Grec","mejs.haitian-creole":"Créole haïtien","mejs.hebrew":"Hébreu","mejs.hindi":"Hindi","mejs.hungarian":"Hongrois","mejs.icelandic":"Islandais","mejs.indonesian":"Indonésien","mejs.irish":"Irlandais","mejs.italian":"Italien","mejs.japanese":"Japonais","mejs.korean":"Coréen","mejs.latvian":"Letton","mejs.lithuanian":"Lituanien","mejs.macedonian":"Macédonien","mejs.malay":"Malais","mejs.maltese":"Maltais","mejs.norwegian":"Norvégien","mejs.persian":"Perse","mejs.polish":"Polonais","mejs.portuguese":"Portugais","mejs.romanian":"Roumain","mejs.russian":"Russe","mejs.serbian":"Serbe","mejs.slovak":"Slovaque","mejs.slovenian":"Slovène","mejs.spanish":"Espagnol","mejs.swahili":"Swahili","mejs.swedish":"Suédois","mejs.tagalog":"Tagalog","mejs.thai":"Thaï","mejs.turkish":"Turque","mejs.ukrainian":"Ukrainien","mejs.vietnamese":"Vietnamien","mejs.welsh":"Gallois","mejs.yiddish":"Yiddish"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/hr.js b/src/main/webapp/static/movie/mediaelementjs/lang/hr.js new file mode 100755 index 0000000000000000000000000000000000000000..b468e49b8d1715c5b98eb9ff98bcf345cac4e0f1 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/hr.js @@ -0,0 +1,87 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Croatian + * + * @author + * Hrvoj3e (hrvoj3e@gmail.com) * @see core/i18n.js + */ +(function (exports) { + if (exports.hr === undefined) { + exports.hr = { + "mejs.plural-form": 7, + "mejs.download-file": "Preuzmi datoteku", + "mejs.install-flash": "Koristite preglednik koji nema omogućen ili instaliran Flash preglednik. Molimo Vas ukljuÄite Flash dodatak ili preuzmite najnoviju verziju s https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Puni zaslon", + "mejs.play": "Pokreni", + "mejs.pause": "Zaustavi", + "mejs.time-slider": "Vremenska traka", + "mejs.time-help-text": "Koristi strelice lijevo/desno za pomak naprijed za 1 sekundu te gore/dolje za pomak od 10 sekundi.", + //"mejs.live-broadcast" : "Live Broadcast", + "mejs.volume-help-text": "Koristi strelice gore/dolje za pojaÄavanje ili stiÅ¡avanje.", + "mejs.unmute": "UkljuÄi zvuk", + "mejs.mute": "IskljuÄi zvuk", + "mejs.volume-slider": "PokazivaÄ razine zvuka", + "mejs.video-player": "Video preglednik", + "mejs.audio-player": "Audio preglednik", + "mejs.captions-subtitles": "Opisi/Prijevodi", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "NiÅ¡ta", + "mejs.afrikaans": "AfriÄki", + "mejs.albanian": "Albanski", + "mejs.arabic": "Arapski", + "mejs.belarusian": "Bjeloruski", + "mejs.bulgarian": "Bugarski", + "mejs.catalan": "Katalonski", + "mejs.chinese": "Kineski", + "mejs.chinese-simplified": "Kineski (jednostavni)", + "mejs.chinese-traditional": "Kineski (tradicionalni)", + "mejs.croatian": "Hrvatski", + "mejs.czech": "ÄŒeÅ¡ki", + "mejs.danish": "Danski", + "mejs.dutch": "Nizozemski", + "mejs.english": "Engleski", + "mejs.estonian": "Estonski", + "mejs.filipino": "Filipinski", + "mejs.finnish": "Finski", + "mejs.french": "Francuski", + "mejs.galician": "Galicijski", + "mejs.german": "NjemaÄki", + "mejs.greek": "GrÄki", + "mejs.haitian-creole": "Haićanski kreolski", + "mejs.hebrew": "Hebrejski", + "mejs.hindi": "Hindski", + "mejs.hungarian": "MaÄ‘arski", + "mejs.icelandic": "Islandski", + "mejs.indonesian": "Indonezijski", + "mejs.irish": "Irski", + "mejs.italian": "Talijanski", + "mejs.japanese": "Japanski", + "mejs.korean": "Korejski", + "mejs.latvian": "Latvijski", + "mejs.lithuanian": "Litvanski", + "mejs.macedonian": "Makedonski", + "mejs.malay": "Malajski", + "mejs.maltese": "MalteÅ¡ki", + "mejs.norwegian": "NorveÅ¡ki", + "mejs.persian": "Perzijski", + "mejs.polish": "Poljski", + "mejs.portuguese": "Portugalski", + "mejs.romanian": "Rumunjski", + "mejs.russian": "Ruski", + "mejs.serbian": "Srpski", + "mejs.slovak": "SlovaÄki", + "mejs.slovenian": "Slovenski", + "mejs.spanish": "Å panjolski", + "mejs.swahili": "Svahili", + "mejs.swedish": "Å vedski", + "mejs.tagalog": "TagaloÅ¡ki", + "mejs.thai": "Tajski", + "mejs.turkish": "Turski", + "mejs.ukrainian": "Ukrajinski", + "mejs.vietnamese": "Vijetnamski", + "mejs.welsh": "VelÅ¡ki", + "mejs.yiddish": "JidiÅ¡ki" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/hr.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/hr.min.js new file mode 100644 index 0000000000000000000000000000000000000000..10be4921877e4c4c68d9ac3735d8ee1f8edfa998 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/hr.min.js @@ -0,0 +1,10 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Croatian + * + * @author + * Hrvoj3e (hrvoj3e@gmail.com) * @see core/i18n.js + */ +(function(a){if(a.hr===undefined){a.hr={"mejs.plural-form":7,"mejs.download-file":"Preuzmi datoteku","mejs.install-flash":"Koristite preglednik koji nema omogućen ili instaliran Flash preglednik. Molimo Vas ukljuÄite Flash dodatak ili preuzmite najnoviju verziju s https://get.adobe.com/flashplayer/","mejs.fullscreen":"Puni zaslon","mejs.play":"Pokreni","mejs.pause":"Zaustavi","mejs.time-slider":"Vremenska traka","mejs.time-help-text":"Koristi strelice lijevo/desno za pomak naprijed za 1 sekundu te gore/dolje za pomak od 10 sekundi.","mejs.volume-help-text":"Koristi strelice gore/dolje za pojaÄavanje ili stiÅ¡avanje.","mejs.unmute":"UkljuÄi zvuk","mejs.mute":"IskljuÄi zvuk","mejs.volume-slider":"PokazivaÄ razine zvuka","mejs.video-player":"Video preglednik","mejs.audio-player":"Audio preglednik","mejs.captions-subtitles":"Opisi/Prijevodi","mejs.none":"NiÅ¡ta","mejs.afrikaans":"AfriÄki","mejs.albanian":"Albanski","mejs.arabic":"Arapski","mejs.belarusian":"Bjeloruski","mejs.bulgarian":"Bugarski","mejs.catalan":"Katalonski","mejs.chinese":"Kineski","mejs.chinese-simplified":"Kineski (jednostavni)","mejs.chinese-traditional":"Kineski (tradicionalni)","mejs.croatian":"Hrvatski","mejs.czech":"ÄŒeÅ¡ki","mejs.danish":"Danski","mejs.dutch":"Nizozemski","mejs.english":"Engleski","mejs.estonian":"Estonski","mejs.filipino":"Filipinski","mejs.finnish":"Finski","mejs.french":"Francuski","mejs.galician":"Galicijski","mejs.german":"NjemaÄki","mejs.greek":"GrÄki","mejs.haitian-creole":"Haićanski kreolski","mejs.hebrew":"Hebrejski","mejs.hindi":"Hindski","mejs.hungarian":"MaÄ‘arski","mejs.icelandic":"Islandski","mejs.indonesian":"Indonezijski","mejs.irish":"Irski","mejs.italian":"Talijanski","mejs.japanese":"Japanski","mejs.korean":"Korejski","mejs.latvian":"Latvijski","mejs.lithuanian":"Litvanski","mejs.macedonian":"Makedonski","mejs.malay":"Malajski","mejs.maltese":"MalteÅ¡ki","mejs.norwegian":"NorveÅ¡ki","mejs.persian":"Perzijski","mejs.polish":"Poljski","mejs.portuguese":"Portugalski","mejs.romanian":"Rumunjski","mejs.russian":"Ruski","mejs.serbian":"Srpski","mejs.slovak":"SlovaÄki","mejs.slovenian":"Slovenski","mejs.spanish":"Å panjolski","mejs.swahili":"Svahili","mejs.swedish":"Å vedski","mejs.tagalog":"TagaloÅ¡ki","mejs.thai":"Tajski","mejs.turkish":"Turski","mejs.ukrainian":"Ukrajinski","mejs.vietnamese":"Vijetnamski","mejs.welsh":"VelÅ¡ki","mejs.yiddish":"JidiÅ¡ki"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/hu.js b/src/main/webapp/static/movie/mediaelementjs/lang/hu.js new file mode 100755 index 0000000000000000000000000000000000000000..f66dbe19417f1ee1ac1840508a73b338a17704a2 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/hu.js @@ -0,0 +1,90 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Hungarian + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.hu === undefined) { + exports.hu = { + "mejs.plural-form": 1, + "mejs.download-file": "Fájl letöltése", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Teljes képernyÅ‘", + "mejs.play": "Lejátszás", + "mejs.pause": "Szünet", + "mejs.time-slider": "IdÅ‘ csúszka", + "mejs.time-help-text": "Használja a Bal/Jobb nyÃl gombokat az egy másodperces léptetéshez, a Fel/Le nyÃl gombokat a tÃz másodperces léptetéshez.", + //"mejs.live-broadcast" : "Live Broadcast", + "mejs.volume-help-text": "Használja a Fel/Le nyÃl gombokat a hangerÅ‘ növeléséhez vagy csökkentéséhez.", + "mejs.unmute": "NémÃtás feloldása", + "mejs.mute": "NémÃtás", + "mejs.volume-slider": "HangerÅ‘csúszka", + "mejs.video-player": "Videolejátszó", + "mejs.audio-player": "Audiolejátszó", + "mejs.captions-subtitles": "KépaláÃrás/Feliratok", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "Nincs" + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + // "mejs.chinese": "Chinese", + // "mejs.chinese-simplified": "Chinese (Simplified)", + // "mejs.chinese-traditional": "Chinese (Traditional)", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/hu.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/hu.min.js new file mode 100644 index 0000000000000000000000000000000000000000..9fdd59262a79e757bc66b830ed81b4d6d59c3f2d --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/hu.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Hungarian + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function(a){if(a.hu===undefined){a.hu={"mejs.plural-form":1,"mejs.download-file":"Fájl letöltése","mejs.fullscreen":"Teljes képernyÅ‘","mejs.play":"Lejátszás","mejs.pause":"Szünet","mejs.time-slider":"IdÅ‘ csúszka","mejs.time-help-text":"Használja a Bal/Jobb nyÃl gombokat az egy másodperces léptetéshez, a Fel/Le nyÃl gombokat a tÃz másodperces léptetéshez.","mejs.volume-help-text":"Használja a Fel/Le nyÃl gombokat a hangerÅ‘ növeléséhez vagy csökkentéséhez.","mejs.unmute":"NémÃtás feloldása","mejs.mute":"NémÃtás","mejs.volume-slider":"HangerÅ‘csúszka","mejs.video-player":"Videolejátszó","mejs.audio-player":"Audiolejátszó","mejs.captions-subtitles":"KépaláÃrás/Feliratok","mejs.none":"Nincs"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/it.js b/src/main/webapp/static/movie/mediaelementjs/lang/it.js new file mode 100755 index 0000000000000000000000000000000000000000..2f794f0e160056c3c734ec2fbc9d3ebee6702689 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/it.js @@ -0,0 +1,90 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Italian + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha "SoftCreatR" Greuel + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.it === undefined) { + exports.it = { + "mejs.plural-form": 1, + "mejs.download-file": "Scaricare il file", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Schermo intero", + "mejs.play": "Eseguire", + "mejs.pause": "Pausa", + "mejs.time-slider": "Barra di scorrimento", + "mejs.time-help-text": "Utilizzare i tasti Freccia sinistra/Freccia destra per avanzare di un secondo, Freccia Su/Giù per avanzare dieci secondi.", + //"mejs.live-broadcast" : "Live Broadcast", + "mejs.volume-help-text": "Utilizzare i tasti Freccia Su/Giù per aumentare o diminuire il volume.", + "mejs.unmute": "Disattivare muto", + "mejs.mute": "Muto", + "mejs.volume-slider": "Barra del volume", + "mejs.video-player": "Lettore Video", + "mejs.audio-player": "Lettore Audio", + "mejs.captions-subtitles": "Acquisizioni/sottotitoli", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "Nessuno" + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + // "mejs.chinese": "Chinese", + // "mejs.chinese-simplified": "Chinese (Simplified)", + // "mejs.chinese-traditional": "Chinese (Traditional)", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/it.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/it.min.js new file mode 100644 index 0000000000000000000000000000000000000000..ebad6ea741de406c9ad74ca66b9ae88c363b696f --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/it.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Italian + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha "SoftCreatR" Greuel + * + * @see core/i18n.js + */ +(function(a){if(a.it===undefined){a.it={"mejs.plural-form":1,"mejs.download-file":"Scaricare il file","mejs.fullscreen":"Schermo intero","mejs.play":"Eseguire","mejs.pause":"Pausa","mejs.time-slider":"Barra di scorrimento","mejs.time-help-text":"Utilizzare i tasti Freccia sinistra/Freccia destra per avanzare di un secondo, Freccia Su/Giù per avanzare dieci secondi.","mejs.volume-help-text":"Utilizzare i tasti Freccia Su/Giù per aumentare o diminuire il volume.","mejs.unmute":"Disattivare muto","mejs.mute":"Muto","mejs.volume-slider":"Barra del volume","mejs.video-player":"Lettore Video","mejs.audio-player":"Lettore Audio","mejs.captions-subtitles":"Acquisizioni/sottotitoli","mejs.none":"Nessuno"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/ja.js b/src/main/webapp/static/movie/mediaelementjs/lang/ja.js new file mode 100755 index 0000000000000000000000000000000000000000..69fa1e469476c6862e500821332e51d3bc7b3590 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/ja.js @@ -0,0 +1,90 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Japanese + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha "SoftCreatR" Greuel + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.ja === undefined) { + exports.ja = { + "mejs.plural-form": 0, + "mejs.download-file": "ファイルをダウンãƒãƒ¼ãƒ‰ã™ã‚‹", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "全画é¢", + "mejs.play": "å†ç”Ÿ", + "mejs.pause": "ä¸€æ™‚åœæ¢", + "mejs.time-slider": "タイムスライダー", + "mejs.time-help-text": "1秒進ã‚ã‚‹ã«ã¯å·¦/å³çŸ¢å°ã‚’ã‚ーをã€10秒進ã‚ã‚‹ã«ã¯ä¸Š/下矢å°ã‚’使ã„ã¾ã™ã€‚", + //"mejs.live-broadcast" : "Live Broadcast", + "mejs.volume-help-text": "音é‡ã‚’上ã’ãŸã‚Šä¸‹ã’ãŸã‚Šã™ã‚‹ã«ã¯ã€ä¸Š/下矢å°ã‚’使ã„ã¾ã™ã€‚", + "mejs.unmute": "ミュートを解除", + "mejs.mute": "ミュート", + "mejs.volume-slider": "音é‡ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼", + "mejs.video-player": "ビデオプレーヤー", + "mejs.audio-player": "オーディオプレーヤー", + "mejs.captions-subtitles": "ã‚ャプション/å—幕", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "ãªã—" + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + // "mejs.chinese": "Chinese", + // "mejs.chinese-simplified": "Chinese (Simplified)", + // "mejs.chinese-traditional": "Chinese (Traditional)", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/ja.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/ja.min.js new file mode 100644 index 0000000000000000000000000000000000000000..e69a5b2a50c04b9e9ce915a772357eea30162543 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/ja.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Japanese + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha "SoftCreatR" Greuel + * + * @see core/i18n.js + */ +(function(a){if(a.ja===undefined){a.ja={"mejs.plural-form":0,"mejs.download-file":"ファイルをダウンãƒãƒ¼ãƒ‰ã™ã‚‹","mejs.fullscreen":"全画é¢","mejs.play":"å†ç”Ÿ","mejs.pause":"ä¸€æ™‚åœæ¢","mejs.time-slider":"タイムスライダー","mejs.time-help-text":"1秒進ã‚ã‚‹ã«ã¯å·¦/å³çŸ¢å°ã‚’ã‚ーをã€10秒進ã‚ã‚‹ã«ã¯ä¸Š/下矢å°ã‚’使ã„ã¾ã™ã€‚","mejs.volume-help-text":"音é‡ã‚’上ã’ãŸã‚Šä¸‹ã’ãŸã‚Šã™ã‚‹ã«ã¯ã€ä¸Š/下矢å°ã‚’使ã„ã¾ã™ã€‚","mejs.unmute":"ミュートを解除","mejs.mute":"ミュート","mejs.volume-slider":"音é‡ã‚¹ãƒ©ã‚¤ãƒ€ãƒ¼","mejs.video-player":"ビデオプレーヤー","mejs.audio-player":"オーディオプレーヤー","mejs.captions-subtitles":"ã‚ャプション/å—幕","mejs.none":"ãªã—"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/ko.js b/src/main/webapp/static/movie/mediaelementjs/lang/ko.js new file mode 100755 index 0000000000000000000000000000000000000000..2d577de64f032c1fcfd01af020c65c1e8d1f5697 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/ko.js @@ -0,0 +1,90 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Korean + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha "SoftCreatR" Greuel + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.ko === undefined) { + exports.ko = { + "mejs.plural-form": 0, + "mejs.download-file": "íŒŒì¼ ë‹¤ìš´ë¡œë“œ", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "ì „ì²´í™”ë©´", + "mejs.play": "ìž‘ë™", + "mejs.pause": "ì •ì§€", + "mejs.time-slider": "시간 슬ë¼ì´ë”", + "mejs.time-help-text": "1ì´ˆ ì „ì§„í•˜ë ¤ë©´ 좌/우측 화살표를 ì‚¬ìš©í•˜ì‹œê³ 10ì´ˆ ì „ì§„í•˜ë ¤ë©´ 위/아래 화살표를 사용하세요.", + //"mejs.live-broadcast" : "Live Broadcast", + "mejs.volume-help-text": "ë³¼ë¥¨ì„ ë†’ì´ê±°ë‚˜ ë‚®ì¶”ë ¤ë©´ 위/아래 화살표를 ì´ìš©í•˜ì„¸ìš”.", + "mejs.unmute": "ìŒì†Œê±° í•´ì œ", + "mejs.mute": "ë§ ì—†ëŠ”", + "mejs.volume-slider": "볼륨 슬ë¼ì´ë”", + "mejs.video-player": "비디오 í”Œë ˆì´ì–´", + "mejs.audio-player": "오디오 í”Œë ˆì´ì–´", + "mejs.captions-subtitles": "캡션/ìžë§‰", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "ì—†ìŒ" + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + // "mejs.chinese": "Chinese", + // "mejs.chinese-simplified": "Chinese (Simplified)", + // "mejs.chinese-traditional": "Chinese (Traditional)", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/ko.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/ko.min.js new file mode 100644 index 0000000000000000000000000000000000000000..b69081e992e711feff3ed006df52e4c310445596 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/ko.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Korean + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha "SoftCreatR" Greuel + * + * @see core/i18n.js + */ +(function(a){if(a.ko===undefined){a.ko={"mejs.plural-form":0,"mejs.download-file":"íŒŒì¼ ë‹¤ìš´ë¡œë“œ","mejs.fullscreen":"ì „ì²´í™”ë©´","mejs.play":"ìž‘ë™","mejs.pause":"ì •ì§€","mejs.time-slider":"시간 슬ë¼ì´ë”","mejs.time-help-text":"1ì´ˆ ì „ì§„í•˜ë ¤ë©´ 좌/우측 화살표를 ì‚¬ìš©í•˜ì‹œê³ 10ì´ˆ ì „ì§„í•˜ë ¤ë©´ 위/아래 화살표를 사용하세요.","mejs.volume-help-text":"ë³¼ë¥¨ì„ ë†’ì´ê±°ë‚˜ ë‚®ì¶”ë ¤ë©´ 위/아래 화살표를 ì´ìš©í•˜ì„¸ìš”.","mejs.unmute":"ìŒì†Œê±° í•´ì œ","mejs.mute":"ë§ ì—†ëŠ”","mejs.volume-slider":"볼륨 슬ë¼ì´ë”","mejs.video-player":"비디오 í”Œë ˆì´ì–´","mejs.audio-player":"오디오 í”Œë ˆì´ì–´","mejs.captions-subtitles":"캡션/ìžë§‰","mejs.none":"ì—†ìŒ"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/nl.js b/src/main/webapp/static/movie/mediaelementjs/lang/nl.js new file mode 100755 index 0000000000000000000000000000000000000000..1ab99c4c3670b2fe4a36cb92e3f44bd2c8c1fb52 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/nl.js @@ -0,0 +1,91 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Dutch + * + * @author + * Leonard de Ruijter, Twitter: @LeonarddR + * Jalios (Twitter: @Jalios) + * Sascha "SoftCreatR" Greuel + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.nl === undefined) { + exports.nl = { + "mejs.plural-form": 1, + "mejs.download-file": "Bestand downloaden", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Volledig scherm", + "mejs.play": "Afspelen", + "mejs.pause": "Pauzeren", + "mejs.time-slider": "Tijd schuifbalk", + "mejs.time-help-text": "Gebruik pijl naar links/rechts om per seconde te springen, pijl omhoog/omlaag om per tien seconden te springen.", + //"mejs.live-broadcast" : "Live Broadcast", + "mejs.volume-help-text": "Gebruik pijl omhoog/omlaag om het volume te verhogen/verlagen.", + "mejs.unmute": "Dempen opheffen", + "mejs.mute": "Dempen", + "mejs.volume-slider": "Volume schuifbalk", + "mejs.video-player": "Videospeler", + "mejs.audio-player": "Audiospeler", + "mejs.captions-subtitles": "Bijschriften/ondertiteling", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "Geen" + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + // "mejs.chinese": "Chinese", + // "mejs.chinese-simplified": "Chinese (Simplified)", + // "mejs.chinese-traditional": "Chinese (Traditional)", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/nl.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/nl.min.js new file mode 100644 index 0000000000000000000000000000000000000000..3283945ac596b3ad136b59d3a25bd85f81292476 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/nl.min.js @@ -0,0 +1,14 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Dutch + * + * @author + * Leonard de Ruijter, Twitter: @LeonarddR + * Jalios (Twitter: @Jalios) + * Sascha "SoftCreatR" Greuel + * + * @see core/i18n.js + */ +(function(a){if(a.nl===undefined){a.nl={"mejs.plural-form":1,"mejs.download-file":"Bestand downloaden","mejs.fullscreen":"Volledig scherm","mejs.play":"Afspelen","mejs.pause":"Pauzeren","mejs.time-slider":"Tijd schuifbalk","mejs.time-help-text":"Gebruik pijl naar links/rechts om per seconde te springen, pijl omhoog/omlaag om per tien seconden te springen.","mejs.volume-help-text":"Gebruik pijl omhoog/omlaag om het volume te verhogen/verlagen.","mejs.unmute":"Dempen opheffen","mejs.mute":"Dempen","mejs.volume-slider":"Volume schuifbalk","mejs.video-player":"Videospeler","mejs.audio-player":"Audiospeler","mejs.captions-subtitles":"Bijschriften/ondertiteling","mejs.none":"Geen"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/pl.js b/src/main/webapp/static/movie/mediaelementjs/lang/pl.js new file mode 100755 index 0000000000000000000000000000000000000000..77bd398afcc678ca50c3e004a6d1197604f2b921 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/pl.js @@ -0,0 +1,90 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Polish + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.pl === undefined) { + exports.pl = { + "mejs.plural-form": 9, + "mejs.download-file": "Pobierz plik", + "mejs.install-flash": "Twoja przeglÄ…darka nie ma włączonej lub zainstalowanej wtyczki Flash Player. Prosimy jÄ… włączyć lub pobrać najnowszÄ… wersjÄ™ ze strony https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "PeÅ‚ny ekran", + "mejs.play": "Odtwarzaj", + "mejs.pause": "Wstrzymaj", + "mejs.time-slider": "Suwak czasu", + "mejs.time-help-text": "StrzaÅ‚ki w lewo/w prawo powodujÄ… przewijanie o sekundÄ™, strzaÅ‚ki w górÄ™/w dół o dziesięć sekund.", + "mejs.live-broadcast": "Transmisja na żywo", + "mejs.volume-help-text": "Aby zwiÄ™kszyć lub zmniejszyć gÅ‚oÅ›ność, użyj strzaÅ‚ek w górÄ™/w dół.", + "mejs.unmute": "Wyłącz wyciszenie", + "mejs.mute": "Wycisz", + "mejs.volume-slider": "Suwak gÅ‚oÅ›noÅ›ci", + "mejs.video-player": "Odtwarzacz wideo", + "mejs.audio-player": "Odtwarzacz audio", + "mejs.captions-subtitles": "Podpisy/napisy", + "mejs.captions-chapters": "RozdziaÅ‚y", + "mejs.none": "Brak", + "mejs.afrikaans": "AfrykaÅ„ski", + "mejs.albanian": "AlbaÅ„ski", + "mejs.arabic": "Arabski", + "mejs.belarusian": "BiaÅ‚oruski", + "mejs.bulgarian": "BuÅ‚garski", + "mejs.catalan": "KataloÅ„ski", + "mejs.chinese": "ChiÅ„ski", + "mejs.chinese-simplified": "ChiÅ„ski (uproszczony)", + "mejs.chinese-traditional": "ChiÅ„ski (tradycyjny)", + "mejs.croatian": "Chorwacki", + "mejs.czech": "Czeski", + "mejs.danish": "DuÅ„ski", + "mejs.dutch": "Holenderski", + "mejs.english": "Angielski", + "mejs.estonian": "EstoÅ„ski", + "mejs.filipino": "FilipiÅ„ski", + "mejs.finnish": "FiÅ„ski", + "mejs.french": "Francuski", + "mejs.galician": "Galicyjski", + "mejs.german": "Niemiecki", + "mejs.greek": "Grecki", + "mejs.haitian-creole": "HaitaÅ„ski", + "mejs.hebrew": "Hebrajski", + "mejs.hindi": "Hinduski", + "mejs.hungarian": "WÄ™gierski", + "mejs.icelandic": "Islandzki", + "mejs.indonesian": "Indonezyjski", + "mejs.irish": "Irlandzki", + "mejs.italian": "WÅ‚oski", + "mejs.japanese": "JapoÅ„ski", + "mejs.korean": "KoreaÅ„ski", + "mejs.latvian": "Åotewski", + "mejs.lithuanian": "Litewski", + "mejs.macedonian": "MacedoÅ„ski", + "mejs.malay": "Malajski", + "mejs.maltese": "MaltaÅ„ski", + "mejs.norwegian": "Norweski", + "mejs.persian": "Perski", + "mejs.polish": "Polski", + "mejs.portuguese": "Portugalski", + "mejs.romanian": "RumuÅ„ski", + "mejs.russian": "Rosyjski", + "mejs.serbian": "Serbski", + "mejs.slovak": "SÅ‚owacki", + "mejs.slovenian": "SÅ‚oweÅ„ski", + "mejs.spanish": "HiszpaÅ„ski", + "mejs.swahili": "Suahili", + "mejs.swedish": "Szwedzki", + "mejs.tagalog": "Tagalski", + "mejs.thai": "Tajski", + "mejs.turkish": "Turecki", + "mejs.ukrainian": "UkraiÅ„ski", + "mejs.vietnamese": "Wietnamski", + "mejs.welsh": "Walijski", + "mejs.yiddish": "Jidysz" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/pl.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/pl.min.js new file mode 100644 index 0000000000000000000000000000000000000000..728fae5668f6d0b518888b2224c1371c6e8bc316 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/pl.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Polish + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function(a){if(a.pl===undefined){a.pl={"mejs.plural-form":9,"mejs.download-file":"Pobierz plik","mejs.install-flash":"Twoja przeglÄ…darka nie ma włączonej lub zainstalowanej wtyczki Flash Player. Prosimy jÄ… włączyć lub pobrać najnowszÄ… wersjÄ™ ze strony https://get.adobe.com/flashplayer/","mejs.fullscreen":"PeÅ‚ny ekran","mejs.play":"Odtwarzaj","mejs.pause":"Wstrzymaj","mejs.time-slider":"Suwak czasu","mejs.time-help-text":"StrzaÅ‚ki w lewo/w prawo powodujÄ… przewijanie o sekundÄ™, strzaÅ‚ki w górÄ™/w dół o dziesięć sekund.","mejs.live-broadcast":"Transmisja na żywo","mejs.volume-help-text":"Aby zwiÄ™kszyć lub zmniejszyć gÅ‚oÅ›ność, użyj strzaÅ‚ek w górÄ™/w dół.","mejs.unmute":"Wyłącz wyciszenie","mejs.mute":"Wycisz","mejs.volume-slider":"Suwak gÅ‚oÅ›noÅ›ci","mejs.video-player":"Odtwarzacz wideo","mejs.audio-player":"Odtwarzacz audio","mejs.captions-subtitles":"Podpisy/napisy","mejs.captions-chapters":"RozdziaÅ‚y","mejs.none":"Brak","mejs.afrikaans":"AfrykaÅ„ski","mejs.albanian":"AlbaÅ„ski","mejs.arabic":"Arabski","mejs.belarusian":"BiaÅ‚oruski","mejs.bulgarian":"BuÅ‚garski","mejs.catalan":"KataloÅ„ski","mejs.chinese":"ChiÅ„ski","mejs.chinese-simplified":"ChiÅ„ski (uproszczony)","mejs.chinese-traditional":"ChiÅ„ski (tradycyjny)","mejs.croatian":"Chorwacki","mejs.czech":"Czeski","mejs.danish":"DuÅ„ski","mejs.dutch":"Holenderski","mejs.english":"Angielski","mejs.estonian":"EstoÅ„ski","mejs.filipino":"FilipiÅ„ski","mejs.finnish":"FiÅ„ski","mejs.french":"Francuski","mejs.galician":"Galicyjski","mejs.german":"Niemiecki","mejs.greek":"Grecki","mejs.haitian-creole":"HaitaÅ„ski","mejs.hebrew":"Hebrajski","mejs.hindi":"Hinduski","mejs.hungarian":"WÄ™gierski","mejs.icelandic":"Islandzki","mejs.indonesian":"Indonezyjski","mejs.irish":"Irlandzki","mejs.italian":"WÅ‚oski","mejs.japanese":"JapoÅ„ski","mejs.korean":"KoreaÅ„ski","mejs.latvian":"Åotewski","mejs.lithuanian":"Litewski","mejs.macedonian":"MacedoÅ„ski","mejs.malay":"Malajski","mejs.maltese":"MaltaÅ„ski","mejs.norwegian":"Norweski","mejs.persian":"Perski","mejs.polish":"Polski","mejs.portuguese":"Portugalski","mejs.romanian":"RumuÅ„ski","mejs.russian":"Rosyjski","mejs.serbian":"Serbski","mejs.slovak":"SÅ‚owacki","mejs.slovenian":"SÅ‚oweÅ„ski","mejs.spanish":"HiszpaÅ„ski","mejs.swahili":"Suahili","mejs.swedish":"Szwedzki","mejs.tagalog":"Tagalski","mejs.thai":"Tajski","mejs.turkish":"Turecki","mejs.ukrainian":"UkraiÅ„ski","mejs.vietnamese":"Wietnamski","mejs.welsh":"Walijski","mejs.yiddish":"Jidysz"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/pt-br.js b/src/main/webapp/static/movie/mediaelementjs/lang/pt-br.js new file mode 100755 index 0000000000000000000000000000000000000000..4357e70946028b2095be47b48a7f711450953325 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/pt-br.js @@ -0,0 +1,91 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Brazilian (Portuguese) + * + * @author + * Armando Meziat (Twitter: @odnamrataizem) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports['pt-BR'] === undefined) { + exports['pt-BR'] = { + "mejs.plural-form": 2, + "mejs.download-file": "Baixar arquivo", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Tela inteira", + //"mejs.play": "Play", + //"mejs.pause": "Pause", + //"mejs.time-slider": "Time Slider", + //"mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.", + //"mejs.live-broadcast" : "Live Broadcast", + //"mejs.time-skip-back": "Skip back %1 second(s)", + //"mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.", + "mejs.unmute": "Tirar silêncio", + "mejs.mute": "Silenciar", + //"mejs.volume-slider": "Volume Slider", + //"mejs.video-player": "Video Player", + //"mejs.audio-player": "Audio Player", + "mejs.captions-subtitles": "Legendas", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "Sem legendas" + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + // "mejs.chinese": "Chinese", + // "mejs.chinese-simplified": "Chinese (Simplified)", + // "mejs.chinese-traditional": "Chinese (Traditional)", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/pt-br.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/pt-br.min.js new file mode 100644 index 0000000000000000000000000000000000000000..5c0fcf8aecfd495c8b702cc243e27e19cfbbe458 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/pt-br.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Brazilian (Portuguese) + * + * @author + * Armando Meziat (Twitter: @odnamrataizem) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function(a){if(a["pt-BR"]===undefined){a["pt-BR"]={"mejs.plural-form":2,"mejs.download-file":"Baixar arquivo","mejs.fullscreen":"Tela inteira","mejs.unmute":"Tirar silêncio","mejs.mute":"Silenciar","mejs.captions-subtitles":"Legendas","mejs.none":"Sem legendas"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/pt.js b/src/main/webapp/static/movie/mediaelementjs/lang/pt.js new file mode 100755 index 0000000000000000000000000000000000000000..7d5a4a84748f7c61da31e212fa34fee409a8ba31 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/pt.js @@ -0,0 +1,92 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Portuguese + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.pt === undefined) { + exports.pt = { + "mejs.plural-form": 1, + "mejs.download-file": "Descarregar o ficheiro", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Ecrã completo", + "mejs.play": "Reprodução", + "mejs.pause": "Pausa", + "mejs.time-slider": "Deslizador do tempo", + "mejs.time-help-text": "Use as teclas das setas para a esquerda/direita para avançar um segundo, e as setas para cima/baixo para avançar dez segundos.", + //"mejs.live-broadcast" : "Live Broadcast", + + + "mejs.volume-help-text": "Use as teclas das setas para cima/baixo para aumentar ou diminuir o volume.", + "mejs.unmute": "Voltar ao som", + "mejs.mute": "Silêncio", + "mejs.volume-slider": "Deslizador do volume", + "mejs.video-player": "Leitor de vÃdeo", + "mejs.audio-player": "Leitor de áudio", + "mejs.captions-subtitles": "Legendas", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "Nenhum" + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + // "mejs.chinese": "Chinese", + // "mejs.chinese-simplified": "Chinese (Simplified)", + // "mejs.chinese-traditional": "Chinese (Traditional)", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/pt.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/pt.min.js new file mode 100644 index 0000000000000000000000000000000000000000..44633d99d75b5247f022865edb61fbbe2ac77c94 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/pt.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Portuguese + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function(a){if(a.pt===undefined){a.pt={"mejs.plural-form":1,"mejs.download-file":"Descarregar o ficheiro","mejs.fullscreen":"Ecrã completo","mejs.play":"Reprodução","mejs.pause":"Pausa","mejs.time-slider":"Deslizador do tempo","mejs.time-help-text":"Use as teclas das setas para a esquerda/direita para avançar um segundo, e as setas para cima/baixo para avançar dez segundos.","mejs.volume-help-text":"Use as teclas das setas para cima/baixo para aumentar ou diminuir o volume.","mejs.unmute":"Voltar ao som","mejs.mute":"Silêncio","mejs.volume-slider":"Deslizador do volume","mejs.video-player":"Leitor de vÃdeo","mejs.audio-player":"Leitor de áudio","mejs.captions-subtitles":"Legendas","mejs.none":"Nenhum"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/ro.js b/src/main/webapp/static/movie/mediaelementjs/lang/ro.js new file mode 100755 index 0000000000000000000000000000000000000000..cabbe842601f9dc0049348d64860493c5a9ff288 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/ro.js @@ -0,0 +1,90 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Romanian + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.ro === undefined) { + exports.ro = { + "mejs.plural-form": 5, + "mejs.download-file": "Descarcă fiÅŸierul", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Ecran complet", + "mejs.play": "Redare", + "mejs.pause": "Pauză", + "mejs.time-slider": "Cursor timp", + "mejs.time-help-text": "Utilizează tastele săgeată Stânga/Dreapta pentru a avansa o secundă ÅŸi săgeÅ£ile Sus/Jos pentru a avansa zece secunde.", + //"mejs.live-broadcast" : "Live Broadcast", + "mejs.volume-help-text": "Utilizează tastele de săgeată Sus/Jos pentru a creÅŸte/micÅŸora volumul", + "mejs.unmute": "Cu sunet", + "mejs.mute": "Fără sunet", + "mejs.volume-slider": "Cursor volum", + "mejs.video-player": "Player video", + "mejs.audio-player": "Player audio", + "mejs.captions-subtitles": "Legende/Subtitrări", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "Niciunul" + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + // "mejs.chinese": "Chinese", + // "mejs.chinese-simplified": "Chinese (Simplified)", + // "mejs.chinese-traditional": "Chinese (Traditional)", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/ro.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/ro.min.js new file mode 100644 index 0000000000000000000000000000000000000000..c253b7960c0114e43b547396af9f27145a93ed00 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/ro.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Romanian + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function(a){if(a.ro===undefined){a.ro={"mejs.plural-form":5,"mejs.download-file":"Descarcă fiÅŸierul","mejs.fullscreen":"Ecran complet","mejs.play":"Redare","mejs.pause":"Pauză","mejs.time-slider":"Cursor timp","mejs.time-help-text":"Utilizează tastele săgeată Stânga/Dreapta pentru a avansa o secundă ÅŸi săgeÅ£ile Sus/Jos pentru a avansa zece secunde.","mejs.volume-help-text":"Utilizează tastele de săgeată Sus/Jos pentru a creÅŸte/micÅŸora volumul","mejs.unmute":"Cu sunet","mejs.mute":"Fără sunet","mejs.volume-slider":"Cursor volum","mejs.video-player":"Player video","mejs.audio-player":"Player audio","mejs.captions-subtitles":"Legende/Subtitrări","mejs.none":"Niciunul"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/ru.js b/src/main/webapp/static/movie/mediaelementjs/lang/ru.js new file mode 100755 index 0000000000000000000000000000000000000000..bd87300eaa0b7796c2115a2ba52a1a1827d7c5ea --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/ru.js @@ -0,0 +1,90 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Russian + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.ru === undefined) { + exports.ru = { + "mejs.plural-form": 7, + "mejs.download-file": "Скачать файл", + "mejs.install-flash": "Flash player в вашем браузере не уÑтановлен или отключен. ПожалуйÑта включите ваш Flash player или Ñкачайте поÑледнюю верÑию Ñ https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "ПолноÑкранный режим", + "mejs.play": "ВоÑпроизвеÑти", + "mejs.pause": "Пауза", + "mejs.time-slider": "Слайдер времени", + "mejs.time-help-text": "ИÑпользуйте Левую/Правую клавиши Ñо Ñтрелками, чтобы продвинутьÑÑ Ð½Ð° одну Ñекунду, клавиши Ñо Ñтрелками Вверх/Вниз, чтобы продвинутьÑÑ Ð½Ð° деÑÑть Ñекунд.", + "mejs.live-broadcast" : "ПрÑÐ¼Ð°Ñ Ñ‚Ñ€Ð°Ð½ÑлÑциÑ", + "mejs.volume-help-text": "ИÑпользуйте клавиши Ñо Ñтрелками Вверх/Вниз, чтобы увеличить или уменьшить громкоÑть.", + "mejs.unmute": "Включить звук", + "mejs.mute": "Отключить звук", + "mejs.volume-slider": "Слайдер громкоÑти", + "mejs.video-player": "Видеоплеер", + "mejs.audio-player": "Ðудиоплеер", + "mejs.captions-subtitles": "Титры/Субтитры", + "mejs.captions-chapters": "Главы", + "mejs.none": "Ðет", + "mejs.afrikaans": "ÐфриканÑкий", + "mejs.albanian": "ÐлбанÑкий", + "mejs.arabic": "ÐрабÑкий", + "mejs.belarusian": "БелоруÑÑкий", + "mejs.bulgarian": "БолгарÑкий", + "mejs.catalan": "КаталонÑкий", + "mejs.chinese": "КитайÑкий", + "mejs.chinese-simplified": "КитайÑкий (упрощенный)", + "mejs.chinese-traditional": "Chinese (традиционный)", + "mejs.croatian": "ХорватÑкий", + "mejs.czech": "ЧешÑкий", + "mejs.danish": "ДатÑкий", + "mejs.dutch": "ГолландÑкий", + "mejs.english": "ÐнглийÑкий", + "mejs.estonian": "ÐÑтонÑкий", + "mejs.filipino": "ФилиппинÑкий", + "mejs.finnish": "ФинÑкий", + "mejs.french": "ФранцузÑкий", + "mejs.galician": "ГалиÑийÑкий", + "mejs.german": "Ðемецкий", + "mejs.greek": "ГречеÑкий", + "mejs.haitian-creole": "ГаитÑнÑкий креольÑкий", + "mejs.hebrew": "Иврит", + "mejs.hindi": "Хинди", + "mejs.hungarian": "ВенгерÑкий", + "mejs.icelandic": "ИÑландÑкий", + "mejs.indonesian": "ИндонезийÑкий", + "mejs.irish": "ИрландÑкий", + "mejs.italian": "ИтальÑнÑкий", + "mejs.japanese": "ЯпонÑкий", + "mejs.korean": "КорейÑкий", + "mejs.latvian": "ЛатышÑкий", + "mejs.lithuanian": "ЛитовÑкий", + "mejs.macedonian": "МакедонÑкий", + "mejs.malay": "МалайÑкий", + "mejs.maltese": "МальтийÑкий", + "mejs.norwegian": "ÐорвежÑкий", + "mejs.persian": "ПерÑидÑкий", + "mejs.polish": "ПольÑкий", + "mejs.portuguese": "ПортугальÑкий", + "mejs.romanian": "РумынÑкий", + "mejs.russian": "РуÑÑкий", + "mejs.serbian": "СербÑкий", + "mejs.slovak": "Словацкий", + "mejs.slovenian": "СловенÑкий", + "mejs.spanish": "ИÑпанÑкий", + "mejs.swahili": "Суахили", + "mejs.swedish": "ШведÑкий", + "mejs.tagalog": "ТагальÑкий", + "mejs.thai": "ТайÑкий", + "mejs.turkish": "Турецкий", + "mejs.ukrainian": "УкраинÑкий", + "mejs.vietnamese": "ВьетнамÑкий", + "mejs.welsh": "ВаллийÑкий", + "mejs.yiddish": "Идиш" + }; + } +})(mejs.i18n); diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/ru.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/ru.min.js new file mode 100644 index 0000000000000000000000000000000000000000..f9d98288b482f73afe670dd2329f596945174f68 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/ru.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Russian + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function(a){if(a.ru===undefined){a.ru={"mejs.plural-form":7,"mejs.download-file":"Скачать файл","mejs.install-flash":"Flash player в вашем браузере не уÑтановлен или отключен. ПожалуйÑта включите ваш Flash player или Ñкачайте поÑледнюю верÑию Ñ https://get.adobe.com/flashplayer/","mejs.fullscreen":"ПолноÑкранный режим","mejs.play":"ВоÑпроизвеÑти","mejs.pause":"Пауза","mejs.time-slider":"Слайдер времени","mejs.time-help-text":"ИÑпользуйте Левую/Правую клавиши Ñо Ñтрелками, чтобы продвинутьÑÑ Ð½Ð° одну Ñекунду, клавиши Ñо Ñтрелками Вверх/Вниз, чтобы продвинутьÑÑ Ð½Ð° деÑÑть Ñекунд.","mejs.live-broadcast":"ПрÑÐ¼Ð°Ñ Ñ‚Ñ€Ð°Ð½ÑлÑциÑ","mejs.volume-help-text":"ИÑпользуйте клавиши Ñо Ñтрелками Вверх/Вниз, чтобы увеличить или уменьшить громкоÑть.","mejs.unmute":"Включить звук","mejs.mute":"Отключить звук","mejs.volume-slider":"Слайдер громкоÑти","mejs.video-player":"Видеоплеер","mejs.audio-player":"Ðудиоплеер","mejs.captions-subtitles":"Титры/Субтитры","mejs.captions-chapters":"Главы","mejs.none":"Ðет","mejs.afrikaans":"ÐфриканÑкий","mejs.albanian":"ÐлбанÑкий","mejs.arabic":"ÐрабÑкий","mejs.belarusian":"БелоруÑÑкий","mejs.bulgarian":"БолгарÑкий","mejs.catalan":"КаталонÑкий","mejs.chinese":"КитайÑкий","mejs.chinese-simplified":"КитайÑкий (упрощенный)","mejs.chinese-traditional":"Chinese (традиционный)","mejs.croatian":"ХорватÑкий","mejs.czech":"ЧешÑкий","mejs.danish":"ДатÑкий","mejs.dutch":"ГолландÑкий","mejs.english":"ÐнглийÑкий","mejs.estonian":"ÐÑтонÑкий","mejs.filipino":"ФилиппинÑкий","mejs.finnish":"ФинÑкий","mejs.french":"ФранцузÑкий","mejs.galician":"ГалиÑийÑкий","mejs.german":"Ðемецкий","mejs.greek":"ГречеÑкий","mejs.haitian-creole":"ГаитÑнÑкий креольÑкий","mejs.hebrew":"Иврит","mejs.hindi":"Хинди","mejs.hungarian":"ВенгерÑкий","mejs.icelandic":"ИÑландÑкий","mejs.indonesian":"ИндонезийÑкий","mejs.irish":"ИрландÑкий","mejs.italian":"ИтальÑнÑкий","mejs.japanese":"ЯпонÑкий","mejs.korean":"КорейÑкий","mejs.latvian":"ЛатышÑкий","mejs.lithuanian":"ЛитовÑкий","mejs.macedonian":"МакедонÑкий","mejs.malay":"МалайÑкий","mejs.maltese":"МальтийÑкий","mejs.norwegian":"ÐорвежÑкий","mejs.persian":"ПерÑидÑкий","mejs.polish":"ПольÑкий","mejs.portuguese":"ПортугальÑкий","mejs.romanian":"РумынÑкий","mejs.russian":"РуÑÑкий","mejs.serbian":"СербÑкий","mejs.slovak":"Словацкий","mejs.slovenian":"СловенÑкий","mejs.spanish":"ИÑпанÑкий","mejs.swahili":"Суахили","mejs.swedish":"ШведÑкий","mejs.tagalog":"ТагальÑкий","mejs.thai":"ТайÑкий","mejs.turkish":"Турецкий","mejs.ukrainian":"УкраинÑкий","mejs.vietnamese":"ВьетнамÑкий","mejs.welsh":"ВаллийÑкий","mejs.yiddish":"Идиш"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/sk.js b/src/main/webapp/static/movie/mediaelementjs/lang/sk.js new file mode 100755 index 0000000000000000000000000000000000000000..d8b840bff143dc436d380616d66c81b693f695d9 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/sk.js @@ -0,0 +1,90 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Slovak + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.sk === undefined) { + exports.sk = { + "mejs.plural-form": 8, + "mejs.download-file": "PrevziaÅ¥ súbor", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Celá obrazovka", + "mejs.play": "PrehraÅ¥", + "mejs.pause": "PozastaviÅ¥", + "mejs.time-slider": "PosúvaÄ Äasu", + "mejs.time-help-text": "Klávesmi so Å¡Ãpkou doľava/doprava posuniete o jednu sekundu, Å¡Ãpkami nahor/ nadol posuniete o desaÅ¥ sekúnd.", + //"mejs.live-broadcast" : "Live Broadcast", + "mejs.volume-help-text": "Klávesmi so Å¡Ãpkou nahor/nadol zvýšite alebo znÞite hlasitosÅ¥.", + "mejs.unmute": "ZruÅ¡iÅ¥ stlmenie", + "mejs.mute": "StlmiÅ¥", + "mejs.volume-slider": "PosúvaÄ hlasitosti", + "mejs.video-player": "PrehrávaÄ videa", + "mejs.audio-player": "PrehrávaÄ zvuku", + "mejs.captions-subtitles": "Skryté titulky/Titulky", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "Žiadne" + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + // "mejs.chinese": "Chinese", + // "mejs.chinese-simplified": "Chinese (Simplified)", + // "mejs.chinese-traditional": "Chinese (Traditional)", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/sk.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/sk.min.js new file mode 100644 index 0000000000000000000000000000000000000000..9f5fadaac030290fa2e34f86acd786239f79b05b --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/sk.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Slovak + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function(a){if(a.sk===undefined){a.sk={"mejs.plural-form":8,"mejs.download-file":"PrevziaÅ¥ súbor","mejs.fullscreen":"Celá obrazovka","mejs.play":"PrehraÅ¥","mejs.pause":"PozastaviÅ¥","mejs.time-slider":"PosúvaÄ Äasu","mejs.time-help-text":"Klávesmi so Å¡Ãpkou doľava/doprava posuniete o jednu sekundu, Å¡Ãpkami nahor/ nadol posuniete o desaÅ¥ sekúnd.","mejs.volume-help-text":"Klávesmi so Å¡Ãpkou nahor/nadol zvýšite alebo znÞite hlasitosÅ¥.","mejs.unmute":"ZruÅ¡iÅ¥ stlmenie","mejs.mute":"StlmiÅ¥","mejs.volume-slider":"PosúvaÄ hlasitosti","mejs.video-player":"PrehrávaÄ videa","mejs.audio-player":"PrehrávaÄ zvuku","mejs.captions-subtitles":"Skryté titulky/Titulky","mejs.none":"Žiadne"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/sv.js b/src/main/webapp/static/movie/mediaelementjs/lang/sv.js new file mode 100755 index 0000000000000000000000000000000000000000..edf00eff3a4bf8b71b9f337bfc7098c5076c635b --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/sv.js @@ -0,0 +1,89 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Swedish + * + * @author + * Petter (Twitter: @petter_j) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.sv === undefined) { + exports.sv = { + "mejs.plural-form": 1, + "mejs.download-file": "Ladda ner fil", + "mejs.install-flash": "Du använder en webbläsare som inte har Flash Player aktiverat eller installerad. Aktivera Flash Player eller hämta den senaste versionen frÃ¥n https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Fullskärm", + "mejs.play": "Spela", + "mejs.pause": "Pausa", + "mejs.time-slider": "Tidslinje", + "mejs.time-help-text": "Använd Vänster/Höger piltangent för att spola en sekund, Upp/Ner piltangent spola tio sekunder.", + "mejs.live-broadcast": "Livesändning", + "mejs.volume-help-text": "Använd Upp/Ner piltangent för att öka eller minska volymen.", + "mejs.unmute": "Ljud pÃ¥", + "mejs.mute": "Ljud av", + "mejs.volume-slider": "Volymkontroll", + "mejs.video-player": "Videospelare", + "mejs.audio-player": "Ljudspelare", + "mejs.captions-subtitles": "Textning/Undertexter", + "mejs.captions-chapters": "Kapitel", + "mejs.none": "Ingen", + "mejs.afrikaans": "Afrikaans", + "mejs.albanian": "Albanska", + "mejs.arabic": "Arabiska", + "mejs.belarusian": "Nederländska", + "mejs.bulgarian": "Bulgariska", + "mejs.catalan": "Katalanska", + "mejs.chinese": "Kinesiska", + "mejs.chinese-simplified": "Kinesiska (Förenklad)", + "mejs.chinese-traditional": "Kinesiska (Traditionell)", + "mejs.croatian": "Kroatiska", + "mejs.czech": "Tjeckiska", + "mejs.danish": "Danska", + "mejs.dutch": "Holländska", + "mejs.english": "Engelska", + "mejs.estonian": "Estniska", + "mejs.filipino": "Filipinska", + "mejs.finnish": "Finska", + "mejs.french": "Franska", + "mejs.galician": "Galiciska", + "mejs.german": "Tyska", + "mejs.greek": "Grekiska", + "mejs.haitian-creole": "Haitisk kreolsk", + "mejs.hebrew": "Hebreiska", + "mejs.hindi": "Hindi", + "mejs.hungarian": "Ungerska", + "mejs.icelandic": "Isländska", + "mejs.indonesian": "Indonesiska", + "mejs.irish": "Irländska", + "mejs.italian": "Italienska", + "mejs.japanese": "Japanska", + "mejs.korean": "Koreanska", + "mejs.latvian": "Lettiska", + "mejs.lithuanian": "Litauiska", + "mejs.macedonian": "Makedonska", + "mejs.malay": "Malaysiska", + "mejs.maltese": "Maltesiska", + "mejs.norwegian": "Norska", + "mejs.persian": "Persiska", + "mejs.polish": "Polska", + "mejs.portuguese": "Portugisiska", + "mejs.romanian": "Romänska", + "mejs.russian": "Ryska", + "mejs.serbian": "Serbiska", + "mejs.slovak": "Slovakiska", + "mejs.slovenian": "Slovenska", + "mejs.spanish": "Spanska", + "mejs.swahili": "Swahiliska", + "mejs.swedish": "Svenska", + "mejs.tagalog": "Tagalogiska", + "mejs.thai": "Thailänska", + "mejs.turkish": "Turkiska", + "mejs.ukrainian": "Ukrainska", + "mejs.vietnamese": "Vietnamesiska", + "mejs.welsh": "Skotska", + "mejs.yiddish": "Jiddisch" + }; + } +})(mejs.i18n); diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/sv.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/sv.min.js new file mode 100644 index 0000000000000000000000000000000000000000..d079c009a0a9fbe81b67d32fd12055d81addaaf3 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/sv.min.js @@ -0,0 +1,12 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Swedish + * + * @author + * Petter (Twitter: @petter_j) + * + * @see core/i18n.js + */ +(function(a){if(a.sv===undefined){a.sv={"mejs.plural-form":1,"mejs.download-file":"Ladda ner fil","mejs.install-flash":"Du använder en webbläsare som inte har Flash Player aktiverat eller installerad. Aktivera Flash Player eller hämta den senaste versionen frÃ¥n https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullskärm","mejs.play":"Spela","mejs.pause":"Pausa","mejs.time-slider":"Tidslinje","mejs.time-help-text":"Använd Vänster/Höger piltangent för att spola en sekund, Upp/Ner piltangent spola tio sekunder.","mejs.live-broadcast":"Livesändning","mejs.volume-help-text":"Använd Upp/Ner piltangent för att öka eller minska volymen.","mejs.unmute":"Ljud pÃ¥","mejs.mute":"Ljud av","mejs.volume-slider":"Volymkontroll","mejs.video-player":"Videospelare","mejs.audio-player":"Ljudspelare","mejs.captions-subtitles":"Textning/Undertexter","mejs.captions-chapters":"Kapitel","mejs.none":"Ingen","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanska","mejs.arabic":"Arabiska","mejs.belarusian":"Nederländska","mejs.bulgarian":"Bulgariska","mejs.catalan":"Katalanska","mejs.chinese":"Kinesiska","mejs.chinese-simplified":"Kinesiska (Förenklad)","mejs.chinese-traditional":"Kinesiska (Traditionell)","mejs.croatian":"Kroatiska","mejs.czech":"Tjeckiska","mejs.danish":"Danska","mejs.dutch":"Holländska","mejs.english":"Engelska","mejs.estonian":"Estniska","mejs.filipino":"Filipinska","mejs.finnish":"Finska","mejs.french":"Franska","mejs.galician":"Galiciska","mejs.german":"Tyska","mejs.greek":"Grekiska","mejs.haitian-creole":"Haitisk kreolsk","mejs.hebrew":"Hebreiska","mejs.hindi":"Hindi","mejs.hungarian":"Ungerska","mejs.icelandic":"Isländska","mejs.indonesian":"Indonesiska","mejs.irish":"Irländska","mejs.italian":"Italienska","mejs.japanese":"Japanska","mejs.korean":"Koreanska","mejs.latvian":"Lettiska","mejs.lithuanian":"Litauiska","mejs.macedonian":"Makedonska","mejs.malay":"Malaysiska","mejs.maltese":"Maltesiska","mejs.norwegian":"Norska","mejs.persian":"Persiska","mejs.polish":"Polska","mejs.portuguese":"Portugisiska","mejs.romanian":"Romänska","mejs.russian":"Ryska","mejs.serbian":"Serbiska","mejs.slovak":"Slovakiska","mejs.slovenian":"Slovenska","mejs.spanish":"Spanska","mejs.swahili":"Swahiliska","mejs.swedish":"Svenska","mejs.tagalog":"Tagalogiska","mejs.thai":"Thailänska","mejs.turkish":"Turkiska","mejs.ukrainian":"Ukrainska","mejs.vietnamese":"Vietnamesiska","mejs.welsh":"Skotska","mejs.yiddish":"Jiddisch"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/uk.js b/src/main/webapp/static/movie/mediaelementjs/lang/uk.js new file mode 100755 index 0000000000000000000000000000000000000000..99bc3ffc976733407b8071d143f0e8868dd77070 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/uk.js @@ -0,0 +1,89 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Ukrainian + * + * @author + * Dmitry Krekota (dmitry.krekota@gmail.com) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.uk === undefined) { + exports.uk = { + "mejs.plural-form": 7, + // "mejs.download-file": "Download File", + "mejs.install-flash": "Flash Player у вашому браузері не вÑтановлений або відключений. Будь лаÑка включіть Flash Player або Ñкачайте оÑтанню верÑÑ–ÑŽ із https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "Повноекранний режим", + "mejs.play": "ПуÑк", + "mejs.pause": "Пауза", + "mejs.time-slider": "Повзунок чаÑу", + "mejs.time-help-text": "ВикориÑтовуйте ліву/праву клавіші зі Ñтрілками, щоб переміÑтитиÑÑ Ð½Ð° одну Ñекунду, або клавіші вверх/вниз, щоб переміÑтитиÑÑ Ð½Ð° деÑÑть Ñекунд.", + "mejs.live-broadcast" : "ПрÑма транÑлÑціÑ", + "mejs.volume-help-text": "ВикориÑтовуйте клавіші зі Ñтрілками вверх/вниз, щоб збільшити або зменшити звук.", + "mejs.unmute": "Включити звук", + "mejs.mute": "Відключити звук", + "mejs.volume-slider": "Повзунок звуку", + "mejs.video-player": "Відеоплеєр", + "mejs.audio-player": "Ðудіоплеєр", + "mejs.captions-subtitles": "Титри/Субтитри", + "mejs.captions-chapters": "Глави", + "mejs.none": "Ðемає", + "mejs.afrikaans": "ÐфрикаанÑ", + "mejs.albanian": "ÐлбанÑька", + "mejs.arabic": "ÐрабÑька", + "mejs.belarusian": "БілоруÑька", + "mejs.bulgarian": "БолгарÑька", + "mejs.catalan": "КаталонÑька", + "mejs.chinese": "КитайÑька", + "mejs.chinese-simplified": "КитайÑька (Ñпрощена)", + "mejs.chinese-traditional": "КитайÑька (традиційна)", + "mejs.croatian": "ХорватÑка", + "mejs.czech": "ЧеÑька", + "mejs.danish": "Дацька", + "mejs.dutch": "ГолландÑька", + "mejs.english": "ÐнглийÑька", + "mejs.estonian": "ЕÑтонÑька", + "mejs.filipino": "ФіліппінÑька", + "mejs.finnish": "ФінÑька", + "mejs.french": "Французька", + "mejs.galician": "ГаліÑійÑька", + "mejs.german": "Ðімецька", + "mejs.greek": "Грецька", + "mejs.haitian-creole": "ГаїтÑнÑька креольÑька", + "mejs.hebrew": "Іврит", + "mejs.hindi": "Хінді", + "mejs.hungarian": "УгорÑька", + "mejs.icelandic": "ІÑландÑька", + "mejs.indonesian": "ІндонезійÑька", + "mejs.irish": "ІрландÑька", + "mejs.italian": "ІталійÑька", + "mejs.japanese": "ЯпонÑька", + "mejs.korean": "КорейÑька", + "mejs.latvian": "ЛатвійÑька", + "mejs.lithuanian": "ЛитовÑька", + "mejs.macedonian": "МакедонÑька", + "mejs.malay": "МалайÑька", + "mejs.maltese": "МальтійÑька", + "mejs.norwegian": "Ðорвезька", + "mejs.persian": "ПерÑька", + "mejs.polish": "ПольÑька", + "mejs.portuguese": "ПортугальÑька", + "mejs.romanian": "РумунÑька", + "mejs.russian": "РоÑійÑька", + "mejs.serbian": "СербÑька", + "mejs.slovak": "Словацька", + "mejs.slovenian": "СловенÑька", + "mejs.spanish": "ІÑпанÑька", + "mejs.swahili": "Суахілі", + "mejs.swedish": "ШведÑька", + "mejs.tagalog": "ТагальÑька", + "mejs.thai": "ТайÑька", + "mejs.turkish": "Турецька", + "mejs.ukrainian": "УкраїнÑька", + "mejs.vietnamese": "Ð’'єтнамÑька", + "mejs.welsh": "ВаллійÑька", + "mejs.yiddish": "Ідиш" + }; + } +})(mejs.i18n); diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/uk.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/uk.min.js new file mode 100644 index 0000000000000000000000000000000000000000..c3ed691269134727f2639cff15782d1a9f2e5207 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/uk.min.js @@ -0,0 +1,12 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Ukrainian + * + * @author + * Dmitry Krekota (dmitry.krekota@gmail.com) + * + * @see core/i18n.js + */ +(function(a){if(a.uk===undefined){a.uk={"mejs.plural-form":7,"mejs.install-flash":"Flash Player у вашому браузері не вÑтановлений або відключений. Будь лаÑка включіть Flash Player або Ñкачайте оÑтанню верÑÑ–ÑŽ із https://get.adobe.com/flashplayer/","mejs.fullscreen":"Повноекранний режим","mejs.play":"ПуÑк","mejs.pause":"Пауза","mejs.time-slider":"Повзунок чаÑу","mejs.time-help-text":"ВикориÑтовуйте ліву/праву клавіші зі Ñтрілками, щоб переміÑтитиÑÑ Ð½Ð° одну Ñекунду, або клавіші вверх/вниз, щоб переміÑтитиÑÑ Ð½Ð° деÑÑть Ñекунд.","mejs.live-broadcast":"ПрÑма транÑлÑціÑ","mejs.volume-help-text":"ВикориÑтовуйте клавіші зі Ñтрілками вверх/вниз, щоб збільшити або зменшити звук.","mejs.unmute":"Включити звук","mejs.mute":"Відключити звук","mejs.volume-slider":"Повзунок звуку","mejs.video-player":"Відеоплеєр","mejs.audio-player":"Ðудіоплеєр","mejs.captions-subtitles":"Титри/Субтитри","mejs.captions-chapters":"Глави","mejs.none":"Ðемає","mejs.afrikaans":"ÐфрикаанÑ","mejs.albanian":"ÐлбанÑька","mejs.arabic":"ÐрабÑька","mejs.belarusian":"БілоруÑька","mejs.bulgarian":"БолгарÑька","mejs.catalan":"КаталонÑька","mejs.chinese":"КитайÑька","mejs.chinese-simplified":"КитайÑька (Ñпрощена)","mejs.chinese-traditional":"КитайÑька (традиційна)","mejs.croatian":"ХорватÑка","mejs.czech":"ЧеÑька","mejs.danish":"Дацька","mejs.dutch":"ГолландÑька","mejs.english":"ÐнглийÑька","mejs.estonian":"ЕÑтонÑька","mejs.filipino":"ФіліппінÑька","mejs.finnish":"ФінÑька","mejs.french":"Французька","mejs.galician":"ГаліÑійÑька","mejs.german":"Ðімецька","mejs.greek":"Грецька","mejs.haitian-creole":"ГаїтÑнÑька креольÑька","mejs.hebrew":"Іврит","mejs.hindi":"Хінді","mejs.hungarian":"УгорÑька","mejs.icelandic":"ІÑландÑька","mejs.indonesian":"ІндонезійÑька","mejs.irish":"ІрландÑька","mejs.italian":"ІталійÑька","mejs.japanese":"ЯпонÑька","mejs.korean":"КорейÑька","mejs.latvian":"ЛатвійÑька","mejs.lithuanian":"ЛитовÑька","mejs.macedonian":"МакедонÑька","mejs.malay":"МалайÑька","mejs.maltese":"МальтійÑька","mejs.norwegian":"Ðорвезька","mejs.persian":"ПерÑька","mejs.polish":"ПольÑька","mejs.portuguese":"ПортугальÑька","mejs.romanian":"РумунÑька","mejs.russian":"РоÑійÑька","mejs.serbian":"СербÑька","mejs.slovak":"Словацька","mejs.slovenian":"СловенÑька","mejs.spanish":"ІÑпанÑька","mejs.swahili":"Суахілі","mejs.swedish":"ШведÑька","mejs.tagalog":"ТагальÑька","mejs.thai":"ТайÑька","mejs.turkish":"Турецька","mejs.ukrainian":"УкраїнÑька","mejs.vietnamese":"Ð’'єтнамÑька","mejs.welsh":"ВаллійÑька","mejs.yiddish":"Ідиш"}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/zh-cn.js b/src/main/webapp/static/movie/mediaelementjs/lang/zh-cn.js new file mode 100755 index 0000000000000000000000000000000000000000..975ea14cecb0e7a3e08ca79621c5dd1d719d025f --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/zh-cn.js @@ -0,0 +1,90 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Chinese (Simplified) + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports['zh-CN'] === undefined) { + exports['zh-CN'] = { + "mejs.plural-form": 0, + "mejs.download-file": "下载文件", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "å…¨å±", + "mejs.play": "æ’æ”¾", + "mejs.pause": "æš‚åœ", + "mejs.time-slider": "时间滑动棒", + "mejs.time-help-text": "使用作/å³ç®å¤´å¿«è¿›1秒,使用上/下ç®å¤´å¿«è¿›10秒。", + //"mejs.live-broadcast" : "Live Broadcast", + "mejs.volume-help-text": "使用上/下ç®å¤´æé«˜æˆ–é™ä½ŽéŸ³é‡ã€‚", + "mejs.unmute": "å–æ¶ˆé™éŸ³", + "mejs.mute": "é™éŸ³", + "mejs.volume-slider": "音é‡é€‰æ‹©é”®", + "mejs.video-player": "è§†é¢‘æ’æ”¾å™¨", + "mejs.audio-player": "éŸ³é¢‘æ’æ”¾å™¨", + "mejs.captions-subtitles": "å—幕/æ ‡é¢˜", + // "mejs.captions-chapters": "Chapters", + "mejs.none": "æ— " + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + // "mejs.chinese": "Chinese", + // "mejs.chinese-simplified": "Chinese (Simplified)", + // "mejs.chinese-traditional": "Chinese (Traditional)", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/zh-cn.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/zh-cn.min.js new file mode 100644 index 0000000000000000000000000000000000000000..c3eee361dd165a1231b5c88d346e2017911cf2b9 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/zh-cn.min.js @@ -0,0 +1,13 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Chinese (Simplified) + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * + * @see core/i18n.js + */ +(function(a){if(a["zh-CN"]===undefined){a["zh-CN"]={"mejs.plural-form":0,"mejs.download-file":"下载文件","mejs.fullscreen":"å…¨å±","mejs.play":"æ’æ”¾","mejs.pause":"æš‚åœ","mejs.time-slider":"时间滑动棒","mejs.time-help-text":"使用作/å³ç®å¤´å¿«è¿›1秒,使用上/下ç®å¤´å¿«è¿›10秒。","mejs.volume-help-text":"使用上/下ç®å¤´æé«˜æˆ–é™ä½ŽéŸ³é‡ã€‚","mejs.unmute":"å–æ¶ˆé™éŸ³","mejs.mute":"é™éŸ³","mejs.volume-slider":"音é‡é€‰æ‹©é”®","mejs.video-player":"è§†é¢‘æ’æ”¾å™¨","mejs.audio-player":"éŸ³é¢‘æ’æ”¾å™¨","mejs.captions-subtitles":"å—幕/æ ‡é¢˜","mejs.none":"æ— "}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/zh.js b/src/main/webapp/static/movie/mediaelementjs/lang/zh.js new file mode 100755 index 0000000000000000000000000000000000000000..7d9ec0ab689d12ac2e278ee25988aae639c6ead3 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/zh.js @@ -0,0 +1,91 @@ +'use strict';/*! + * This is a `i18n` language object. + * + * Chinese (Traditional) + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * Peter Dave Hello (Twitter: @PeterDaveHello) + * + * @see core/i18n.js + */ +(function (exports) { + if (exports.zh === undefined) { + exports.zh = { + "mejs.plural-form": 0, + "mejs.download-file": "下載檔案", + // "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + "mejs.fullscreen": "全螢幕", + "mejs.play": "æ’æ”¾", + "mejs.pause": "æš«åœ", + "mejs.time-slider": "時間軸", + "mejs.time-help-text": "使用左/å³ç®é 快轉1秒,上/下ç®é 快轉10秒。", + //"mejs.live-broadcast" : "Live Broadcast", + "mejs.volume-help-text": "使用上/下ç®é æé«˜æˆ–é™ä½ŽéŸ³é‡ã€‚", + "mejs.unmute": "å–æ¶ˆéœéŸ³", + "mejs.mute": "éœéŸ³", + "mejs.volume-slider": "éŸ³é‡æŽ§åˆ¶éµ", + "mejs.video-player": "å½±ç‰‡æ’æ”¾å™¨", + "mejs.audio-player": "éŸ³æ¨‚æ’æ”¾å™¨", + "mejs.captions-subtitles": "å—幕/標題", + "mejs.captions-chapters": "ç« ç¯€", + "mejs.none": "ç„¡", + // "mejs.afrikaans": "Afrikaans", + // "mejs.albanian": "Albanian", + // "mejs.arabic": "Arabic", + // "mejs.belarusian": "Belarusian", + // "mejs.bulgarian": "Bulgarian", + // "mejs.catalan": "Catalan", + "mejs.chinese": "䏿–‡", + "mejs.chinese-simplified": "ç®€ä½“ä¸æ–‡", + "mejs.chinese-traditional": "æ£é«”䏿–‡", + // "mejs.croatian": "Croatian", + // "mejs.czech": "Czech", + // "mejs.danish": "Danish", + // "mejs.dutch": "Dutch", + // "mejs.english": "English", + // "mejs.estonian": "Estonian", + // "mejs.filipino": "Filipino", + // "mejs.finnish": "Finnish", + // "mejs.french": "French", + // "mejs.galician": "Galician", + // "mejs.german": "German", + // "mejs.greek": "Greek", + // "mejs.haitian-creole": "Haitian Creole", + // "mejs.hebrew": "Hebrew", + // "mejs.hindi": "Hindi", + // "mejs.hungarian": "Hungarian", + // "mejs.icelandic": "Icelandic", + // "mejs.indonesian": "Indonesian", + // "mejs.irish": "Irish", + // "mejs.italian": "Italian", + // "mejs.japanese": "Japanese", + // "mejs.korean": "Korean", + // "mejs.latvian": "Latvian", + // "mejs.lithuanian": "Lithuanian", + // "mejs.macedonian": "Macedonian", + // "mejs.malay": "Malay", + // "mejs.maltese": "Maltese", + // "mejs.norwegian": "Norwegian", + // "mejs.persian": "Persian", + // "mejs.polish": "Polish", + // "mejs.portuguese": "Portuguese", + // "mejs.romanian": "Romanian", + // "mejs.russian": "Russian", + // "mejs.serbian": "Serbian", + // "mejs.slovak": "Slovak", + // "mejs.slovenian": "Slovenian", + // "mejs.spanish": "Spanish", + // "mejs.swahili": "Swahili", + // "mejs.swedish": "Swedish", + // "mejs.tagalog": "Tagalog", + // "mejs.thai": "Thai", + // "mejs.turkish": "Turkish", + // "mejs.ukrainian": "Ukrainian", + // "mejs.vietnamese": "Vietnamese", + // "mejs.welsh": "Welsh", + // "mejs.yiddish": "Yiddish" + }; + } +})(mejs.i18n); diff --git a/src/main/webapp/static/movie/mediaelementjs/lang/zh.min.js b/src/main/webapp/static/movie/mediaelementjs/lang/zh.min.js new file mode 100644 index 0000000000000000000000000000000000000000..0c77d0b7bb69f0fb0b28941e9aababefc140d6f7 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/lang/zh.min.js @@ -0,0 +1,14 @@ +"use strict"; +/*! + * This is a `i18n` language object. + * + * Chinese (Traditional) + * + * @author + * Jalios (Twitter: @Jalios) + * Sascha Greuel (Twitter: @SoftCreatR) + * Peter Dave Hello (Twitter: @PeterDaveHello) + * + * @see core/i18n.js + */ +(function(a){if(a.zh===undefined){a.zh={"mejs.plural-form":0,"mejs.download-file":"下載檔案","mejs.fullscreen":"全螢幕","mejs.play":"æ’æ”¾","mejs.pause":"æš«åœ","mejs.time-slider":"時間軸","mejs.time-help-text":"使用左/å³ç®é 快轉1秒,上/下ç®é 快轉10秒。","mejs.volume-help-text":"使用上/下ç®é æé«˜æˆ–é™ä½ŽéŸ³é‡ã€‚","mejs.unmute":"å–æ¶ˆéœéŸ³","mejs.mute":"éœéŸ³","mejs.volume-slider":"éŸ³é‡æŽ§åˆ¶éµ","mejs.video-player":"å½±ç‰‡æ’æ”¾å™¨","mejs.audio-player":"éŸ³æ¨‚æ’æ”¾å™¨","mejs.captions-subtitles":"å—幕/標題","mejs.captions-chapters":"ç« ç¯€","mejs.none":"ç„¡","mejs.chinese":"䏿–‡","mejs.chinese-simplified":"ç®€ä½“ä¸æ–‡","mejs.chinese-traditional":"æ£é«”䏿–‡",}}})(mejs.i18n); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/loading.gif b/src/main/webapp/static/movie/mediaelementjs/loading.gif deleted file mode 100644 index 612222be5e474c36c345042dd6f697fa1d16a6a0..0000000000000000000000000000000000000000 Binary files a/src/main/webapp/static/movie/mediaelementjs/loading.gif and /dev/null differ diff --git a/src/main/webapp/static/movie/mediaelementjs/mediaelement-and-player.js b/src/main/webapp/static/movie/mediaelementjs/mediaelement-and-player.js old mode 100644 new mode 100755 index c8e4a4c03a67fe3e79465c2035d9723dcb9ad141..ecdca0876f3257f48d03c444f34b5668156c733c --- a/src/main/webapp/static/movie/mediaelementjs/mediaelement-and-player.js +++ b/src/main/webapp/static/movie/mediaelementjs/mediaelement-and-player.js @@ -1,6655 +1,7587 @@ /*! - * * MediaElement.js - * HTML5 <video> and <audio> shim and player - * http://mediaelementjs.com/ + * http://www.mediaelementjs.com/ * - * Creates a JavaScript object that mimics HTML5 MediaElement API - * for browsers that don't understand HTML5 or can't play the provided codec - * Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3 + * Wrapper that mimics native HTML5 MediaElement (audio and video) + * using a variety of technologies (pure JavaScript, Flash, iframe) * - * Copyright 2010-2014, John Dyer (http://j.hn) + * Copyright 2010-2017, John Dyer (http://j.hn/) * License: MIT * - */ -// Namespace -var mejs = mejs || {}; - -// version number -mejs.version = '2.23.5'; - - -// player number (for missing, same id attr) -mejs.meIndex = 0; - -// media types accepted by plugins -mejs.plugins = { - silverlight: [ - {version: [3,0], types: ['video/mp4','video/m4v','video/mov','video/wmv','audio/wma','audio/m4a','audio/mp3','audio/wav','audio/mpeg']} - ], - flash: [ - {version: [9,0,124], types: ['video/mp4','video/m4v','video/mov','video/flv','video/rtmp','video/x-flv','audio/flv','audio/x-flv','audio/mp3','audio/m4a', 'audio/mp4', 'audio/mpeg', 'video/dailymotion', 'video/x-dailymotion', 'application/x-mpegURL', 'audio/ogg']} - // 'video/youtube', 'video/x-youtube', - // ,{version: [12,0], types: ['video/webm']} // for future reference (hopefully!) - ], - youtube: [ - {version: null, types: ['video/youtube', 'video/x-youtube', 'audio/youtube', 'audio/x-youtube']} - ], - vimeo: [ - {version: null, types: ['video/vimeo', 'video/x-vimeo']} - ] -}; + */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ -/* -Utility methods -*/ -mejs.Utility = { - encodeUrl: function(url) { - return encodeURIComponent(url); //.replace(/\?/gi,'%3F').replace(/=/gi,'%3D').replace(/&/gi,'%26'); - }, - escapeHTML: function(s) { - return s.toString().split('&').join('&').split('<').join('<').split('"').join('"'); - }, - absolutizeUrl: function(url) { - var el = document.createElement('div'); - el.innerHTML = '<a href="' + this.escapeHTML(url) + '">x</a>'; - return el.firstChild.href; - }, - getScriptPath: function(scriptNames) { - var - i = 0, - j, - codePath = '', - testname = '', - slashPos, - filenamePos, - scriptUrl, - scriptPath, - scriptFilename, - scripts = document.getElementsByTagName('script'), - il = scripts.length, - jl = scriptNames.length; - - // go through all <script> tags - for (; i < il; i++) { - scriptUrl = scripts[i].src; - slashPos = scriptUrl.lastIndexOf('/'); - if (slashPos > -1) { - scriptFilename = scriptUrl.substring(slashPos + 1); - scriptPath = scriptUrl.substring(0, slashPos + 1); - } else { - scriptFilename = scriptUrl; - scriptPath = ''; - } - - // see if any <script> tags have a file name that matches the - for (j = 0; j < jl; j++) { - testname = scriptNames[j]; - filenamePos = scriptFilename.indexOf(testname); - if (filenamePos > -1) { - codePath = scriptPath; - break; - } - } - - // if we found a path, then break and return it - if (codePath !== '') { - break; - } - } - - // send the best path back - return codePath; - }, - /* - * Calculate the time format to use. We have a default format set in the - * options but it can be imcomplete. We ajust it according to the media - * duration. - * - * We support format like 'hh:mm:ss:ff'. - */ - calculateTimeFormat: function(time, options, fps) { - if (time < 0) { - time = 0; - } - - if(typeof fps == 'undefined') { - fps = 25; - } - - var format = options.timeFormat, - firstChar = format[0], - firstTwoPlaces = (format[1] == format[0]), - separatorIndex = firstTwoPlaces? 2: 1, - separator = ':', - hours = Math.floor(time / 3600) % 24, - minutes = Math.floor(time / 60) % 60, - seconds = Math.floor(time % 60), - frames = Math.floor(((time % 1)*fps).toFixed(3)), - lis = [ - [frames, 'f'], - [seconds, 's'], - [minutes, 'm'], - [hours, 'h'] - ]; - - // Try to get the separator from the format - if (format.length < separatorIndex) { - separator = format[separatorIndex]; - } - - var required = false; - - for (var i=0, len=lis.length; i < len; i++) { - if (format.indexOf(lis[i][1]) !== -1) { - required=true; - } - else if (required) { - var hasNextValue = false; - for (var j=i; j < len; j++) { - if (lis[j][0] > 0) { - hasNextValue = true; - break; - } - } +},{}],2:[function(_dereq_,module,exports){ +(function (global){ +var topLevel = typeof global !== 'undefined' ? global : + typeof window !== 'undefined' ? window : {} +var minDoc = _dereq_(1); - if (! hasNextValue) { - break; - } +if (typeof document !== 'undefined') { + module.exports = document; +} else { + var doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4']; - if (!firstTwoPlaces) { - format = firstChar + format; - } - format = lis[i][1] + separator + format; - if (firstTwoPlaces) { - format = lis[i][1] + format; - } - firstChar = lis[i][1]; - } - } - options.currentTimeFormat = format; - }, - /* - * Prefix the given number by zero if it is lower than 10. - */ - twoDigitsString: function(n) { - if (n < 10) { - return '0' + n; - } - return String(n); - }, - secondsToTimeCode: function(time, options) { - if (time < 0) { - time = 0; - } + if (!doccy) { + doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc; + } - // Maintain backward compatibility with method signature before v2.18. - if (typeof options !== 'object') { - var format = 'm:ss'; - format = arguments[1] ? 'hh:mm:ss' : format; // forceHours - format = arguments[2] ? format + ':ff' : format; // showFrameCount + module.exports = doccy; +} - options = { - currentTimeFormat: format, - framesPerSecond: arguments[3] || 25 - }; - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"1":1}],3:[function(_dereq_,module,exports){ +(function (global){ +if (typeof window !== "undefined") { + module.exports = window; +} else if (typeof global !== "undefined") { + module.exports = global; +} else if (typeof self !== "undefined"){ + module.exports = self; +} else { + module.exports = {}; +} - var fps = options.framesPerSecond; - if(typeof fps === 'undefined') { - fps = 25; - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],4:[function(_dereq_,module,exports){ +'use strict'; - var format = options.currentTimeFormat, - hours = Math.floor(time / 3600) % 24, - minutes = Math.floor(time / 60) % 60, - seconds = Math.floor(time % 60), - frames = Math.floor(((time % 1)*fps).toFixed(3)); - lis = [ - [frames, 'f'], - [seconds, 's'], - [minutes, 'm'], - [hours, 'h'] - ]; +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _mejs = _dereq_(6); + +var _mejs2 = _interopRequireDefault(_mejs); + +var _en = _dereq_(14); + +var _general = _dereq_(25); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var i18n = { lang: 'en', en: _en.EN }; - var res = format; - for (i=0,len=lis.length; i < len; i++) { - res = res.replace(lis[i][1]+lis[i][1], this.twoDigitsString(lis[i][0])); - res = res.replace(lis[i][1], lis[i][0]); +i18n.language = function () { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (args !== null && args !== undefined && args.length) { + + if (typeof args[0] !== 'string') { + throw new TypeError('Language code must be a string value'); } - return res; - }, - - timeCodeToSeconds: function(hh_mm_ss_ff, forceHours, showFrameCount, fps){ - if (typeof showFrameCount == 'undefined') { - showFrameCount=false; - } else if(typeof fps == 'undefined') { - fps = 25; - } - - var tc_array = hh_mm_ss_ff.split(":"), - tc_hh = parseInt(tc_array[0], 10), - tc_mm = parseInt(tc_array[1], 10), - tc_ss = parseInt(tc_array[2], 10), - tc_ff = 0, - tc_in_seconds = 0; - - if (showFrameCount) { - tc_ff = parseInt(tc_array[3])/fps; + + if (!/^[a-z]{2}(\-[a-z]{2})?$/i.test(args[0])) { + throw new TypeError('Language code must have format `xx` or `xx-xx`'); } - - tc_in_seconds = ( tc_hh * 3600 ) + ( tc_mm * 60 ) + tc_ss + tc_ff; - - return tc_in_seconds; - }, - - convertSMPTEtoSeconds: function (SMPTE) { - if (typeof SMPTE != 'string') - return false; + i18n.lang = args[0]; - SMPTE = SMPTE.replace(',', '.'); - - var secs = 0, - decimalLen = (SMPTE.indexOf('.') != -1) ? SMPTE.split('.')[1].length : 0, - multiplier = 1; - - SMPTE = SMPTE.split(':').reverse(); - - for (var i = 0; i < SMPTE.length; i++) { - multiplier = 1; - if (i > 0) { - multiplier = Math.pow(60, i); - } - secs += Number(SMPTE[i]) * multiplier; - } - return Number(secs.toFixed(decimalLen)); - }, - - /* borrowed from SWFObject: http://code.google.com/p/swfobject/source/browse/trunk/swfobject/src/swfobject.js#474 */ - removeSwf: function(id) { - var obj = document.getElementById(id); - if (obj && /object|embed/i.test(obj.nodeName)) { - if (mejs.MediaFeatures.isIE) { - obj.style.display = "none"; - (function(){ - if (obj.readyState == 4) { - mejs.Utility.removeObjectInIE(id); - } else { - setTimeout(arguments.callee, 10); - } - })(); - } else { - obj.parentNode.removeChild(obj); - } + if (i18n[args[0]] === undefined) { + args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {}; + i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN; + } else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') { + i18n[args[0]] = args[1]; } - }, - removeObjectInIE: function(id) { - var obj = document.getElementById(id); - if (obj) { - for (var i in obj) { - if (typeof obj[i] == "function") { - obj[i] = null; - } - } - obj.parentNode.removeChild(obj); - } - }, - determineScheme: function(url) { - if (url && url.indexOf("://") != -1) { - return url.substr(0, url.indexOf("://")+3); - } - return "//"; // let user agent figure this out - }, - - // taken from underscore - debounce: function(func, wait, immediate) { - var timeout; - return function() { - var context = this, args = arguments; - var later = function() { - timeout = null; - if (!immediate) func.apply(context, args); - }; - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - if (callNow) func.apply(context, args); - }; - }, - - /** - * Returns true if targetNode appears after sourceNode in the dom. - * @param {HTMLElement} sourceNode - the source node for comparison - * @param {HTMLElement} targetNode - the node to compare against sourceNode - */ - isNodeAfter: function(sourceNode, targetNode) { - return !!( - sourceNode && - targetNode && - typeof sourceNode.compareDocumentPosition === 'function' && - sourceNode.compareDocumentPosition(targetNode) & Node.DOCUMENT_POSITION_PRECEDING - ); } + + return i18n.lang; }; +i18n.t = function (message) { + var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; -// Core detector, plugins are added below -mejs.PluginDetector = { - // main public function to test a plug version number PluginDetector.hasPluginVersion('flash',[9,0,125]); - hasPluginVersion: function(plugin, v) { - var pv = this.plugins[plugin]; - v[1] = v[1] || 0; - v[2] = v[2] || 0; - return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false; - }, + if (typeof message === 'string' && message.length) { - // cached values - nav: window.navigator, - ua: window.navigator.userAgent.toLowerCase(), + var str = void 0, + pluralForm = void 0; - // stored version numbers - plugins: [], + var language = i18n.language(); - // runs detectPlugin() and stores the version number - addPlugin: function(p, pluginName, mimeType, activeX, axDetect) { - this.plugins[p] = this.detectPlugin(pluginName, mimeType, activeX, axDetect); - }, + var _plural = function _plural(input, number, form) { + + if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') { + return input; + } - // get the version number from the mimetype (all but IE) or ActiveX (IE) - detectPlugin: function(pluginName, mimeType, activeX, axDetect) { + var _pluralForms = function () { + return [function () { + return arguments.length <= 1 ? undefined : arguments[1]; + }, function () { + return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; + }, function () { + return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else { + return arguments.length <= 3 ? undefined : arguments[3]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) { + return arguments.length <= 3 ? undefined : arguments[3]; + } else { + return arguments.length <= 4 ? undefined : arguments[4]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else { + return arguments.length <= 3 ? undefined : arguments[3]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else { + return [3]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else { + return arguments.length <= 3 ? undefined : arguments[3]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else { + return arguments.length <= 3 ? undefined : arguments[3]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else { + return arguments.length <= 3 ? undefined : arguments[3]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) { + return arguments.length <= 3 ? undefined : arguments[3]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) { + return arguments.length <= 4 ? undefined : arguments[4]; + } else { + return arguments.length <= 1 ? undefined : arguments[1]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) { + return arguments.length <= 3 ? undefined : arguments[3]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) { + return arguments.length <= 4 ? undefined : arguments[4]; + } else { + return arguments.length <= 5 ? undefined : arguments[5]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { + return arguments.length <= 3 ? undefined : arguments[3]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) { + return arguments.length <= 4 ? undefined : arguments[4]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) { + return arguments.length <= 5 ? undefined : arguments[5]; + } else { + return arguments.length <= 6 ? undefined : arguments[6]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) { + return arguments.length <= 3 ? undefined : arguments[3]; + } else { + return arguments.length <= 4 ? undefined : arguments[4]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else { + return arguments.length <= 3 ? undefined : arguments[3]; + } + }, function () { + return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else { + return arguments.length <= 3 ? undefined : arguments[3]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) { + return arguments.length <= 3 ? undefined : arguments[3]; + } else { + return arguments.length <= 4 ? undefined : arguments[4]; + } + }, function () { + return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2]; + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) { + return arguments.length <= 3 ? undefined : arguments[3]; + } else { + return arguments.length <= 4 ? undefined : arguments[4]; + } + }, function () { + if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) { + return arguments.length <= 1 ? undefined : arguments[1]; + } else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) { + return arguments.length <= 2 ? undefined : arguments[2]; + } else { + return arguments.length <= 3 ? undefined : arguments[3]; + } + }]; + }(); - var version = [0,0,0], - description, - i, - ax; + return _pluralForms[form].apply(null, [number].concat(input)); + }; - // Firefox, Webkit, Opera - if (typeof(this.nav.plugins) != 'undefined' && typeof this.nav.plugins[pluginName] == 'object') { - description = this.nav.plugins[pluginName].description; - if (description && !(typeof this.nav.mimeTypes != 'undefined' && this.nav.mimeTypes[mimeType] && !this.nav.mimeTypes[mimeType].enabledPlugin)) { - version = description.replace(pluginName, '').replace(/^\s+/,'').replace(/\sr/gi,'.').split('.'); - for (i=0; i<version.length; i++) { - version[i] = parseInt(version[i].match(/\d+/), 10); - } + if (i18n[language] !== undefined) { + str = i18n[language][message]; + if (pluralParam !== null && typeof pluralParam === 'number') { + pluralForm = i18n[language]['mejs.plural-form']; + str = _plural.apply(null, [str, pluralParam, pluralForm]); } - // Internet Explorer / ActiveX - } else if (typeof(window.ActiveXObject) != 'undefined') { - try { - ax = new ActiveXObject(activeX); - if (ax) { - version = axDetect(ax); - } + } + + if (!str && i18n.en) { + str = i18n.en[message]; + if (pluralParam !== null && typeof pluralParam === 'number') { + pluralForm = i18n.en['mejs.plural-form']; + str = _plural.apply(null, [str, pluralParam, pluralForm]); } - catch (e) { } } - return version; + + str = str || message; + + if (pluralParam !== null && typeof pluralParam === 'number') { + str = str.replace('%1', pluralParam); + } + + return (0, _general.escapeHTML)(str); } + + return message; }; -// Add Flash detection -mejs.PluginDetector.addPlugin('flash','Shockwave Flash','application/x-shockwave-flash','ShockwaveFlash.ShockwaveFlash', function(ax) { - // adapted from SWFObject - var version = [], - d = ax.GetVariable("$version"); - if (d) { - d = d.split(" ")[1].split(","); - version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; - } - return version; -}); +_mejs2.default.i18n = i18n; -// Add Silverlight detection -mejs.PluginDetector.addPlugin('silverlight','Silverlight Plug-In','application/x-silverlight-2','AgControl.AgControl', function (ax) { - // Silverlight cannot report its version number to IE - // but it does have a isVersionSupported function, so we have to loop through it to get a version number. - // adapted from http://www.silverlightversion.com/ - var v = [0,0,0,0], - loopMatch = function(ax, v, i, n) { - while(ax.isVersionSupported(v[0]+ "."+ v[1] + "." + v[2] + "." + v[3])){ - v[i]+=n; - } - v[i] -= n; - }; - loopMatch(ax, v, 0, 1); - loopMatch(ax, v, 1, 1); - loopMatch(ax, v, 2, 10000); // the third place in the version number is usually 5 digits (4.0.xxxxx) - loopMatch(ax, v, 2, 1000); - loopMatch(ax, v, 2, 100); - loopMatch(ax, v, 2, 10); - loopMatch(ax, v, 2, 1); - loopMatch(ax, v, 3, 1); - - return v; -}); -// add adobe acrobat -/* -PluginDetector.addPlugin('acrobat','Adobe Acrobat','application/pdf','AcroPDF.PDF', function (ax) { - var version = [], - d = ax.GetVersions().split(',')[0].split('=')[1].split('.'); +if (typeof mejsL10n !== 'undefined') { + _mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings); +} - if (d) { - version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; - } - return version; +exports.default = i18n; + +},{"14":14,"25":25,"6":6}],5:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true }); -*/ -// necessary detection (fixes for <IE9) -mejs.MediaFeatures = { - init: function() { - var - t = this, - d = document, - nav = mejs.PluginDetector.nav, - ua = mejs.PluginDetector.ua.toLowerCase(), - i, - v, - html5Elements = ['source','track','audio','video']; - - // detect browsers (only the ones that have some kind of quirk we need to work around) - t.isiPad = (ua.match(/ipad/i) !== null); - t.isiPhone = (ua.match(/iphone/i) !== null); - t.isiOS = t.isiPhone || t.isiPad; - t.isAndroid = (ua.match(/android/i) !== null); - t.isBustedAndroid = (ua.match(/android 2\.[12]/) !== null); - t.isBustedNativeHTTPS = (location.protocol === 'https:' && (ua.match(/android [12]\./) !== null || ua.match(/macintosh.* version.* safari/) !== null)); - t.isIE = (nav.appName.toLowerCase().indexOf("microsoft") != -1 || nav.appName.toLowerCase().match(/trident/gi) !== null); - t.isChrome = (ua.match(/chrome/gi) !== null); - t.isChromium = (ua.match(/chromium/gi) !== null); - t.isFirefox = (ua.match(/firefox/gi) !== null); - t.isWebkit = (ua.match(/webkit/gi) !== null); - t.isGecko = (ua.match(/gecko/gi) !== null) && !t.isWebkit && !t.isIE; - t.isOpera = (ua.match(/opera/gi) !== null); - t.hasTouch = ('ontouchstart' in window); // && window.ontouchstart != null); // this breaks iOS 7 - - // Borrowed from `Modernizr.svgasimg`, sources: - // - https://github.com/Modernizr/Modernizr/issues/687 - // - https://github.com/Modernizr/Modernizr/pull/1209/files - t.svgAsImg = !!document.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#Image', '1.1'); - - // create HTML5 media elements for IE before 9, get a <video> element for fullscreen detection - for (i=0; i<html5Elements.length; i++) { - v = document.createElement(html5Elements[i]); - } - - t.supportsMediaTag = (typeof v.canPlayType !== 'undefined' || t.isBustedAndroid); - - // Fix for IE9 on Windows 7N / Windows 7KN (Media Player not installer) - try{ - v.canPlayType("video/mp4"); - }catch(e){ - t.supportsMediaTag = false; - } - - t.supportsPointerEvents = (function() { - // TAKEN FROM MODERNIZR - var element = document.createElement('x'), - documentElement = document.documentElement, - getComputedStyle = window.getComputedStyle, - supports; - if(!('pointerEvents' in element.style)){ - return false; - } - element.style.pointerEvents = 'auto'; - element.style.pointerEvents = 'x'; - documentElement.appendChild(element); - supports = getComputedStyle && - getComputedStyle(element, '').pointerEvents === 'auto'; - documentElement.removeChild(element); - return !!supports; - })(); +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - // Older versions of Firefox can't move plugins around without it resetting, - t.hasFirefoxPluginMovingProblem = false; +var _window = _dereq_(3); - // detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails) +var _window2 = _interopRequireDefault(_window); - // iOS - t.hasiOSFullScreen = (typeof v.webkitEnterFullscreen !== 'undefined'); +var _document = _dereq_(2); - // W3C - t.hasNativeFullscreen = (typeof v.requestFullscreen !== 'undefined'); +var _document2 = _interopRequireDefault(_document); - // webkit/firefox/IE11+ - t.hasWebkitNativeFullScreen = (typeof v.webkitRequestFullScreen !== 'undefined'); - t.hasMozNativeFullScreen = (typeof v.mozRequestFullScreen !== 'undefined'); - t.hasMsNativeFullScreen = (typeof v.msRequestFullscreen !== 'undefined'); +var _mejs = _dereq_(6); - t.hasTrueNativeFullScreen = (t.hasWebkitNativeFullScreen || t.hasMozNativeFullScreen || t.hasMsNativeFullScreen); - t.nativeFullScreenEnabled = t.hasTrueNativeFullScreen; +var _mejs2 = _interopRequireDefault(_mejs); - // Enabled? - if (t.hasMozNativeFullScreen) { - t.nativeFullScreenEnabled = document.mozFullScreenEnabled; - } else if (t.hasMsNativeFullScreen) { - t.nativeFullScreenEnabled = document.msFullscreenEnabled; - } +var _general = _dereq_(25); - if (t.isChrome) { - t.hasiOSFullScreen = false; - } +var _media2 = _dereq_(26); - if (t.hasTrueNativeFullScreen) { +var _renderer = _dereq_(7); - t.fullScreenEventName = ''; - if (t.hasWebkitNativeFullScreen) { - t.fullScreenEventName = 'webkitfullscreenchange'; +var _constants = _dereq_(23); - } else if (t.hasMozNativeFullScreen) { - t.fullScreenEventName = 'mozfullscreenchange'; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - } else if (t.hasMsNativeFullScreen) { - t.fullScreenEventName = 'MSFullscreenChange'; - } +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - t.isFullScreen = function() { - if (t.hasMozNativeFullScreen) { - return d.mozFullScreen; +var MediaElement = function MediaElement(idOrNode, options, sources) { + var _this = this; - } else if (t.hasWebkitNativeFullScreen) { - return d.webkitIsFullScreen; + _classCallCheck(this, MediaElement); - } else if (t.hasMsNativeFullScreen) { - return d.msFullscreenElement !== null; - } - } + var t = this; - t.requestFullScreen = function(el) { + sources = Array.isArray(sources) ? sources : null; - if (t.hasWebkitNativeFullScreen) { - el.webkitRequestFullScreen(); + t.defaults = { + renderers: [], - } else if (t.hasMozNativeFullScreen) { - el.mozRequestFullScreen(); + fakeNodeName: 'mediaelementwrapper', - } else if (t.hasMsNativeFullScreen) { - el.msRequestFullscreen(); + pluginPath: 'build/', - } - } + shimScriptAccess: 'sameDomain', - t.cancelFullScreen = function() { - if (t.hasWebkitNativeFullScreen) { - document.webkitCancelFullScreen(); + customError: '' + }; - } else if (t.hasMozNativeFullScreen) { - document.mozCancelFullScreen(); + options = Object.assign(t.defaults, options); - } else if (t.hasMsNativeFullScreen) { - document.msExitFullscreen(); + t.mediaElement = _document2.default.createElement(options.fakeNodeName); + t.mediaElement.options = options; - } + var id = idOrNode, + error = false; + + if (typeof idOrNode === 'string') { + t.mediaElement.originalNode = _document2.default.getElementById(idOrNode); + } else { + t.mediaElement.originalNode = idOrNode; + id = idOrNode.id; + } + + id = id || 'mejs_' + Math.random().toString().slice(2); + + if (t.mediaElement.originalNode !== undefined && t.mediaElement.originalNode !== null && t.mediaElement.appendChild) { + t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs'); + + var tagName = t.mediaElement.originalNode.tagName.toLowerCase(); + if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) { + t.mediaElement.originalNode.setAttribute('preload', 'none'); + } + + t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode); + + t.mediaElement.appendChild(t.mediaElement.originalNode); + } else {} + + t.mediaElement.id = id; + t.mediaElement.renderers = {}; + t.mediaElement.renderer = null; + t.mediaElement.rendererName = null; + + t.mediaElement.changeRenderer = function (rendererName, mediaFiles) { + + var t = _this, + media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src; + + if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) { + t.mediaElement.renderer.pause(); + if (t.mediaElement.renderer.stop) { + t.mediaElement.renderer.stop(); } + t.mediaElement.renderer.show(); + t.mediaElement.renderer.setSrc(media); + return true; + } + if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { + t.mediaElement.renderer.pause(); + if (t.mediaElement.renderer.stop) { + t.mediaElement.renderer.stop(); + } + t.mediaElement.renderer.hide(); } + var newRenderer = t.mediaElement.renderers[rendererName], + newRendererType = null; - // OS X 10.5 can't do this even if it says it can :( - if (t.hasiOSFullScreen && ua.match(/mac os x 10_5/i)) { - t.hasNativeFullScreen = false; - t.hasiOSFullScreen = false; + if (newRenderer !== undefined && newRenderer !== null) { + newRenderer.show(); + newRenderer.setSrc(media); + t.mediaElement.renderer = newRenderer; + t.mediaElement.rendererName = rendererName; + return true; } - } -}; -mejs.MediaFeatures.init(); + var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order; -/* -extension methods to <video> or <audio> object to bring it into parity with PluginMediaElement (see below) -*/ -mejs.HtmlMediaElement = { - pluginType: 'native', - isFullScreen: false, + for (var i = 0, total = rendererArray.length; i < total; i++) { - setCurrentTime: function (time) { - this.currentTime = time; - }, + var index = rendererArray[i]; - setMuted: function (muted) { - this.muted = muted; - }, + if (index === rendererName) { + var rendererList = _renderer.renderer.renderers; + newRendererType = rendererList[index]; - setVolume: function (volume) { - this.volume = volume; - }, + var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options); + newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles); + newRenderer.name = rendererName; - // for parity with the plugin versions - stop: function () { - this.pause(); - }, + t.mediaElement.renderers[newRendererType.name] = newRenderer; + t.mediaElement.renderer = newRenderer; + t.mediaElement.rendererName = rendererName; - // This can be a url string - // or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}] - setSrc: function (url) { - - // Fix for IE9 which can't set .src when there are <source> elements. Awesome, right? - var - existingSources = this.getElementsByTagName('source'); - while (existingSources.length > 0){ - this.removeChild(existingSources[0]); - } - - if (typeof url == 'string') { - this.src = url; - } else { - var i, media; + newRenderer.show(); - for (i=0; i<url.length; i++) { - media = url[i]; - if (this.canPlayType(media.type)) { - this.src = media.src; - break; - } + return true; } } - }, - setVideoSize: function (width, height) { - this.width = width; - this.height = height; - } -}; + return false; + }; -/* -Mimics the <video/audio> element by calling Flash's External Interface or Silverlights [ScriptableMember] -*/ -mejs.PluginMediaElement = function (pluginid, pluginType, mediaUrl) { - this.id = pluginid; - this.pluginType = pluginType; - this.src = mediaUrl; - this.events = {}; - this.attributes = {}; -}; + t.mediaElement.setSize = function (width, height) { + if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) { + t.mediaElement.renderer.setSize(width, height); + } + }; -// JavaScript values and ExternalInterface methods that match HTML5 video properties methods -// http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html -// http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html -mejs.PluginMediaElement.prototype = { + t.mediaElement.createErrorMessage = function (urlList) { - // special - pluginElement: null, - pluginType: '', - isFullScreen: false, + urlList = Array.isArray(urlList) ? urlList : []; - // not implemented :( - playbackRate: -1, - defaultPlaybackRate: -1, - seekable: [], - played: [], + var errorContainer = _document2.default.createElement('div'); + errorContainer.className = 'me_cannotplay'; + errorContainer.style.width = '100%'; + errorContainer.style.height = '100%'; - // HTML5 read-only properties - paused: true, - ended: false, - seeking: false, - duration: 0, - error: null, - tagName: '', - - // HTML5 get/set properties, but only set (updated by event handlers) - muted: false, - volume: 1, - currentTime: 0, - - // HTML5 methods - play: function () { - if (this.pluginApi != null) { - if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') { - this.pluginApi.playVideo(); - } else { - this.pluginApi.playMedia(); - } - this.paused = false; - } - }, - load: function () { - if (this.pluginApi != null) { - if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') { - } else { - this.pluginApi.loadMedia(); + var errorContent = t.mediaElement.options.customError; + + if (!errorContent) { + + var poster = t.mediaElement.originalNode.getAttribute('poster'); + if (poster) { + errorContent += '<img src="' + poster + '" width="100%" height="100%" alt="' + _mejs2.default.i18n.t('mejs.download-file') + '">'; } - - this.paused = false; - } - }, - pause: function () { - if (this.pluginApi != null) { - if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') { - if( this.pluginApi.getPlayerState() == 1 ) { - this.pluginApi.pauseVideo(); - } - } else { - this.pluginApi.pauseMedia(); - } - - - this.paused = true; - } - }, - stop: function () { - if (this.pluginApi != null) { - if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') { - this.pluginApi.stopVideo(); - } else { - this.pluginApi.stopMedia(); - } - this.paused = true; - } - }, - canPlayType: function(type) { - var i, - j, - pluginInfo, - pluginVersions = mejs.plugins[this.pluginType]; - - for (i=0; i<pluginVersions.length; i++) { - pluginInfo = pluginVersions[i]; - - // test if user has the correct plugin version - if (mejs.PluginDetector.hasPluginVersion(this.pluginType, pluginInfo.version)) { - - // test for plugin playback types - for (j=0; j<pluginInfo.types.length; j++) { - // find plugin that can play the type - if (type == pluginInfo.types[j]) { - return 'probably'; - } - } + + for (var i = 0, total = urlList.length; i < total; i++) { + var url = urlList[i]; + errorContent += '<a href="' + url.src + '" data-type="' + url.type + '"><span>' + _mejs2.default.i18n.t('mejs.download-file') + ': ' + url.src + '</span></a>'; } } - return ''; - }, - - positionFullscreenButton: function(x,y,visibleAndAbove) { - if (this.pluginApi != null && this.pluginApi.positionFullscreenButton) { - this.pluginApi.positionFullscreenButton(Math.floor(x),Math.floor(y),visibleAndAbove); - } + errorContainer.innerHTML = errorContent; + + t.mediaElement.originalNode.parentNode.insertBefore(errorContainer, t.mediaElement.originalNode); + t.mediaElement.originalNode.style.display = 'none'; + error = true; + }; + + var props = _mejs2.default.html5media.properties, + methods = _mejs2.default.html5media.methods, + addProperty = function addProperty(obj, name, onGet, onSet) { + var oldValue = obj[name]; + var getFn = function getFn() { + return onGet.apply(obj, [oldValue]); + }, + setFn = function setFn(newValue) { + oldValue = onSet.apply(obj, [newValue]); + return oldValue; + }; + + Object.defineProperty(obj, name, { + get: getFn, + set: setFn + }); }, - - hideFullscreenButton: function() { - if (this.pluginApi != null && this.pluginApi.hideFullscreenButton) { - this.pluginApi.hideFullscreenButton(); - } - }, - - - // custom methods since not all JavaScript implementations support get/set - - // This can be a url string - // or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}] - setSrc: function (url) { - if (typeof url == 'string') { - this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(url)); - this.src = mejs.Utility.absolutizeUrl(url); - } else { - var i, media; + assignGettersSetters = function assignGettersSetters(propName) { + if (propName !== 'src') { - for (i=0; i<url.length; i++) { - media = url[i]; - if (this.canPlayType(media.type)) { - this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(media.src)); - this.src = mejs.Utility.absolutizeUrl(media.src); - break; + var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1), + getFn = function getFn() { + return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null; + }, + setFn = function setFn(value) { + if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') { + t.mediaElement.renderer['set' + capName](value); } - } - } + }; - }, - setCurrentTime: function (time) { - if (this.pluginApi != null) { - if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') { - this.pluginApi.seekTo(time); - } else { - this.pluginApi.setCurrentTime(time); - } - - - - this.currentTime = time; + addProperty(t.mediaElement, propName, getFn, setFn); + t.mediaElement['get' + capName] = getFn; + t.mediaElement['set' + capName] = setFn; } }, - setVolume: function (volume) { - if (this.pluginApi != null) { - // same on YouTube and MEjs - if (this.pluginType == 'youtube') { - this.pluginApi.setVolume(volume * 100); - } else { - this.pluginApi.setVolume(volume); - } - this.volume = volume; - } + getSrc = function getSrc() { + return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null; }, - setMuted: function (muted) { - if (this.pluginApi != null) { - if (this.pluginType == 'youtube') { - if (muted) { - this.pluginApi.mute(); - } else { - this.pluginApi.unMute(); - } - this.muted = muted; - this.dispatchEvent({type:'volumechange'}); - } else { - this.pluginApi.setMuted(muted); + setSrc = function setSrc(value) { + var mediaFiles = []; + + if (typeof value === 'string') { + mediaFiles.push({ + src: value, + type: value ? (0, _media2.getTypeFromFile)(value) : '' + }); + } else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) { + var src = (0, _media2.absolutizeUrl)(value.src), + type = value.type, + media = Object.assign(value, { + src: src, + type: (type === '' || type === null || type === undefined) && src ? (0, _media2.getTypeFromFile)(src) : type + }); + mediaFiles.push(media); + } else if (Array.isArray(value)) { + for (var i = 0, total = value.length; i < total; i++) { + + var _src = (0, _media2.absolutizeUrl)(value[i].src), + _type = value[i].type, + _media = Object.assign(value[i], { + src: _src, + type: (_type === '' || _type === null || _type === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type + }); + + mediaFiles.push(_media); } - this.muted = muted; } - }, - // additional non-HTML5 methods - setVideoSize: function (width, height) { - - //if (this.pluginType == 'flash' || this.pluginType == 'silverlight') { - if (this.pluginElement && this.pluginElement.style) { - this.pluginElement.style.width = width + 'px'; - this.pluginElement.style.height = height + 'px'; - } - if (this.pluginApi != null && this.pluginApi.setVideoSize) { - this.pluginApi.setVideoSize(width, height); - } - //} - }, + var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []), + event = void 0; - setFullscreen: function (fullscreen) { - if (this.pluginApi != null && this.pluginApi.setFullscreen) { - this.pluginApi.setFullscreen(fullscreen); + if (!t.mediaElement.paused) { + t.mediaElement.pause(); + event = (0, _general.createEvent)('pause', t.mediaElement); + t.mediaElement.dispatchEvent(event); } - }, - - enterFullScreen: function() { - if (this.pluginApi != null && this.pluginApi.setFullscreen) { - this.setFullscreen(true); - } - - }, - - exitFullScreen: function() { - if (this.pluginApi != null && this.pluginApi.setFullscreen) { - this.setFullscreen(false); + + t.mediaElement.originalNode.setAttribute('src', mediaFiles[0].src || ''); + + if (t.mediaElement.querySelector('.me_cannotplay')) { + t.mediaElement.querySelector('.me_cannotplay').remove(); } - }, - // start: fake events - addEventListener: function (eventName, callback, bubble) { - this.events[eventName] = this.events[eventName] || []; - this.events[eventName].push(callback); - }, - removeEventListener: function (eventName, callback) { - if (!eventName) { this.events = {}; return true; } - var callbacks = this.events[eventName]; - if (!callbacks) return true; - if (!callback) { this.events[eventName] = []; return true; } - for (var i = 0; i < callbacks.length; i++) { - if (callbacks[i] === callback) { - this.events[eventName].splice(i, 1); - return true; - } + if (renderInfo === null) { + t.mediaElement.createErrorMessage(mediaFiles); + event = (0, _general.createEvent)('error', t.mediaElement); + event.message = 'No renderer found'; + t.mediaElement.dispatchEvent(event); + return; } - return false; - }, - dispatchEvent: function (event) { - var i, - args, - callbacks = this.events[event.type]; - if (callbacks) { - for (i = 0; i < callbacks.length; i++) { - callbacks[i].apply(this, [event]); - } + t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles); + + if (t.mediaElement.renderer === undefined || t.mediaElement.renderer === null) { + event = (0, _general.createEvent)('error', t.mediaElement); + event.message = 'Error creating renderer'; + t.mediaElement.dispatchEvent(event); + t.mediaElement.createErrorMessage(mediaFiles); } }, - // end: fake events - - // fake DOM attribute methods - hasAttribute: function(name){ - return (name in this.attributes); - }, - removeAttribute: function(name){ - delete this.attributes[name]; - }, - getAttribute: function(name){ - if (this.hasAttribute(name)) { - return this.attributes[name]; - } - return null; - }, - setAttribute: function(name, value){ - this.attributes[name] = value; - }, + assignMethods = function assignMethods(methodName) { + t.mediaElement[methodName] = function () { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') { + try { + t.mediaElement.renderer[methodName](args); + } catch (e) { + t.mediaElement.createErrorMessage(); + } + } + return null; + }; + }; + + addProperty(t.mediaElement, 'src', getSrc, setSrc); + t.mediaElement.getSrc = getSrc; + t.mediaElement.setSrc = setSrc; - remove: function() { - mejs.Utility.removeSwf(this.pluginElement.id); + for (var i = 0, total = props.length; i < total; i++) { + assignGettersSetters(props[i]); } -}; -/* -Default options -*/ -mejs.MediaElementDefaults = { - // allows testing on HTML5, flash, silverlight - // auto: attempts to detect what the browser can do - // auto_plugin: prefer plugins and then attempt native HTML5 - // native: forces HTML5 playback - // shim: disallows HTML5, will attempt either Flash or Silverlight - // none: forces fallback view - mode: 'auto', - // remove or reorder to change plugin priority and availability - plugins: ['flash','silverlight','youtube','vimeo'], - // shows debug errors on screen - enablePluginDebug: false, - // use plugin for browsers that have trouble with Basic Authentication on HTTPS sites - httpsBasicAuthSite: false, - // overrides the type specified, useful for dynamic instantiation - type: '', - // path to Flash and Silverlight plugins - pluginPath: mejs.Utility.getScriptPath(['mediaelement.js','mediaelement.min.js','mediaelement-and-player.js','mediaelement-and-player.min.js']), - // name of flash file - flashName: 'flashmediaelement.swf', - // streamer for RTMP streaming - flashStreamer: '', - // set to 'always' for CDN version - flashScriptAccess: 'sameDomain', - // turns on the smoothing filter in Flash - enablePluginSmoothing: false, - // enabled pseudo-streaming (seek) on .mp4 files - enablePseudoStreaming: false, - // start query parameter sent to server for pseudo-streaming - pseudoStreamingStartQueryParam: 'start', - // name of silverlight file - silverlightName: 'silverlightmediaelement.xap', - // default if the <video width> is not specified - defaultVideoWidth: 480, - // default if the <video height> is not specified - defaultVideoHeight: 270, - // overrides <video width> - pluginWidth: -1, - // overrides <video height> - pluginHeight: -1, - // additional plugin variables in 'key=value' form - pluginVars: [], - // rate in milliseconds for Flash and Silverlight to fire the timeupdate event - // larger number is less accurate, but less strain on plugin->JavaScript bridge - timerRate: 250, - // initial volume for player - startVolume: 0.8, - // custom error message in case media cannot be played; otherwise, Download File - // link will be displayed - customError: "", - success: function () { }, - error: function () { } -}; + for (var _i = 0, _total = methods.length; _i < _total; _i++) { + assignMethods(methods[_i]); + } -/* -Determines if a browser supports the <video> or <audio> element -and returns either the native element or a Flash/Silverlight version that -mimics HTML5 MediaElement -*/ -mejs.MediaElement = function (el, o) { - return mejs.HtmlMediaElementShim.create(el,o); -}; + t.mediaElement.events = {}; -mejs.HtmlMediaElementShim = { - - create: function(el, o) { - var - options = {}, - htmlMediaElement = (typeof(el) == 'string') ? document.getElementById(el) : el, - tagName = htmlMediaElement.tagName.toLowerCase(), - isMediaTag = (tagName === 'audio' || tagName === 'video'), - src = (isMediaTag) ? htmlMediaElement.getAttribute('src') : htmlMediaElement.getAttribute('href'), - poster = htmlMediaElement.getAttribute('poster'), - autoplay = htmlMediaElement.getAttribute('autoplay'), - preload = htmlMediaElement.getAttribute('preload'), - controls = htmlMediaElement.getAttribute('controls'), - playback, - prop; - - // extend options - for (prop in mejs.MediaElementDefaults) { - options[prop] = mejs.MediaElementDefaults[prop]; - } - for (prop in o) { - options[prop] = o[prop]; - } - + t.mediaElement.addEventListener = function (eventName, callback) { + t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || []; - // clean up attributes - src = (typeof src == 'undefined' || src === null || src == '') ? null : src; - poster = (typeof poster == 'undefined' || poster === null) ? '' : poster; - preload = (typeof preload == 'undefined' || preload === null || preload === 'false') ? 'none' : preload; - autoplay = !(typeof autoplay == 'undefined' || autoplay === null || autoplay === 'false'); - controls = !(typeof controls == 'undefined' || controls === null || controls === 'false'); - - // test for HTML5 and plugin capabilities - playback = this.determinePlayback(htmlMediaElement, options, mejs.MediaFeatures.supportsMediaTag, isMediaTag, src); - playback.url = (playback.url !== null) ? mejs.Utility.absolutizeUrl(playback.url) : ''; - playback.scheme = mejs.Utility.determineScheme(playback.url); - - if (playback.method == 'native') { - // second fix for android - if (mejs.MediaFeatures.isBustedAndroid) { - htmlMediaElement.src = playback.url; - htmlMediaElement.addEventListener('click', function() { - htmlMediaElement.play(); - }, false); - } - - // add methods to native HTMLMediaElement - return this.updateNative(playback, options, autoplay, preload); - } else if (playback.method !== '') { - // create plugin to mimic HTMLMediaElement - - return this.createPlugin( playback, options, poster, autoplay, preload, controls); - } else { - // boo, no HTML5, no Flash, no Silverlight. - this.createErrorMessage( playback, options, poster ); - - return this; + t.mediaElement.events[eventName].push(callback); + }; + t.mediaElement.removeEventListener = function (eventName, callback) { + if (!eventName) { + t.mediaElement.events = {}; + return true; } - }, - - determinePlayback: function(htmlMediaElement, options, supportsMediaTag, isMediaTag, src) { - var - mediaFiles = [], - i, - j, - k, - l, - n, - type, - result = { method: '', url: '', htmlMediaElement: htmlMediaElement, isVideo: (htmlMediaElement.tagName.toLowerCase() !== 'audio'), scheme: ''}, - pluginName, - pluginVersions, - pluginInfo, - dummy, - media; - - // STEP 1: Get URL and type from <video src> or <source src> - - // supplied type overrides <video type> and <source type> - if (typeof options.type != 'undefined' && options.type !== '') { - - // accept either string or array of types - if (typeof options.type == 'string') { - mediaFiles.push({type:options.type, url:src}); - } else { - - for (i=0; i<options.type.length; i++) { - mediaFiles.push({type:options.type[i], url:src}); - } - } - // test for src attribute first - } else if (src !== null) { - type = this.formatType(src, htmlMediaElement.getAttribute('type')); - mediaFiles.push({type:type, url:src}); + var callbacks = t.mediaElement.events[eventName]; - // then test for <source> elements - } else { - // test <source> types to see if they are usable - for (i = 0; i < htmlMediaElement.childNodes.length; i++) { - n = htmlMediaElement.childNodes[i]; - if (n.nodeType == 1 && n.tagName.toLowerCase() == 'source') { - src = n.getAttribute('src'); - type = this.formatType(src, n.getAttribute('type')); - media = n.getAttribute('media'); - - if (!media || !window.matchMedia || (window.matchMedia && window.matchMedia(media).matches)) { - mediaFiles.push({type:type, url:src}); - } - } - } + if (!callbacks) { + return true; } - - // in the case of dynamicly created players - // check for audio types - if (!isMediaTag && mediaFiles.length > 0 && mediaFiles[0].url !== null && this.getTypeFromFile(mediaFiles[0].url).indexOf('audio') > -1) { - result.isVideo = false; + + if (!callback) { + t.mediaElement.events[eventName] = []; + return true; } - - // STEP 2: Test for playback method - - // special case for Android which sadly doesn't implement the canPlayType function (always returns '') - if (result.isVideo && mejs.MediaFeatures.isBustedAndroid) { - htmlMediaElement.canPlayType = function(type) { - return (type.match(/video\/(mp4|m4v)/gi) !== null) ? 'maybe' : ''; - }; - } - - // special case for Chromium to specify natively supported video codecs (i.e. WebM and Theora) - if (result.isVideo && mejs.MediaFeatures.isChromium) { - htmlMediaElement.canPlayType = function(type) { - return (type.match(/video\/(webm|ogv|ogg)/gi) !== null) ? 'maybe' : ''; - }; + for (var _i2 = 0; _i2 < callbacks.length; _i2++) { + if (callbacks[_i2] === callback) { + t.mediaElement.events[eventName].splice(_i2, 1); + return true; + } } + return false; + }; - // test for native playback first - if (supportsMediaTag && (options.mode === 'auto' || options.mode === 'auto_plugin' || options.mode === 'native') && !(mejs.MediaFeatures.isBustedNativeHTTPS && options.httpsBasicAuthSite === true)) { - - if (!isMediaTag) { + t.mediaElement.dispatchEvent = function (event) { - // create a real HTML5 Media Element - dummy = document.createElement( result.isVideo ? 'video' : 'audio'); - htmlMediaElement.parentNode.insertBefore(dummy, htmlMediaElement); - htmlMediaElement.style.display = 'none'; - - // use this one from now on - result.htmlMediaElement = htmlMediaElement = dummy; + var callbacks = t.mediaElement.events[event.type]; + + if (callbacks) { + for (var _i3 = 0; _i3 < callbacks.length; _i3++) { + callbacks[_i3].apply(null, [event]); } - - for (i=0; i<mediaFiles.length; i++) { - // normal check - if (mediaFiles[i].type == "video/m3u8" || htmlMediaElement.canPlayType(mediaFiles[i].type).replace(/no/, '') !== '' - // special case for Mac/Safari 5.0.3 which answers '' to canPlayType('audio/mp3') but 'maybe' to canPlayType('audio/mpeg') - || htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/mp3/,'mpeg')).replace(/no/, '') !== '' - // special case for m4a supported by detecting mp4 support - || htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/m4a/,'mp4')).replace(/no/, '') !== '') { - result.method = 'native'; - result.url = mediaFiles[i].url; - break; - } - } - - if (result.method === 'native') { - if (result.url !== null) { - htmlMediaElement.src = result.url; - } - - // if `auto_plugin` mode, then cache the native result but try plugins. - if (options.mode !== 'auto_plugin') { - return result; + } + }; + + var processURL = function processURL(url, type) { + + if (_mejs2.default.html5media.mediaTypes.indexOf(type) > -1 && _window2.default.location.protocol === 'https:' && _constants.IS_IOS && !_window2.default.MSStream) { + var xhr = new XMLHttpRequest(); + xhr.onreadystatechange = function () { + if (this.readyState === 4 && this.status === 200) { + var _url = _window2.default.URL || _window2.default.webkitURL, + blobUrl = _url.createObjectURL(this.response); + t.mediaElement.originalNode.setAttribute('src', blobUrl); + return blobUrl; } - } + return url; + }; + xhr.open('GET', url); + xhr.responseType = 'blob'; + xhr.send(); } - // if native playback didn't work, then test plugins - if (options.mode === 'auto' || options.mode === 'auto_plugin' || options.mode === 'shim') { - for (i=0; i<mediaFiles.length; i++) { - type = mediaFiles[i].type; + return url; + }; - // test all plugins in order of preference [silverlight, flash] - for (j=0; j<options.plugins.length; j++) { + var mediaFiles = void 0; - pluginName = options.plugins[j]; - - // test version of plugin (for future features) - pluginVersions = mejs.plugins[pluginName]; - - for (k=0; k<pluginVersions.length; k++) { - pluginInfo = pluginVersions[k]; - - // test if user has the correct plugin version - - // for youtube/vimeo - if (pluginInfo.version == null || - - mejs.PluginDetector.hasPluginVersion(pluginName, pluginInfo.version)) { - - // test for plugin playback types - for (l=0; l<pluginInfo.types.length; l++) { - // find plugin that can play the type - if (type.toLowerCase() == pluginInfo.types[l].toLowerCase()) { - result.method = pluginName; - result.url = mediaFiles[i].url; - return result; - } - } - } + if (sources !== null) { + mediaFiles = sources; + } else if (t.mediaElement.originalNode !== null) { + + mediaFiles = []; + + switch (t.mediaElement.originalNode.nodeName.toLowerCase()) { + case 'iframe': + mediaFiles.push({ + type: '', + src: t.mediaElement.originalNode.getAttribute('src') + }); + + break; + case 'audio': + case 'video': + var _sources = t.mediaElement.originalNode.childNodes.length, + nodeSource = t.mediaElement.originalNode.getAttribute('src'); + + if (nodeSource) { + var node = t.mediaElement.originalNode, + type = (0, _media2.formatType)(nodeSource, node.getAttribute('type')); + mediaFiles.push({ + type: type, + src: processURL(nodeSource, type) + }); + } + + for (var _i4 = 0; _i4 < _sources; _i4++) { + var n = t.mediaElement.originalNode.childNodes[_i4]; + if (n.nodeType === Node.ELEMENT_NODE && n.tagName.toLowerCase() === 'source') { + var src = n.getAttribute('src'), + _type2 = (0, _media2.formatType)(src, n.getAttribute('type')); + mediaFiles.push({ type: _type2, src: processURL(src, _type2) }); } } - } - } - - // at this point, being in 'auto_plugin' mode implies that we tried plugins but failed. - // if we have native support then return that. - if (options.mode === 'auto_plugin' && result.method === 'native') { - return result; + break; } + } - // what if there's nothing to play? just grab the first available - if (result.method === '' && mediaFiles.length > 0) { - result.url = mediaFiles[0].url; - } + if (mediaFiles.length) { + t.mediaElement.src = mediaFiles; + } - return result; - }, + if (t.mediaElement.options.success) { + t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode); + } - formatType: function(url, type) { - // if no type is supplied, fake it with the extension - if (url && !type) { - return this.getTypeFromFile(url); - } else { - // only return the mime part of the type in case the attribute contains the codec - // see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element - // `video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4` - - if (type && ~type.indexOf(';')) { - return type.substr(0, type.indexOf(';')); - } else { - return type; - } - } - }, - - getTypeFromFile: function(url) { - url = url.split('?')[0]; - var - ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase(), - av = /(mp4|m4v|ogg|ogv|m3u8|webm|webmv|flv|wmv|mpeg|mov)/gi.test(ext) ? 'video/' : 'audio/'; - return this.getTypeFromExtension(ext, av); - }, - - getTypeFromExtension: function(ext, av) { - av = av || ''; - - switch (ext) { - case 'mp4': - case 'm4v': - case 'm4a': - case 'f4v': - case 'f4a': - return av + 'mp4'; - case 'flv': - return av + 'x-flv'; - case 'webm': - case 'webma': - case 'webmv': - return av + 'webm'; - case 'ogg': - case 'oga': - case 'ogv': - return av + 'ogg'; - case 'm3u8': - return 'application/x-mpegurl'; - case 'ts': - return av + 'mp2t'; - default: - return av + ext; - } - }, + if (error && t.mediaElement.options.error) { + t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode); + } - createErrorMessage: function(playback, options, poster) { - var - htmlMediaElement = playback.htmlMediaElement, - errorContainer = document.createElement('div'), - errorContent = options.customError; - - errorContainer.className = 'me-cannotplay'; + return t.mediaElement; +}; - try { - errorContainer.style.width = htmlMediaElement.width + 'px'; - errorContainer.style.height = htmlMediaElement.height + 'px'; - } catch (e) {} +_window2.default.MediaElement = MediaElement; - if (!errorContent) { - errorContent = '<a href="' + playback.url + '">'; +exports.default = MediaElement; - if (poster !== '') { - errorContent += '<img src="' + poster + '" width="100%" height="100%" alt="" />'; - } +},{"2":2,"23":23,"25":25,"26":26,"3":3,"6":6,"7":7}],6:[function(_dereq_,module,exports){ +'use strict'; - errorContent += '<span>' + mejs.i18n.t('mejs.download-file') + '</span></a>'; - } +Object.defineProperty(exports, "__esModule", { + value: true +}); - errorContainer.innerHTML = errorContent; +var _window = _dereq_(3); - htmlMediaElement.parentNode.insertBefore(errorContainer, htmlMediaElement); - htmlMediaElement.style.display = 'none'; +var _window2 = _interopRequireDefault(_window); - options.error(htmlMediaElement); - }, +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - createPlugin:function(playback, options, poster, autoplay, preload, controls) { - var - htmlMediaElement = playback.htmlMediaElement, - width = 1, - height = 1, - pluginid = 'me_' + playback.method + '_' + (mejs.meIndex++), - pluginMediaElement = new mejs.PluginMediaElement(pluginid, playback.method, playback.url), - container = document.createElement('div'), - specialIEContainer, - node, - initVars; +var mejs = {}; - // copy tagName from html media element - pluginMediaElement.tagName = htmlMediaElement.tagName; +mejs.version = '4.1.2'; - // copy attributes from html media element to plugin media element - for (var i = 0; i < htmlMediaElement.attributes.length; i++) { - var attribute = htmlMediaElement.attributes[i]; - if (attribute.specified) { - pluginMediaElement.setAttribute(attribute.name, attribute.value); - } - } +mejs.html5media = { + properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'], + readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'], - // check for placement inside a <p> tag (sometimes WYSIWYG editors do this) - node = htmlMediaElement.parentNode; + methods: ['load', 'play', 'pause', 'canPlayType'], - while (node !== null && node.tagName != null && node.tagName.toLowerCase() !== 'body' && - node.parentNode != null && node.parentNode.tagName != null && node.parentNode.constructor != null && node.parentNode.constructor.name === "ShadowRoot") { - if (node.parentNode.tagName.toLowerCase() === 'p') { - node.parentNode.parentNode.insertBefore(node, node.parentNode); - break; - } - node = node.parentNode; - } + events: ['loadstart', 'progress', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'pause', 'loadedmetadata', 'loadeddata', 'waiting', 'playing', 'canplay', 'canplaythrough', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'durationchange', 'volumechange'], - if (playback.isVideo) { - width = (options.pluginWidth > 0) ? options.pluginWidth : (options.videoWidth > 0) ? options.videoWidth : (htmlMediaElement.getAttribute('width') !== null) ? htmlMediaElement.getAttribute('width') : options.defaultVideoWidth; - height = (options.pluginHeight > 0) ? options.pluginHeight : (options.videoHeight > 0) ? options.videoHeight : (htmlMediaElement.getAttribute('height') !== null) ? htmlMediaElement.getAttribute('height') : options.defaultVideoHeight; - - // in case of '%' make sure it's encoded - width = mejs.Utility.encodeUrl(width); - height = mejs.Utility.encodeUrl(height); - - } else { - if (options.enablePluginDebug) { - width = 320; - height = 240; + mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv'] +}; + +_window2.default.mejs = mejs; + +exports.default = mejs; + +},{"3":3}],7:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.renderer = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _mejs = _dereq_(6); + +var _mejs2 = _interopRequireDefault(_mejs); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Renderer = function () { + function Renderer() { + _classCallCheck(this, Renderer); + + this.renderers = {}; + this.order = []; + } + + _createClass(Renderer, [{ + key: 'add', + value: function add(renderer) { + if (renderer.name === undefined) { + throw new TypeError('renderer must contain at least `name` property'); } - } - // register plugin - pluginMediaElement.success = options.success; - - // add container (must be added to DOM before inserting HTML for IE) - container.className = 'me-plugin'; - container.id = pluginid + '_container'; - - if (playback.isVideo) { - htmlMediaElement.parentNode.insertBefore(container, htmlMediaElement); - } else { - document.body.insertBefore(container, document.body.childNodes[0]); + this.renderers[renderer.name] = renderer; + this.order.push(renderer.name); } - - if (playback.method === 'flash' || playback.method === 'silverlight') { + }, { + key: 'select', + value: function select(mediaFiles) { + var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + + var renderersLength = renderers.length; - var canPlayVideo = htmlMediaElement.getAttribute('type') === 'audio/mp4', - childrenSources = htmlMediaElement.getElementsByTagName('source'); + renderers = renderers.length ? renderers : this.order; - if (childrenSources && !canPlayVideo) { - for (var i = 0, total = childrenSources.length; i < total; i++) { - if (childrenSources[i].getAttribute('type') === 'audio/mp4') { - canPlayVideo = true; + if (!renderersLength) { + var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i], + rendererRanking = function rendererRanking(renderer) { + for (var i = 0, total = rendererIndicator.length; i < total; i++) { + if (rendererIndicator[i].test(renderer)) { + return i; + } } - } + return rendererIndicator.length; + }; + + renderers.sort(function (a, b) { + return rendererRanking(a) - rendererRanking(b); + }); } - // flash/silverlight vars - initVars = [ - 'id=' + pluginid, - 'isvideo=' + ((playback.isVideo || canPlayVideo) ? "true" : "false"), - 'autoplay=' + ((autoplay) ? "true" : "false"), - 'preload=' + preload, - 'width=' + width, - 'startvolume=' + options.startVolume, - 'timerrate=' + options.timerRate, - 'flashstreamer=' + options.flashStreamer, - 'height=' + height, - 'pseudostreamstart=' + options.pseudoStreamingStartQueryParam]; - - if (playback.url !== null) { - if (playback.method == 'flash') { - initVars.push('file=' + mejs.Utility.encodeUrl(playback.url)); - } else { - initVars.push('file=' + playback.url); + for (var i = 0, total = renderers.length; i < total; i++) { + var key = renderers[i], + _renderer = this.renderers[key]; + + if (_renderer !== null && _renderer !== undefined) { + for (var j = 0, jl = mediaFiles.length; j < jl; j++) { + if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) { + return { + rendererName: _renderer.name, + src: mediaFiles[j].src + }; + } + } } } - if (options.enablePluginDebug) { - initVars.push('debug=true'); - } - if (options.enablePluginSmoothing) { - initVars.push('smoothing=true'); - } - if (options.enablePseudoStreaming) { - initVars.push('pseudostreaming=true'); + + return null; + } + }, { + key: 'order', + set: function set(order) { + if (!Array.isArray(order)) { + throw new TypeError('order must be an array of strings.'); } - if (controls) { - initVars.push('controls=true'); // shows controls in the plugin if desired + + this._order = order; + }, + get: function get() { + return this._order; + } + }, { + key: 'renderers', + set: function set(renderers) { + if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') { + throw new TypeError('renderers must be an array of objects.'); } - if (options.pluginVars) { - initVars = initVars.concat(options.pluginVars); - } - - // call from plugin - window[pluginid + '_init'] = function() { - switch (pluginMediaElement.pluginType) { - case 'flash': - pluginMediaElement.pluginElement = pluginMediaElement.pluginApi = document.getElementById(pluginid); - break; - case 'silverlight': - pluginMediaElement.pluginElement = document.getElementById(pluginMediaElement.id); - pluginMediaElement.pluginApi = pluginMediaElement.pluginElement.Content.MediaElementJS; - break; - } - - if (pluginMediaElement.pluginApi != null && pluginMediaElement.success) { - pluginMediaElement.success(pluginMediaElement, htmlMediaElement); - } - }; - - // event call from plugin - window[pluginid + '_event'] = function(eventName, values) { - - var - e, - i, - bufferedTime; - - // fake event object to mimic real HTML media event. - e = { - type: eventName, - target: pluginMediaElement - }; - - // attach all values to element and event object - for (i in values) { - pluginMediaElement[i] = values[i]; - e[i] = values[i]; - } - - // fake the newer W3C buffered TimeRange (loaded and total have been removed) - bufferedTime = values.bufferedTime || 0; - - e.target.buffered = e.buffered = { - start: function(index) { - return 0; - }, - end: function (index) { - return bufferedTime; - }, - length: 1 - }; - - pluginMediaElement.dispatchEvent(e); - } - - - } - - switch (playback.method) { - case 'silverlight': - container.innerHTML = -'<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="' + pluginid + '" name="' + pluginid + '" width="' + width + '" height="' + height + '" class="mejs-shim">' + -'<param name="initParams" value="' + initVars.join(',') + '" />' + -'<param name="windowless" value="true" />' + -'<param name="background" value="black" />' + -'<param name="minRuntimeVersion" value="3.0.0.0" />' + -'<param name="autoUpgrade" value="true" />' + -'<param name="source" value="' + options.pluginPath + options.silverlightName + '" />' + -'</object>'; - break; - case 'flash': - - if (mejs.MediaFeatures.isIE) { - specialIEContainer = document.createElement('div'); - container.appendChild(specialIEContainer); - specialIEContainer.outerHTML = -'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" ' + -'id="' + pluginid + '" width="' + width + '" height="' + height + '" class="mejs-shim">' + -'<param name="movie" value="' + options.pluginPath + options.flashName + '?' + (new Date().getTime()) + '" />' + -'<param name="flashvars" value="' + initVars.join('&') + '" />' + -'<param name="quality" value="high" />' + -'<param name="bgcolor" value="#000000" />' + -'<param name="wmode" value="transparent" />' + -'<param name="allowScriptAccess" value="' + options.flashScriptAccess + '" />' + -'<param name="allowFullScreen" value="true" />' + -'<param name="scale" value="default" />' + -'</object>'; + this._renderers = renderers; + }, + get: function get() { + return this._renderers; + } + }]); - } else { + return Renderer; +}(); - container.innerHTML = -'<embed id="' + pluginid + '" name="' + pluginid + '" ' + -'play="true" ' + -'loop="false" ' + -'quality="high" ' + -'bgcolor="#000000" ' + -'wmode="transparent" ' + -'allowScriptAccess="' + options.flashScriptAccess + '" ' + -'allowFullScreen="true" ' + -'type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" ' + -'src="' + options.pluginPath + options.flashName + '" ' + -'flashvars="' + initVars.join('&') + '" ' + -'width="' + width + '" ' + -'height="' + height + '" ' + -'scale="default"' + -'class="mejs-shim"></embed>'; - } - break; - - case 'youtube': - - - var videoId; - // youtu.be url from share button - if (playback.url.lastIndexOf("youtu.be") != -1) { - videoId = playback.url.substr(playback.url.lastIndexOf('/')+1); - if (videoId.indexOf('?') != -1) { - videoId = videoId.substr(0, videoId.indexOf('?')); - } - } - else { - // https://www.youtube.com/watch?v= - var videoIdMatch = playback.url.match( /[?&]v=([^&#]+)|&|#|$/ ); - if ( videoIdMatch ) { - videoId = videoIdMatch[1]; - } - } - youtubeSettings = { - container: container, - containerId: container.id, - pluginMediaElement: pluginMediaElement, - pluginId: pluginid, - videoId: videoId, - height: height, - width: width, - scheme: playback.scheme, - variables: options.youtubeIframeVars - }; - - // favor iframe version of YouTube - if (window.postMessage) { - mejs.YouTubeApi.enqueueIframe(youtubeSettings); - } else if (mejs.PluginDetector.hasPluginVersion('flash', [10,0,0]) ) { - mejs.YouTubeApi.createFlash(youtubeSettings, options); - } - break; - - // DEMO Code. Does NOT work. - case 'vimeo': - var player_id = pluginid + "_player"; - pluginMediaElement.vimeoid = playback.url.substr(playback.url.lastIndexOf('/')+1); - - container.innerHTML ='<iframe src="' + playback.scheme + 'player.vimeo.com/video/' + pluginMediaElement.vimeoid + '?api=1&portrait=0&byline=0&title=0&player_id=' + player_id + '" width="' + width +'" height="' + height +'" frameborder="0" class="mejs-shim" id="' + player_id + '" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'; - if (typeof($f) == 'function') { // froogaloop available - var player = $f(container.childNodes[0]), - playerState = -1; - - player.addEvent('ready', function() { - - player.playVideo = function() { - player.api( 'play' ); - }; - player.stopVideo = function() { - player.api( 'unload' ); - }; - player.pauseVideo = function() { - player.api( 'pause' ); - }; - player.seekTo = function( seconds ) { - player.api( 'seekTo', seconds ); - }; - player.setVolume = function( volume ) { - player.api( 'setVolume', volume ); - }; - player.setMuted = function( muted ) { - if( muted ) { - player.lastVolume = player.api( 'getVolume' ); - player.api( 'setVolume', 0 ); - } else { - player.api( 'setVolume', player.lastVolume ); - delete player.lastVolume; - } - }; - // parity with YT player - player.getPlayerState = function() { - return playerState; - }; +var renderer = exports.renderer = new Renderer(); - function createEvent(player, pluginMediaElement, eventName, e) { - var event = { - type: eventName, - target: pluginMediaElement - }; - if (eventName == 'timeupdate') { - pluginMediaElement.currentTime = event.currentTime = e.seconds; - pluginMediaElement.duration = event.duration = e.duration; - } - pluginMediaElement.dispatchEvent(event); - } +_mejs2.default.Renderers = renderer; - player.addEvent('play', function() { - playerState = 1; - createEvent(player, pluginMediaElement, 'play'); - createEvent(player, pluginMediaElement, 'playing'); - }); +},{"6":6}],8:[function(_dereq_,module,exports){ +'use strict'; - player.addEvent('pause', function() { - playerState = 2; - createEvent(player, pluginMediaElement, 'pause'); - }); +var _window = _dereq_(3); - player.addEvent('finish', function() { - playerState = 0; - createEvent(player, pluginMediaElement, 'ended'); - }); +var _window2 = _interopRequireDefault(_window); - player.addEvent('playProgress', function(e) { - createEvent(player, pluginMediaElement, 'timeupdate', e); - }); - - player.addEvent('seek', function(e) { - playerState = 3; - createEvent(player, pluginMediaElement, 'seeked', e); - }); - - player.addEvent('loadProgress', function(e) { - playerState = 3; - createEvent(player, pluginMediaElement, 'progress', e); - }); +var _document = _dereq_(2); - pluginMediaElement.pluginElement = container; - pluginMediaElement.pluginApi = player; +var _document2 = _interopRequireDefault(_document); - pluginMediaElement.success(pluginMediaElement, pluginMediaElement.pluginElement); - }); - } - else { - console.warn("You need to include froogaloop for vimeo to work"); - } - break; - } - // hide original element - htmlMediaElement.style.display = 'none'; - // prevent browser from autoplaying when using a plugin - htmlMediaElement.removeAttribute('autoplay'); - - return pluginMediaElement; - }, +var _i18n = _dereq_(4); - updateNative: function(playback, options, autoplay, preload) { - - var htmlMediaElement = playback.htmlMediaElement, - m; - - - // add methods to video object to bring it into parity with Flash Object - for (m in mejs.HtmlMediaElement) { - htmlMediaElement[m] = mejs.HtmlMediaElement[m]; +var _i18n2 = _interopRequireDefault(_i18n); + +var _player = _dereq_(16); + +var _player2 = _interopRequireDefault(_player); + +var _constants = _dereq_(23); + +var Features = _interopRequireWildcard(_constants); + +var _general = _dereq_(25); + +var _dom = _dereq_(24); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +Object.assign(_player.config, { + usePluginFullScreen: true, + + fullscreenText: null +}); + +Object.assign(_player2.default.prototype, { + isFullScreen: false, + + isNativeFullScreen: false, + + isInIframe: false, + + isPluginClickThroughCreated: false, + + fullscreenMode: '', + + containerSizeTimeout: null, + + buildfullscreen: function buildfullscreen(player) { + if (!player.isVideo) { + return; } - /* - Chrome now supports preload="none" - if (mejs.MediaFeatures.isChrome) { - - // special case to enforce preload attribute (Chrome doesn't respect this) - if (preload === 'none' && !autoplay) { - - // forces the browser to stop loading (note: fails in IE9) - htmlMediaElement.src = ''; - htmlMediaElement.load(); - htmlMediaElement.canceledPreload = true; - - htmlMediaElement.addEventListener('play',function() { - if (htmlMediaElement.canceledPreload) { - htmlMediaElement.src = playback.url; - htmlMediaElement.load(); - htmlMediaElement.play(); - htmlMediaElement.canceledPreload = false; - } - }, false); - // for some reason Chrome forgets how to autoplay sometimes. - } else if (autoplay) { - htmlMediaElement.load(); - htmlMediaElement.play(); + player.isInIframe = _window2.default.location !== _window2.default.parent.location; + + player.detectFullscreenMode(); + + var t = this, + fullscreenTitle = (0, _general.isString)(t.options.fullscreenText) ? t.options.fullscreenText : _i18n2.default.t('mejs.fullscreen'), + fullscreenBtn = _document2.default.createElement('div'); + + fullscreenBtn.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'fullscreen-button'; + fullscreenBtn.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '" tabindex="0"></button>'; + t.addControlElement(fullscreenBtn, 'fullscreen'); + + fullscreenBtn.addEventListener('click', function () { + var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen; + + if (isFullScreen) { + player.exitFullScreen(); + } else { + player.enterFullScreen(); } - } - */ + }); - // fire success code - options.success(htmlMediaElement, htmlMediaElement); - - return htmlMediaElement; - } -}; + player.fullscreenBtn = fullscreenBtn; -/* - - test on IE (object vs. embed) - - determine when to use iframe (Firefox, Safari, Mobile) vs. Flash (Chrome, IE) - - fullscreen? -*/ + t.globalBind('keydown', function (e) { + var key = e.which || e.keyCode || 0; + if (key === 27 && (Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || t.isFullScreen)) { + player.exitFullScreen(); + } + }); -// YouTube Flash and Iframe API -mejs.YouTubeApi = { - isIframeStarted: false, - isIframeLoaded: false, - loadIframeApi: function(yt) { - if (!this.isIframeStarted) { - var tag = document.createElement('script'); - tag.src = yt.scheme + "www.youtube.com/player_api"; - var firstScriptTag = document.getElementsByTagName('script')[0]; - firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); - this.isIframeStarted = true; + t.normalHeight = 0; + t.normalWidth = 0; + + if (Features.HAS_TRUE_NATIVE_FULLSCREEN) { + var fullscreenChanged = function fullscreenChanged() { + if (player.isFullScreen) { + if (Features.isFullScreen()) { + player.isNativeFullScreen = true; + + player.setControlsSize(); + } else { + player.isNativeFullScreen = false; + + player.exitFullScreen(); + } + } + }; + + player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged); } }, - iframeQueue: [], - enqueueIframe: function(yt) { - - if (this.isLoaded) { - this.createIframe(yt); + detectFullscreenMode: function detectFullscreenMode() { + var t = this, + isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName); + + var mode = ''; + + if (Features.HAS_TRUE_NATIVE_FULLSCREEN && isNative) { + mode = 'native-native'; + } else if (Features.HAS_TRUE_NATIVE_FULLSCREEN && !isNative) { + mode = 'plugin-native'; + } else if (t.usePluginFullScreen && Features.SUPPORT_POINTER_EVENTS) { + mode = 'plugin-click'; } else { - this.loadIframeApi(yt); - this.iframeQueue.push(yt); + mode = 'fullwindow'; } + + t.fullscreenMode = mode; + return mode; }, - createIframe: function(settings) { - - var - pluginMediaElement = settings.pluginMediaElement, - defaultVars = {controls:0, wmode:'transparent'}, - player = new YT.Player(settings.containerId, { - height: settings.height, - width: settings.width, - videoId: settings.videoId, - playerVars: mejs.$.extend({}, defaultVars, settings.variables), - events: { - 'onReady': function(e) { - - // wrapper to match - player.setVideoSize = function(width, height) { - player.setSize(width, height); - }; - - // hook up iframe object to MEjs - settings.pluginMediaElement.pluginApi = player; - settings.pluginMediaElement.pluginElement = document.getElementById(settings.containerId); - - // init mejs - pluginMediaElement.success(pluginMediaElement, pluginMediaElement.pluginElement); - - mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'canplay'); - - // create timer - setInterval(function() { - mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate'); - }, 250); - - if (typeof pluginMediaElement.attributes.autoplay !== 'undefined') { - player.playVideo(); - } - }, - 'onStateChange': function(e) { - - mejs.YouTubeApi.handleStateChange(e.data, player, pluginMediaElement); - - } - } - }); + cleanfullscreen: function cleanfullscreen(player) { + player.exitFullScreen(); }, - - createEvent: function (player, pluginMediaElement, eventName) { - var event = { - type: eventName, - target: pluginMediaElement - }; - - if (player && player.getDuration) { - - // time - pluginMediaElement.currentTime = event.currentTime = player.getCurrentTime(); - pluginMediaElement.duration = event.duration = player.getDuration(); - - // state - event.paused = pluginMediaElement.paused; - event.ended = pluginMediaElement.ended; - - // sound - event.muted = player.isMuted(); - event.volume = player.getVolume() / 100; - - // progress - event.bytesTotal = player.getVideoBytesTotal(); - event.bufferedBytes = player.getVideoBytesLoaded(); - - // fake the W3C buffered TimeRange - var bufferedTime = event.bufferedBytes / event.bytesTotal * event.duration; - - event.target.buffered = event.buffered = { - start: function(index) { - return 0; - }, - end: function (index) { - return bufferedTime; - }, - length: 1 - }; - + enterFullScreen: function enterFullScreen() { + var t = this, + isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName), + containerStyles = getComputedStyle(t.container); + + if (Features.IS_IOS && Features.HAS_IOS_FULLSCREEN) { + if (typeof t.media.webkitEnterFullscreen === 'function') { + t.media.webkitEnterFullscreen(); + } else { + t.media.originalNode.webkitEnterFullscreen(); + } + return; } - - // send event up the chain - pluginMediaElement.dispatchEvent(event); - }, - - iFrameReady: function() { - - this.isLoaded = true; - this.isIframeLoaded = true; - - while (this.iframeQueue.length > 0) { - var settings = this.iframeQueue.pop(); - this.createIframe(settings); - } - }, - - // FLASH! - flashPlayers: {}, - createFlash: function(settings) { - - this.flashPlayers[settings.pluginId] = settings; - - /* - settings.container.innerHTML = - '<object type="application/x-shockwave-flash" id="' + settings.pluginId + '" data="' + settings.scheme + 'www.youtube.com/apiplayer?enablejsapi=1&playerapiid=' + settings.pluginId + '&version=3&autoplay=0&controls=0&modestbranding=1&loop=0" ' + - 'width="' + settings.width + '" height="' + settings.height + '" style="visibility: visible; " class="mejs-shim">' + - '<param name="allowScriptAccess" value="sameDomain">' + - '<param name="wmode" value="transparent">' + - '</object>'; - */ - - var specialIEContainer, - youtubeUrl = settings.scheme + 'www.youtube.com/apiplayer?enablejsapi=1&playerapiid=' + settings.pluginId + '&version=3&autoplay=0&controls=0&modestbranding=1&loop=0'; - - if (mejs.MediaFeatures.isIE) { - - specialIEContainer = document.createElement('div'); - settings.container.appendChild(specialIEContainer); - specialIEContainer.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="' + settings.scheme + 'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" ' + -'id="' + settings.pluginId + '" width="' + settings.width + '" height="' + settings.height + '" class="mejs-shim">' + - '<param name="movie" value="' + youtubeUrl + '" />' + - '<param name="wmode" value="transparent" />' + - '<param name="allowScriptAccess" value="' + options.flashScriptAccess + '" />' + - '<param name="allowFullScreen" value="true" />' + -'</object>'; - } else { - settings.container.innerHTML = - '<object type="application/x-shockwave-flash" id="' + settings.pluginId + '" data="' + youtubeUrl + '" ' + - 'width="' + settings.width + '" height="' + settings.height + '" style="visibility: visible; " class="mejs-shim">' + - '<param name="allowScriptAccess" value="' + options.flashScriptAccess + '">' + - '<param name="wmode" value="transparent">' + - '</object>'; - } - - }, - - flashReady: function(id) { - var - settings = this.flashPlayers[id], - player = document.getElementById(id), - pluginMediaElement = settings.pluginMediaElement; - - // hook up and return to MediaELementPlayer.success - pluginMediaElement.pluginApi = - pluginMediaElement.pluginElement = player; - - settings.success(pluginMediaElement, pluginMediaElement.pluginElement); - - // load the youtube video - player.cueVideoById(settings.videoId); - - var callbackName = settings.containerId + '_callback'; - - window[callbackName] = function(e) { - mejs.YouTubeApi.handleStateChange(e, player, pluginMediaElement); - }; - - player.addEventListener('onStateChange', callbackName); - - setInterval(function() { - mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate'); - }, 250); - - mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'canplay'); - }, - - handleStateChange: function(youTubeState, player, pluginMediaElement) { - switch (youTubeState) { - case -1: // not started - pluginMediaElement.paused = true; - pluginMediaElement.ended = true; - mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'loadedmetadata'); - //createYouTubeEvent(player, pluginMediaElement, 'loadeddata'); - break; - case 0: - pluginMediaElement.paused = false; - pluginMediaElement.ended = true; - mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'ended'); - break; - case 1: - pluginMediaElement.paused = false; - pluginMediaElement.ended = false; - mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'play'); - mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'playing'); - break; - case 2: - pluginMediaElement.paused = true; - pluginMediaElement.ended = false; - mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'pause'); - break; - case 3: // buffering - mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'progress'); - break; - case 5: - // cued? - break; - - } - - } -} -// IFRAME -window.onYouTubePlayerAPIReady = function() { - mejs.YouTubeApi.iFrameReady(); -}; -// FLASH -window.onYouTubePlayerReady = function(id) { - mejs.YouTubeApi.flashReady(id); -}; -window.mejs = mejs; -window.MediaElement = mejs.MediaElement; + (0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen'); + (0, _dom.addClass)(t.container, t.options.classPrefix + 'container-fullscreen'); -/** - * Localize strings - * - * Include translations from JS files and method to pluralize properly strings. - * - */ -(function (doc, win, mejs, undefined) { - - var i18n = { - /** - * @type {String} - */ - 'default': 'en', - - /** - * @type {String[]} - */ - locale: { - language: (mejs.i18n && mejs.i18n.locale.language) || '', - strings: (mejs.i18n && mejs.i18n.locale.strings) || {} - }, + t.normalHeight = parseFloat(containerStyles.height); + t.normalWidth = parseFloat(containerStyles.width); - /** - * Filters for available languages. - * - * This plural forms are grouped in family groups based on - * https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of_Plural_Rules - * with some additions and corrections according to the Localization Guide list - * (http://localization-guide.readthedocs.io/en/latest/l10n/pluralforms.html) - * - * Arguments are dynamic following the structure: - * - argument1 : Number to determine form - * - argument2...argumentN: Possible matches - * - * @type {Function[]} - */ - pluralForms: [ - // 0: Chinese, Japanese, Korean, Persian, Turkish, Thai, Lao, Aymará, - // Tibetan, Chiga, Dzongkha, Indonesian, Lojban, Georgian, Kazakh, Khmer, Kyrgyz, Malay, - // Burmese, Yakut, Sundanese, Tatar, Uyghur, Vietnamese, Wolof - function () { - return arguments[1]; - }, - // 1: Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish, Estonian, Finnish, - // Hungarian, Basque, Greek, Hebrew, Italian, Portuguese, Spanish, Catalan, Afrikaans, - // Angika, Assamese, Asturian, Azerbaijani, Bulgarian, Bengali, Bodo, Aragonese, Dogri, - // Esperanto, Argentinean Spanish, Fulah, Friulian, Galician, Gujarati, Hausa, - // Hindi, Chhattisgarhi, Armenian, Interlingua, Greenlandic, Kannada, Kurdish, Letzeburgesch, - // Maithili, Malayalam, Mongolian, Manipuri, Marathi, Nahuatl, Neapolitan, Norwegian Bokmal, - // Nepali, Norwegian Nynorsk, Norwegian (old code), Northern Sotho, Oriya, Punjabi, Papiamento, - // Piemontese, Pashto, Romansh, Kinyarwanda, Santali, Scots, Sindhi, Northern Sami, Sinhala, - // Somali, Songhay, Albanian, Swahili, Tamil, Telugu, Turkmen, Urdu, Yoruba - function () { - var args = arguments; - if (args[0] === 1) { - return args[1]; - } else { - return args[2]; - } - }, - // 2: French, Brazilian Portuguese, Acholi, Akan, Amharic, Mapudungun, Breton, Filipino, - // Gun, Lingala, Mauritian Creole, Malagasy, Maori, Occitan, Tajik, Tigrinya, Uzbek, Walloon - function () { - var args = arguments; - if ([0, 1].indexOf(args[0]) > -1) { - return args[1]; - } else { - return args[2]; - } - }, - // 3: Latvian - function () { - var args = arguments; - if (args[0] % 10 === 1 && args[0] % 100 !== 11) { - return args[1]; - } else if (args[0] !== 0) { - return args[2]; - } else { - return args[3]; - } - }, - // 4: Scottish Gaelic - function () { - var args = arguments; - if (args[0] === 1 || args[0] === 11) { - return args[1]; - } else if (args[0] === 2 || args[0] === 12) { - return args[2]; - } else if (args[0] > 2 && args[0] < 20) { - return args[3]; - } else { - return args[4]; - } - }, - // 5: Romanian - function () { - if (args[0] === 1) { - return args[1]; - } else if (args[0] === 0 || (args[0] % 100 > 0 && args[0] % 100 < 20)) { - return args[2]; - } else { - return args[3]; - } - }, - // 6: Lithuanian - function () { - var args = arguments; - if (args[0] % 10 === 1 && args[0] % 100 !== 11) { - return args[1]; - } else if (args[0] % 10 >= 2 && (args[0] % 100 < 10 || args[0] % 100 >= 20)) { - return args[2]; - } else { - return [3]; - } - }, - // 7: Belarusian, Bosnian, Croatian, Serbian, Russian, Ukrainian - function () { - var args = arguments; - if (args[0] % 10 === 1 && args[0] % 100 !== 11) { - return args[1]; - } else if (args[0] % 10 >= 2 && args[0] % 10 <= 4 && (args[0] % 100 < 10 || args[0] % 100 >= 20)) { - return args[2]; - } else { - return args[3]; - } - }, - // 8: Slovak, Czech - function () { - var args = arguments; - if (args[0] === 1) { - return args[1]; - } else if (args[0] >= 2 && args[0] <= 4) { - return args[2]; - } else { - return args[3]; - } - }, - // 9: Polish - function () { - var args = arguments; - if (args[0] === 1) { - return args[1]; - } else if (args[0] % 10 >= 2 && args[0] % 10 <= 4 && (args[0] % 100 < 10 || args[0] % 100 >= 20)) { - return args[2]; - } else { - return args[3]; - } - }, - // 10: Slovenian - function () { - var args = arguments; - if (args[0] % 100 === 1) { - return args[2]; - } else if (args[0] % 100 === 2) { - return args[3]; - } else if (args[0] % 100 === 3 || args[0] % 100 === 4) { - return args[4]; - } else { - return args[1]; - } - }, - // 11: Irish Gaelic - function () { - var args = arguments; - if (args[0] === 1) { - return args[1]; - } else if (args[0] === 2) { - return args[2]; - } else if (args[0] > 2 && args[0] < 7) { - return args[3]; - } else if (args[0] > 6 && args[0] < 11) { - return args[4]; - } else { - return args[5]; - } - }, - // 12: Arabic - function () { - var args = arguments; - if (args[0] === 0) { - return args[1]; - } else if (args[0] === 1) { - return args[2]; - } else if (args[0] === 2) { - return args[3]; - } else if (args[0] % 100 >= 3 && args[0] % 100 <= 10) { - return args[4]; - } else if (args[0] % 100 >= 11) { - return args[5]; - } else { - return args[6]; - } - }, - // 13: Maltese - function () { - var args = arguments; - if (args[0] === 1) { - return args[1]; - } else if (args[0] === 0 || (args[0] % 100 > 1 && args[0] % 100 < 11)) { - return args[2]; - } else if (args[0] % 100 > 10 && args[0] % 100 < 20) { - return args[3]; - } else { - return args[4]; - } + if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') { + Features.requestFullScreen(t.container); - }, - // 14: Macedonian - function () { - var args = arguments; - if (args[0] % 10 === 1) { - return args[1]; - } else if (args[0] % 10 === 2) { - return args[2]; - } else { - return args[3]; - } - }, - // 15: Icelandic - function () { - var args = arguments; - if (args[0] !== 11 && args[0] % 10 === 1) { - return args[1]; - } else { - return args[2]; - } - }, - // New additions - - // 16: Kashubian - // Note: in https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of_Plural_Rules - // Breton is listed as #16 but in the Localization Guide it belongs to the group 2 - function () { - var args = arguments; - if (args[0] === 1) { - return args[1]; - } else if (args[0] % 10 >= 2 && args[0] % 10 <= 4 && (args[0] % 100 < 10 || args[0] % 100 >= 20)) { - return args[2]; - } else { - return args[3]; - } - }, - // 17: Welsh - function () { - var args = arguments; - if (args[0] === 1) { - return args[1]; - } else if (args[0] === 2) { - return args[2]; - } else if (args[0] !== 8 && args[0] !== 11) { - return args[3]; - } else { - return args[4]; - } - }, - // 18: Javanese - function () { - var args = arguments; - if (args[0] === 0) { - return args[1]; - } else { - return args[2]; - } - }, - // 19: Cornish - function () { - var args = arguments; - if (args[0] === 1) { - return args[1]; - } else if (args[0] === 2) { - return args[2]; - } else if (args[0] === 3) { - return args[3]; - } else { - return args[4]; - } - }, - // 20: Mandinka - function () { - var args = arguments; - if (args[0] === 0) { - return args[1]; - } else if (args[0] === 1) { - return args[2]; - } else { - return args[3]; - } - } - ], - /** - * Get specified language - * - */ - getLanguage: function () { - var language = i18n.locale.language || i18n['default']; - return /^(x\-)?[a-z]{2,}(\-\w{2,})?(\-\w{2,})?$/.exec(language) ? language : i18n['default']; - }, + if (t.isInIframe) { + setTimeout(function checkFullscreen() { - /** - * Translate a string to a specified language, including optionally a number to pluralize translation - * - * @param {String} message - * @param {Number} pluralParam - * @return {String} - */ - t: function (message, pluralParam) { - - if (typeof message === 'string' && message.length) { - - var - language = i18n.getLanguage(), - str, - pluralForm, - /** - * Modify string using algorithm to detect plural forms. - * - * @private - * @see http://stackoverflow.com/questions/1353408/messageformat-in-javascript-parameters-in-localized-ui-strings - * @param {String|String[]} input - String or array of strings to pick the plural form - * @param {Number} number - Number to determine the proper plural form - * @param {Number} form - Number of language family to apply plural form - * @return {String} - */ - plural = function (input, number, form) { - - if (typeof input !== 'object' || typeof number !== 'number' || typeof form !== 'number') { - return input; - } + if (t.isNativeFullScreen) { + var percentErrorMargin = 0.002, + windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth, + screenWidth = screen.width, + absDiff = Math.abs(screenWidth - windowWidth), + marginError = screenWidth * percentErrorMargin; - if (typeof input === 'string') { - return input; + if (absDiff > marginError) { + t.exitFullScreen(); + } else { + setTimeout(checkFullscreen, 500); } - - // Perform plural form or return original text - return i18n.pluralForms[form].apply(null, [number].concat(input)); - }, - /** - * - * @param {String} input - * @return {String} - */ - escapeHTML = function (input) { - var map = { - '&': '&', - '<': '<', - '>': '>', - '"': '"' - }; - - return input.replace(/[&<>"]/g, function(c) { - return map[c]; - }); } - ; - - // Fetch the localized version of the string - if (i18n.locale.strings && i18n.locale.strings[language]) { - str = i18n.locale.strings[language][message]; - if (typeof pluralParam === 'number') { - pluralForm = i18n.locale.strings[language]['mejs.plural-form']; - str = plural.apply(null, [str, pluralParam, pluralForm]); - } - } + }, 1000); + } + } - // Fallback to default language if requested uid is not translated - if (!str && i18n.locale.strings && i18n.locale.strings[i18n['default']]) { - str = i18n.locale.strings[i18n['default']][message]; - if (typeof pluralParam === 'number') { - pluralForm = i18n.locale.strings[i18n['default']]['mejs.plural-form']; - str = plural.apply(null, [str, pluralParam, pluralForm]); + t.container.style.width = '100%'; + t.container.style.height = '100%'; - } - } + t.containerSizeTimeout = setTimeout(function () { + t.container.style.width = '100%'; + t.container.style.height = '100%'; + t.setControlsSize(); + }, 500); + + if (isNative) { + t.node.style.width = '100%'; + t.node.style.height = '100%'; + } else { + var elements = t.container.querySelectorAll('iframe, embed, object, video'), + _total = elements.length; + for (var i = 0; i < _total; i++) { + elements[i].style.width = '100%'; + elements[i].style.height = '100%'; + } + } - // As a last resort, use the requested uid, to mimic original behavior of i18n utils (in which uid was the english text) - str = str || message; + if (t.options.setDimensions && typeof t.media.setSize === 'function') { + t.media.setSize(screen.width, screen.height); + } - // Replace token - if (typeof pluralParam === 'number') { - str = str.replace('%1', pluralParam); - } + var layers = t.layers.childNodes, + total = layers.length; + for (var _i = 0; _i < total; _i++) { + layers[_i].style.width = '100%'; + layers[_i].style.height = '100%'; + } - return escapeHTML(str); + if (t.fullscreenBtn) { + (0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen'); + (0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen'); + } - } + t.setControlsSize(); + t.isFullScreen = true; - return message; + var zoomFactor = Math.min(screen.width / t.width, screen.height / t.height), + captionText = t.container.querySelector('.' + t.options.classPrefix + 'captions-text'); + if (captionText) { + captionText.style.fontSize = zoomFactor * 100 + '%'; + captionText.style.lineHeight = 'normal'; + t.container.querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '45px'; } + var event = (0, _general.createEvent)('enteredfullscreen', t.container); + t.container.dispatchEvent(event); + }, + exitFullScreen: function exitFullScreen() { + var t = this, + isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName); - }; + clearTimeout(t.containerSizeTimeout); - // i18n fixes for compatibility with WordPress - if (typeof mejsL10n !== 'undefined') { - i18n.locale.language = mejsL10n.language; - } + if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) { + Features.cancelFullScreen(); + } - // Register variable - mejs.i18n = i18n; + (0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen'); + (0, _dom.removeClass)(t.container, t.options.classPrefix + 'container-fullscreen'); + if (t.options.setDimensions) { + t.container.style.width = t.normalWidth + 'px'; + t.container.style.height = t.normalHeight + 'px'; -}(document, window, mejs)); + if (isNative) { + t.node.style.width = t.normalWidth + 'px'; + t.node.style.height = t.normalHeight + 'px'; + } else { + var elements = t.container.querySelectorAll('iframe, embed, object, video'), + _total2 = elements.length; + for (var i = 0; i < _total2; i++) { + elements[i].style.width = t.normalWidth + 'px'; + elements[i].style.height = t.normalHeight + 'px'; + } + } -// i18n fixes for compatibility with WordPress -;(function (mejs, undefined) { + if (typeof t.media.setSize === 'function') { + t.media.setSize(t.normalWidth, t.normalHeight); + } - "use strict"; + var layers = t.layers.childNodes, + total = layers.length; + for (var _i2 = 0; _i2 < total; _i2++) { + layers[_i2].style.width = t.normalWidth + 'px'; + layers[_i2].style.height = t.normalHeight + 'px'; + } + } - if (typeof mejsL10n !== 'undefined') { - mejs[mejsL10n.language] = mejsL10n.strings; - } + if (t.fullscreenBtn) { + (0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen'); + (0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen'); + } -}(mejs.i18n.locale.strings)); -/*! - * This is a i18n.locale language object. - * - * English; This can serve as a template for other languages to translate - * - * @author - * TBD - * Sascha Greuel (Twitter: @SoftCreatR) - * - * @see - * me-i18n.js - * - * @params - * - exports - CommonJS, window .. - */ -(function (exports) { - "use strict"; - - if (exports.en === undefined) { - exports.en = { - "mejs.plural-form": 1, - - // me-shim - "mejs.download-file": "Download File", - - // mep-feature-contextmenu - "mejs.fullscreen-off": "Turn off Fullscreen", - "mejs.fullscreen-on": "Go Fullscreen", - "mejs.download-video": "Download Video", - - // mep-feature-fullscreen - "mejs.fullscreen": "Fullscreen", - - // mep-feature-jumpforward - "mejs.time-jump-forward": ["Jump forward 1 second", "Jump forward %1 seconds"], - - // mep-feature-playpause - "mejs.play": "Play", - "mejs.pause": "Pause", - - // mep-feature-postroll - "mejs.close": "Close", - - // mep-feature-progress - "mejs.time-slider": "Time Slider", - "mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.", - - // mep-feature-skipback - "mejs.time-skip-back": ["Skip back 1 second", "Skip back %1 seconds"], - - // mep-feature-tracks - "mejs.captions-subtitles": "Captions/Subtitles", - "mejs.none": "None", - - // mep-feature-volume - "mejs.mute-toggle": "Mute Toggle", - "mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.", - "mejs.unmute": "Unmute", - "mejs.mute": "Mute", - "mejs.volume-slider": "Volume Slider", - - // mep-player - "mejs.video-player": "Video Player", - "mejs.audio-player": "Audio Player", - - // mep-feature-ads - "mejs.ad-skip": "Skip ad", - "mejs.ad-skip-info": ["Skip in 1 second", "Skip in %1 seconds"], - - // mep-feature-sourcechooser - "mejs.source-chooser": "Source Chooser" - }; - } -}(mejs.i18n.locale.strings)); + t.setControlsSize(); + t.isFullScreen = false; -/*! - * - * MediaElementPlayer - * http://mediaelementjs.com/ - * - * Creates a controller bar for HTML5 <video> add <audio> tags - * using jQuery and MediaElement.js (HTML5 Flash/Silverlight wrapper) - * - * Copyright 2010-2013, John Dyer (http://j.hn/) - * License: MIT - * - */ -if (typeof jQuery != 'undefined') { - mejs.$ = jQuery; -} else if (typeof Zepto != 'undefined') { - mejs.$ = Zepto; - - // define `outerWidth` method which has not been realized in Zepto - Zepto.fn.outerWidth = function(includeMargin) { - var width = $(this).width(); - if (includeMargin) { - width += parseInt($(this).css('margin-right'), 10); - width += parseInt($(this).css('margin-left'), 10); - } - return width + var captionText = t.container.querySelector('.' + t.options.classPrefix + 'captions-text'); + if (captionText) { + captionText.style.fontSize = ''; + captionText.style.lineHeight = ''; + t.container.querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = ''; + } + var event = (0, _general.createEvent)('exitedfullscreen', t.container); + t.container.dispatchEvent(event); } +}); -} else if (typeof ender != 'undefined') { - mejs.$ = ender; -} -(function ($) { +},{"16":16,"2":2,"23":23,"24":24,"25":25,"3":3,"4":4}],9:[function(_dereq_,module,exports){ +'use strict'; - // default player values - mejs.MepDefaults = { - // url to poster (to fix iOS 3.x) - poster: '', - // When the video is ended, we can show the poster. - showPosterWhenEnded: false, - // default if the <video width> is not specified - defaultVideoWidth: 480, - // default if the <video height> is not specified - defaultVideoHeight: 270, - // if set, overrides <video width> - videoWidth: -1, - // if set, overrides <video height> - videoHeight: -1, - // default if the user doesn't specify - defaultAudioWidth: 400, - // default if the user doesn't specify - defaultAudioHeight: 30, - // default amount to move back when back key is pressed - defaultSeekBackwardInterval: function(media) { - return (media.duration * 0.05); - }, - // default amount to move forward when forward key is pressed - defaultSeekForwardInterval: function(media) { - return (media.duration * 0.05); - }, - // set dimensions via JS instead of CSS - setDimensions: true, - // width of audio player - audioWidth: -1, - // height of audio player - audioHeight: -1, - // initial volume when the player starts (overrided by user cookie) - startVolume: 0.8, - // useful for <audio> player loops - loop: false, - // rewind to beginning when media ends - autoRewind: true, - // resize to media dimensions - enableAutosize: true, - /* - * Time format to use. Default: 'mm:ss' - * Supported units: - * h: hour - * m: minute - * s: second - * f: frame count - * When using 'hh', 'mm', 'ss' or 'ff' we always display 2 digits. - * If you use 'h', 'm', 's' or 'f' we display 1 digit if possible. - * - * Example to display 75 seconds: - * Format 'mm:ss': 01:15 - * Format 'm:ss': 1:15 - * Format 'm:s': 1:15 - */ - timeFormat: '', - // forces the hour marker (##:00:00) - alwaysShowHours: false, - // show framecount in timecode (##:00:00:00) - showTimecodeFrameCount: false, - // used when showTimecodeFrameCount is set to true - framesPerSecond: 25, - // automatically calculate the width of the progress bar based on the sizes of other elements - autosizeProgress : true, - // Hide controls when playing and mouse is not over the video - alwaysShowControls: false, - // Display the video control - hideVideoControlsOnLoad: false, - // Enable click video element to toggle play/pause - clickToPlayPause: true, - // Time in ms to hide controls - controlsTimeoutDefault: 1500, - // Time in ms to trigger the timer when mouse moves - controlsTimeoutMouseEnter: 2500, - // Time in ms to trigger the timer when mouse leaves - controlsTimeoutMouseLeave: 1000, - // force iPad's native controls - iPadUseNativeControls: false, - // force iPhone's native controls - iPhoneUseNativeControls: false, - // force Android's native controls - AndroidUseNativeControls: false, - // features to show - features: ['playpause','current','progress','duration','tracks','volume','fullscreen'], - // only for dynamic - isVideo: true, - // stretching modes (auto, fill, responsive, none) - stretching: 'auto', - // turns keyboard support on and off for this instance - enableKeyboard: true, - // when this player starts, it will pause other players - pauseOtherPlayers: true, - // array of keyboard actions such as play pause - keyActions: [ - { - keys: [ - 32, // SPACE - 179 // GOOGLE play/pause button - ], - action: function(player, media, key, event) { - - if (!mejs.MediaFeatures.isFirefox) { - if (media.paused || media.ended) { - media.play(); - } else { - media.pause(); - } - } - } - }, - { - keys: [38], // UP - action: function(player, media, key, event) { - player.container.find('.mejs-volume-slider').css('display','block'); - if (player.isVideo) { - player.showControls(); - player.startControlsTimer(); - } +var _document = _dereq_(2); - var newVolume = Math.min(media.volume + 0.1, 1); - media.setVolume(newVolume); - } - }, - { - keys: [40], // DOWN - action: function(player, media, key, event) { - player.container.find('.mejs-volume-slider').css('display','block'); - if (player.isVideo) { - player.showControls(); - player.startControlsTimer(); - } +var _document2 = _interopRequireDefault(_document); - var newVolume = Math.max(media.volume - 0.1, 0); - media.setVolume(newVolume); - } - }, - { - keys: [ - 37, // LEFT - 227 // Google TV rewind - ], - action: function(player, media, key, event) { - if (!isNaN(media.duration) && media.duration > 0) { - if (player.isVideo) { - player.showControls(); - player.startControlsTimer(); - } - - // 5% - var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0); - media.setCurrentTime(newTime); - } - } - }, - { - keys: [ - 39, // RIGHT - 228 // Google TV forward - ], - action: function(player, media, key, event) { - if (!isNaN(media.duration) && media.duration > 0) { - if (player.isVideo) { - player.showControls(); - player.startControlsTimer(); - } - - // 5% - var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration); - media.setCurrentTime(newTime); - } - } - }, - { - keys: [70], // F - action: function(player, media, key, event) { - if (typeof player.enterFullScreen != 'undefined') { - if (player.isFullScreen) { - player.exitFullScreen(); - } else { - player.enterFullScreen(); - } - } - } - }, - { - keys: [77], // M - action: function(player, media, key, event) { - player.container.find('.mejs-volume-slider').css('display','block'); - if (player.isVideo) { - player.showControls(); - player.startControlsTimer(); - } - if (player.media.muted) { - player.setMuted(false); - } else { - player.setMuted(true); - } - } - } - ] - }; +var _player = _dereq_(16); - mejs.mepIndex = 0; +var _player2 = _interopRequireDefault(_player); - mejs.players = {}; +var _i18n = _dereq_(4); - // wraps a MediaElement object in player controls - mejs.MediaElementPlayer = function(node, o) { - // enforce object, even without "new" (via John Resig) - if ( !(this instanceof mejs.MediaElementPlayer) ) { - return new mejs.MediaElementPlayer(node, o); - } +var _i18n2 = _interopRequireDefault(_i18n); - var t = this; +var _general = _dereq_(25); - // these will be reset after the MediaElement.success fires - t.$media = t.$node = $(node); - t.node = t.media = t.$media[0]; +var _dom = _dereq_(24); - if(!t.node) { - return; - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - // check for existing player - if (typeof t.node.player != 'undefined') { - return t.node.player; - } +Object.assign(_player.config, { + playText: null, + pauseText: null +}); - // try to get options from data-mejsoptions - if (typeof o == 'undefined') { - o = t.$node.data('mejsoptions'); - } +Object.assign(_player2.default.prototype, { + buildplaypause: function buildplaypause(player, controls, layers, media) { + var t = this, + op = t.options, + playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'), + pauseTitle = (0, _general.isString)(op.pauseText) ? op.pauseText : _i18n2.default.t('mejs.pause'), + play = _document2.default.createElement('div'); + + play.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'playpause-button ' + t.options.classPrefix + 'play'; + play.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '" tabindex="0"></button>'; + play.addEventListener('click', function () { + if (media.paused) { + media.play(); + } else { + media.pause(); + } + }); - // extend default options - t.options = $.extend({},mejs.MepDefaults,o); + var playBtn = play.querySelector('button'); + t.addControlElement(play, 'playpause'); - if (!t.options.timeFormat) { - // Generate the time format according to options - t.options.timeFormat = 'mm:ss'; - if (t.options.alwaysShowHours) { - t.options.timeFormat = 'hh:mm:ss'; - } - if (t.options.showTimecodeFrameCount) { - t.options.timeFormat += ':ff'; + function togglePlayPause(which) { + if ('play' === which) { + (0, _dom.removeClass)(play, t.options.classPrefix + 'play'); + (0, _dom.removeClass)(play, t.options.classPrefix + 'replay'); + (0, _dom.addClass)(play, t.options.classPrefix + 'pause'); + playBtn.setAttribute('title', pauseTitle); + playBtn.setAttribute('aria-label', pauseTitle); + } else { + + (0, _dom.removeClass)(play, t.options.classPrefix + 'pause'); + (0, _dom.removeClass)(play, t.options.classPrefix + 'replay'); + (0, _dom.addClass)(play, t.options.classPrefix + 'play'); + playBtn.setAttribute('title', playTitle); + playBtn.setAttribute('aria-label', playTitle); } } - mejs.Utility.calculateTimeFormat(0, t.options, t.options.framesPerSecond || 25); - - // unique ID - t.id = 'mep_' + mejs.mepIndex++; + togglePlayPause('pse'); - // add to player array (for focus events) - mejs.players[t.id] = t; - - // start up - t.init(); + media.addEventListener('loadedmetadata', function () { + if (media.rendererName.indexOf('flash') === -1) { + togglePlayPause('pse'); + } + }); + media.addEventListener('play', function () { + togglePlayPause('play'); + }); + media.addEventListener('playing', function () { + togglePlayPause('play'); + }); + media.addEventListener('pause', function () { + togglePlayPause('pse'); + }); + media.addEventListener('ended', function () { + if (!player.options.loop) { + (0, _dom.removeClass)(play, t.options.classPrefix + 'pause'); + (0, _dom.removeClass)(play, t.options.classPrefix + 'play'); + (0, _dom.addClass)(play, t.options.classPrefix + 'replay'); + playBtn.setAttribute('title', playTitle); + playBtn.setAttribute('aria-label', playTitle); + } + }); + } +}); - return t; - }; +},{"16":16,"2":2,"24":24,"25":25,"4":4}],10:[function(_dereq_,module,exports){ +'use strict'; - // actual player - mejs.MediaElementPlayer.prototype = { +var _document = _dereq_(2); - hasFocus: false, +var _document2 = _interopRequireDefault(_document); - controlsAreVisible: true, +var _player = _dereq_(16); - init: function() { +var _player2 = _interopRequireDefault(_player); - var - t = this, - mf = mejs.MediaFeatures, - // options for MediaElement (shim) - meOptions = $.extend(true, {}, t.options, { - success: function(media, domNode) { t.meReady(media, domNode); }, - error: function(e) { t.handleError(e);} - }), - tagName = t.media.tagName.toLowerCase(); +var _i18n = _dereq_(4); - t.isDynamic = (tagName !== 'audio' && tagName !== 'video'); +var _i18n2 = _interopRequireDefault(_i18n); - if (t.isDynamic) { - // get video from src or href? - t.isVideo = t.options.isVideo; - } else { - t.isVideo = (tagName !== 'audio' && t.options.isVideo); - } - - // use native controls in iPad, iPhone, and Android - if ((mf.isiPad && t.options.iPadUseNativeControls) || (mf.isiPhone && t.options.iPhoneUseNativeControls)) { - - // add controls and stop - t.$media.attr('controls', 'controls'); - - // attempt to fix iOS 3 bug - //t.$media.removeAttr('poster'); - // no Issue found on iOS3 -ttroxell - - // override Apple's autoplay override for iPads - if (mf.isiPad && t.media.getAttribute('autoplay') !== null) { - t.play(); - } - - } else if (mf.isAndroid && t.options.AndroidUseNativeControls) { - - // leave default player - - } else if (t.isVideo || (!t.isVideo && t.options.features.length)) { - - // DESKTOP: use MediaElementPlayer controls - - // remove native controls - t.$media.removeAttr('controls'); - var videoPlayerTitle = t.isVideo ? - mejs.i18n.t('mejs.video-player') : mejs.i18n.t('mejs.audio-player'); - // insert description for screen readers - $('<span class="mejs-offscreen">' + videoPlayerTitle + '</span>').insertBefore(t.$media); - // build container - t.container = - $('<div id="' + t.id + '" class="mejs-container ' + (mejs.MediaFeatures.svgAsImg ? 'svg' : 'no-svg') + - '" tabindex="0" role="application" aria-label="' + videoPlayerTitle + '">'+ - '<div class="mejs-inner">'+ - '<div class="mejs-mediaelement"></div>'+ - '<div class="mejs-layers"></div>'+ - '<div class="mejs-controls"></div>'+ - '<div class="mejs-clear"></div>'+ - '</div>' + - '</div>') - .addClass(t.$media[0].className) - .insertBefore(t.$media) - .focus(function ( e ) { - if( !t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) { - t.showControls(true); - // In versions older than IE11, the focus causes the playbar to be displayed - // if user clicks on the Play/Pause button in the control bar once it attempts - // to hide it - if (!t.hasMsNativeFullScreen) { - // If e.relatedTarget appears before container, send focus to play button, - // else send focus to last control button. - var btnSelector = '.mejs-playpause-button > button'; - - if (mejs.Utility.isNodeAfter(e.relatedTarget, t.container[0])) { - btnSelector = '.mejs-controls .mejs-button:last-child > button'; - } +var _constants = _dereq_(23); - var button = t.container.find(btnSelector); - button.focus(); - } - } - }); +var _time = _dereq_(28); - // When no elements in controls, hide bar completely - if (!t.options.features.length) { - t.container.css('background', 'transparent').find('.mejs-controls').hide(); - } - - if (t.isVideo && t.options.stretching === 'fill' && !t.container.parent('mejs-fill-container').length) { - // outer container - t.outerContainer = t.$media.parent(); - t.container.wrap('<div class="mejs-fill-container"/>'); - } +var _dom = _dereq_(24); - // add classes for user and content - t.container.addClass( - (mf.isAndroid ? 'mejs-android ' : '') + - (mf.isiOS ? 'mejs-ios ' : '') + - (mf.isiPad ? 'mejs-ipad ' : '') + - (mf.isiPhone ? 'mejs-iphone ' : '') + - (t.isVideo ? 'mejs-video ' : 'mejs-audio ') - ); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +Object.assign(_player.config, { + enableProgressTooltip: true, - // move the <video/video> tag into the right spot - t.container.find('.mejs-mediaelement').append(t.$media); + useSmoothHover: true +}); - // needs to be assigned here, after iOS remap - t.node.player = t; +Object.assign(_player2.default.prototype, { + buildprogress: function buildprogress(player, controls, layers, media) { + + var lastKeyPressTime = 0, + mouseIsDown = false, + startedPaused = false; + + var t = this, + autoRewindInitial = player.options.autoRewind, + tooltip = player.options.enableProgressTooltip ? '<span class="' + t.options.classPrefix + 'time-float">' + ('<span class="' + t.options.classPrefix + 'time-float-current">00:00</span>') + ('<span class="' + t.options.classPrefix + 'time-float-corner"></span>') + '</span>' : '', + rail = _document2.default.createElement('div'); + + rail.className = t.options.classPrefix + 'time-rail'; + rail.innerHTML = '<span class="' + t.options.classPrefix + 'time-total ' + t.options.classPrefix + 'time-slider">' + ('<span class="' + t.options.classPrefix + 'time-buffering"></span>') + ('<span class="' + t.options.classPrefix + 'time-loaded"></span>') + ('<span class="' + t.options.classPrefix + 'time-current"></span>') + ('<span class="' + t.options.classPrefix + 'time-hovered no-hover"></span>') + ('<span class="' + t.options.classPrefix + 'time-handle"><span class="' + t.options.classPrefix + 'time-handle-content"></span></span>') + ('' + tooltip) + '</span>'; + + t.addControlElement(rail, 'progress'); + + controls.querySelector('.' + t.options.classPrefix + 'time-buffering').style.display = 'none'; + + t.rail = controls.querySelector('.' + t.options.classPrefix + 'time-rail'); + t.total = controls.querySelector('.' + t.options.classPrefix + 'time-total'); + t.loaded = controls.querySelector('.' + t.options.classPrefix + 'time-loaded'); + t.current = controls.querySelector('.' + t.options.classPrefix + 'time-current'); + t.handle = controls.querySelector('.' + t.options.classPrefix + 'time-handle'); + t.timefloat = controls.querySelector('.' + t.options.classPrefix + 'time-float'); + t.timefloatcurrent = controls.querySelector('.' + t.options.classPrefix + 'time-float-current'); + t.slider = controls.querySelector('.' + t.options.classPrefix + 'time-slider'); + t.hovered = controls.querySelector('.' + t.options.classPrefix + 'time-hovered'); + t.newTime = 0; + t.forcedHandlePause = false; + t.setTransformStyle = function (element, value) { + element.style.transform = value; + element.style.webkitTransform = value; + element.style.MozTransform = value; + element.style.msTransform = value; + element.style.OTransform = value; + }; - // find parts - t.controls = t.container.find('.mejs-controls'); - t.layers = t.container.find('.mejs-layers'); + var handleMouseMove = function handleMouseMove(e) { + var totalStyles = getComputedStyle(t.total), + offsetStyles = (0, _dom.offset)(t.total), + width = parseFloat(totalStyles.width), + transform = function () { + if (totalStyles.webkitTransform !== undefined) { + return 'webkitTransform'; + } else if (totalStyles.mozTransform !== undefined) { + return 'mozTransform '; + } else if (totalStyles.oTransform !== undefined) { + return 'oTransform'; + } else if (totalStyles.msTransform !== undefined) { + return 'msTransform'; + } else { + return 'transform'; + } + }(), + cssMatrix = function () { + if ('WebKitCSSMatrix' in window) { + return 'WebKitCSSMatrix'; + } else if ('MSCSSMatrix' in window) { + return 'MSCSSMatrix'; + } else if ('CSSMatrix' in window) { + return 'CSSMatrix'; + } + }(); + + var percentage = 0, + pos = 0, + x = void 0; + + if (e.originalEvent && e.originalEvent.changedTouches) { + x = e.originalEvent.changedTouches[0].pageX; + } else if (e.changedTouches) { + x = e.changedTouches[0].pageX; + } else { + x = e.pageX; + } - // determine the size + if (t.getDuration()) { + if (x < offsetStyles.left) { + x = offsetStyles.left; + } else if (x > width + offsetStyles.left) { + x = width + offsetStyles.left; + } - /* size priority: - (1) videoWidth (forced), - (2) style="width;height;" - (3) width attribute, - (4) defaultVideoWidth (for unspecified cases) - */ + pos = x - offsetStyles.left; + percentage = pos / width; + t.newTime = percentage <= 0.02 ? 0 : percentage * t.getDuration(); - var tagType = (t.isVideo ? 'video' : 'audio'), - capsTagName = tagType.substring(0,1).toUpperCase() + tagType.substring(1); + if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) { + t.setCurrentRailHandle(t.newTime); + t.updateCurrent(t.newTime); + } + if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) { + if (pos < 0) { + pos = 0; + } + if (t.options.useSmoothHover && cssMatrix !== null && typeof window[cssMatrix] !== 'undefined') { + var matrix = new window[cssMatrix](getComputedStyle(t.handle)[transform]), + handleLocation = matrix.m41, + hoverScaleX = pos / parseFloat(getComputedStyle(t.total).width) - handleLocation / parseFloat(getComputedStyle(t.total).width); + t.hovered.style.left = handleLocation + 'px'; + t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')'); + t.hovered.setAttribute('pos', pos); - if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) { - t.width = t.options[tagType + 'Width']; - } else if (t.media.style.width !== '' && t.media.style.width !== null) { - t.width = t.media.style.width; - } else if (t.media.getAttribute('width') !== null) { - t.width = t.$media.attr('width'); - } else { - t.width = t.options['default' + capsTagName + 'Width']; - } + if (hoverScaleX >= 0) { + (0, _dom.removeClass)(t.hovered, 'negative'); + } else { + (0, _dom.addClass)(t.hovered, 'negative'); + } + } - if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) { - t.height = t.options[tagType + 'Height']; - } else if (t.media.style.height !== '' && t.media.style.height !== null) { - t.height = t.media.style.height; - } else if (t.$media[0].getAttribute('height') !== null) { - t.height = t.$media.attr('height'); - } else { - t.height = t.options['default' + capsTagName + 'Height']; + t.timefloat.style.left = pos + 'px'; + t.timefloatcurrent.innerHTML = (0, _time.secondsToTimeCode)(t.newTime, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength); + t.timefloat.style.display = 'block'; } - - // set the size, while we wait for the plugins to load below - t.setPlayerSize(t.width, t.height); - - // create MediaElementShim - meOptions.pluginWidth = t.width; - meOptions.pluginHeight = t.height; } - // Hide media completely for audio that doesn't have any features - else if (!t.isVideo && !t.options.features.length) { - t.$media.hide(); + }, + updateSlider = function updateSlider() { + var seconds = t.getCurrentTime(), + timeSliderText = _i18n2.default.t('mejs.time-slider'), + time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength), + duration = t.getDuration(); + + t.slider.setAttribute('role', 'slider'); + t.slider.tabIndex = 0; + + if (media.paused) { + t.slider.setAttribute('aria-label', timeSliderText); + t.slider.setAttribute('aria-valuemin', 0); + t.slider.setAttribute('aria-valuemax', duration); + t.slider.setAttribute('aria-valuenow', seconds); + t.slider.setAttribute('aria-valuetext', time); + } else { + t.slider.removeAttribute('aria-label'); + t.slider.removeAttribute('aria-valuemin'); + t.slider.removeAttribute('aria-valuemax'); + t.slider.removeAttribute('aria-valuenow'); + t.slider.removeAttribute('aria-valuetext'); } - - // create MediaElement shim - mejs.MediaElement(t.$media[0], meOptions); - - if (typeof(t.container) !== 'undefined' && t.options.features.length && t.controlsAreVisible) { - // controls are shown when loaded - t.container.trigger('controlsshown'); + }, + restartPlayer = function restartPlayer() { + if (new Date() - lastKeyPressTime >= 1000) { + media.play(); } }, + handleMouseup = function handleMouseup() { + if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) { + t.setCurrentTime(t.newTime); + player.setCurrentRail(); + t.updateCurrent(t.newTime); + } + if (t.forcedHandlePause) { + t.media.play(); + } + t.forcedHandlePause = false; + }; - showControls: function(doAnimation) { - var t = this; + t.slider.addEventListener('focus', function () { + player.options.autoRewind = false; + }); + t.slider.addEventListener('blur', function () { + player.options.autoRewind = autoRewindInitial; + }); + t.slider.addEventListener('keydown', function (e) { + if (new Date() - lastKeyPressTime >= 1000) { + startedPaused = media.paused; + } - doAnimation = typeof doAnimation == 'undefined' || doAnimation; + if (t.options.keyActions.length) { - if (t.controlsAreVisible) - return; + var keyCode = e.which || e.keyCode || 0, + duration = t.getDuration(), + seekForward = player.options.defaultSeekForwardInterval(media), + seekBackward = player.options.defaultSeekBackwardInterval(media); - if (doAnimation) { - t.controls - .removeClass('mejs-offscreen') - .stop(true, true).fadeIn(200, function() { - t.controlsAreVisible = true; - t.container.trigger('controlsshown'); - }); + var seekTime = t.getCurrentTime(); - // any additional controls people might add and want to hide - t.container.find('.mejs-control') - .removeClass('mejs-offscreen') - .stop(true, true).fadeIn(200, function() {t.controlsAreVisible = true;}); + switch (keyCode) { + case 37: + case 40: + if (t.getDuration() !== Infinity) { + seekTime -= seekBackward; + } + break; + case 39: + case 38: + if (t.getDuration() !== Infinity) { + seekTime += seekForward; + } + break; + case 36: + seekTime = 0; + break; + case 35: + seekTime = duration; + break; + case 32: + if (!_constants.IS_FIREFOX) { + if (media.paused) { + media.play(); + } else { + media.pause(); + } + } + return; + case 13: + if (media.paused) { + media.play(); + } else { + media.pause(); + } + return; + default: + return; + } - } else { - t.controls - .removeClass('mejs-offscreen') - .css('display','block'); + seekTime = seekTime < 0 ? 0 : seekTime >= duration ? duration : Math.floor(seekTime); + lastKeyPressTime = new Date(); + if (!startedPaused) { + media.pause(); + } - // any additional controls people might add and want to hide - t.container.find('.mejs-control') - .removeClass('mejs-offscreen') - .css('display','block'); + if (seekTime < t.getDuration() && !startedPaused) { + setTimeout(restartPlayer, 1100); + } - t.controlsAreVisible = true; - t.container.trigger('controlsshown'); - } + t.setCurrentTime(seekTime); - t.setControlsSize(); + e.preventDefault(); + e.stopPropagation(); + } + }); - }, + var events = ['mousedown', 'touchstart']; - hideControls: function(doAnimation) { - var t = this; + t.slider.addEventListener('dragstart', function () { + return false; + }); - doAnimation = typeof doAnimation == 'undefined' || doAnimation; + for (var i = 0, total = events.length; i < total; i++) { + t.slider.addEventListener(events[i], function (e) { + t.forcedHandlePause = false; + if (t.getDuration() !== Infinity) { + if (e.which === 1 || e.which === 0) { + if (!media.paused) { + t.media.pause(); + t.forcedHandlePause = true; + } - if (!t.controlsAreVisible || t.options.alwaysShowControls || t.keyboardAction || t.media.paused || t.media.ended) - return; + mouseIsDown = true; + handleMouseMove(e); + var endEvents = ['mouseup', 'touchend']; - if (doAnimation) { - // fade out main controls - t.controls.stop(true, true).fadeOut(200, function() { - $(this) - .addClass('mejs-offscreen') - .css('display','block'); - - t.controlsAreVisible = false; - t.container.trigger('controlshidden'); + for (var j = 0, totalEvents = endEvents.length; j < totalEvents; j++) { + t.container.addEventListener(endEvents[j], function (event) { + var target = event.target; + if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) { + handleMouseMove(event); + } + }); + } + t.globalBind('mouseup.dur touchend.dur', function () { + handleMouseup(); + mouseIsDown = false; + if (t.timefloat) { + t.timefloat.style.display = 'none'; + } + t.globalUnbind('mousemove.dur touchmove.dur mouseup.dur touchend.dur'); + }); + } + } + }); + } + t.slider.addEventListener('mouseenter', function (e) { + if (e.target === t.slider && t.getDuration() !== Infinity) { + t.container.addEventListener('mousemove', function (event) { + var target = event.target; + if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) { + handleMouseMove(event); + } }); + if (t.timefloat && !_constants.IS_IOS && !_constants.IS_ANDROID) { + t.timefloat.style.display = 'block'; + } + if (t.hovered && !_constants.IS_IOS && !_constants.IS_ANDROID && t.options.useSmoothHover) { + (0, _dom.removeClass)(t.hovered, 'no-hover'); + } + } + }); + t.slider.addEventListener('mouseleave', function () { + if (t.getDuration() !== Infinity) { + if (!mouseIsDown) { + t.globalUnbind('mousemove.dur'); + if (t.timefloat) { + t.timefloat.style.display = 'none'; + } + if (t.hovered && t.options.useSmoothHover) { + (0, _dom.addClass)(t.hovered, 'no-hover'); + } + } + } + }); - // any additional controls people might add and want to hide - t.container.find('.mejs-control').stop(true, true).fadeOut(200, function() { - $(this) - .addClass('mejs-offscreen') - .css('display','block'); - }); - } else { + media.addEventListener('progress', function (e) { + var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast'); + if (t.getDuration() !== Infinity) { + if (broadcast) { + t.slider.style.display = ''; + broadcast.remove(); + } - // hide main controls - t.controls - .addClass('mejs-offscreen') - .css('display','block'); + player.setProgressRail(e); + if (!t.forcedHandlePause) { + player.setCurrentRail(e); + } + } else if (!broadcast) { + var label = _document2.default.createElement('span'); + label.className = t.options.classPrefix + 'broadcast'; + label.innerText = _i18n2.default.t('mejs.live-broadcast'); + t.slider.style.display = 'none'; + } + }); - // hide others - t.container.find('.mejs-control') - .addClass('mejs-offscreen') - .css('display','block'); + media.addEventListener('timeupdate', function (e) { + var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast'); + if (t.getDuration() !== Infinity) { + if (broadcast) { + t.slider.style.display = ''; + broadcast.remove(); + } - t.controlsAreVisible = false; - t.container.trigger('controlshidden'); + player.setProgressRail(e); + if (!t.forcedHandlePause) { + player.setCurrentRail(e); + } + updateSlider(e); + } else if (!broadcast) { + var label = _document2.default.createElement('span'); + label.className = t.options.classPrefix + 'broadcast'; + label.innerText = _i18n2.default.t('mejs.live-broadcast'); + controls.querySelector('.' + t.options.classPrefix + 'time-rail').appendChild(label); + t.slider.style.display = 'none'; } - }, + }); - controlsTimer: null, + t.container.addEventListener('controlsresize', function (e) { + if (t.getDuration() !== Infinity) { + player.setProgressRail(e); + if (!t.forcedHandlePause) { + player.setCurrentRail(e); + } + } + }); + }, + setProgressRail: function setProgressRail(e) { + var t = this, + target = e !== undefined ? e.detail.target || e.target : t.media; - startControlsTimer: function(timeout) { + var percent = null; - var t = this; + if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && t.getDuration()) { + percent = target.buffered.end(target.buffered.length - 1) / t.getDuration(); + } else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) { + percent = target.bufferedBytes / target.bytesTotal; + } else if (e && e.lengthComputable && e.total !== 0) { + percent = e.loaded / e.total; + } - timeout = typeof timeout != 'undefined' ? timeout : t.options.controlsTimeoutDefault; + if (percent !== null) { + percent = Math.min(1, Math.max(0, percent)); - t.killControlsTimer('start'); + if (t.loaded) { + t.setTransformStyle(t.loaded, 'scaleX(' + percent + ')'); + } + } + }, + setCurrentRailHandle: function setCurrentRailHandle(fakeTime) { + var t = this; + t.setCurrentRailMain(t, fakeTime); + }, + setCurrentRail: function setCurrentRail() { + var t = this; + t.setCurrentRailMain(t); + }, + setCurrentRailMain: function setCurrentRailMain(t, fakeTime) { + if (t.getCurrentTime() !== undefined && t.getDuration()) { + var nTime = typeof fakeTime === 'undefined' ? t.getCurrentTime() : fakeTime; - t.controlsTimer = setTimeout(function() { - // - t.hideControls(); - t.killControlsTimer('hide'); - }, timeout); - }, + if (t.total && t.handle) { + var tW = parseFloat(getComputedStyle(t.total).width); - killControlsTimer: function(src) { + var newWidth = Math.round(tW * nTime / t.getDuration()), + handlePos = newWidth - Math.round(t.handle.offsetWidth / 2); - var t = this; + handlePos = handlePos < 0 ? 0 : handlePos; + t.setTransformStyle(t.current, 'scaleX(' + newWidth / tW + ')'); + t.setTransformStyle(t.handle, 'translateX(' + handlePos + 'px)'); - if (t.controlsTimer !== null) { - clearTimeout(t.controlsTimer); - delete t.controlsTimer; - t.controlsTimer = null; - } - }, + if (t.options.useSmoothHover && !(0, _dom.hasClass)(t.hovered, 'no-hover')) { + var pos = parseInt(t.hovered.getAttribute('pos')); + pos = isNaN(pos) ? 0 : pos; - controlsEnabled: true, + var hoverScaleX = pos / tW - handlePos / tW; - disableControls: function() { - var t= this; + t.hovered.style.left = handlePos + 'px'; + t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')'); - t.killControlsTimer(); - t.hideControls(false); - this.controlsEnabled = false; - }, + if (hoverScaleX >= 0) { + (0, _dom.removeClass)(t.hovered, 'negative'); + } else { + (0, _dom.addClass)(t.hovered, 'negative'); + } + } + } + } + } +}); - enableControls: function() { - var t= this; +},{"16":16,"2":2,"23":23,"24":24,"28":28,"4":4}],11:[function(_dereq_,module,exports){ +'use strict'; - t.showControls(false); +var _document = _dereq_(2); - t.controlsEnabled = true; - }, +var _document2 = _interopRequireDefault(_document); - // Sets up all controls and events - meReady: function(media, domNode) { - - var - t = this, - mf = mejs.MediaFeatures, - autoplayAttr = domNode.getAttribute('autoplay'), - autoplay = !(typeof autoplayAttr == 'undefined' || autoplayAttr === null || autoplayAttr === 'false'), - featureIndex, - feature; - - // make sure it can't create itself again if a plugin reloads - if (t.created) { - return; - } else { - t.created = true; - } +var _player = _dereq_(16); - t.media = media; - t.domNode = domNode; +var _player2 = _interopRequireDefault(_player); - if (!(mf.isAndroid && t.options.AndroidUseNativeControls) && !(mf.isiPad && t.options.iPadUseNativeControls) && !(mf.isiPhone && t.options.iPhoneUseNativeControls)) { +var _time = _dereq_(28); - // In the event that no features are specified for audio, - // create only MediaElement instance rather than - // doing all the work to create a full player - if (!t.isVideo && !t.options.features.length) { +var _dom = _dereq_(24); - // force autoplay for HTML5 - if (autoplay && media.pluginType == 'native') { - t.play(); - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } +Object.assign(_player.config, { + duration: 0, - if (t.options.success) { + timeAndDurationSeparator: '<span> | </span>' +}); - if (typeof t.options.success == 'string') { - window[t.options.success](t.media, t.domNode, t); - } else { - t.options.success(t.media, t.domNode, t); - } - } +Object.assign(_player2.default.prototype, { + buildcurrent: function buildcurrent(player, controls, layers, media) { + var t = this, + time = _document2.default.createElement('div'); - return; - } + time.className = t.options.classPrefix + 'time'; + time.setAttribute('role', 'timer'); + time.setAttribute('aria-live', 'off'); + time.innerHTML = '<span class="' + t.options.classPrefix + 'currenttime">' + (0, _time.secondsToTimeCode)(0, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength) + '</span>'; - // two built in features - t.buildposter(t, t.controls, t.layers, t.media); - t.buildkeyboard(t, t.controls, t.layers, t.media); - t.buildoverlays(t, t.controls, t.layers, t.media); + t.addControlElement(time, 'current'); - // grab for use by features - t.findTracks(); + media.addEventListener('timeupdate', function () { + if (t.controlsAreVisible) { + player.updateCurrent(); + } + }); + }, + buildduration: function buildduration(player, controls, layers, media) { + var t = this, + currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime'); - // add user-defined features/controls - for (featureIndex in t.options.features) { - feature = t.options.features[featureIndex]; - if (t['build' + feature]) { - try { - t['build' + feature](t, t.controls, t.layers, t.media); - } catch (e) { - // TODO: report control error - //throw e; - - - } - } - } + if (currTime) { + controls.querySelector('.' + t.options.classPrefix + 'time').innerHTML += t.options.timeAndDurationSeparator + '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength) + '</span>'); + } else { + if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) { + (0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container'); + } - t.container.trigger('controlsready'); + var duration = _document2.default.createElement('div'); + duration.className = t.options.classPrefix + 'time ' + t.options.classPrefix + 'duration-container'; + duration.innerHTML = '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength) + '</span>'); - // reset all layers and controls - t.setPlayerSize(t.width, t.height); - t.setControlsSize(); + t.addControlElement(duration, 'duration'); + } + media.addEventListener('timeupdate', function () { + if (t.controlsAreVisible) { + player.updateDuration(); + } + }); + }, + updateCurrent: function updateCurrent() { + var t = this; - // controls fade - if (t.isVideo) { + var currentTime = t.getCurrentTime(); - if (mejs.MediaFeatures.hasTouch && !t.options.alwaysShowControls) { + if (isNaN(currentTime)) { + currentTime = 0; + } - // for touch devices (iOS, Android) - // show/hide without animation on touch + if (t.controls.querySelector('.' + t.options.classPrefix + 'currenttime')) { + t.controls.querySelector('.' + t.options.classPrefix + 'currenttime').innerText = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength); + } + }, + updateDuration: function updateDuration() { + var t = this; - t.$media.bind('touchstart', function() { + var duration = t.getDuration(); - // toggle controls - if (t.controlsAreVisible) { - t.hideControls(false); - } else { - if (t.controlsEnabled) { - t.showControls(false); - } - } - }); + if (isNaN(duration) || duration === Infinity || duration < 0) { + t.media.duration = t.options.duration = duration = 0; + } - } else { + if (t.options.duration > 0) { + duration = t.options.duration; + } - // create callback here since it needs access to current - // MediaElement object - t.clickToPlayPauseCallback = function() { - // + var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength); - if (t.options.clickToPlayPause) { - if (t.media.paused) { - t.play(); - } else { - t.pause(); - } + if (timecode.length > 5) { + (0, _dom.toggleClass)(t.container, t.options.classPrefix + 'long-video'); + } - var button = t.$media.closest('.mejs-container').find('.mejs-overlay-button'), - pressed = button.attr('aria-pressed'); - button.attr('aria-pressed', !pressed); - } - }; + if (t.controls.querySelector('.' + t.options.classPrefix + 'duration') && duration > 0) { + t.controls.querySelector('.' + t.options.classPrefix + 'duration').innerHTML = timecode; + } + } +}); - // click to play/pause - t.media.addEventListener('click', t.clickToPlayPauseCallback, false); +},{"16":16,"2":2,"24":24,"28":28}],12:[function(_dereq_,module,exports){ +'use strict'; - // show/hide controls - t.container - .bind('mouseenter', function () { - if (t.controlsEnabled) { - if (!t.options.alwaysShowControls ) { - t.killControlsTimer('enter'); - t.showControls(); - t.startControlsTimer(t.options.controlsTimeoutMouseEnter); - } - } - }) - .bind('mousemove', function() { - if (t.controlsEnabled) { - if (!t.controlsAreVisible) { - t.showControls(); - } - if (!t.options.alwaysShowControls) { - t.startControlsTimer(t.options.controlsTimeoutMouseEnter); - } - } - }) - .bind('mouseleave', function () { - if (t.controlsEnabled) { - if (!t.media.paused && !t.options.alwaysShowControls) { - t.startControlsTimer(t.options.controlsTimeoutMouseLeave); - } - } - }); - } +var _document = _dereq_(2); - if(t.options.hideVideoControlsOnLoad) { - t.hideControls(false); - } +var _document2 = _interopRequireDefault(_document); - // check for autoplay - if (autoplay && !t.options.alwaysShowControls) { - t.hideControls(); - } +var _mejs = _dereq_(6); - // resizer - if (t.options.enableAutosize) { - t.media.addEventListener('loadedmetadata', function(e) { - // if the <video height> was not set and the options.videoHeight was not set - // then resize to the real dimensions - if (t.options.videoHeight <= 0 && t.domNode.getAttribute('height') === null && !isNaN(e.target.videoHeight)) { - t.setPlayerSize(e.target.videoWidth, e.target.videoHeight); - t.setControlsSize(); - t.media.setVideoSize(e.target.videoWidth, e.target.videoHeight); - } - }, false); - } - } +var _mejs2 = _interopRequireDefault(_mejs); - // EVENTS +var _i18n = _dereq_(4); - // FOCUS: when a video starts playing, it takes focus from other players (possibly pausing them) - t.media.addEventListener('play', function() { - var playerIndex; +var _i18n2 = _interopRequireDefault(_i18n); - // go through all other players - for (playerIndex in mejs.players) { - var p = mejs.players[playerIndex]; - if (p.id != t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended) { - p.pause(); - } - p.hasFocus = false; - } +var _player = _dereq_(16); - t.hasFocus = true; - },false); +var _player2 = _interopRequireDefault(_player); +var _time = _dereq_(28); - // ended for all - t.media.addEventListener('ended', function (e) { - if(t.options.autoRewind) { - try{ - t.media.setCurrentTime(0); - // Fixing an Android stock browser bug, where "seeked" isn't fired correctly after ending the video and jumping to the beginning - window.setTimeout(function(){ - $(t.container).find('.mejs-overlay-loading').parent().hide(); - }, 20); - } catch (exp) { +var _general = _dereq_(25); - } - } - if (t.media.pluginType === 'youtube') { - t.media.stop(); - } else { - t.media.pause(); - } +var _dom = _dereq_(24); - if (t.setProgressRail) { - t.setProgressRail(); - } - if (t.setCurrentRail) { - t.setCurrentRail(); - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - if (t.options.loop) { - t.play(); - } else if (!t.options.alwaysShowControls && t.controlsEnabled) { - t.showControls(); - } - }, false); +Object.assign(_player.config, { + startLanguage: '', - // resize on the first play - t.media.addEventListener('loadedmetadata', function() { + tracksText: null, - mejs.Utility.calculateTimeFormat(t.duration, t.options, t.options.framesPerSecond || 25); + chaptersText: null, - if (t.updateDuration) { - t.updateDuration(); - } - if (t.updateCurrent) { - t.updateCurrent(); - } + tracksAriaLive: false, - if (!t.isFullScreen) { - t.setPlayerSize(t.width, t.height); - t.setControlsSize(); - } - }, false); + hideCaptionsButtonWhenEmpty: true, - // Only change the time format when necessary - var duration = null; - t.media.addEventListener('timeupdate',function() { - if (duration !== this.duration) { - duration = this.duration; - mejs.Utility.calculateTimeFormat(duration, t.options, t.options.framesPerSecond || 25); - - // make sure to fill in and resize the controls (e.g., 00:00 => 01:13:15 - if (t.updateDuration) { - t.updateDuration(); - } - if (t.updateCurrent) { - t.updateCurrent(); - } - t.setControlsSize(); - - } - }, false); - - t.container.focusout(function (e) { - if( e.relatedTarget ) { //FF is working on supporting focusout https://bugzilla.mozilla.org/show_bug.cgi?id=687787 - var $target = $(e.relatedTarget); - if (t.keyboardAction && $target.parents('.mejs-container').length === 0) { - t.keyboardAction = false; - if (t.isVideo && !t.options.alwaysShowControls) { - t.hideControls(true); - } + toggleCaptionsButtonWhenOnlyOne: false, - } - } - }); + slidesSelector: '' +}); - // webkit has trouble doing this without a delay - setTimeout(function () { +Object.assign(_player2.default.prototype, { + hasChapters: false, + + buildtracks: function buildtracks(player, controls, layers, media) { + + if (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) { + return; + } + + var t = this, + attr = t.options.tracksAriaLive ? ' role="log" aria-live="assertive" aria-atomic="false"' : '', + tracksTitle = (0, _general.isString)(t.options.tracksText) ? t.options.tracksText : _i18n2.default.t('mejs.captions-subtitles'), + chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'), + total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length; + + if (t.domNode.textTracks) { + for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) { + t.domNode.textTracks[i].mode = 'hidden'; + } + } + + t.cleartracks(player); + + player.captions = _document2.default.createElement('div'); + player.captions.className = t.options.classPrefix + 'captions-layer ' + t.options.classPrefix + 'layer'; + player.captions.innerHTML = '<div class="' + t.options.classPrefix + 'captions-position ' + t.options.classPrefix + 'captions-position-hover"' + attr + '>' + ('<span class="' + t.options.classPrefix + 'captions-text"></span>') + '</div>'; + player.captions.style.display = 'none'; + layers.insertBefore(player.captions, layers.firstChild); + + player.captionsText = player.captions.querySelector('.' + t.options.classPrefix + 'captions-text'); + + player.captionsButton = _document2.default.createElement('div'); + player.captionsButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'captions-button'; + player.captionsButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + tracksTitle + '" aria-label="' + tracksTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'captions-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'captions-selector-list">') + ('<li class="' + t.options.classPrefix + 'captions-selector-list-item">') + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + player.id + '_captions" id="' + player.id + '_captions_none" ') + 'value="none" checked disabled>' + ('<label class="' + t.options.classPrefix + 'captions-selector-label ') + (t.options.classPrefix + 'captions-selected" ') + ('for="' + player.id + '_captions_none">' + _i18n2.default.t('mejs.none') + '</label>') + '</li>' + '</ul>' + '</div>'; + + t.addControlElement(player.captionsButton, 'tracks'); + + player.captionsButton.querySelector('.' + t.options.classPrefix + 'captions-selector-input').disabled = false; + + player.chaptersButton = _document2.default.createElement('div'); + player.chaptersButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'chapters-button'; + player.chaptersButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + chaptersTitle + '" aria-label="' + chaptersTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'chapters-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'chapters-selector-list"></ul>') + '</div>'; + + var subtitleCount = 0; + + for (var _i = 0; _i < total; _i++) { + var kind = player.tracks[_i].kind; + if (kind === 'subtitles' || kind === 'captions') { + subtitleCount++; + } else if (kind === 'chapters' && !controls.querySelector('.' + t.options.classPrefix + 'chapter-selector')) { + player.captionsButton.parentNode.insertBefore(player.chaptersButton, player.captionsButton); + } + } + + player.trackToLoad = -1; + player.selectedTrack = null; + player.isLoadingTrack = false; + + for (var _i2 = 0; _i2 < total; _i2++) { + var _kind = player.tracks[_i2].kind; + if (_kind === 'subtitles' || _kind === 'captions') { + player.addTrackButton(player.tracks[_i2].trackId, player.tracks[_i2].srclang, player.tracks[_i2].label); + } + } + + player.loadNextTrack(); + + var inEvents = ['mouseenter', 'focusin'], + outEvents = ['mouseleave', 'focusout']; + + if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) { + player.captionsButton.addEventListener('click', function () { + var trackId = 'none'; + if (player.selectedTrack === null) { + trackId = player.tracks[0].trackId; + } + player.setTrack(trackId); + }); + } else { + var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'), + captions = player.captionsButton.querySelectorAll('input[type=radio]'); + + for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) { + player.captionsButton.addEventListener(inEvents[_i3], function () { + (0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen'); + }); + } + + for (var _i4 = 0, _total2 = outEvents.length; _i4 < _total2; _i4++) { + player.captionsButton.addEventListener(outEvents[_i4], function () { + (0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen'); + }); + } + + for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) { + captions[_i5].addEventListener('click', function () { + player.setTrack(this.value); + }); + } + + for (var _i6 = 0, _total4 = labels.length; _i6 < _total4; _i6++) { + labels[_i6].addEventListener('click', function () { + var radio = (0, _dom.siblings)(this, function (el) { + return el.tagName === 'INPUT'; + })[0], + event = (0, _general.createEvent)('click', radio); + radio.dispatchEvent(event); + }); + } + + player.captionsButton.addEventListener('keydown', function (e) { + e.stopPropagation(); + }); + } + + for (var _i7 = 0, _total5 = inEvents.length; _i7 < _total5; _i7++) { + player.chaptersButton.addEventListener(inEvents[_i7], function () { + if (this.querySelector('.' + t.options.classPrefix + 'chapters-selector-list').childNodes.length) { + (0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen'); + } + }); + } + + for (var _i8 = 0, _total6 = outEvents.length; _i8 < _total6; _i8++) { + player.chaptersButton.addEventListener(outEvents[_i8], function () { + (0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen'); + }); + } + + player.chaptersButton.addEventListener('keydown', function (e) { + e.stopPropagation(); + }); + + if (!player.options.alwaysShowControls) { + player.container.addEventListener('controlsshown', function () { + (0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover'); + }); + + player.container.addEventListener('controlshidden', function () { + if (!media.paused) { + (0, _dom.removeClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover'); + } + }); + } else { + (0, _dom.addClass)(player.container.querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover'); + } + + media.addEventListener('timeupdate', function () { + player.displayCaptions(); + }); + + if (player.options.slidesSelector !== '') { + player.slidesContainer = _document2.default.querySelectorAll(player.options.slidesSelector); + + media.addEventListener('timeupdate', function () { + player.displaySlides(); + }); + } + }, + cleartracks: function cleartracks(player) { + if (player) { + if (player.captions) { + player.captions.remove(); + } + if (player.chapters) { + player.chapters.remove(); + } + if (player.captionsText) { + player.captionsText.remove(); + } + if (player.captionsButton) { + player.captionsButton.remove(); + } + if (player.chaptersButton) { + player.chaptersButton.remove(); + } + } + }, + rebuildtracks: function rebuildtracks() { + var t = this; + t.findTracks(); + t.buildtracks(t, t.controls, t.layers, t.media); + }, + findTracks: function findTracks() { + var t = this, + tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles, + total = tracktags.length; + + t.tracks = []; + for (var i = 0; i < total; i++) { + var track = tracktags[i], + srclang = track.getAttribute('srclang').toLowerCase() || '', + trackId = t.id + '_track_' + i + '_' + track.getAttribute('kind') + '_' + srclang; + t.tracks.push({ + trackId: trackId, + srclang: srclang, + src: track.getAttribute('src'), + kind: track.getAttribute('kind'), + label: track.getAttribute('label') || '', + entries: [], + isLoaded: false + }); + } + }, + setTrack: function setTrack(trackId) { + + var t = this, + radios = t.captionsButton.querySelectorAll('input[type="radio"]'), + captions = t.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selected'), + track = t.captionsButton.querySelector('input[value="' + trackId + '"]'); + + for (var i = 0, total = radios.length; i < total; i++) { + radios[i].checked = false; + } + + for (var _i9 = 0, _total7 = captions.length; _i9 < _total7; _i9++) { + (0, _dom.removeClass)(captions[_i9], t.options.classPrefix + 'captions-selected'); + } + + track.checked = true; + var labels = (0, _dom.siblings)(track, function (el) { + return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label'); + }); + for (var _i10 = 0, _total8 = labels.length; _i10 < _total8; _i10++) { + (0, _dom.addClass)(labels[_i10], t.options.classPrefix + 'captions-selected'); + } + + if (trackId === 'none') { + t.selectedTrack = null; + (0, _dom.removeClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled'); + } else { + for (var _i11 = 0, _total9 = t.tracks.length; _i11 < _total9; _i11++) { + var _track = t.tracks[_i11]; + if (_track.trackId === trackId) { + if (t.selectedTrack === null) { + (0, _dom.addClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled'); + } + t.selectedTrack = _track; + t.captions.setAttribute('lang', t.selectedTrack.srclang); + t.displayCaptions(); + break; + } + } + } + + var event = (0, _general.createEvent)('captionschange', t.media); + event.detail.caption = t.selectedTrack; + t.media.dispatchEvent(event); + }, + loadNextTrack: function loadNextTrack() { + var t = this; + + t.trackToLoad++; + if (t.trackToLoad < t.tracks.length) { + t.isLoadingTrack = true; + t.loadTrack(t.trackToLoad); + } else { + t.isLoadingTrack = false; + t.checkForTracks(); + } + }, + loadTrack: function loadTrack(index) { + var t = this, + track = t.tracks[index]; + + if (track !== undefined && (track.src !== undefined || track.src !== "")) { + (0, _dom.ajax)(track.src, 'text', function (d) { + track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d); + + track.isLoaded = true; + t.enableTrackButton(track); + t.loadNextTrack(); + + if (track.kind === 'slides') { + t.setupSlides(track); + } else if (track.kind === 'chapters' && !t.hasChapters) { + t.drawChapters(track); + t.hasChapters = true; + } + }, function () { + t.removeTrackButton(track.trackId); + t.loadNextTrack(); + }); + } + }, + enableTrackButton: function enableTrackButton(track) { + var t = this, + lang = track.srclang, + target = _document2.default.getElementById('' + track.trackId); + + if (!target) { + return; + } + + var label = track.label; + + if (label === '') { + label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang; + } + target.disabled = false; + var targetSiblings = (0, _dom.siblings)(target, function (el) { + return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label'); + }); + for (var i = 0, total = targetSiblings.length; i < total; i++) { + targetSiblings[i].innerHTML = label; + } + + if (t.options.startLanguage === lang) { + target.checked = true; + var event = (0, _general.createEvent)('click', target); + target.dispatchEvent(event); + } + }, + removeTrackButton: function removeTrackButton(trackId) { + var element = _document2.default.getElementById('' + trackId); + if (element) { + var button = element.closest('li'); + if (button) { + button.remove(); + } + } + }, + addTrackButton: function addTrackButton(trackId, lang, label) { + var t = this; + if (label === '') { + label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang; + } + + t.captionsButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'captions-selector-list-item">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>') + ('<label class="' + t.options.classPrefix + 'captions-selector-label"') + ('for="' + trackId + '">' + label + ' (loading)</label>') + '</li>'; + }, + checkForTracks: function checkForTracks() { + var t = this; + + var hasSubtitles = false; + + if (t.options.hideCaptionsButtonWhenEmpty) { + for (var i = 0, total = t.tracks.length; i < total; i++) { + var kind = t.tracks[i].kind; + if ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) { + hasSubtitles = true; + break; + } + } + + t.captionsButton.style.display = hasSubtitles ? '' : 'none'; + t.setControlsSize(); + } + }, + displayCaptions: function displayCaptions() { + if (this.tracks === undefined) { + return; + } + + var t = this, + track = t.selectedTrack, + sanitize = function sanitize(html) { + var div = _document2.default.createElement('div'); + div.innerHTML = html; + + var scripts = div.getElementsByTagName('script'); + var i = scripts.length; + while (i--) { + scripts[i].remove(); + } + + var allElements = div.getElementsByTagName('*'); + for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) { + var attributesObj = allElements[_i12].attributes, + attributes = Array.prototype.slice.call(attributesObj); + + for (var j = 0, total = attributes.length; j < total; j++) { + if (attributes[j].name.startsWith('on') || attributes[j].value.startsWith('javascript')) { + allElements[_i12].remove(); + } else if (attributes[j].name === 'style') { + allElements[_i12].removeAttribute(attributes[j].name); + } + } + } + return div.innerHTML; + }; + + if (track !== null && track.isLoaded) { + var i = t.searchTrackPosition(track.entries, t.media.currentTime); + if (i > -1) { + t.captionsText.innerHTML = sanitize(track.entries[i].text); + t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || ''); + t.captions.style.display = ''; + t.captions.style.height = '0px'; + return; + } + t.captions.style.display = 'none'; + } else { + t.captions.style.display = 'none'; + } + }, + setupSlides: function setupSlides(track) { + var t = this; + t.slides = track; + t.slides.entries.imgs = [t.slides.entries.length]; + t.showSlide(0); + }, + showSlide: function showSlide(index) { + var _this = this; + + var t = this; + + if (t.tracks === undefined || t.slidesContainer === undefined) { + return; + } + + var url = t.slides.entries[index].text; + + var img = t.slides.entries[index].imgs; + + if (img === undefined || img.fadeIn === undefined) { + var image = _document2.default.createElement('img'); + image.src = url; + image.addEventListener('load', function () { + var self = _this, + visible = (0, _dom.siblings)(self, function (el) { + return visible(el); + }); + self.style.display = 'none'; + t.slidesContainer.innerHTML += self.innerHTML; + (0, _dom.fadeIn)(t.slidesContainer.querySelector(image)); + for (var i = 0, total = visible.length; i < total; i++) { + (0, _dom.fadeOut)(visible[i], 400); + } + }); + t.slides.entries[index].imgs = img = image; + } else if (!(0, _dom.visible)(img)) { + var _visible = (0, _dom.siblings)(self, function (el) { + return _visible(el); + }); + (0, _dom.fadeIn)(t.slidesContainer.querySelector(img)); + for (var i = 0, total = _visible.length; i < total; i++) { + (0, _dom.fadeOut)(_visible[i]); + } + } + }, + displaySlides: function displaySlides() { + var t = this; + + if (this.slides === undefined) { + return; + } + + var slides = t.slides, + i = t.searchTrackPosition(slides.entries, t.media.currentTime); + + if (i > -1) { + t.showSlide(i); + } + }, + drawChapters: function drawChapters(chapters) { + var t = this, + total = chapters.entries.length; + + if (!total) { + return; + } + + t.chaptersButton.querySelector('ul').innerHTML = ''; + + for (var i = 0; i < total; i++) { + t.chaptersButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_chapters" id="' + t.id + '_chapters_' + i + '" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label"') + ('for="' + t.id + '_chapters_' + i + '">' + chapters.entries[i].text + '</label>') + '</li>'; + } + + var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'), + labels = t.chaptersButton.querySelectorAll('.' + t.options.classPrefix + 'chapters-selector-label'); + + for (var _i13 = 0, _total10 = radios.length; _i13 < _total10; _i13++) { + radios[_i13].disabled = false; + radios[_i13].checked = false; + radios[_i13].addEventListener('click', function () { + var self = this, + listItems = t.chaptersButton.querySelectorAll('li'), + label = (0, _dom.siblings)(self, function (el) { + return (0, _dom.hasClass)(el, t.options.classPrefix + 'chapters-selector-label'); + })[0]; + + self.checked = true; + self.parentNode.setAttribute('aria-checked', true); + (0, _dom.addClass)(label, t.options.classPrefix + 'chapters-selected'); + (0, _dom.removeClass)(t.chaptersButton.querySelector('.' + t.options.classPrefix + 'chapters-selected'), t.options.classPrefix + 'chapters-selected'); + + for (var _i14 = 0, _total11 = listItems.length; _i14 < _total11; _i14++) { + listItems[_i14].setAttribute('aria-checked', false); + } + + t.media.setCurrentTime(parseFloat(self.value)); + if (t.media.paused) { + t.media.play(); + } + }); + } + + for (var _i15 = 0, _total12 = labels.length; _i15 < _total12; _i15++) { + labels[_i15].addEventListener('click', function () { + var radio = (0, _dom.siblings)(this, function (el) { + return el.tagName === 'INPUT'; + })[0], + event = (0, _general.createEvent)('click', radio); + radio.dispatchEvent(event); + }); + } + }, + searchTrackPosition: function searchTrackPosition(tracks, currentTime) { + var lo = 0, + hi = tracks.length - 1, + mid = void 0, + start = void 0, + stop = void 0; + + while (lo <= hi) { + mid = lo + hi >> 1; + start = tracks[mid].start; + stop = tracks[mid].stop; + + if (currentTime >= start && currentTime < stop) { + return mid; + } else if (start < currentTime) { + lo = mid + 1; + } else if (start > currentTime) { + hi = mid - 1; + } + } + + return -1; + } +}); + +_mejs2.default.language = { + codes: { + af: 'mejs.afrikaans', + sq: 'mejs.albanian', + ar: 'mejs.arabic', + be: 'mejs.belarusian', + bg: 'mejs.bulgarian', + ca: 'mejs.catalan', + zh: 'mejs.chinese', + 'zh-cn': 'mejs.chinese-simplified', + 'zh-tw': 'mejs.chines-traditional', + hr: 'mejs.croatian', + cs: 'mejs.czech', + da: 'mejs.danish', + nl: 'mejs.dutch', + en: 'mejs.english', + et: 'mejs.estonian', + fl: 'mejs.filipino', + fi: 'mejs.finnish', + fr: 'mejs.french', + gl: 'mejs.galician', + de: 'mejs.german', + el: 'mejs.greek', + ht: 'mejs.haitian-creole', + iw: 'mejs.hebrew', + hi: 'mejs.hindi', + hu: 'mejs.hungarian', + is: 'mejs.icelandic', + id: 'mejs.indonesian', + ga: 'mejs.irish', + it: 'mejs.italian', + ja: 'mejs.japanese', + ko: 'mejs.korean', + lv: 'mejs.latvian', + lt: 'mejs.lithuanian', + mk: 'mejs.macedonian', + ms: 'mejs.malay', + mt: 'mejs.maltese', + no: 'mejs.norwegian', + fa: 'mejs.persian', + pl: 'mejs.polish', + pt: 'mejs.portuguese', + ro: 'mejs.romanian', + ru: 'mejs.russian', + sr: 'mejs.serbian', + sk: 'mejs.slovak', + sl: 'mejs.slovenian', + es: 'mejs.spanish', + sw: 'mejs.swahili', + sv: 'mejs.swedish', + tl: 'mejs.tagalog', + th: 'mejs.thai', + tr: 'mejs.turkish', + uk: 'mejs.ukrainian', + vi: 'mejs.vietnamese', + cy: 'mejs.welsh', + yi: 'mejs.yiddish' + } +}; + +_mejs2.default.TrackFormatParser = { + webvtt: { + pattern: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/, + + parse: function parse(trackText) { + var lines = trackText.split(/\r?\n/), + entries = []; + + var timecode = void 0, + text = void 0, + identifier = void 0; + + for (var i = 0, total = lines.length; i < total; i++) { + timecode = this.pattern.exec(lines[i]); + + if (timecode && i < lines.length) { + if (i - 1 >= 0 && lines[i - 1] !== '') { + identifier = lines[i - 1]; + } + i++; + + text = lines[i]; + i++; + while (lines[i] !== '' && i < lines.length) { + text = text + '\n' + lines[i]; + i++; + } + text = text.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>"); + entries.push({ + identifier: identifier, + start: (0, _time.convertSMPTEtoSeconds)(timecode[1]) === 0 ? 0.200 : (0, _time.convertSMPTEtoSeconds)(timecode[1]), + stop: (0, _time.convertSMPTEtoSeconds)(timecode[3]), + text: text, + settings: timecode[5] + }); + } + identifier = ''; + } + return entries; + } + }, + + dfxp: { + parse: function parse(trackText) { + trackText = $(trackText).filter('tt'); + var container = trackText.firstChild, + lines = container.querySelectorAll('p'), + styleNode = trackText.getElementById('' + container.attr('style')), + entries = []; + + var styles = void 0; + + if (styleNode.length) { + styleNode.removeAttribute('id'); + var attributes = styleNode.attributes; + if (attributes.length) { + styles = {}; + for (var i = 0, total = attributes.length; i < total; i++) { + styles[attributes[i].name.split(":")[1]] = attributes[i].value; + } + } + } + + for (var _i16 = 0, _total13 = lines.length; _i16 < _total13; _i16++) { + var style = void 0, + _temp = { + start: null, + stop: null, + style: null, + text: null + }; + + if (lines.eq(_i16).attr('begin')) { + _temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('begin')); + } + if (!_temp.start && lines.eq(_i16 - 1).attr('end')) { + _temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 - 1).attr('end')); + } + if (lines.eq(_i16).attr('end')) { + _temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('end')); + } + if (!_temp.stop && lines.eq(_i16 + 1).attr('begin')) { + _temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 + 1).attr('begin')); + } + + if (styles) { + style = ''; + for (var _style in styles) { + style += _style + ':' + styles[_style] + ';'; + } + } + if (style) { + _temp.style = style; + } + if (_temp.start === 0) { + _temp.start = 0.200; + } + _temp.text = lines.eq(_i16).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>"); + entries.push(_temp); + } + return entries; + } + } +}; + +},{"16":16,"2":2,"24":24,"25":25,"28":28,"4":4,"6":6}],13:[function(_dereq_,module,exports){ +'use strict'; + +var _document = _dereq_(2); + +var _document2 = _interopRequireDefault(_document); + +var _player = _dereq_(16); + +var _player2 = _interopRequireDefault(_player); + +var _i18n = _dereq_(4); + +var _i18n2 = _interopRequireDefault(_i18n); + +var _constants = _dereq_(23); + +var _general = _dereq_(25); + +var _dom = _dereq_(24); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +Object.assign(_player.config, { + muteText: null, + + unmuteText: null, + + allyVolumeControlText: null, + + hideVolumeOnTouchDevices: true, + + audioVolume: 'horizontal', + + videoVolume: 'vertical', + + startVolume: 0.8 +}); + +Object.assign(_player2.default.prototype, { + buildvolume: function buildvolume(player, controls, layers, media) { + if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) { + return; + } + + var t = this, + mode = t.isVideo ? t.options.videoVolume : t.options.audioVolume, + muteText = (0, _general.isString)(t.options.muteText) ? t.options.muteText : _i18n2.default.t('mejs.mute'), + unmuteText = (0, _general.isString)(t.options.unmuteText) ? t.options.unmuteText : _i18n2.default.t('mejs.unmute'), + volumeControlText = (0, _general.isString)(t.options.allyVolumeControlText) ? t.options.allyVolumeControlText : _i18n2.default.t('mejs.volume-help-text'), + mute = _document2.default.createElement('div'); + + mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute'; + mute.innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ('<a href="javascript:void(0);" class="' + t.options.classPrefix + 'volume-slider" ') + ('aria-label="' + _i18n2.default.t('mejs.volume-slider') + '" aria-valuemin="0" aria-valuemax="100" role="slider" ') + 'aria-orientation="vertical">' + ('<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>') + ('<div class="' + t.options.classPrefix + 'volume-total">') + ('<div class="' + t.options.classPrefix + 'volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'volume-handle"></div>') + '</div>' + '</a>'; + + t.addControlElement(mute, 'volume'); + + if (mode === 'horizontal') { + var anchor = _document2.default.createElement('a'); + anchor.className = t.options.classPrefix + 'horizontal-volume-slider'; + anchor.href = 'javascript:void(0);'; + anchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider')); + anchor.setAttribute('aria-valuemin', 0); + anchor.setAttribute('aria-valuemax', 100); + anchor.setAttribute('role', 'slider'); + anchor.innerHTML += '<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>' + ('<div class="' + t.options.classPrefix + 'horizontal-volume-total">') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-handle"></div>') + '</div>'; + mute.parentNode.insertBefore(anchor, mute.nextSibling); + } + + var mouseIsDown = false, + mouseIsOver = false, + modified = false, + updateVolumeSlider = function updateVolumeSlider() { + var volume = Math.floor(media.volume * 100); + volumeSlider.setAttribute('aria-valuenow', volume); + volumeSlider.setAttribute('aria-valuetext', volume + '%'); + }; + + var volumeSlider = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-slider') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'), + volumeTotal = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-total') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'), + volumeCurrent = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-current') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'), + volumeHandle = mode === 'vertical' ? t.container.querySelector('.' + t.options.classPrefix + 'volume-handle') : t.container.querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'), + positionVolumeHandle = function positionVolumeHandle(volume) { + + if (volume === null || isNaN(volume) || volume === undefined) { + return; + } + + volume = Math.max(0, volume); + volume = Math.min(volume, 1); + + if (volume === 0) { + (0, _dom.removeClass)(mute, t.options.classPrefix + 'mute'); + (0, _dom.addClass)(mute, t.options.classPrefix + 'unmute'); + var button = mute.firstElementChild; + button.setAttribute('title', unmuteText); + button.setAttribute('aria-label', unmuteText); + } else { + (0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute'); + (0, _dom.addClass)(mute, t.options.classPrefix + 'mute'); + var _button = mute.firstElementChild; + _button.setAttribute('title', muteText); + _button.setAttribute('aria-label', muteText); + } + + var volumePercentage = volume * 100 + '%', + volumeStyles = getComputedStyle(volumeHandle); + + if (mode === 'vertical') { + volumeCurrent.style.bottom = 0; + volumeCurrent.style.height = volumePercentage; + volumeHandle.style.bottom = volumePercentage; + volumeHandle.style.marginBottom = -parseFloat(volumeStyles.height) / 2 + 'px'; + } else { + volumeCurrent.style.left = 0; + volumeCurrent.style.width = volumePercentage; + volumeHandle.style.left = volumePercentage; + volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px'; + } + }, + handleVolumeMove = function handleVolumeMove(e) { + var totalOffset = (0, _dom.offset)(volumeTotal), + volumeStyles = getComputedStyle(volumeTotal); + + modified = true; + + var volume = null; + + if (mode === 'vertical') { + var railHeight = parseFloat(volumeStyles.height), + newY = e.pageY - totalOffset.top; + + volume = (railHeight - newY) / railHeight; + + if (totalOffset.top === 0 || totalOffset.left === 0) { + return; + } + } else { + var railWidth = parseFloat(volumeStyles.width), + newX = e.pageX - totalOffset.left; + + volume = newX / railWidth; + } + + volume = Math.max(0, volume); + volume = Math.min(volume, 1); + + positionVolumeHandle(volume); + + media.setMuted(volume === 0); + media.setVolume(volume); + + e.preventDefault(); + e.stopPropagation(); + }, + toggleMute = function toggleMute() { + if (media.muted) { + positionVolumeHandle(0); + (0, _dom.removeClass)(mute, t.options.classPrefix + 'mute'); + (0, _dom.addClass)(mute, t.options.classPrefix + 'unmute'); + } else { + positionVolumeHandle(media.volume); + (0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute'); + (0, _dom.addClass)(mute, t.options.classPrefix + 'mute'); + } + }; + + mute.addEventListener('mouseenter', function (e) { + if (e.target === mute) { + volumeSlider.style.display = 'block'; + mouseIsOver = true; + e.preventDefault(); + e.stopPropagation(); + } + }); + mute.addEventListener('focusin', function () { + volumeSlider.style.display = 'block'; + mouseIsOver = true; + }); + + mute.addEventListener('focusout', function (e) { + if ((!e.relatedTarget || e.relatedTarget && !e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider')) && mode === 'vertical') { + volumeSlider.style.display = 'none'; + } + }); + mute.addEventListener('mouseleave', function () { + mouseIsOver = false; + if (!mouseIsDown && mode === 'vertical') { + volumeSlider.style.display = 'none'; + } + }); + mute.addEventListener('focusout', function () { + mouseIsOver = false; + }); + mute.addEventListener('keydown', function (e) { + if (t.options.keyActions.length) { + var keyCode = e.which || e.keyCode || 0, + volume = media.volume; + + switch (keyCode) { + case 38: + volume = Math.min(volume + 0.1, 1); + break; + case 40: + volume = Math.max(0, volume - 0.1); + break; + default: + return true; + } + + mouseIsDown = false; + positionVolumeHandle(volume); + media.setVolume(volume); + + e.preventDefault(); + e.stopPropagation(); + } + }); + mute.querySelector('button').addEventListener('click', function () { + media.setMuted(!media.muted); + var event = (0, _general.createEvent)('volumechange', media); + media.dispatchEvent(event); + }); + + volumeSlider.addEventListener('dragstart', function () { + return false; + }); + + volumeSlider.addEventListener('mouseover', function () { + mouseIsOver = true; + }); + volumeSlider.addEventListener('focusin', function () { + volumeSlider.style.display = 'block'; + mouseIsOver = true; + }); + volumeSlider.addEventListener('focusout', function () { + mouseIsOver = false; + if (!mouseIsDown && mode === 'vertical') { + volumeSlider.style.display = 'none'; + } + }); + volumeSlider.addEventListener('mousedown', function (e) { + handleVolumeMove(e); + t.globalBind('mousemove.vol', function (event) { + var target = event.target; + if (mouseIsDown && (target === volumeSlider || target.closest(mode === 'vertical' ? '.' + t.options.classPrefix + 'volume-slider' : '.' + t.options.classPrefix + 'horizontal-volume-slider'))) { + handleVolumeMove(event); + } + }); + t.globalBind('mouseup.vol', function () { + mouseIsDown = false; + t.globalUnbind('mousemove.vol mouseup.vol'); + + if (!mouseIsOver && mode === 'vertical') { + volumeSlider.style.display = 'none'; + } + }); + mouseIsDown = true; + e.preventDefault(); + e.stopPropagation(); + }); + + media.addEventListener('volumechange', function (e) { + if (!mouseIsDown) { + toggleMute(); + } + updateVolumeSlider(e); + }); + + var rendered = false; + media.addEventListener('rendererready', function () { + if (!modified) { + setTimeout(function () { + rendered = true; + if (player.options.startVolume === 0 || media.originalNode.muted) { + media.setMuted(true); + player.options.startVolume = 0; + } + media.setVolume(player.options.startVolume); + t.setControlsSize(); + }, 250); + } + }); + + media.addEventListener('loadedmetadata', function () { + setTimeout(function () { + if (!modified && !rendered) { + if (player.options.startVolume === 0 || media.originalNode.muted) { + media.setMuted(true); + player.options.startVolume = 0; + } + media.setVolume(player.options.startVolume); + t.setControlsSize(); + } + rendered = false; + }, 250); + }); + + if (player.options.startVolume === 0 || media.originalNode.muted) { + media.setMuted(true); + player.options.startVolume = 0; + toggleMute(); + } + + media.setVolume(player.options.startVolume); + + t.container.addEventListener('controlsresize', function () { + toggleMute(); + }); + } +}); + +},{"16":16,"2":2,"23":23,"24":24,"25":25,"4":4}],14:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var EN = exports.EN = { + "mejs.plural-form": 1, + + "mejs.download-file": "Download File", + + "mejs.install-flash": "You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/", + + "mejs.fullscreen": "Fullscreen", + + "mejs.play": "Play", + "mejs.pause": "Pause", + + "mejs.time-slider": "Time Slider", + "mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.", + "mejs.live-broadcast": "Live Broadcast", + + "mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.", + "mejs.unmute": "Unmute", + "mejs.mute": "Mute", + "mejs.volume-slider": "Volume Slider", + + "mejs.video-player": "Video Player", + "mejs.audio-player": "Audio Player", + + "mejs.captions-subtitles": "Captions/Subtitles", + "mejs.captions-chapters": "Chapters", + "mejs.none": "None", + "mejs.afrikaans": "Afrikaans", + "mejs.albanian": "Albanian", + "mejs.arabic": "Arabic", + "mejs.belarusian": "Belarusian", + "mejs.bulgarian": "Bulgarian", + "mejs.catalan": "Catalan", + "mejs.chinese": "Chinese", + "mejs.chinese-simplified": "Chinese (Simplified)", + "mejs.chinese-traditional": "Chinese (Traditional)", + "mejs.croatian": "Croatian", + "mejs.czech": "Czech", + "mejs.danish": "Danish", + "mejs.dutch": "Dutch", + "mejs.english": "English", + "mejs.estonian": "Estonian", + "mejs.filipino": "Filipino", + "mejs.finnish": "Finnish", + "mejs.french": "French", + "mejs.galician": "Galician", + "mejs.german": "German", + "mejs.greek": "Greek", + "mejs.haitian-creole": "Haitian Creole", + "mejs.hebrew": "Hebrew", + "mejs.hindi": "Hindi", + "mejs.hungarian": "Hungarian", + "mejs.icelandic": "Icelandic", + "mejs.indonesian": "Indonesian", + "mejs.irish": "Irish", + "mejs.italian": "Italian", + "mejs.japanese": "Japanese", + "mejs.korean": "Korean", + "mejs.latvian": "Latvian", + "mejs.lithuanian": "Lithuanian", + "mejs.macedonian": "Macedonian", + "mejs.malay": "Malay", + "mejs.maltese": "Maltese", + "mejs.norwegian": "Norwegian", + "mejs.persian": "Persian", + "mejs.polish": "Polish", + "mejs.portuguese": "Portuguese", + "mejs.romanian": "Romanian", + "mejs.russian": "Russian", + "mejs.serbian": "Serbian", + "mejs.slovak": "Slovak", + "mejs.slovenian": "Slovenian", + "mejs.spanish": "Spanish", + "mejs.swahili": "Swahili", + "mejs.swedish": "Swedish", + "mejs.tagalog": "Tagalog", + "mejs.thai": "Thai", + "mejs.turkish": "Turkish", + "mejs.ukrainian": "Ukrainian", + "mejs.vietnamese": "Vietnamese", + "mejs.welsh": "Welsh", + "mejs.yiddish": "Yiddish" +}; + +},{}],15:[function(_dereq_,module,exports){ +'use strict'; + +var _window = _dereq_(3); + +var _window2 = _interopRequireDefault(_window); + +var _mejs = _dereq_(6); + +var _mejs2 = _interopRequireDefault(_mejs); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +if (typeof jQuery !== 'undefined') { + _mejs2.default.$ = _window2.default.jQuery = _window2.default.$ = jQuery; +} else if (typeof Zepto !== 'undefined') { + _mejs2.default.$ = _window2.default.Zepto = _window2.default.$ = Zepto; +} else if (typeof ender !== 'undefined') { + _mejs2.default.$ = _window2.default.ender = _window2.default.$ = ender; +} + +},{"3":3,"6":6}],16:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.config = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _window = _dereq_(3); + +var _window2 = _interopRequireDefault(_window); + +var _document = _dereq_(2); + +var _document2 = _interopRequireDefault(_document); + +var _mejs = _dereq_(6); + +var _mejs2 = _interopRequireDefault(_mejs); + +var _mediaelement = _dereq_(5); + +var _mediaelement2 = _interopRequireDefault(_mediaelement); + +var _i18n = _dereq_(4); + +var _i18n2 = _interopRequireDefault(_i18n); + +var _constants = _dereq_(23); + +var _general = _dereq_(25); + +var _time = _dereq_(28); + +var _media = _dereq_(26); + +var _dom = _dereq_(24); + +var dom = _interopRequireWildcard(_dom); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +_mejs2.default.mepIndex = 0; + +_mejs2.default.players = {}; + +var config = exports.config = { + poster: '', + + showPosterWhenEnded: false, + + showPosterWhenPaused: false, + + defaultVideoWidth: 480, + + defaultVideoHeight: 270, + + videoWidth: -1, + + videoHeight: -1, + + defaultAudioWidth: 400, + + defaultAudioHeight: 40, + + defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) { + return media.getDuration() * 0.05; + }, + + defaultSeekForwardInterval: function defaultSeekForwardInterval(media) { + return media.getDuration() * 0.05; + }, + + setDimensions: true, + + audioWidth: -1, + + audioHeight: -1, + + loop: false, + + autoRewind: true, + + enableAutosize: true, + + timeFormat: '', + + alwaysShowHours: false, + + showTimecodeFrameCount: false, + + framesPerSecond: 25, + + alwaysShowControls: false, + + hideVideoControlsOnLoad: false, + + hideVideoControlsOnPause: false, + + clickToPlayPause: true, + + controlsTimeoutDefault: 1500, + + controlsTimeoutMouseEnter: 2500, + + controlsTimeoutMouseLeave: 1000, + + iPadUseNativeControls: false, + + iPhoneUseNativeControls: false, + + AndroidUseNativeControls: false, + + features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'], + + isVideo: true, + + stretching: 'auto', + + classPrefix: 'mejs__', + + enableKeyboard: true, + + pauseOtherPlayers: true, + + secondsDecimalLength: 0, + + keyActions: [{ + keys: [32, 179], + action: function action(player, media) { + + if (!_constants.IS_FIREFOX) { + if (media.paused || media.ended) { + media.play(); + } else { + media.pause(); + } + } + } + }, { + keys: [38], + action: function action(player, media) { + + if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) { + player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = ''; + } + if (player.isVideo) { + player.showControls(); + player.startControlsTimer(); + } + + var newVolume = Math.min(media.volume + 0.1, 1); + media.setVolume(newVolume); + if (newVolume > 0) { + media.setMuted(false); + } + } + }, { + keys: [40], + action: function action(player, media) { + + if (player.container.querySelector('.' + config.classPrefix + 'volume-button>button').matches(':focus') || player.container.querySelector('.' + config.classPrefix + 'volume-slider').matches(':focus')) { + player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = ''; + } + + if (player.isVideo) { + player.showControls(); + player.startControlsTimer(); + } + + var newVolume = Math.max(media.volume - 0.1, 0); + media.setVolume(newVolume); + + if (newVolume <= 0.1) { + media.setMuted(true); + } + } + }, { + keys: [37, 227], + action: function action(player, media) { + if (!isNaN(media.duration) && media.duration > 0) { + if (player.isVideo) { + player.showControls(); + player.startControlsTimer(); + } + + var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0); + media.setCurrentTime(newTime); + } + } + }, { + keys: [39, 228], + action: function action(player, media) { + + if (!isNaN(media.duration) && media.duration > 0) { + if (player.isVideo) { + player.showControls(); + player.startControlsTimer(); + } + + var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration); + media.setCurrentTime(newTime); + } + } + }, { + keys: [70], + action: function action(player, media, key, event) { + if (!event.ctrlKey) { + if (typeof player.enterFullScreen !== 'undefined') { + if (player.isFullScreen) { + player.exitFullScreen(); + } else { + player.enterFullScreen(); + } + } + } + } + }, { + keys: [77], + action: function action(player) { + + player.container.querySelector('.' + config.classPrefix + 'volume-slider').style.display = ''; + if (player.isVideo) { + player.showControls(); + player.startControlsTimer(); + } + if (player.media.muted) { + player.setMuted(false); + } else { + player.setMuted(true); + } + } + }] +}; + +_mejs2.default.MepDefaults = config; + +var MediaElementPlayer = function () { + function MediaElementPlayer(node, o) { + _classCallCheck(this, MediaElementPlayer); + + var t = this, + element = typeof node === 'string' ? _document2.default.getElementById(node) : node; + + t.hasFocus = false; + + t.controlsAreVisible = true; + + t.controlsEnabled = true; + + t.controlsTimer = null; + + if (!(t instanceof MediaElementPlayer)) { + return new MediaElementPlayer(element, o); + } + + t.node = t.media = element; + + if (!t.node) { + return; + } + + if (t.media.player !== undefined) { + return t.media.player; + } + + if (o === undefined) { + var options = t.node.getAttribute('data-mejsoptions'); + o = options ? JSON.parse(options) : {}; + } + + t.options = Object.assign({}, config, o); + + if (t.options.loop && !t.media.getAttribute('loop')) { + t.media.loop = true; + t.node.loop = true; + } else if (t.media.loop) { + t.options.loop = true; + } + + if (!t.options.timeFormat) { + t.options.timeFormat = 'mm:ss'; + if (t.options.alwaysShowHours) { + t.options.timeFormat = 'hh:mm:ss'; + } + if (t.options.showTimecodeFrameCount) { + t.options.timeFormat += ':ff'; + } + } + + (0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25); + + t.id = 'mep_' + _mejs2.default.mepIndex++; + + _mejs2.default.players[t.id] = t; + + var meOptions = Object.assign({}, t.options, { + success: function success(media, domNode) { + t._meReady(media, domNode); + }, + error: function error(e) { + t._handleError(e); + } + }), + tagName = t.node.tagName.toLowerCase(); + + t.isDynamic = tagName !== 'audio' && tagName !== 'video'; + t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo; + t.mediaFiles = null; + t.trackFiles = null; + + if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) { + t.node.setAttribute('controls', true); + + if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) { + t.play(); + } + } else if ((t.isVideo || !t.isVideo && t.options.features.length) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) { + t.node.removeAttribute('controls'); + var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player'); + + var offscreen = _document2.default.createElement('span'); + offscreen.className = t.options.classPrefix + 'offscreen'; + offscreen.innerText = videoPlayerTitle; + t.media.parentNode.insertBefore(offscreen, t.media); + + t.container = _document2.default.createElement('div'); + t.container.id = t.id; + t.container.className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className; + t.container.tabIndex = 0; + t.container.setAttribute('role', 'application'); + t.container.setAttribute('aria-label', videoPlayerTitle); + t.container.innerHTML = '<div class="' + t.options.classPrefix + 'inner">' + ('<div class="' + t.options.classPrefix + 'mediaelement"></div>') + ('<div class="' + t.options.classPrefix + 'layers"></div>') + ('<div class="' + t.options.classPrefix + 'controls"></div>') + ('<div class="' + t.options.classPrefix + 'clear"></div>') + '</div>'; + t.container.addEventListener('focus', function (e) { + if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) { + t.showControls(true); + + var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.container) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button', + button = t.container.querySelector(btnSelector); + + button.focus(); + } + }); + t.node.parentNode.insertBefore(t.container, t.node); + + if (!t.options.features.length) { + t.container.style.background = 'transparent'; + t.container.querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none'; + } + + if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.container.parentNode, t.options.classPrefix + 'fill-container')) { + t.outerContainer = t.media.parentNode; + + var wrapper = _document2.default.createElement('div'); + wrapper.className = t.options.classPrefix + 'fill-container'; + t.container.parentNode.insertBefore(wrapper, t.container); + wrapper.appendChild(t.container); + } + + if (_constants.IS_ANDROID) { + dom.addClass(t.container, t.options.classPrefix + 'android'); + } + if (_constants.IS_IOS) { + dom.addClass(t.container, t.options.classPrefix + 'ios'); + } + if (_constants.IS_IPAD) { + dom.addClass(t.container, t.options.classPrefix + 'ipad'); + } + if (_constants.IS_IPHONE) { + dom.addClass(t.container, t.options.classPrefix + 'iphone'); + } + dom.addClass(t.container, t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio'); + + if (_constants.IS_SAFARI && !_constants.IS_IOS) { + + dom.addClass(t.container, t.options.classPrefix + 'hide-cues'); + + var cloneNode = t.node.cloneNode(), + children = t.node.childNodes, + mediaFiles = [], + tracks = []; + + for (var i = 0, total = children.length; i < total; i++) { + var childNode = children[i]; + + if (childNode && childNode.nodeType !== Node.TEXT_NODE) { + (function () { + switch (childNode.tagName.toLowerCase()) { + case 'source': + var elements = {}; + Array.prototype.slice.call(childNode.attributes).forEach(function (item) { + elements[item.name] = item.value; + }); + elements.type = (0, _media.formatType)(elements.src, elements.type); + mediaFiles.push(elements); + break; + case 'track': + childNode.mode = 'hidden'; + tracks.push(childNode); + break; + default: + cloneNode.appendChild(childNode); + break; + } + })(); + } + } + + t.node.remove(); + t.node = t.media = cloneNode; + + if (mediaFiles.length) { + t.mediaFiles = mediaFiles; + } + if (tracks.length) { + t.trackFiles = tracks; + } + } + + t.container.querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node); + + t.media.player = t; + + t.controls = t.container.querySelector('.' + t.options.classPrefix + 'controls'); + t.layers = t.container.querySelector('.' + t.options.classPrefix + 'layers'); + + var tagType = t.isVideo ? 'video' : 'audio', + capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1); + + if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) { + t.width = t.options[tagType + 'Width']; + } else if (t.node.style.width !== '' && t.node.style.width !== null) { + t.width = t.node.style.width; + } else if (t.node.getAttribute('width')) { + t.width = t.node.getAttribute('width'); + } else { + t.width = t.options['default' + capsTagName + 'Width']; + } + + if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) { + t.height = t.options[tagType + 'Height']; + } else if (t.node.style.height !== '' && t.node.style.height !== null) { + t.height = t.node.style.height; + } else if (t.node.getAttribute('height')) { + t.height = t.node.getAttribute('height'); + } else { + t.height = t.options['default' + capsTagName + 'Height']; + } + + t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width; + + t.setPlayerSize(t.width, t.height); + + meOptions.pluginWidth = t.width; + meOptions.pluginHeight = t.height; + } else if (!t.isVideo && !t.options.features.length) { + t.node.style.display = 'none'; + } + + new _mediaelement2.default(t.media, meOptions, t.mediaFiles); + + if (t.container !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) { + var event = (0, _general.createEvent)('controlsshown', t.container); + t.container.dispatchEvent(event); + } + + return t; + } + + _createClass(MediaElementPlayer, [{ + key: 'showControls', + value: function showControls(doAnimation) { + var t = this; + + doAnimation = doAnimation === undefined || doAnimation; + + if (t.controlsAreVisible || !t.isVideo) { + return; + } + + if (doAnimation) { + (function () { + dom.fadeIn(t.controls, 200, function () { + dom.removeClass(t.controls, t.options.classPrefix + 'offscreen'); + var event = (0, _general.createEvent)('controlsshown', t.container); + t.container.dispatchEvent(event); + }); + + var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control'); + + var _loop = function _loop(i, total) { + dom.fadeIn(controls[i], 200, function () { + dom.removeClass(controls[i], t.options.classPrefix + 'offscreen'); + }); + }; + + for (var i = 0, total = controls.length; i < total; i++) { + _loop(i, total); + } + })(); + } else { + dom.removeClass(t.controls, t.options.classPrefix + 'offscreen'); + t.controls.style.display = ''; + t.controls.style.opacity = 1; + + var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control'); + for (var i = 0, total = controls.length; i < total; i++) { + dom.removeClass(controls[i], t.options.classPrefix + 'offscreen'); + controls[i].style.display = ''; + } + + var event = (0, _general.createEvent)('controlsshown', t.container); + t.container.dispatchEvent(event); + } + + t.controlsAreVisible = true; + t.setControlsSize(); + } + }, { + key: 'hideControls', + value: function hideControls(doAnimation, forceHide) { + var t = this; + + doAnimation = doAnimation === undefined || doAnimation; + + if (forceHide !== true && (!t.controlsAreVisible || t.options.alwaysShowControls || t.keyboardAction || t.media.paused && t.media.readyState === 4 && (!t.options.hideVideoControlsOnLoad && t.media.currentTime <= 0 || !t.options.hideVideoControlsOnPause && t.media.currentTime > 0) || t.isVideo && !t.options.hideVideoControlsOnLoad && !t.media.readyState || t.media.ended)) { + return; + } + + if (doAnimation) { + (function () { + dom.fadeOut(t.controls, 200, function () { + dom.addClass(t.controls, t.options.classPrefix + 'offscreen'); + t.controls.style.display = ''; + var event = (0, _general.createEvent)('controlshidden', t.container); + t.container.dispatchEvent(event); + }); + + var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control'); + + var _loop2 = function _loop2(i, total) { + dom.fadeOut(controls[i], 200, function () { + dom.addClass(controls[i], t.options.classPrefix + 'offscreen'); + controls[i].style.display = ''; + }); + }; + + for (var i = 0, total = controls.length; i < total; i++) { + _loop2(i, total); + } + })(); + } else { + dom.addClass(t.controls, t.options.classPrefix + 'offscreen'); + t.controls.style.display = ''; + t.controls.style.opacity = 0; + + var controls = t.container.querySelectorAll('.' + t.options.classPrefix + 'control'); + for (var i = 0, total = controls.length; i < total; i++) { + dom.addClass(controls[i], t.options.classPrefix + 'offscreen'); + controls[i].style.display = ''; + } + + var event = (0, _general.createEvent)('controlshidden', t.container); + t.container.dispatchEvent(event); + } + + t.controlsAreVisible = false; + } + }, { + key: 'startControlsTimer', + value: function startControlsTimer(timeout) { + var t = this; + + timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault; + + t.killControlsTimer('start'); + + t.controlsTimer = setTimeout(function () { + t.hideControls(); + t.killControlsTimer('hide'); + }, timeout); + } + }, { + key: 'killControlsTimer', + value: function killControlsTimer() { + var t = this; + + if (t.controlsTimer !== null) { + clearTimeout(t.controlsTimer); + delete t.controlsTimer; + t.controlsTimer = null; + } + } + }, { + key: 'disableControls', + value: function disableControls() { + var t = this; + + t.killControlsTimer(); + t.controlsEnabled = true; + t.hideControls(false, true); + } + }, { + key: 'enableControls', + value: function enableControls() { + var t = this; + + t.controlsEnabled = true; + t.showControls(false); + } + }, { + key: '_meReady', + value: function _meReady(media, domNode) { + var t = this, + autoplayAttr = domNode.getAttribute('autoplay'), + autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'), + isNative = media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName); + + if (t.controls) { + t.enableControls(); + } + + if (t.container && t.container.querySelector('.' + t.options.classPrefix + 'overlay-play')) { + t.container.querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = ''; + } + + if (t.created) { + return; + } + + t.created = true; + t.media = media; + t.domNode = domNode; + + if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) { + if (!t.isVideo && !t.options.features.length) { + if (autoplay && isNative) { + t.play(); + } + + if (t.options.success) { + + if (typeof t.options.success === 'string') { + _window2.default[t.options.success](t.media, t.domNode, t); + } else { + t.options.success(t.media, t.domNode, t); + } + } + + return; + } + + t.buildposter(t, t.controls, t.layers, t.media); + t.buildkeyboard(t, t.controls, t.layers, t.media); + t.buildoverlays(t, t.controls, t.layers, t.media); + + t.findTracks(); + + t.featurePosition = {}; + + for (var i = 0, total = t.options.features.length; i < total; i++) { + var feature = t.options.features[i]; + if (t['build' + feature]) { + try { + t['build' + feature](t, t.controls, t.layers, t.media); + } catch (e) { + console.error('error building ' + feature, e); + } + } + } + + var event = (0, _general.createEvent)('controlsready', t.container); + t.container.dispatchEvent(event); + + t.setPlayerSize(t.width, t.height); + t.setControlsSize(); + + if (t.isVideo) { + t.clickToPlayPauseCallback = function () { + + if (t.options.clickToPlayPause) { + var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'), + pressed = button.getAttribute('aria-pressed'); + + if (t.media.paused && pressed) { + t.pause(); + } else if (t.media.paused) { + t.play(); + } else { + t.pause(); + } + + button.setAttribute('aria-pressed', !pressed); + } + }; + + t.createIframeLayer(); + + t.media.addEventListener('click', t.clickToPlayPauseCallback); + + if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) { + t.node.addEventListener('touchstart', function () { + if (t.controlsAreVisible) { + t.hideControls(false); + } else { + if (t.controlsEnabled) { + t.showControls(false); + } + } + }); + } else { + t.container.addEventListener('mouseenter', function () { + if (t.controlsEnabled) { + if (!t.options.alwaysShowControls) { + t.killControlsTimer('enter'); + t.showControls(); + t.startControlsTimer(t.options.controlsTimeoutMouseEnter); + } + } + }); + t.container.addEventListener('mousemove', function () { + if (t.controlsEnabled) { + if (!t.controlsAreVisible) { + t.showControls(); + } + if (!t.options.alwaysShowControls) { + t.startControlsTimer(t.options.controlsTimeoutMouseEnter); + } + } + }); + t.container.addEventListener('mouseleave', function () { + if (t.controlsEnabled) { + if (!t.media.paused && !t.options.alwaysShowControls) { + t.startControlsTimer(t.options.controlsTimeoutMouseLeave); + } + } + }); + } + + if (t.options.hideVideoControlsOnLoad) { + t.hideControls(false); + } + + if (autoplay && !t.options.alwaysShowControls) { + t.hideControls(); + } + + if (t.options.enableAutosize) { + t.media.addEventListener('loadedmetadata', function (e) { + var target = e !== undefined ? e.detail.target || e.target : t.media; + if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && target !== null && !isNaN(target.videoHeight)) { + t.setPlayerSize(target.videoWidth, target.videoHeight); + t.setControlsSize(); + t.media.setSize(target.videoWidth, target.videoHeight); + } + }); + } + } + + t.media.addEventListener('play', function () { + t.hasFocus = true; + + for (var playerIndex in _mejs2.default.players) { + if (_mejs2.default.players.hasOwnProperty(playerIndex)) { + var p = _mejs2.default.players[playerIndex]; + + if (p.id !== t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended) { + p.pause(); + p.hasFocus = false; + } + } + } + }); + + t.media.addEventListener('ended', function () { + if (t.options.autoRewind) { + try { + t.media.setCurrentTime(0); + + setTimeout(function () { + var loadingElement = t.container.querySelector('.' + t.options.classPrefix + 'overlay-loading'); + if (loadingElement && loadingElement.parentNode) { + loadingElement.parentNode.style.display = 'none'; + } + }, 20); + } catch (exp) { + + } + } + + if (typeof t.media.stop === 'function') { + t.media.stop(); + } else { + t.media.pause(); + } + + if (t.setProgressRail) { + t.setProgressRail(); + } + if (t.setCurrentRail) { + t.setCurrentRail(); + } + + if (t.options.loop) { + t.play(); + } else if (!t.options.alwaysShowControls && t.controlsEnabled) { + t.showControls(); + } + }); + + t.media.addEventListener('loadedmetadata', function () { + + (0, _time.calculateTimeFormat)(t.duration, t.options, t.options.framesPerSecond || 25); + + if (t.updateDuration) { + t.updateDuration(); + } + if (t.updateCurrent) { + t.updateCurrent(); + } + + if (!t.isFullScreen) { + t.setPlayerSize(t.width, t.height); + t.setControlsSize(); + } + }); + + var duration = null; + t.media.addEventListener('timeupdate', function () { + if (!isNaN(t.media.getDuration()) && duration !== t.media.getDuration()) { + duration = t.media.getDuration(); + (0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25); + + if (t.updateDuration) { + t.updateDuration(); + } + if (t.updateCurrent) { + t.updateCurrent(); + } + + t.setControlsSize(); + } + }); + + t.container.addEventListener('click', function (e) { + dom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive'); + }); + + t.container.addEventListener('focusin', function (e) { + dom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive'); + if (t.controlsEnabled && !t.options.alwaysShowControls) { + t.showControls(false); + } + }); + + t.container.addEventListener('focusout', function (e) { + setTimeout(function () { + if (e.relatedTarget) { + if (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) { + t.keyboardAction = false; + if (t.isVideo && !t.options.alwaysShowControls) { + t.hideControls(true); + } + } + } + }, 0); + }); + + setTimeout(function () { t.setPlayerSize(t.width, t.height); t.setControlsSize(); - }, 50); + }, 0); + + t.globalBind('resize', function () { + if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) { + t.setPlayerSize(t.width, t.height); + } + + t.setControlsSize(); + }); + } + + if (autoplay && isNative) { + t.play(); + } + + if (t.options.success) { + + if (typeof t.options.success === 'string') { + _window2.default[t.options.success](t.media, t.domNode, t); + } else { + t.options.success(t.media, t.domNode, t); + } + } + } + }, { + key: '_handleError', + value: function _handleError(e) { + var t = this; + + if (t.controls) { + t.disableControls(); + } + + var play = t.layers.querySelector('.' + t.options.classPrefix + 'overlay-play'); + + if (play) { + play.style.display = 'none'; + } + + if (t.options.error) { + t.options.error(e); + } + } + }, { + key: 'setPlayerSize', + value: function setPlayerSize(width, height) { + var t = this; + + if (!t.options.setDimensions) { + return false; + } + + if (typeof width !== 'undefined') { + t.width = width; + } + + if (typeof height !== 'undefined') { + t.height = height; + } + + switch (t.options.stretching) { + case 'fill': + if (t.isVideo) { + t.setFillMode(); + } else { + t.setDimensions(t.width, t.height); + } + break; + case 'responsive': + t.setResponsiveMode(); + break; + case 'none': + t.setDimensions(t.width, t.height); + break; + + default: + if (t.hasFluidMode() === true) { + t.setResponsiveMode(); + } else { + t.setDimensions(t.width, t.height); + } + break; + } + } + }, { + key: 'hasFluidMode', + value: function hasFluidMode() { + var t = this; + + return t.height.toString().indexOf('%') !== -1 || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%'; + } + }, { + key: 'setResponsiveMode', + value: function setResponsiveMode() { + var t = this, + parent = function () { + + var parentEl = void 0, + el = t.container; + + while (el) { + try { + if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) { + return _window2.default.frameElement; + } else { + parentEl = el.parentElement; + } + } catch (e) { + parentEl = el.parentElement; + } + + if (parentEl && dom.visible(parentEl)) { + return parentEl; + } + el = parentEl; + } + + return null; + }(), + parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null), + nativeWidth = function () { + if (t.isVideo) { + if (t.media.videoWidth && t.media.videoWidth > 0) { + return t.media.videoWidth; + } else if (t.node.getAttribute('width')) { + return t.node.getAttribute('width'); + } else { + return t.options.defaultVideoWidth; + } + } else { + return t.options.defaultAudioWidth; + } + }(), + nativeHeight = function () { + if (t.isVideo) { + if (t.media.videoHeight && t.media.videoHeight > 0) { + return t.media.videoHeight; + } else if (t.node.getAttribute('height')) { + return t.node.getAttribute('height'); + } else { + return t.options.defaultVideoHeight; + } + } else { + return t.options.defaultAudioHeight; + } + }(), + aspectRatio = function () { + var ratio = 1; + if (!t.isVideo) { + return ratio; + } + + if (t.media.videoWidth && t.media.videoWidth > 0 && t.media.videoHeight && t.media.videoHeight > 0) { + ratio = t.height >= t.width ? t.media.videoWidth / t.media.videoHeight : t.media.videoHeight / t.media.videoWidth; + } else { + ratio = t.initialAspectRatio; + } + + if (isNaN(ratio) || ratio < 0.01 || ratio > 100) { + ratio = 1; + } + + return ratio; + }(), + parentHeight = parseFloat(parentStyles.height); + + var newHeight = void 0, + parentWidth = parseFloat(parentStyles.width); + + if (t.isVideo) { + if (t.height === '100%') { + newHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10); + } else { + newHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10); + } + } else { + newHeight = nativeHeight; + } + + if (isNaN(newHeight)) { + newHeight = parentHeight; + } + + if (t.container.parentNode.length > 0 && t.container.parentNode.tagName.toLowerCase() === 'body') { + parentWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth; + newHeight = _window2.default.innerHeight || _document2.default.documentElement.clientHeight || _document2.default.body.clientHeight; + } + + if (newHeight && parentWidth) { + t.container.style.width = parentWidth + 'px'; + t.container.style.height = newHeight + 'px'; + + t.node.style.width = '100%'; + t.node.style.height = '100%'; + + if (t.isVideo && t.media.setSize) { + t.media.setSize(parentWidth, newHeight); + } + + var layerChildren = t.layers.childNodes; + for (var i = 0, total = layerChildren.length; i < total; i++) { + layerChildren[i].style.width = '100%'; + layerChildren[i].style.height = '100%'; + } + } + } + }, { + key: 'setFillMode', + value: function setFillMode() { + var t = this; + + var parent = void 0, + isIframe = false; + + try { + if (_window2.default.self !== _window2.default.top) { + isIframe = true; + parent = _window2.default.frameElement; + } else { + parent = t.outerContainer; + } + } catch (e) { + parent = t.outerContainer; + } + + var parentStyles = getComputedStyle(parent); + + if (t.node.style.height !== 'none' && t.node.style.height !== t.height) { + t.node.style.height = 'auto'; + } + if (t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width) { + t.node.style.maxWidth = 'none'; + } + + if (t.node.style.maxHeight !== 'none' && t.node.style.maxHeight !== t.height) { + t.node.style.maxHeight = 'none'; + } + + if (t.node.currentStyle) { + if (t.node.currentStyle.height === '100%') { + t.node.currentStyle.height = 'auto'; + } + if (t.node.currentStyle.maxWidth === '100%') { + t.node.currentStyle.maxWidth = 'none'; + } + if (t.node.currentStyle.maxHeight === '100%') { + t.node.currentStyle.maxHeight = 'none'; + } + } + + if (!isIframe && !parseFloat(parentStyles.width)) { + parent.style.width = t.media.offsetWidth + 'px'; + } + + if (!isIframe && !parseFloat(parentStyles.height)) { + parent.style.height = t.media.offsetHeight + 'px'; + } + + parentStyles = getComputedStyle(parent); + + var parentWidth = parseFloat(parentStyles.width), + parentHeight = parseFloat(parentStyles.height); + + t.setDimensions('100%', '100%'); + + var poster = t.container.querySelector(t.options.classPrefix + 'poster img'); + if (poster) { + poster.style.display = ''; + } + + var targetElement = t.container.querySelectorAll('object, embed, iframe, video'), + initHeight = t.height, + initWidth = t.width, + scaleX1 = parentWidth, + scaleY1 = initHeight * parentWidth / initWidth, + scaleX2 = initWidth * parentHeight / initHeight, + scaleY2 = parentHeight, + bScaleOnWidth = scaleX2 > parentWidth === false, + finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2), + finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2), + width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px', + height = bScaleOnWidth ? finalHeight + 'px' : parentHeight + 'px'; + + for (var i = 0, total = targetElement.length; i < total; i++) { + targetElement[i].style.height = height; + targetElement[i].style.width = width; + if (t.media.setSize) { + t.media.setSize(width, height); + } + + targetElement[i].style.marginLeft = Math.floor((parentWidth - finalWidth) / 2) + 'px'; + targetElement[i].style.marginTop = 0; + } + } + }, { + key: 'setDimensions', + value: function setDimensions(width, height) { + var t = this; + + width = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px'; + height = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px'; + + t.container.style.width = width; + t.container.style.height = height; + + var layers = t.layers.childNodes; + for (var i = 0, total = layers.length; i < total; i++) { + layers[i].style.width = width; + layers[i].style.height = height; + } + } + }, { + key: 'setControlsSize', + value: function setControlsSize() { + var t = this; + + if (!dom.visible(t.container)) { + return; + } + + if (t.rail && dom.visible(t.rail)) { + var totalStyles = t.total ? getComputedStyle(t.total, null) : null, + totalMargin = totalStyles ? parseFloat(totalStyles.marginLeft) + parseFloat(totalStyles.marginRight) : 0, + railStyles = getComputedStyle(t.rail), + railMargin = parseFloat(railStyles.marginLeft) + parseFloat(railStyles.marginRight); + + var siblingsWidth = 0; + + var siblings = dom.siblings(t.rail, function (el) { + return el !== t.rail; + }), + total = siblings.length; + for (var i = 0; i < total; i++) { + siblingsWidth += siblings[i].offsetWidth; + } + + siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1; + + t.container.style.minWidth = siblingsWidth + 'px'; + + var controlsWidth = parseFloat(t.controls.offsetWidth); + t.rail.style.width = (siblingsWidth > controlsWidth ? 0 : controlsWidth - siblingsWidth) + 'px'; + + var event = (0, _general.createEvent)('controlsresize', t.container); + t.container.dispatchEvent(event); + } else { + var children = t.controls.childNodes; + var minWidth = 0; + + for (var _i = 0, _total = children.length; _i < _total; _i++) { + minWidth += children[_i].offsetWidth; + } + + t.container.style.minWidth = minWidth + 'px'; + } + } + }, { + key: 'addControlElement', + value: function addControlElement(element, key) { + + var t = this; + + if (t.featurePosition[key] !== undefined) { + var child = t.controls.childNodes[t.featurePosition[key] - 1]; + child.parentNode.insertBefore(element, child.nextSibling); + } else { + t.controls.appendChild(element); + var children = t.controls.childNodes; + for (var i = 0, total = children.length; i < total; i++) { + if (element == children[i]) { + t.featurePosition[key] = i; + break; + } + } + } + } + }, { + key: 'createIframeLayer', + value: function createIframeLayer() { + var t = this; + + if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) { + + var layer = _document2.default.createElement('div'), + target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName); + + layer.id = t.media.id + '-iframe-overlay'; + layer.className = t.options.classPrefix + 'iframe-overlay'; + layer.addEventListener('click', function (e) { + if (t.options.clickToPlayPause) { + if (t.media.paused) { + t.media.play(); + } else { + t.media.pause(); + } + + e.preventDefault(); + e.stopPropagation(); + } + }); + + target.parentNode.insertBefore(layer, target); + } + } + }, { + key: 'resetSize', + value: function resetSize() { + var t = this; + + setTimeout(function () { + t.setPlayerSize(t.width, t.height); + t.setControlsSize(); + }, 50); + } + }, { + key: 'setPoster', + value: function setPoster(url) { + var t = this, + posterDiv = t.container.querySelector('.' + t.options.classPrefix + 'poster'); + + var posterImg = posterDiv.querySelector('img'); + + if (!posterImg) { + posterImg = _document2.default.createElement('img'); + posterImg.className = t.options.classPrefix + 'poster-img'; + posterImg.width = '100%'; + posterImg.height = '100%'; + posterDiv.appendChild(posterImg); + } + + posterImg.setAttribute('src', url); + posterDiv.style.backgroundImage = 'url("' + url + '")'; + } + }, { + key: 'changeSkin', + value: function changeSkin(className) { + var t = this; + + t.container.className = t.options.classPrefix + 'container ' + className; + t.setPlayerSize(t.width, t.height); + t.setControlsSize(); + } + }, { + key: 'globalBind', + value: function globalBind(events, callback) { + var t = this, + doc = t.node ? t.node.ownerDocument : _document2.default; + + events = (0, _general.splitEvents)(events, t.id); + if (events.d) { + var eventList = events.d.split(' '); + for (var i = 0, total = eventList.length; i < total; i++) { + eventList[i].split('.').reduce(function (part, e) { + doc.addEventListener(e, callback, false); + return e; + }, ''); + } + } + if (events.w) { + var _eventList = events.w.split(' '); + for (var _i2 = 0, _total2 = _eventList.length; _i2 < _total2; _i2++) { + _eventList[_i2].split('.').reduce(function (part, e) { + _window2.default.addEventListener(e, callback, false); + return e; + }, ''); + } + } + } + }, { + key: 'globalUnbind', + value: function globalUnbind(events, callback) { + var t = this, + doc = t.node ? t.node.ownerDocument : _document2.default; + + events = (0, _general.splitEvents)(events, t.id); + if (events.d) { + var eventList = events.d.split(' '); + for (var i = 0, total = eventList.length; i < total; i++) { + eventList[i].split('.').reduce(function (part, e) { + doc.removeEventListener(e, callback, false); + return e; + }, ''); + } + } + if (events.w) { + var _eventList2 = events.d.split(' '); + for (var _i3 = 0, _total3 = _eventList2.length; _i3 < _total3; _i3++) { + _eventList2[_i3].split('.').reduce(function (part, e) { + _window2.default.removeEventListener(e, callback, false); + return e; + }, ''); + } + } + } + }, { + key: 'buildposter', + value: function buildposter(player, controls, layers, media) { + var t = this, + poster = _document2.default.createElement('div'); + + poster.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer'; + layers.appendChild(poster); + + var posterUrl = player.media.getAttribute('poster'); + + if (player.options.poster !== '') { + posterUrl = player.options.poster; + } + + if (posterUrl) { + t.setPoster(posterUrl); + } else { + poster.style.display = 'none'; + } + + media.addEventListener('play', function () { + poster.style.display = 'none'; + }); + + media.addEventListener('playing', function () { + poster.style.display = 'none'; + }); + + if (player.options.showPosterWhenEnded && player.options.autoRewind) { + media.addEventListener('ended', function () { + poster.style.display = ''; + }); + } + + media.addEventListener('error', function () { + poster.style.display = 'none'; + }); + + if (player.options.showPosterWhenPaused) { + media.addEventListener('pause', function () { + if (!media.ended) { + poster.style.display = ''; + } + }); + } + } + }, { + key: 'buildoverlays', + value: function buildoverlays(player, controls, layers, media) { + + if (!player.isVideo) { + return; + } + + var t = this, + loading = _document2.default.createElement('div'), + error = _document2.default.createElement('div'), + bigPlay = _document2.default.createElement('div'), + buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering'); + + loading.style.display = 'none'; + loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer'; + loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>'; + layers.appendChild(loading); + + error.style.display = 'none'; + error.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer'; + error.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-error"></div>'; + layers.appendChild(error); + + bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play'; + bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0"' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>'); + bigPlay.addEventListener('click', function () { + if (t.options.clickToPlayPause) { + + var button = t.container.querySelector('.' + t.options.classPrefix + 'overlay-button'), + pressed = button.getAttribute('aria-pressed'); + + if (media.paused) { + media.play(); + } else { + media.pause(); + } + + button.setAttribute('aria-pressed', !!pressed); + } + }); + + bigPlay.addEventListener('keydown', function (e) { + var keyPressed = e.keyCode || e.which || 0; + + if (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) { + var event = (0, _general.createEvent)('click', bigPlay); + bigPlay.dispatchEvent(event); + return false; + } + }); + + layers.appendChild(bigPlay); + + if (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(player.media.originalNode.getAttribute('poster') || player.options.poster) || _constants.IS_STOCK_ANDROID)) { + bigPlay.style.display = 'none'; + } + + media.addEventListener('play', function () { + bigPlay.style.display = 'none'; + loading.style.display = 'none'; + if (buffer) { + buffer.style.display = 'none'; + } + error.style.display = 'none'; + }); + media.addEventListener('playing', function () { + bigPlay.style.display = 'none'; + loading.style.display = 'none'; + if (buffer) { + buffer.style.display = 'none'; + } + error.style.display = 'none'; + }); + media.addEventListener('seeking', function () { + bigPlay.style.display = 'none'; + loading.style.display = ''; + if (buffer) { + buffer.style.display = ''; + } + }); + media.addEventListener('seeked', function () { + bigPlay.style.display = media.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none'; + loading.style.display = 'none'; + if (buffer) { + buffer.style.display = ''; + } + }); + media.addEventListener('pause', function () { + loading.style.display = 'none'; + if (!_constants.IS_STOCK_ANDROID) { + bigPlay.style.display = ''; + } + if (buffer) { + buffer.style.display = 'none'; + } + }); + media.addEventListener('waiting', function () { + loading.style.display = ''; + if (buffer) { + buffer.style.display = ''; + } + }); + + media.addEventListener('loadeddata', function () { + loading.style.display = ''; + if (buffer) { + buffer.style.display = ''; + } + + if (_constants.IS_ANDROID) { + media.canplayTimeout = setTimeout(function () { + if (_document2.default.createEvent) { + var evt = _document2.default.createEvent('HTMLEvents'); + evt.initEvent('canplay', true, true); + return media.dispatchEvent(evt); + } + }, 300); + } + }); + media.addEventListener('canplay', function () { + loading.style.display = 'none'; + if (buffer) { + buffer.style.display = 'none'; + } + + clearTimeout(media.canplayTimeout); + }); + + media.addEventListener('error', function (e) { + t._handleError(e); + loading.style.display = 'none'; + bigPlay.style.display = 'none'; + if (buffer) { + buffer.style.display = 'none'; + } + if (e.message) { + error.style.display = 'block'; + error.querySelector('.' + t.options.classPrefix + 'overlay-error').innerHTML = e.message; + } + }); + + media.addEventListener('keydown', function (e) { + t.onkeydown(player, media, e); + }); + } + }, { + key: 'buildkeyboard', + value: function buildkeyboard(player, controls, layers, media) { + + var t = this; + + t.container.addEventListener('keydown', function () { + t.keyboardAction = true; + }); + + t.globalBind('keydown', function (event) { + var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'), + target = t.media.closest('.' + t.options.classPrefix + 'container'); + t.hasFocus = !!(container && target && container.id === target.id); + return t.onkeydown(player, media, event); + }); + + t.globalBind('click', function (event) { + t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container'); + }); + } + }, { + key: 'onkeydown', + value: function onkeydown(player, media, e) { + + if (player.hasFocus && player.options.enableKeyboard) { + for (var i = 0, total = player.options.keyActions.length; i < total; i++) { + var keyAction = player.options.keyActions[i]; + + for (var j = 0, jl = keyAction.keys.length; j < jl; j++) { + if (e.keyCode === keyAction.keys[j]) { + keyAction.action(player, media, e.keyCode, e); + e.preventDefault(); + e.stopPropagation(); + } + } + } + } + + return true; + } + }, { + key: 'play', + value: function play() { + var t = this; + + if (t.media.getCurrentTime() <= 0) { + t.load(); + } + t.media.play(); + } + }, { + key: 'pause', + value: function pause() { + try { + this.media.pause(); + } catch (e) { + + } + } + }, { + key: 'load', + value: function load() { + var t = this; + + if (!t.isLoaded) { + t.media.load(); + } + + t.isLoaded = true; + } + }, { + key: 'setMuted', + value: function setMuted(muted) { + this.media.setMuted(muted); + } + }, { + key: 'setCurrentTime', + value: function setCurrentTime(time) { + this.media.setCurrentTime(time); + } + }, { + key: 'getCurrentTime', + value: function getCurrentTime() { + return this.media.currentTime; + } + }, { + key: 'getDuration', + value: function getDuration() { + return this.media.duration; + } + }, { + key: 'setVolume', + value: function setVolume(volume) { + this.media.setVolume(volume); + } + }, { + key: 'getVolume', + value: function getVolume() { + return this.media.volume; + } + }, { + key: 'setSrc', + value: function setSrc(src) { + var t = this, + layer = _document2.default.getElementById(t.media.id + '-iframe-overlay'); - // adjust controls whenever window sizes (used to be in fullscreen only) - t.globalBind('resize', function() { + if (layer) { + layer.remove(); + } - // don't resize for fullscreen mode - if ( !(t.isFullScreen || (mejs.MediaFeatures.hasTrueNativeFullScreen && document.webkitIsFullScreen)) ) { - t.setPlayerSize(t.width, t.height); + t.media.setSrc(src); + t.createIframeLayer(); + } + }, { + key: 'remove', + value: function remove() { + var t = this, + rendererName = t.media.rendererName; + + if (!t.media.paused) { + t.media.pause(); + } + + var src = t.media.getSrc(); + t.media.setSrc(''); + + for (var featureIndex in t.options.features) { + var feature = t.options.features[featureIndex]; + if (t['clean' + feature]) { + try { + t['clean' + feature](t); + } catch (e) { + console.error('error cleaning ' + feature, e); } + } + } - // always adjust controls - t.setControlsSize(); - }); + var nativeWidth = t.node.getAttribute('width'), + nativeHeight = t.node.getAttribute('height'); - // This is a work-around for a bug in the YouTube iFrame player, which means - // we can't use the play() API for the initial playback on iOS or Android; - // user has to start playback directly by tapping on the iFrame. - if (t.media.pluginType == 'youtube' && ( mf.isiOS || mf.isAndroid ) ) { - t.container.find('.mejs-overlay-play').hide(); - t.container.find('.mejs-poster').hide(); + if (nativeWidth) { + if (nativeWidth.indexOf('%') === -1) { + nativeWidth = nativeWidth + 'px'; } + } else { + nativeWidth = 'auto'; } - // force autoplay for HTML5 - if (autoplay && media.pluginType == 'native') { - t.play(); + if (nativeHeight) { + if (nativeHeight.indexOf('%') === -1) { + nativeHeight = nativeHeight + 'px'; + } + } else { + nativeHeight = 'auto'; } + t.node.style.width = nativeWidth; + t.node.style.height = nativeHeight; - if (t.options.success) { + if (!t.isDynamic) { + (function () { + t.node.setAttribute('controls', true); + t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', '')); - if (typeof t.options.success == 'string') { - window[t.options.success](t.media, t.domNode, t); - } else { - t.options.success(t.media, t.domNode, t); - } - } - }, + delete t.node.autoplay; - handleError: function(e) { - var t = this; + if (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') { + t.node.setAttribute('src', src); + } - if (t.controls) { - t.controls.hide(); + if (~rendererName.indexOf('iframe')) { + var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay'); + layer.remove(); + } + + var node = t.node.cloneNode(); + node.style.display = ''; + t.container.parentNode.insertBefore(node, t.container); + t.node.remove(); + + if (t.mediaFiles) { + for (var i = 0, total = t.mediaFiles.length; i < total; i++) { + var source = _document2.default.createElement('source'); + source.setAttribute('src', t.mediaFiles[i].src); + source.setAttribute('type', t.mediaFiles[i].type); + node.appendChild(source); + } + } + if (t.trackFiles) { + var _loop3 = function _loop3(_i4, _total4) { + var track = t.trackFiles[_i4]; + var newTrack = _document2.default.createElement('track'); + newTrack.kind = track.kind; + newTrack.label = track.label; + newTrack.srclang = track.srclang; + newTrack.src = track.src; + + node.appendChild(newTrack); + newTrack.addEventListener('load', function () { + this.mode = 'showing'; + node.textTracks[_i4].mode = 'showing'; + }); + }; + + for (var _i4 = 0, _total4 = t.trackFiles.length; _i4 < _total4; _i4++) { + _loop3(_i4, _total4); + } + } + + delete t.node; + delete t.mediaFiles; + delete t.trackFiles; + })(); + } else { + t.container.parentNode.insertBefore(t.node, t.container); } - // Tell user that the file cannot be played - if (t.options.error) { - t.options.error(e); + if (typeof t.media.destroy === 'function') { + t.media.destroy(); } - }, - setPlayerSize: function(width,height) { - var t = this; + delete _mejs2.default.players[t.id]; - if( !t.options.setDimensions ) { - return false; + if (_typeof(t.container) === 'object') { + var offscreen = t.container.parentNode.querySelector('.' + t.options.classPrefix + 'offscreen'); + offscreen.remove(); + t.container.remove(); } + t.globalUnbind(); - if (typeof width != 'undefined') { - t.width = width; - } + delete t.media.player; + } + }]); - if (typeof height != 'undefined') { - t.height = height; + return MediaElementPlayer; +}(); + +_window2.default.MediaElementPlayer = MediaElementPlayer; + +exports.default = MediaElementPlayer; + +(function ($) { + + if (typeof $ !== 'undefined') { + $.fn.mediaelementplayer = function (options) { + if (options === false) { + this.each(function () { + var player = $(this).data('mediaelementplayer'); + if (player) { + player.remove(); + } + $(this).removeData('mediaelementplayer'); + }); + } else { + this.each(function () { + $(this).data('mediaelementplayer', new MediaElementPlayer(this, options)); + }); } - - // check stretching modes - switch (t.options.stretching) { - case 'fill': - // The 'fill' effect only makes sense on video; for audio we will set the dimensions - if (t.isVideo) { - this.setFillMode(); + return this; + }; + + $(_document2.default).ready(function () { + $('.' + config.classPrefix + 'player').mediaelementplayer(); + }); + } +})(_mejs2.default.$); + +},{"2":2,"23":23,"24":24,"25":25,"26":26,"28":28,"3":3,"4":4,"5":5,"6":6}],17:[function(_dereq_,module,exports){ +'use strict'; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _window = _dereq_(3); + +var _window2 = _interopRequireDefault(_window); + +var _mejs = _dereq_(6); + +var _mejs2 = _interopRequireDefault(_mejs); + +var _renderer = _dereq_(7); + +var _general = _dereq_(25); + +var _media = _dereq_(26); + +var _constants = _dereq_(23); + +var _dom = _dereq_(24); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var NativeDash = { + + promise: null, + + load: function load(settings) { + if (typeof dashjs !== 'undefined') { + NativeDash._createPlayer(settings); + } else { + settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js'; + + NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path); + NativeDash.promise.then(function () { + NativeDash._createPlayer(settings); + }); + } + }, + + _createPlayer: function _createPlayer(settings) { + var player = dashjs.MediaPlayer().create(); + _window2.default['__ready__' + settings.id](player); + } +}; + +var DashNativeRenderer = { + name: 'native_dash', + options: { + prefix: 'native_dash', + dash: { + path: 'https://cdn.dashjs.org/latest/dash.all.min.js', + debug: false, + drm: {} + } + }, + + canPlayType: function canPlayType(type) { + return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1; + }, + + create: function create(mediaElement, options, mediaFiles) { + + var originalNode = mediaElement.originalNode, + id = mediaElement.id + '_' + options.prefix, + preload = originalNode.getAttribute('preload'), + autoplay = originalNode.autoplay; + + var node = null, + dashPlayer = null; + + node = originalNode.cloneNode(true); + options = Object.assign(options, mediaElement.options); + + var props = _mejs2.default.html5media.properties, + assignGettersSetters = function assignGettersSetters(propName) { + var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); + + node['get' + capName] = function () { + return dashPlayer !== null ? node[propName] : null; + }; + + node['set' + capName] = function (value) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { + if (propName === 'src') { + if (typeof value === 'string') { + node[propName] = value; + if (dashPlayer !== null) { + dashPlayer.attachSource(value); + if (autoplay) { + node.play(); + } + } + } else if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src) { + node[propName] = value.src; + if (dashPlayer !== null) { + if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.drm) { + dashPlayer.setProtectionData(value.drm); + } + dashPlayer.attachSource(value.src); + if (autoplay) { + node.play(); + } + } + } } else { - this.setDimensions(t.width, t.height); + node[propName] = value; } - break; - case 'responsive': - this.setResponsiveMode(); - break; - case 'none': - this.setDimensions(t.width, t.height); - break; - // This is the 'auto' mode - default: - if (this.hasFluidMode() === true) { - this.setResponsiveMode(); - } else { - this.setDimensions(t.width, t.height); + } + }; + }; + + for (var i = 0, total = props.length; i < total; i++) { + assignGettersSetters(props[i]); + } + + _window2.default['__ready__' + id] = function (_dashPlayer) { + mediaElement.dashPlayer = dashPlayer = _dashPlayer; + dashPlayer.getDebug().setLogToBrowserConsole(options.dash.debug); + dashPlayer.setScheduleWhilePaused(preload && preload === 'auto' || autoplay); + + var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), + dashEvents = dashjs.MediaPlayer.events, + assignEvents = function assignEvents(eventName) { + if (eventName === 'loadedmetadata') { + dashPlayer.initialize(node, null, autoplay); + dashPlayer.setFastSwitchEnabled(true); + + if (!_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) { + dashPlayer.setProtectionData(options.dash.drm); + } + dashPlayer.attachSource(node.src); + } + + node.addEventListener(eventName, function (e) { + var event = (0, _general.createEvent)(e.type, mediaElement); + mediaElement.dispatchEvent(event); + }); + }; + + for (var _i = 0, _total = events.length; _i < _total; _i++) { + assignEvents(events[_i]); + } + + var assignMdashEvents = function assignMdashEvents(e) { + var event = (0, _general.createEvent)(e.type, node); + event.data = e; + mediaElement.dispatchEvent(event); + + if (e.type.toLowerCase() === 'error') { + console.error(e); + } + }; + + for (var eventType in dashEvents) { + if (dashEvents.hasOwnProperty(eventType)) { + dashPlayer.on(dashEvents[eventType], assignMdashEvents); + } + } + }; + + if (mediaFiles && mediaFiles.length > 0) { + for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) { + if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) { + node.setAttribute('src', mediaFiles[_i2].src); + if (typeof mediaFiles[_i2].drm !== 'undefined') { + options.dash.drm = mediaFiles[_i2].drm; } break; + } } - }, - - hasFluidMode: function() { - var t = this; - - // detect 100% mode - use currentStyle for IE since css() doesn't return percentages - return (t.height.toString().indexOf('%') > 0 || (t.$node.css('max-width') !== 'none' && t.$node.css('max-width') !== 't.width') || (t.$node[0].currentStyle && t.$node[0].currentStyle.maxWidth === '100%')); - }, - - setResponsiveMode: function() { - var t = this; + } + + node.setAttribute('id', id); + + originalNode.parentNode.insertBefore(node, originalNode); + originalNode.autoplay = false; + originalNode.style.display = 'none'; + + NativeDash.load({ + options: options.dash, + id: id + }); + + node.setSize = function (width, height) { + node.style.width = width + 'px'; + node.style.height = height + 'px'; + return node; + }; + + node.hide = function () { + node.pause(); + node.style.display = 'none'; + return node; + }; + + node.show = function () { + node.style.display = ''; + return node; + }; + + var event = (0, _general.createEvent)('rendererready', node); + mediaElement.dispatchEvent(event); + + return node; + } +}; + +_media.typeChecks.push(function (url) { + return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null; +}); + +_renderer.renderer.add(DashNativeRenderer); + +},{"23":23,"24":24,"25":25,"26":26,"3":3,"6":6,"7":7}],18:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PluginDetector = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _window = _dereq_(3); + +var _window2 = _interopRequireDefault(_window); + +var _document = _dereq_(2); + +var _document2 = _interopRequireDefault(_document); + +var _mejs = _dereq_(6); + +var _mejs2 = _interopRequireDefault(_mejs); + +var _i18n = _dereq_(4); + +var _i18n2 = _interopRequireDefault(_i18n); + +var _renderer = _dereq_(7); + +var _general = _dereq_(25); + +var _constants = _dereq_(23); + +var _media = _dereq_(26); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var PluginDetector = exports.PluginDetector = { + plugins: [], + + hasPluginVersion: function hasPluginVersion(plugin, v) { + var pv = PluginDetector.plugins[plugin]; + v[1] = v[1] || 0; + v[2] = v[2] || 0; + return pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2]; + }, + + addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) { + PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect); + }, + + detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) { + + var version = [0, 0, 0], + description = void 0, + ax = void 0; + + if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') { + description = _constants.NAV.plugins[pluginName].description; + if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) { + version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.'); + for (var i = 0, total = version.length; i < total; i++) { + version[i] = parseInt(version[i].match(/\d+/), 10); + } + } + } else if (_window2.default.ActiveXObject !== undefined) { + try { + ax = new ActiveXObject(activeX); + if (ax) { + version = axDetect(ax); + } + } catch (e) { + + } + } + return version; + } +}; + +PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) { + var version = [], + d = ax.GetVariable("$version"); + + if (d) { + d = d.split(" ")[1].split(","); + version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; + } + return version; +}); + +var FlashMediaElementRenderer = { + create: function create(mediaElement, options, mediaFiles) { + + var flash = {}; - // do we have the native dimensions yet? - var nativeWidth = (function() { - if (t.isVideo) { - if (t.media.videoWidth && t.media.videoWidth > 0) { - return t.media.videoWidth; - } else if (t.media.getAttribute('width') !== null) { - return t.media.getAttribute('width'); + console.log('FlashMediaElementRenderer.create'); + + flash.options = options; + flash.id = mediaElement.id + '_' + flash.options.prefix; + flash.mediaElement = mediaElement; + flash.flashState = {}; + flash.flashApi = null; + flash.flashApiStack = []; + + var props = _mejs2.default.html5media.properties, + assignGettersSetters = function assignGettersSetters(propName) { + flash.flashState[propName] = null; + + var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); + + flash['get' + capName] = function () { + if (flash.flashApi !== null) { + if (typeof flash.flashApi['get_' + propName] === 'function') { + var value = flash.flashApi['get_' + propName](); + + if (propName === 'buffered') { + return { + start: function start() { + return 0; + }, + end: function end() { + return value; + }, + length: 1 + }; + } + return value; } else { - return t.options.defaultVideoWidth; + return null; } } else { - return t.options.defaultAudioWidth; + return null; } - })(); - - var nativeHeight = (function() { - if (t.isVideo) { - if (t.media.videoHeight && t.media.videoHeight > 0) { - return t.media.videoHeight; - } else if (t.media.getAttribute('height') !== null) { - return t.media.getAttribute('height'); + }; + + flash['set' + capName] = function (value) { + if (propName === 'src') { + value = (0, _media.absolutizeUrl)(value); + } + + if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) { + try { + flash.flashApi['set_' + propName](value); + } catch (e) { + + } + } else { + flash.flashApiStack.push({ + type: 'set', + propName: propName, + value: value + }); + } + }; + }; + + for (var i = 0, total = props.length; i < total; i++) { + assignGettersSetters(props[i]); + } + + var methods = _mejs2.default.html5media.methods, + assignMethods = function assignMethods(methodName) { + flash[methodName] = function () { + if (flash.flashApi !== null) { + if (flash.flashApi['fire_' + methodName]) { + try { + flash.flashApi['fire_' + methodName](); + } catch (e) { + + } } else { - return t.options.defaultVideoHeight; + } } else { - return t.options.defaultAudioHeight; - } - })(); - - var parentWidth = t.container.parent().closest(':visible').width(), - parentHeight = t.container.parent().closest(':visible').height(), - newHeight = t.isVideo || !t.options.autosizeProgress ? parseInt(parentWidth * nativeHeight/nativeWidth, 10) : nativeHeight; - - // When we use percent, the newHeight can't be calculated so we get the container height - if (isNaN(newHeight) || ( parentHeight !== 0 && newHeight > parentHeight && parentHeight > nativeHeight)) { - newHeight = parentHeight; - } - - if (t.container.parent().length > 0 && t.container.parent()[0].tagName.toLowerCase() === 'body') { // && t.container.siblings().count == 0) { - parentWidth = $(window).width(); - newHeight = $(window).height(); - } - - if ( newHeight && parentWidth ) { - - // set outer container size - t.container - .width(parentWidth) - .height(newHeight); - - // set native <video> or <audio> and shims - t.$media.add(t.container.find('.mejs-shim')) - .width('100%') - .height('100%'); - - // if shim is ready, send the size to the embeded plugin - if (t.isVideo) { - if (t.media.setVideoSize) { - t.media.setVideoSize(parentWidth, newHeight); - } + flash.flashApiStack.push({ + type: 'call', + methodName: methodName + }); } + }; + }; + methods.push('stop'); + for (var _i = 0, _total = methods.length; _i < _total; _i++) { + assignMethods(methods[_i]); + } - // set the layers - t.layers.children('.mejs-layer') - .width('100%') - .height('100%'); - } - }, - - setFillMode: function() { - var t = this, - parent = t.outerContainer; - - if (!parent.width()) { - parent.height(t.$media.width()); - } - - if (!parent.height()) { - parent.height(t.$media.height()); - } - - var parentWidth = parent.width(), - parentHeight = parent.height(); - - t.setDimensions('100%', '100%'); - - // This prevents an issue when displaying poster - t.container.find('.mejs-poster img').css('display', 'block'); - - targetElement = t.container.find('object, embed, iframe, video'); - - // calculate new width and height - var initHeight = t.height, - initWidth = t.width, - // scale to the target width - scaleX1 = parentWidth, - scaleY1 = (initHeight * parentWidth) / initWidth, - // scale to the target height - scaleX2 = (initWidth * parentHeight) / initHeight, - scaleY2 = parentHeight, - // now figure out which one we should use - bScaleOnWidth = !(scaleX2 > parentWidth), - finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2), - finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2); - - if (bScaleOnWidth) { - targetElement.height(finalHeight).width(parentWidth); - if (t.media.setVideoSize) { - t.media.setVideoSize(parentWidth, finalHeight); - } - } else { - targetElement.height(parentHeight).width(finalWidth); - if (t.media.setVideoSize) { - t.media.setVideoSize(finalWidth, parentHeight); - } - } - - targetElement.css({ - 'margin-left': Math.floor((parentWidth - finalWidth) / 2), - 'margin-top': 0 - }); - }, - - setDimensions: function(width, height) { - var t = this; - - t.container - .width(width) - .height(height); - - t.layers.children('.mejs-layer') - .width(width) - .height(height); - }, - setControlsSize: function() { - var t = this, - usedWidth = 0, - railWidth = 0, - rail = t.controls.find('.mejs-time-rail'), - total = t.controls.find('.mejs-time-total'), - others = rail.siblings(), - lastControl = others.last(), - lastControlPosition = null, - avoidAutosizeProgress = t.options && !t.options.autosizeProgress; - - // skip calculation if hidden - if (!t.container.is(':visible') || !rail.length || !rail.is(':visible')) { - return; - } + console.log('FlashMediaElementRenderer.create 2'); - // allow the size to come from custom CSS - if (avoidAutosizeProgress) { - // Also, frontends devs can be more flexible - // due the opportunity of absolute positioning. - railWidth = parseInt(rail.css('width'), 10); - } + var initEvents = ['rendererready']; - // attempt to autosize - if (railWidth === 0 || !railWidth) { + for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) { + var event = (0, _general.createEvent)(initEvents[_i2], flash); + mediaElement.dispatchEvent(event); + } - // find the size of all the other controls besides the rail - others.each(function() { - var $this = $(this); - if ($this.css('position') != 'absolute' && $this.is(':visible')) { - usedWidth += $(this).outerWidth(true); - } - }); + _window2.default['__ready__' + flash.id] = function () { - // fit the rail into the remaining space - railWidth = t.controls.width() - usedWidth - (rail.outerWidth(true) - rail.width()); - } + flash.flashReady = true; + flash.flashApi = _document2.default.getElementById('__' + flash.id); - // resize the rail, - // but then check if the last control (say, the fullscreen button) got pushed down - // this often happens when zoomed - do { - // outer area - // we only want to set an inline style with the width of the rail - // if we're trying to autosize. - if (!avoidAutosizeProgress) { - rail.width(railWidth); - } + if (flash.flashApiStack.length) { + for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) { + var stackItem = flash.flashApiStack[_i3]; - // dark space - total.width(railWidth - (total.outerWidth(true) - total.width())); + if (stackItem.type === 'set') { + var propName = stackItem.propName, + capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); - if (lastControl.css('position') != 'absolute') { - lastControlPosition = lastControl.length ? lastControl.position() : null; - railWidth--; + flash['set' + capName](stackItem.value); + } else if (stackItem.type === 'call') { + flash[stackItem.methodName](); + } } - } while (lastControlPosition !== null && lastControlPosition.top.toFixed(2) > 0 && railWidth > 0); + } + }; - t.container.trigger('controlsresize'); - }, + _window2.default['__event__' + flash.id] = function (eventName, message) { + var event = (0, _general.createEvent)(eventName, flash); + event.message = message || ''; + flash.mediaElement.dispatchEvent(event); + }; - buildposter: function(player, controls, layers, media) { - var t = this, - poster = - $('<div class="mejs-poster mejs-layer">' + - '</div>') - .appendTo(layers), - posterUrl = player.$media.attr('poster'); + flash.flashWrapper = _document2.default.createElement('div'); - // prioriy goes to option (this is useful if you need to support iOS 3.x (iOS completely fails with poster) - if (player.options.poster !== '') { - posterUrl = player.options.poster; - } + if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) { + flash.options.shimScriptAccess = 'sameDomain'; + } - // second, try the real poster - if ( posterUrl ) { - t.setPoster(posterUrl); - } else { - poster.hide(); - } + var autoplay = mediaElement.originalNode.autoplay, + flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess], + isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video', + flashHeight = isVideo ? mediaElement.originalNode.height : 1, + flashWidth = isVideo ? mediaElement.originalNode.width : 1; - media.addEventListener('play',function() { - poster.hide(); - }, false); + if (mediaElement.originalNode.getAttribute('src')) { + flashVars.push('src=' + mediaElement.originalNode.getAttribute('src')); + } - if(player.options.showPosterWhenEnded && player.options.autoRewind){ - media.addEventListener('ended',function() { - poster.show(); - }, false); - } - }, + if (flash.options.enablePseudoStreaming === true) { + flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam); + flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType); + } - setPoster: function(url) { - var t = this, - posterDiv = t.container.find('.mejs-poster'), - posterImg = posterDiv.find('img'); + mediaElement.appendChild(flash.flashWrapper); - if (posterImg.length === 0) { - posterImg = $('<img width="100%" height="100%" alt="" />').appendTo(posterDiv); - } + if (mediaElement.originalNode !== null) { + mediaElement.originalNode.style.display = 'none'; + } - posterImg.attr('src', url); - posterDiv.css({'background-image' : 'url(' + url + ')'}); - }, + var settings = []; - buildoverlays: function(player, controls, layers, media) { - var t = this; - if (!player.isVideo) - return; + if (_constants.IS_IE) { + var specialIEContainer = _document2.default.createElement('div'); + flash.flashWrapper.appendChild(specialIEContainer); - var - loading = - $('<div class="mejs-overlay mejs-layer">'+ - '<div class="mejs-overlay-loading"><span></span></div>'+ - '</div>') - .hide() // start out hidden - .appendTo(layers), - error = - $('<div class="mejs-overlay mejs-layer">'+ - '<div class="mejs-overlay-error"></div>'+ - '</div>') - .hide() // start out hidden - .appendTo(layers), - // this needs to come last so it's on top - bigPlay = - $('<div class="mejs-overlay mejs-layer mejs-overlay-play">'+ - '<div class="mejs-overlay-button" role="button" aria-label="' + mejs.i18n.t('mejs.play') + '" aria-pressed="false"></div>'+ - '</div>') - .appendTo(layers) - .bind('click', function() { // Removed 'touchstart' due issues on Samsung Android devices where a tap on bigPlay started and immediately stopped the video - if (t.options.clickToPlayPause) { - if (media.paused) { - media.play(); - } + settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"']; - var button = $(this).find('.mejs-overlay-button'), - pressed = button.attr('aria-pressed'); - button.attr('aria-pressed', !!pressed); - } - }); + if (!isVideo) { + settings.push('style="clip: rect(0 0 0 0); position: absolute;"'); + } - /* - if (mejs.MediaFeatures.isiOS || mejs.MediaFeatures.isAndroid) { - bigPlay.remove(); - loading.remove(); - } - */ - - - // show/hide big play button - media.addEventListener('play',function() { - bigPlay.hide(); - loading.hide(); - controls.find('.mejs-time-buffering').hide(); - error.hide(); - }, false); - - media.addEventListener('playing', function() { - bigPlay.hide(); - loading.hide(); - controls.find('.mejs-time-buffering').hide(); - error.hide(); - }, false); - - media.addEventListener('seeking', function() { - loading.show(); - controls.find('.mejs-time-buffering').show(); - }, false); - - media.addEventListener('seeked', function() { - loading.hide(); - controls.find('.mejs-time-buffering').hide(); - }, false); - - media.addEventListener('pause',function() { - if (!mejs.MediaFeatures.isiPhone) { - bigPlay.show(); - } - }, false); - - media.addEventListener('waiting', function() { - loading.show(); - controls.find('.mejs-time-buffering').show(); - }, false); - - - // show/hide loading - media.addEventListener('loadeddata',function() { - // for some reason Chrome is firing this event - //if (mejs.MediaFeatures.isChrome && media.getAttribute && media.getAttribute('preload') === 'none') - // return; - - loading.show(); - controls.find('.mejs-time-buffering').show(); - // Firing the 'canplay' event after a timeout which isn't getting fired on some Android 4.1 devices (https://github.com/johndyer/mediaelement/issues/1305) - if (mejs.MediaFeatures.isAndroid) { - media.canplayTimeout = window.setTimeout( - function() { - if (document.createEvent) { - var evt = document.createEvent('HTMLEvents'); - evt.initEvent('canplay', true, true); - return media.dispatchEvent(evt); - } - }, 300 - ); - } - }, false); - media.addEventListener('canplay',function() { - loading.hide(); - controls.find('.mejs-time-buffering').hide(); - clearTimeout(media.canplayTimeout); // Clear timeout inside 'loadeddata' to prevent 'canplay' to fire twice - }, false); - - // error handling - media.addEventListener('error',function(e) { - t.handleError(e); - loading.hide(); - bigPlay.hide(); - error.show(); - error.find('.mejs-overlay-error').html("Error loading this resource"); - }, false); - - media.addEventListener('keydown', function(e) { - t.onkeydown(player, media, e); - }, false); - }, + specialIEContainer.outerHTML = '<object ' + settings.join(' ') + '>' + ('<param name="movie" value="' + flash.options.pluginPath + flash.options.filename + '?x=' + new Date() + '" />') + ('<param name="flashvars" value="' + flashVars.join('&') + '" />') + '<param name="quality" value="high" />' + '<param name="bgcolor" value="#000000" />' + '<param name="wmode" value="transparent" />' + ('<param name="allowScriptAccess" value="' + flash.options.shimScriptAccess + '" />') + '<param name="allowFullScreen" value="true" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>'; + } else { - buildkeyboard: function(player, controls, layers, media) { + settings = ['id="__' + flash.id + '"', 'name="__' + flash.id + '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash.options.shimScriptAccess + '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="//www.macromedia.com/go/getflashplayer"', 'src="' + flash.options.pluginPath + flash.options.filename + '"', 'flashvars="' + flashVars.join('&') + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"']; - var t = this; + if (!isVideo) { + settings.push('style="clip: rect(0 0 0 0); position: absolute;"'); + } - t.container.keydown(function () { - t.keyboardAction = true; - }); + flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>'; + } - // listen for key presses - t.globalBind('keydown', function(event) { - player.hasFocus = $(event.target).closest('.mejs-container').length !== 0 - && $(event.target).closest('.mejs-container').attr('id') === player.$media.closest('.mejs-container').attr('id'); - return t.onkeydown(player, media, event); - }); + flash.flashNode = flash.flashWrapper.lastChild; + flash.hide = function () { + if (isVideo) { + flash.flashNode.style.display = 'none'; + } + }; + flash.show = function () { + if (isVideo) { + flash.flashNode.style.display = ''; + } + }; + flash.setSize = function (width, height) { + flash.flashNode.style.width = width + 'px'; + flash.flashNode.style.height = height + 'px'; - // check if someone clicked outside a player region, then kill its focus - t.globalBind('click', function(event) { - player.hasFocus = $(event.target).closest('.mejs-container').length !== 0; - }); + if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') { + flash.flashApi.fire_setSize(width, height); + } + }; - }, - onkeydown: function(player, media, e) { - if (player.hasFocus && player.options.enableKeyboard) { - // find a matching key - for (var i = 0, il = player.options.keyActions.length; i < il; i++) { - var keyAction = player.options.keyActions[i]; + flash.destroy = function () { + flash.flashNode.remove(); + }; - for (var j = 0, jl = keyAction.keys.length; j < jl; j++) { - if (e.keyCode == keyAction.keys[j]) { - if (typeof(e.preventDefault) == "function") e.preventDefault(); - keyAction.action(player, media, e.keyCode, e); - return false; - } - } + console.log('File ' + mediaFiles); + if (mediaFiles && mediaFiles.length > 0) { + for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) { + if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) { + flash.setSrc(mediaFiles[_i4].src); + console.log('File ' + mediaFiles[_i4].src); + break; } } + } - return true; - }, + return flash; + } +}; - findTracks: function() { - var t = this, - tracktags = t.$media.find('track'); +var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]); + +if (hasFlash) { + _media.typeChecks.push(function (url) { + url = url.toLowerCase(); - // store for use by plugins - t.tracks = []; - tracktags.each(function(index, track) { + if (url.startsWith('rtmp')) { + if (~url.indexOf('.mp3')) { + return 'audio/rtmp'; + } else { + return 'video/rtmp'; + } + } else if (/\.og(a|g)/i.test(url)) { + return 'audio/ogg'; + } else if (~url.indexOf('.m3u8')) { + return 'application/x-mpegURL'; + } else if (~url.indexOf('.mpd')) { + return 'application/dash+xml'; + } else if (~url.indexOf('.flv')) { + return 'video/flv'; + } else { + return null; + } + }); - track = $(track); + var FlashMediaElementVideoRenderer = { + name: 'flash_video', + options: { + prefix: 'flash_video', + filename: 'mediaelement-flash-video.swf', + enablePseudoStreaming: false, - t.tracks.push({ - srclang: (track.attr('srclang')) ? track.attr('srclang').toLowerCase() : '', - src: track.attr('src'), - kind: track.attr('kind'), - label: track.attr('label') || '', - entries: [], - isLoaded: false - }); - }); + pseudoStreamingStartQueryParam: 'start', + + pseudoStreamingType: 'byte' }, - changeSkin: function(className) { - this.container[0].className = 'mejs-container ' + className; - this.setPlayerSize(this.width, this.height); - this.setControlsSize(); + + canPlayType: function canPlayType(type) { + return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase()); }, - play: function() { - this.load(); - this.media.play(); + + create: FlashMediaElementRenderer.create + + }; + _renderer.renderer.add(FlashMediaElementVideoRenderer); + + var FlashMediaElementHlsVideoRenderer = { + name: 'flash_hls', + options: { + prefix: 'flash_hls', + filename: 'mediaelement-flash-video-hls.swf' }, - pause: function() { - try { - this.media.pause(); - } catch (e) {} + + canPlayType: function canPlayType(type) { + return ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()); }, - load: function() { - if (!this.isLoaded) { - this.media.load(); - } - this.isLoaded = true; + create: FlashMediaElementRenderer.create + }; + _renderer.renderer.add(FlashMediaElementHlsVideoRenderer); + + var FlashMediaElementMdashVideoRenderer = { + name: 'flash_dash', + options: { + prefix: 'flash_dash', + filename: 'mediaelement-flash-video-mdash.swf' }, - setMuted: function(muted) { - this.media.setMuted(muted); + + canPlayType: function canPlayType(type) { + return ~['application/dash+xml'].indexOf(type.toLowerCase()); }, - setCurrentTime: function(time) { - this.media.setCurrentTime(time); + + create: FlashMediaElementRenderer.create + }; + _renderer.renderer.add(FlashMediaElementMdashVideoRenderer); + + var FlashMediaElementAudioRenderer = { + name: 'flash_audio', + options: { + prefix: 'flash_audio', + filename: 'mediaelement-flash-audio.swf' }, - getCurrentTime: function() { - return this.media.currentTime; + + canPlayType: function canPlayType(type) { + console.log('Can play mp3 flash'); + return ~['audio/mp3'].indexOf(type.toLowerCase()); }, - setVolume: function(volume) { - this.media.setVolume(volume); + + create: FlashMediaElementRenderer.create + }; + _renderer.renderer.add(FlashMediaElementAudioRenderer); + + var FlashMediaElementAudioOggRenderer = { + name: 'flash_audio_ogg', + options: { + prefix: 'flash_audio_ogg', + filename: 'mediaelement-flash-audio-ogg.swf' }, - getVolume: function() { - return this.media.volume; + + canPlayType: function canPlayType(type) { + return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase()); }, - setSrc: function(src) { - var - t = this; - // If using YouTube, its API is different to load a specific source - if (t.media.pluginType === 'youtube') { - var videoId; + create: FlashMediaElementRenderer.create + }; + _renderer.renderer.add(FlashMediaElementAudioOggRenderer); +} - if (typeof src !== 'string') { - var i, media; +},{"2":2,"23":23,"25":25,"26":26,"3":3,"4":4,"6":6,"7":7}],19:[function(_dereq_,module,exports){ +'use strict'; - for (i=0; i<src.length; i++) { - media = src[i]; - if (this.canPlayType(media.type)) { - src = media.src; - break; - } - } - } +var _window = _dereq_(3); - // youtu.be url from share button - if (src.lastIndexOf('youtu.be') !== -1) { - videoId = src.substr(src.lastIndexOf('/') + 1); +var _window2 = _interopRequireDefault(_window); - if (videoId.indexOf('?') !== -1) { - videoId = videoId.substr(0, videoId.indexOf('?')); - } +var _mejs = _dereq_(6); - } else { - // https://www.youtube.com/watch?v= - var videoIdMatch = src.match(/[?&]v=([^&#]+)|&|#|$/); +var _mejs2 = _interopRequireDefault(_mejs); - if (videoIdMatch) { - videoId = videoIdMatch[1]; - } - } +var _renderer = _dereq_(7); - if (t.media.getAttribute('autoplay') !== null) { - t.media.pluginApi.loadVideoById(videoId); - } else { - t.media.pluginApi.cueVideoById(videoId); - } +var _general = _dereq_(25); - } - else { - t.media.setSrc(src); - } - }, - remove: function() { - var t = this, featureIndex, feature; +var _constants = _dereq_(23); - t.container.prev('.mejs-offscreen').remove(); +var _media = _dereq_(26); - // invoke features cleanup - for (featureIndex in t.options.features) { - feature = t.options.features[featureIndex]; - if (t['clean' + feature]) { - try { - t['clean' + feature](t); - } catch (e) { - // TODO: report control error - //throw e; - // - // - } - } - } +var _dom = _dereq_(24); - // grab video and put it back in place - if (!t.isDynamic) { - t.$media.prop('controls', true); - // detach events from the video - // TODO: detach event listeners better than this; - // also detach ONLY the events attached by this plugin! - t.$node.clone().insertBefore(t.container).show(); - t.$node.remove(); - } else { - t.$node.insertBefore(t.container); - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - if (t.media.pluginType !== 'native') { - t.media.remove(); - } +var NativeFlv = { - // Remove the player from the mejs.players object so that pauseOtherPlayers doesn't blow up when trying to pause a non existance flash api. - delete mejs.players[t.id]; + promise: null, - if (typeof t.container == 'object') { - t.container.remove(); - } - t.globalUnbind(); - delete t.node.player; - }, - rebuildtracks: function(){ - var t = this; - t.findTracks(); - t.buildtracks(t, t.controls, t.layers, t.media); - }, - resetSize: function(){ - var t = this; - // webkit has trouble doing this without a delay - setTimeout(function () { - // - t.setPlayerSize(t.width, t.height); - t.setControlsSize(); - }, 50); + load: function load(settings) { + if (typeof flvjs !== 'undefined') { + NativeFlv._createPlayer(settings); + } else { + settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js'; + + NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path); + NativeFlv.promise.then(function () { + NativeFlv._createPlayer(settings); + }); } - }; + }, + + _createPlayer: function _createPlayer(settings) { + flvjs.LoggingControl.enableDebug = settings.options.debug; + flvjs.LoggingControl.enableVerbose = settings.options.debug; + var player = flvjs.createPlayer(settings.options); + _window2.default['__ready__' + settings.id](player); + return player; + } +}; - (function(){ - var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/; +var FlvNativeRenderer = { + name: 'native_flv', + options: { + prefix: 'native_flv', + flv: { + path: 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js', - function splitEvents(events, id) { - // add player ID as an event namespace so it's easier to unbind them all later - var ret = {d: [], w: []}; - $.each((events || '').split(' '), function(k, v){ - var eventname = v + '.' + id; - if (eventname.indexOf('.') === 0) { - ret.d.push(eventname); - ret.w.push(eventname); - } - else { - ret[rwindow.test(v) ? 'w' : 'd'].push(eventname); + cors: true, + debug: false + } + }, + + canPlayType: function canPlayType(type) { + return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1; + }, + + create: function create(mediaElement, options, mediaFiles) { + + var originalNode = mediaElement.originalNode, + id = mediaElement.id + '_' + options.prefix; + + var node = null, + flvPlayer = null; + + node = originalNode.cloneNode(true); + options = Object.assign(options, mediaElement.options); + + var props = _mejs2.default.html5media.properties, + assignGettersSetters = function assignGettersSetters(propName) { + var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); + + node['get' + capName] = function () { + return flvPlayer !== null ? node[propName] : null; + }; + + node['set' + capName] = function (value) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { + node[propName] = value; + + if (flvPlayer !== null) { + if (propName === 'src') { + var _flvOptions = {}; + _flvOptions.type = 'flv'; + _flvOptions.url = value; + _flvOptions.cors = options.flv.cors; + _flvOptions.debug = options.flv.debug; + _flvOptions.path = options.flv.path; + + flvPlayer.destroy(); + flvPlayer = NativeFlv._createPlayer({ + options: _flvOptions, + id: id + }); + flvPlayer.attachMediaElement(node); + flvPlayer.load(); + } + } } - }); - ret.d = ret.d.join(' '); - ret.w = ret.w.join(' '); - return ret; + }; + }; + + for (var i = 0, total = props.length; i < total; i++) { + assignGettersSetters(props[i]); } - mejs.MediaElementPlayer.prototype.globalBind = function(events, data, callback) { - var t = this; - var doc = t.node ? t.node.ownerDocument : document; + _window2.default['__ready__' + id] = function (_flvPlayer) { + mediaElement.flvPlayer = flvPlayer = _flvPlayer; + + var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), + assignEvents = function assignEvents(eventName) { + if (eventName === 'loadedmetadata') { + flvPlayer.unload(); + flvPlayer.detachMediaElement(); + flvPlayer.attachMediaElement(node); + flvPlayer.load(); + } - events = splitEvents(events, t.id); - if (events.d) $(doc).bind(events.d, data, callback); - if (events.w) $(window).bind(events.w, data, callback); + node.addEventListener(eventName, function (e) { + var event = (0, _general.createEvent)(e.type, mediaElement); + mediaElement.dispatchEvent(event); + }); + }; + + for (var _i = 0, _total = events.length; _i < _total; _i++) { + assignEvents(events[_i]); + } }; - mejs.MediaElementPlayer.prototype.globalUnbind = function(events, callback) { - var t = this; - var doc = t.node ? t.node.ownerDocument : document; + if (mediaFiles && mediaFiles.length > 0) { + for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) { + if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) { + node.setAttribute('src', mediaFiles[_i2].src); + break; + } + } + } + + node.setAttribute('id', id); + + originalNode.parentNode.insertBefore(node, originalNode); + originalNode.autoplay = false; + originalNode.style.display = 'none'; + + var flvOptions = {}; + flvOptions.type = 'flv'; + flvOptions.url = node.src; + flvOptions.cors = options.flv.cors; + flvOptions.debug = options.flv.debug; + flvOptions.path = options.flv.path; - events = splitEvents(events, t.id); - if (events.d) $(doc).unbind(events.d, callback); - if (events.w) $(window).unbind(events.w, callback); + NativeFlv.load({ + options: flvOptions, + id: id + }); + + node.setSize = function (width, height) { + node.style.width = width + 'px'; + node.style.height = height + 'px'; + return node; }; - })(); - // turn into jQuery plugin - if (typeof $ != 'undefined') { - $.fn.mediaelementplayer = function (options) { - if (options === false) { - this.each(function () { - var player = $(this).data('mediaelementplayer'); - if (player) { - player.remove(); - } - $(this).removeData('mediaelementplayer'); - }); + node.hide = function () { + if (flvPlayer !== null) { + flvPlayer.pause(); } - else { - this.each(function () { - $(this).data('mediaelementplayer', new mejs.MediaElementPlayer(this, options)); - }); + node.style.display = 'none'; + return node; + }; + + node.show = function () { + node.style.display = ''; + return node; + }; + + node.destroy = function () { + if (flvPlayer !== null) { + flvPlayer.destroy(); } - return this; }; + var event = (0, _general.createEvent)('rendererready', node); + mediaElement.dispatchEvent(event); - $(document).ready(function() { - // auto enable using JSON attribute - $('.mejs-player').mediaelementplayer(); - }); + return node; } +}; - // push out to window - window.MediaElementPlayer = mejs.MediaElementPlayer; +_media.typeChecks.push(function (url) { + return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null; +}); -})(mejs.$); +_renderer.renderer.add(FlvNativeRenderer); -(function($) { +},{"23":23,"24":24,"25":25,"26":26,"3":3,"6":6,"7":7}],20:[function(_dereq_,module,exports){ +'use strict'; - $.extend(mejs.MepDefaults, { - playText: '', - pauseText: '' - }); +var _window = _dereq_(3); +var _window2 = _interopRequireDefault(_window); - // PLAY/pause BUTTON - $.extend(MediaElementPlayer.prototype, { - buildplaypause: function(player, controls, layers, media) { - var - t = this, - op = t.options, - playTitle = op.playText ? op.playText : mejs.i18n.t('mejs.play'), - pauseTitle = op.pauseText ? op.pauseText : mejs.i18n.t('mejs.pause'), - play = - $('<div class="mejs-button mejs-playpause-button mejs-play" >' + - '<button type="button" aria-controls="' + t.id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '"></button>' + - '</div>') - .appendTo(controls) - .click(function(e) { - e.preventDefault(); - - if (media.paused) { - media.play(); - } else { - media.pause(); - } - - return false; - }), - play_btn = play.find('button'); +var _mejs = _dereq_(6); +var _mejs2 = _interopRequireDefault(_mejs); - function togglePlayPause(which) { - if ('play' === which) { - play.removeClass('mejs-play').addClass('mejs-pause'); - play_btn.attr({ - 'title': pauseTitle, - 'aria-label': pauseTitle - }); - } else { - play.removeClass('mejs-pause').addClass('mejs-play'); - play_btn.attr({ - 'title': playTitle, - 'aria-label': playTitle - }); - } - }; - togglePlayPause('pse'); +var _renderer = _dereq_(7); + +var _general = _dereq_(25); + +var _constants = _dereq_(23); + +var _media = _dereq_(26); + +var _dom = _dereq_(24); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - media.addEventListener('play',function() { - togglePlayPause('play'); - }, false); - media.addEventListener('playing',function() { - togglePlayPause('play'); - }, false); +var NativeHls = { + promise: null, - media.addEventListener('pause',function() { - togglePlayPause('pse'); - }, false); - media.addEventListener('paused',function() { - togglePlayPause('pse'); - }, false); - } - }); - -})(mejs.$); + load: function load(settings) { + if (typeof Hls !== 'undefined') { + NativeHls._createPlayer(settings); + } else { + settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'http://cdn.jsdelivr.net/npm/hls.js@latest'; -(function($) { + NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path); + NativeHls.promise.then(function () { + NativeHls._createPlayer(settings); + }); + } + }, - $.extend(mejs.MepDefaults, { - stopText: 'Stop' - }); + _createPlayer: function _createPlayer(settings) { + var player = new Hls(settings.options); + _window2.default['__ready__' + settings.id](player); + return player; + } +}; - // STOP BUTTON - $.extend(MediaElementPlayer.prototype, { - buildstop: function(player, controls, layers, media) { - var t = this; +var HlsNativeRenderer = { + name: 'native_hls', + options: { + prefix: 'native_hls', + hls: { + path: 'http://cdn.jsdelivr.net/npm/hls.js@latest', - $('<div class="mejs-button mejs-stop-button mejs-stop">' + - '<button type="button" aria-controls="' + t.id + '" title="' + t.options.stopText + '" aria-label="' + t.options.stopText + '"></button>' + - '</div>') - .appendTo(controls) - .click(function() { - if (!media.paused) { - media.pause(); - } - if (media.currentTime > 0) { - media.setCurrentTime(0); - media.pause(); - controls.find('.mejs-time-current').width('0px'); - controls.find('.mejs-time-handle').css('left', '0px'); - controls.find('.mejs-time-float-current').html( mejs.Utility.secondsToTimeCode(0, player.options)); - controls.find('.mejs-currenttime').html( mejs.Utility.secondsToTimeCode(0, player.options)); - layers.find('.mejs-poster').show(); - } - }); + autoStartLoad: false, + debug: false } - }); - -})(mejs.$); - -(function($) { + }, - $.extend(mejs.MepDefaults, { - // Enable tooltip that shows time in progress bar - enableProgressTooltip: true, - progressHelpText: '' - }); + canPlayType: function canPlayType(type) { + return _constants.HAS_MSE && ['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1; + }, - // progress/loaded bar - $.extend(MediaElementPlayer.prototype, { - buildprogress: function(player, controls, layers, media) { - - var - t = this, - mouseIsDown = false, - mouseIsOver = false, - lastKeyPressTime = 0, - startedPaused = false, - autoRewindInitial = player.options.autoRewind, - progressTitle = t.options.progressHelpText ? t.options.progressHelpText : mejs.i18n.t('mejs.time-help-text'), - tooltip = player.options.enableProgressTooltip ? '<span class="mejs-time-float">' + - '<span class="mejs-time-float-current">00:00</span>' + - '<span class="mejs-time-float-corner"></span>' + - '</span>' : ""; - - $('<div class="mejs-time-rail">' + - '<span class="mejs-time-total mejs-time-slider">' + - //'<span class="mejs-offscreen">' + progressTitle + '</span>' + - '<span class="mejs-time-buffering"></span>' + - '<span class="mejs-time-loaded"></span>' + - '<span class="mejs-time-current"></span>' + - '<span class="mejs-time-handle"></span>' + - tooltip + - '</span>' + - '</div>') - .appendTo(controls); - controls.find('.mejs-time-buffering').hide(); - - t.total = controls.find('.mejs-time-total'); - t.loaded = controls.find('.mejs-time-loaded'); - t.current = controls.find('.mejs-time-current'); - t.handle = controls.find('.mejs-time-handle'); - t.timefloat = controls.find('.mejs-time-float'); - t.timefloatcurrent = controls.find('.mejs-time-float-current'); - t.slider = controls.find('.mejs-time-slider'); - - var handleMouseMove = function (e) { - - var offset = t.total.offset(), - width = t.total.width(), - percentage = 0, - newTime = 0, - pos = 0, - x; - - // mouse or touch position relative to the object - if (e.originalEvent && e.originalEvent.changedTouches) { - x = e.originalEvent.changedTouches[0].pageX; - } else if (e.changedTouches) { // for Zepto - x = e.changedTouches[0].pageX; - } else { - x = e.pageX; - } + create: function create(mediaElement, options, mediaFiles) { - if (media.duration) { - if (x < offset.left) { - x = offset.left; - } else if (x > width + offset.left) { - x = width + offset.left; - } + var originalNode = mediaElement.originalNode, + id = mediaElement.id + '_' + options.prefix, + preload = originalNode.getAttribute('preload'), + autoplay = originalNode.autoplay; - pos = x - offset.left; - percentage = (pos / width); - newTime = (percentage <= 0.02) ? 0 : percentage * media.duration; + var hlsPlayer = null, + node = null; - // seek to where the mouse is - if (mouseIsDown && newTime !== media.currentTime) { - media.setCurrentTime(newTime); - } + node = originalNode.cloneNode(true); + options = Object.assign(options, mediaElement.options); + options.hls.autoStartLoad = preload && preload !== 'none' || autoplay; - // position floating time box - if (!mejs.MediaFeatures.hasTouch) { - t.timefloat.css('left', pos); - t.timefloatcurrent.html( mejs.Utility.secondsToTimeCode(newTime, player.options) ); - t.timefloat.show(); - } - } - }, - // Accessibility for slider - updateSlider = function (e) { - - var seconds = media.currentTime, - timeSliderText = mejs.i18n.t('mejs.time-slider'), - time = mejs.Utility.secondsToTimeCode(seconds, player.options), - duration = media.duration; - - t.slider.attr({ - 'aria-label': timeSliderText, - 'aria-valuemin': 0, - 'aria-valuemax': duration, - 'aria-valuenow': seconds, - 'aria-valuetext': time, - 'role': 'slider', - 'tabindex': 0 - }); + var props = _mejs2.default.html5media.properties, + assignGettersSetters = function assignGettersSetters(propName) { + var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); - }, - restartPlayer = function () { - var now = new Date(); - if (now - lastKeyPressTime >= 1000) { - media.play(); - } - }; + node['get' + capName] = function () { + return hlsPlayer !== null ? node[propName] : null; + }; - t.slider.bind('focus', function (e) { - player.options.autoRewind = false; - }); + node['set' + capName] = function (value) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { + node[propName] = value; - t.slider.bind('blur', function (e) { - player.options.autoRewind = autoRewindInitial; - }); + if (hlsPlayer !== null) { + if (propName === 'src') { - t.slider.bind('keydown', function (e) { + hlsPlayer.destroy(); + hlsPlayer = NativeHls._createPlayer({ + options: options.hls, + id: id + }); - if ((new Date() - lastKeyPressTime) >= 1000) { - startedPaused = media.paused; + hlsPlayer.loadSource(value); + hlsPlayer.attachMedia(node); + } + } } + }; + }; - var keyCode = e.keyCode, - duration = media.duration, - seekTime = media.currentTime, - seekForward = player.options.defaultSeekForwardInterval(media), - seekBackward = player.options.defaultSeekBackwardInterval(media); + for (var i = 0, total = props.length; i < total; i++) { + assignGettersSetters(props[i]); + } - switch (keyCode) { - case 37: // left - case 40: // Down - seekTime -= seekBackward; - break; - case 39: // Right - case 38: // Up - seekTime += seekForward; - break; - case 36: // Home - seekTime = 0; - break; - case 35: // end - seekTime = duration; - break; - case 32: // space - case 13: // enter - media.paused ? media.play() : media.pause(); - return; - default: - return; + _window2.default['__ready__' + id] = function (_hlsPlayer) { + mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer; + + var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), + hlsEvents = Hls.Events, + assignEvents = function assignEvents(eventName) { + if (eventName === 'loadedmetadata') { + var url = mediaElement.originalNode.src; + hlsPlayer.detachMedia(); + hlsPlayer.loadSource(url); + hlsPlayer.attachMedia(node); } - seekTime = seekTime < 0 ? 0 : (seekTime >= duration ? duration : Math.floor(seekTime)); - lastKeyPressTime = new Date(); - if (!startedPaused) { - media.pause(); + node.addEventListener(eventName, function (e) { + var event = (0, _general.createEvent)(e.type, mediaElement); + mediaElement.dispatchEvent(event); + }); + }; + + for (var _i = 0, _total = events.length; _i < _total; _i++) { + assignEvents(events[_i]); + } + + var recoverDecodingErrorDate = void 0, + recoverSwapAudioCodecDate = void 0; + var assignHlsEvents = function assignHlsEvents(e, data) { + var event = (0, _general.createEvent)(e, node); + event.data = data; + mediaElement.dispatchEvent(event); + + if (e === 'hlsError') { + console.warn(e, data); + + if (data.fatal) { + switch (data.type) { + case 'mediaError': + var now = new Date().getTime(); + if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) { + recoverDecodingErrorDate = new Date().getTime(); + hlsPlayer.recoverMediaError(); + } else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) { + recoverSwapAudioCodecDate = new Date().getTime(); + console.warn('Attempting to swap Audio Codec and recover from media error'); + hlsPlayer.swapAudioCodec(); + hlsPlayer.recoverMediaError(); + } else { + console.error('Cannot recover, last media error recovery failed'); + } + break; + case 'networkError': + console.error('Network error'); + break; + default: + hlsPlayer.destroy(); + break; + } + } } + }; - if (seekTime < media.duration && !startedPaused) { - setTimeout(restartPlayer, 1100); + for (var eventType in hlsEvents) { + if (hlsEvents.hasOwnProperty(eventType)) { + hlsPlayer.on(hlsEvents[eventType], assignHlsEvents); } + } + }; - media.setCurrentTime(seekTime); + if (mediaFiles && mediaFiles.length > 0) { + for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) { + if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) { + node.setAttribute('src', mediaFiles[_i2].src); + break; + } + } + } - e.preventDefault(); - e.stopPropagation(); - return false; + if (preload !== 'auto' && !autoplay) { + node.addEventListener('play', function () { + if (hlsPlayer !== null) { + hlsPlayer.startLoad(); + } }); + node.addEventListener('pause', function () { + if (hlsPlayer !== null) { + hlsPlayer.stopLoad(); + } + }); + } - // handle clicks - //controls.find('.mejs-time-rail').delegate('span', 'click', handleMouseMove); - t.total - .bind('mousedown touchstart', function (e) { - // only handle left clicks or touch - if (e.which === 1 || e.which === 0) { - mouseIsDown = true; - handleMouseMove(e); - t.globalBind('mousemove.dur touchmove.dur', function(e) { - handleMouseMove(e); - }); - t.globalBind('mouseup.dur touchend.dur', function (e) { - mouseIsDown = false; - if (typeof t.timefloat !== 'undefined') { - t.timefloat.hide(); - } - t.globalUnbind('.dur'); - }); - } - }) - .bind('mouseenter', function(e) { - mouseIsOver = true; - t.globalBind('mousemove.dur', function(e) { - handleMouseMove(e); - }); - if (typeof t.timefloat !== 'undefined' && !mejs.MediaFeatures.hasTouch) { - t.timefloat.show(); - } - }) - .bind('mouseleave',function(e) { - mouseIsOver = false; - if (!mouseIsDown) { - t.globalUnbind('.dur'); - if (typeof t.timefloat !== 'undefined') { - t.timefloat.hide(); - } - } - }); + node.setAttribute('id', id); - // loading - media.addEventListener('progress', function (e) { - player.setProgressRail(e); - player.setCurrentRail(e); - }, false); + originalNode.parentNode.insertBefore(node, originalNode); + originalNode.autoplay = false; + originalNode.style.display = 'none'; - // current time - media.addEventListener('timeupdate', function(e) { - player.setProgressRail(e); - player.setCurrentRail(e); - updateSlider(e); - }, false); + NativeHls.load({ + options: options.hls, + id: id + }); - t.container.on('controlsresize', function(e) { - player.setProgressRail(e); - player.setCurrentRail(e); - }); - }, - setProgressRail: function(e) { - - var - t = this, - target = (e !== undefined) ? e.target : t.media, - percent = null; - - // newest HTML5 spec has buffered array (FF4, Webkit) - if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && target.duration) { - // account for a real array with multiple values - always read the end of the last buffer - percent = target.buffered.end(target.buffered.length - 1) / target.duration; - } - // Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end() - // to be anything other than 0. If the byte count is available we use this instead. - // Browsers that support the else if do not seem to have the bufferedBytes value and - // should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8. - else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) { - percent = target.bufferedBytes / target.bytesTotal; - } - // Firefox 3 with an Ogg file seems to go this way - else if (e && e.lengthComputable && e.total !== 0) { - percent = e.loaded / e.total; - } + node.setSize = function (width, height) { + node.style.width = width + 'px'; + node.style.height = height + 'px'; + return node; + }; - // finally update the progress bar - if (percent !== null) { - percent = Math.min(1, Math.max(0, percent)); - // update loaded bar - if (t.loaded && t.total) { - t.loaded.width(t.total.width() * percent); - } - } - }, - setCurrentRail: function() { + node.hide = function () { + node.pause(); + node.style.display = 'none'; + return node; + }; - var t = this; - - if (t.media.currentTime !== undefined && t.media.duration) { + node.show = function () { + node.style.display = ''; + return node; + }; - // update bar and handle - if (t.total && t.handle) { - var - newWidth = Math.round(t.total.width() * t.media.currentTime / t.media.duration), - handlePos = newWidth - Math.round(t.handle.outerWidth(true) / 2); + node.destroy = function () { + if (hlsPlayer !== null) { + hlsPlayer.destroy(); + } + }; - t.current.width(newWidth); - t.handle.css('left', handlePos); - } + node.stop = function () { + if (hlsPlayer !== null) { + hlsPlayer.stopLoad(); } + }; - } - }); -})(mejs.$); - -(function($) { - - // options - $.extend(mejs.MepDefaults, { - duration: -1, - timeAndDurationSeparator: '<span> | </span>' - }); + var event = (0, _general.createEvent)('rendererready', node); + mediaElement.dispatchEvent(event); + return node; + } +}; - // current and duration 00:00 / 00:00 - $.extend(MediaElementPlayer.prototype, { - buildcurrent: function(player, controls, layers, media) { - var t = this; - - $('<div class="mejs-time" role="timer" aria-live="off">' + - '<span class="mejs-currenttime">' + - mejs.Utility.secondsToTimeCode(0, player.options) + - '</span>'+ - '</div>') - .appendTo(controls); - - t.currenttime = t.controls.find('.mejs-currenttime'); - - media.addEventListener('timeupdate',function() { - if (t.controlsAreVisible) { - player.updateCurrent(); - } - - }, false); - }, +_media.typeChecks.push(function (url) { + return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null; +}); +_renderer.renderer.add(HlsNativeRenderer); - buildduration: function(player, controls, layers, media) { - var t = this; - - if (controls.children().last().find('.mejs-currenttime').length > 0) { - $(t.options.timeAndDurationSeparator + - '<span class="mejs-duration">' + - mejs.Utility.secondsToTimeCode(t.options.duration, t.options) + - '</span>') - .appendTo(controls.find('.mejs-time')); - } else { +},{"23":23,"24":24,"25":25,"26":26,"3":3,"6":6,"7":7}],21:[function(_dereq_,module,exports){ +'use strict'; - // add class to current time - controls.find('.mejs-currenttime').parent().addClass('mejs-currenttime-container'); - - $('<div class="mejs-time mejs-duration-container">'+ - '<span class="mejs-duration">' + - mejs.Utility.secondsToTimeCode(t.options.duration, t.options) + - '</span>' + - '</div>') - .appendTo(controls); - } - - t.durationD = t.controls.find('.mejs-duration'); +var _window = _dereq_(3); - media.addEventListener('timeupdate',function() { - if (t.controlsAreVisible) { - player.updateDuration(); - } - }, false); - }, - - updateCurrent: function() { - var t = this; - - var currentTime = t.media.currentTime; - - if (isNaN(currentTime)) { - currentTime = 0; - } +var _window2 = _interopRequireDefault(_window); - if (t.currenttime) { - t.currenttime.html(mejs.Utility.secondsToTimeCode(currentTime, t.options)); - } - }, - - updateDuration: function() { - var t = this; - - var duration = t.media.duration; - if (t.options.duration > 0) { - duration = t.options.duration; - } - - if (isNaN(duration)) { - duration = 0; - } +var _document = _dereq_(2); - //Toggle the long video class if the video is longer than an hour. - t.container.toggleClass("mejs-long-video", duration > 3600); - - if (t.durationD && duration > 0) { - t.durationD.html(mejs.Utility.secondsToTimeCode(duration, t.options)); - } - } - }); +var _document2 = _interopRequireDefault(_document); -})(mejs.$); +var _mejs = _dereq_(6); -(function ($) { +var _mejs2 = _interopRequireDefault(_mejs); - $.extend(mejs.MepDefaults, { - muteText: mejs.i18n.t('mejs.mute-toggle'), - allyVolumeControlText: mejs.i18n.t('mejs.volume-help-text'), - hideVolumeOnTouchDevices: true, +var _renderer = _dereq_(7); - audioVolume: 'horizontal', - videoVolume: 'vertical' - }); +var _general = _dereq_(25); - $.extend(MediaElementPlayer.prototype, { - buildvolume: function (player, controls, layers, media) { +var _constants = _dereq_(23); - // Android and iOS don't support volume controls - if ((mejs.MediaFeatures.isAndroid || mejs.MediaFeatures.isiOS) && this.options.hideVolumeOnTouchDevices) - return; +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - var t = this, - mode = (t.isVideo) ? t.options.videoVolume : t.options.audioVolume, - mute = (mode == 'horizontal') ? - - // horizontal version - $('<div class="mejs-button mejs-volume-button mejs-mute">' + - '<button type="button" aria-controls="' + t.id + - '" title="' + t.options.muteText + - '" aria-label="' + t.options.muteText + - '"></button>' + - '</div>' + - '<a href="javascript:void(0);" class="mejs-horizontal-volume-slider">' + // outer background - '<span class="mejs-offscreen">' + t.options.allyVolumeControlText + '</span>' + - '<div class="mejs-horizontal-volume-total"></div>' + // line background - '<div class="mejs-horizontal-volume-current"></div>' + // current volume - '<div class="mejs-horizontal-volume-handle"></div>' + // handle - '</a>' - ) - .appendTo(controls) : - - // vertical version - $('<div class="mejs-button mejs-volume-button mejs-mute">' + - '<button type="button" aria-controls="' + t.id + - '" title="' + t.options.muteText + - '" aria-label="' + t.options.muteText + - '"></button>' + - '<a href="javascript:void(0);" class="mejs-volume-slider">' + // outer background - '<span class="mejs-offscreen">' + t.options.allyVolumeControlText + '</span>' + - '<div class="mejs-volume-total"></div>' + // line background - '<div class="mejs-volume-current"></div>' + // current volume - '<div class="mejs-volume-handle"></div>' + // handle - '</a>' + - '</div>') - .appendTo(controls), - volumeSlider = t.container.find('.mejs-volume-slider, .mejs-horizontal-volume-slider'), - volumeTotal = t.container.find('.mejs-volume-total, .mejs-horizontal-volume-total'), - volumeCurrent = t.container.find('.mejs-volume-current, .mejs-horizontal-volume-current'), - volumeHandle = t.container.find('.mejs-volume-handle, .mejs-horizontal-volume-handle'), - - positionVolumeHandle = function (volume, secondTry) { - - if (!volumeSlider.is(':visible') && typeof secondTry == 'undefined') { - volumeSlider.show(); - positionVolumeHandle(volume, true); - volumeSlider.hide(); - return; - } +var HtmlMediaElement = { + name: 'html5', + options: { + prefix: 'html5' + }, - // correct to 0-1 - volume = Math.max(0, volume); - volume = Math.min(volume, 1); + canPlayType: function canPlayType(type) { - // adjust mute button style - if (volume === 0) { - mute.removeClass('mejs-mute').addClass('mejs-unmute'); - mute.children('button').attr('title', mejs.i18n.t('mejs.unmute')).attr('aria-label', mejs.i18n.t('mejs.unmute')); - } else { - mute.removeClass('mejs-unmute').addClass('mejs-mute'); - mute.children('button').attr('title', mejs.i18n.t('mejs.mute')).attr('aria-label', mejs.i18n.t('mejs.mute')); - } + var mediaElement = _document2.default.createElement('video'); - // top/left of full size volume slider background - var totalPosition = volumeTotal.position(); - // position slider - if (mode == 'vertical') { - var - // height of the full size volume slider background - totalHeight = volumeTotal.height(), + if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) { + return 'yes'; + } else if (mediaElement.canPlayType) { + return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, ''); + } else { + return ''; + } + }, - // the new top position based on the current volume - // 70% volume on 100px height == top:30px - newTop = totalHeight - (totalHeight * volume); + create: function create(mediaElement, options, mediaFiles) { - // handle - volumeHandle.css('top', Math.round(totalPosition.top + newTop - (volumeHandle.height() / 2))); + var id = mediaElement.id + '_' + options.prefix; - // show the current visibility - volumeCurrent.height(totalHeight - newTop); - volumeCurrent.css('top', totalPosition.top + newTop); - } else { - var - // height of the full size volume slider background - totalWidth = volumeTotal.width(), + var node = null; - // the new left position based on the current volume - newLeft = totalWidth * volume; + if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) { + node = _document2.default.createElement('audio'); + mediaElement.appendChild(node); + } else { + node = mediaElement.originalNode; + } - // handle - volumeHandle.css('left', Math.round(totalPosition.left + newLeft - (volumeHandle.width() / 2))); + node.setAttribute('id', id); - // rezize the current part of the volume bar - volumeCurrent.width(Math.round(newLeft)); - } - }, - handleVolumeMove = function (e) { + var props = _mejs2.default.html5media.properties, + assignGettersSetters = function assignGettersSetters(propName) { + var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); - var volume = null, - totalOffset = volumeTotal.offset(); + node['get' + capName] = function () { + return node[propName]; + }; - // calculate the new volume based on the moust position - if (mode === 'vertical') { + node['set' + capName] = function (value) { + if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) { + node[propName] = value; + } + }; + }; - var - railHeight = volumeTotal.height(), - newY = e.pageY - totalOffset.top; + for (var i = 0, total = props.length; i < total; i++) { + assignGettersSetters(props[i]); + } - volume = (railHeight - newY) / railHeight; + var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']), + assignEvents = function assignEvents(eventName) { + node.addEventListener(eventName, function (e) { + var event = (0, _general.createEvent)(e.type, mediaElement); + mediaElement.dispatchEvent(event); + }); + }; - // the controls just hide themselves (usually when mouse moves too far up) - if (totalOffset.top === 0 || totalOffset.left === 0) { - return; - } + for (var _i = 0, _total = events.length; _i < _total; _i++) { + assignEvents(events[_i]); + } - } else { - var - railWidth = volumeTotal.width(), - newX = e.pageX - totalOffset.left; + node.setSize = function (width, height) { + node.style.width = width + 'px'; + node.style.height = height + 'px'; + return node; + }; - volume = newX / railWidth; - } + node.hide = function () { + node.style.display = 'none'; - // ensure the volume isn't outside 0-1 - volume = Math.max(0, volume); - volume = Math.min(volume, 1); + return node; + }; - // position the slider and handle - positionVolumeHandle(volume); + node.show = function () { + node.style.display = ''; - // set the media object (this will trigger the volumechanged event) - if (volume === 0) { - media.setMuted(true); - } else { - media.setMuted(false); - } - media.setVolume(volume); - }, - mouseIsDown = false, - mouseIsOver = false; + return node; + }; - // SLIDER + if (mediaFiles && mediaFiles.length > 0) { + for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) { + if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) { + node.setAttribute('src', mediaFiles[_i2].src); + break; + } + } + } - mute - .hover(function () { - volumeSlider.show(); - mouseIsOver = true; - }, function () { - mouseIsOver = false; + var event = (0, _general.createEvent)('rendererready', node); + mediaElement.dispatchEvent(event); - if (!mouseIsDown && mode == 'vertical') { - volumeSlider.hide(); - } - }); + return node; + } +}; - var updateVolumeSlider = function (e) { +_window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement; - var volume = Math.floor(media.volume * 100); +_renderer.renderer.add(HtmlMediaElement); - volumeSlider.attr({ - 'aria-label': mejs.i18n.t('mejs.volume-slider'), - 'aria-valuemin': 0, - 'aria-valuemax': 100, - 'aria-valuenow': volume, - 'aria-valuetext': volume + '%', - 'role': 'slider', - 'tabindex': 0 - }); +},{"2":2,"23":23,"25":25,"3":3,"6":6,"7":7}],22:[function(_dereq_,module,exports){ +'use strict'; - }; +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - volumeSlider - .bind('mouseover', function () { - mouseIsOver = true; - }) - .bind('mousedown', function (e) { - handleVolumeMove(e); - t.globalBind('mousemove.vol', function (e) { - handleVolumeMove(e); - }); - t.globalBind('mouseup.vol', function () { - mouseIsDown = false; - t.globalUnbind('.vol'); +var _window = _dereq_(3); - if (!mouseIsOver && mode == 'vertical') { - volumeSlider.hide(); - } - }); - mouseIsDown = true; +var _window2 = _interopRequireDefault(_window); - return false; - }) - .bind('keydown', function (e) { - var keyCode = e.keyCode; - var volume = media.volume; - switch (keyCode) { - case 38: // Up - volume = Math.min(volume + 0.1, 1); - break; - case 40: // Down - volume = Math.max(0, volume - 0.1); - break; - default: - return true; - } +var _document = _dereq_(2); - mouseIsDown = false; - positionVolumeHandle(volume); - media.setVolume(volume); - return false; - }); +var _document2 = _interopRequireDefault(_document); - // MUTE button - mute.find('button').click(function () { - media.setMuted(!media.muted); - }); +var _mejs = _dereq_(6); - //Keyboard input - mute.find('button').bind('focus', function () { - volumeSlider.show(); - }); +var _mejs2 = _interopRequireDefault(_mejs); - // listen for volume change events from other sources - media.addEventListener('volumechange', function (e) { - if (!mouseIsDown) { - if (media.muted) { - positionVolumeHandle(0); - mute.removeClass('mejs-mute').addClass('mejs-unmute'); - } else { - positionVolumeHandle(media.volume); - mute.removeClass('mejs-unmute').addClass('mejs-mute'); - } - } - updateVolumeSlider(e); - }, false); +var _renderer = _dereq_(7); - // mutes the media and sets the volume icon muted if the initial volume is set to 0 - if (player.options.startVolume === 0) { - media.setMuted(true); - } +var _general = _dereq_(25); - // shim gets the startvolume as a parameter, but we have to set it on the native <video> and <audio> elements - if (media.pluginType === 'native') { - media.setVolume(player.options.startVolume); - } +var _media = _dereq_(26); - t.container.on('controlsresize', function () { - if (media.muted) { - positionVolumeHandle(0); - mute.removeClass('mejs-mute').addClass('mejs-unmute'); - } else { - positionVolumeHandle(media.volume); - mute.removeClass('mejs-unmute').addClass('mejs-mute'); - } - }); - } - }); +var _dom = _dereq_(24); -})(mejs.$); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -(function($) { +var YouTubeApi = { + isIframeStarted: false, - $.extend(mejs.MepDefaults, { - usePluginFullScreen: true, - newWindowCallback: function() { return '';}, - fullscreenText: '' - }); + isIframeLoaded: false, - $.extend(MediaElementPlayer.prototype, { + iframeQueue: [], - isFullScreen: false, + enqueueIframe: function enqueueIframe(settings) { + YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded; - isNativeFullScreen: false, + if (YouTubeApi.isLoaded) { + YouTubeApi.createIframe(settings); + } else { + YouTubeApi.loadIframeApi(); + YouTubeApi.iframeQueue.push(settings); + } + }, - isInIframe: false, - - // Possible modes - // (1) 'native-native' HTML5 video + browser fullscreen (IE10+, etc.) - // (2) 'plugin-native' plugin video + browser fullscreen (fails in some versions of Firefox) - // (3) 'fullwindow' Full window (retains all UI) - // usePluginFullScreen = true - // (4) 'plugin-click' Flash 1 - click through with pointer events - // (5) 'plugin-hover' Flash 2 - hover popup in flash (IE6-8) - fullscreenMode: '', - - buildfullscreen: function(player, controls, layers, media) { - - if (!player.isVideo) - return; - - player.isInIframe = (window.location != window.parent.location); - - // detect on start - media.addEventListener('loadstart', function() { player.detectFullscreenMode(); }); - - // build button - var t = this, - hideTimeout = null, - fullscreenTitle = t.options.fullscreenText ? t.options.fullscreenText : mejs.i18n.t('mejs.fullscreen'), - fullscreenBtn = - $('<div class="mejs-button mejs-fullscreen-button">' + - '<button type="button" aria-controls="' + t.id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '"></button>' + - '</div>') - .appendTo(controls) - .on('click', function() { - - // toggle fullscreen - var isFullScreen = (mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || player.isFullScreen; - - if (isFullScreen) { - player.exitFullScreen(); - } else { - player.enterFullScreen(); - } - }) - .on('mouseover', function() { - - // very old browsers with a plugin - if (t.fullscreenMode == 'plugin-hover') { - if (hideTimeout !== null) { - clearTimeout(hideTimeout); - delete hideTimeout; - } - - var buttonPos = fullscreenBtn.offset(), - containerPos = player.container.offset(); - - media.positionFullscreenButton(buttonPos.left - containerPos.left, buttonPos.top - containerPos.top, true); - } + loadIframeApi: function loadIframeApi() { + if (!YouTubeApi.isIframeStarted) { + (0, _dom.loadScript)('https://www.youtube.com/player_api'); + YouTubeApi.isIframeStarted = true; + } + }, - }) - .on('mouseout', function() { + iFrameReady: function iFrameReady() { - if (t.fullscreenMode == 'plugin-hover') { - if (hideTimeout !== null) { - clearTimeout(hideTimeout); - delete hideTimeout; - } - - hideTimeout = setTimeout(function() { - media.hideFullscreenButton(); - }, 1500); - } + YouTubeApi.isLoaded = true; + YouTubeApi.isIframeLoaded = true; - }); + while (YouTubeApi.iframeQueue.length > 0) { + var settings = YouTubeApi.iframeQueue.pop(); + YouTubeApi.createIframe(settings); + } + }, - + createIframe: function createIframe(settings) { + return new YT.Player(settings.containerId, settings); + }, - player.fullscreenBtn = fullscreenBtn; + getYouTubeId: function getYouTubeId(url) { - t.globalBind('keydown',function (e) { - if (e.keyCode == 27 && ((mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || t.isFullScreen)) { - player.exitFullScreen(); - } - }); - - t.normalHeight = 0; - t.normalWidth = 0; - - // setup native fullscreen event - if (mejs.MediaFeatures.hasTrueNativeFullScreen) { - - // chrome doesn't alays fire this in an iframe - var fullscreenChanged = function(e) { - if (player.isFullScreen) { - if (mejs.MediaFeatures.isFullScreen()) { - player.isNativeFullScreen = true; - // reset the controls once we are fully in full screen - player.setControlsSize(); - } else { - player.isNativeFullScreen = false; - // when a user presses ESC - // make sure to put the player back into place - player.exitFullScreen(); - } - } - }; + var youTubeId = ''; - player.globalBind(mejs.MediaFeatures.fullScreenEventName, fullscreenChanged); - } + if (url.indexOf('?') > 0) { + youTubeId = YouTubeApi.getYouTubeIdFromParam(url); - }, - - detectFullscreenMode: function() { - - var t = this, - mode = '', - features = mejs.MediaFeatures; - - if (features.hasTrueNativeFullScreen && t.media.pluginType === 'native') { - mode = 'native-native'; - } else if (features.hasTrueNativeFullScreen && t.media.pluginType !== 'native' && !features.hasFirefoxPluginMovingProblem) { - mode = 'plugin-native'; - } else if (t.usePluginFullScreen) { - if (mejs.MediaFeatures.supportsPointerEvents) { - mode = 'plugin-click'; - // this needs some special setup - t.createPluginClickThrough(); - } else { - mode = 'plugin-hover'; - } - - } else { - mode = 'fullwindow'; + if (youTubeId === '') { + youTubeId = YouTubeApi.getYouTubeIdFromUrl(url); } - - - t.fullscreenMode = mode; - return mode; - }, - - isPluginClickThroughCreated: false, - - createPluginClickThrough: function() { - - var t = this; - - // don't build twice - if (t.isPluginClickThroughCreated) { - return; - } - - // allows clicking through the fullscreen button and controls down directly to Flash - - /* - When a user puts his mouse over the fullscreen button, we disable the controls so that mouse events can go down to flash (pointer-events) - We then put a divs over the video and on either side of the fullscreen button - to capture mouse movement and restore the controls once the mouse moves outside of the fullscreen button - */ - - var fullscreenIsDisabled = false, - restoreControls = function() { - if (fullscreenIsDisabled) { - // hide the hovers - for (var i in hoverDivs) { - hoverDivs[i].hide(); - } + } else { + youTubeId = YouTubeApi.getYouTubeIdFromUrl(url); + } - // restore the control bar - t.fullscreenBtn.css('pointer-events', ''); - t.controls.css('pointer-events', ''); + return youTubeId; + }, - // prevent clicks from pausing video - t.media.removeEventListener('click', t.clickToPlayPauseCallback); + getYouTubeIdFromParam: function getYouTubeIdFromParam(url) { - // store for later - fullscreenIsDisabled = false; - } - }, - hoverDivs = {}, - hoverDivNames = ['top', 'left', 'right', 'bottom'], - i, len, - positionHoverDivs = function() { - var fullScreenBtnOffsetLeft = fullscreenBtn.offset().left - t.container.offset().left, - fullScreenBtnOffsetTop = fullscreenBtn.offset().top - t.container.offset().top, - fullScreenBtnWidth = fullscreenBtn.outerWidth(true), - fullScreenBtnHeight = fullscreenBtn.outerHeight(true), - containerWidth = t.container.width(), - containerHeight = t.container.height(); - - for (i in hoverDivs) { - hoverDivs[i].css({position: 'absolute', top: 0, left: 0}); //, backgroundColor: '#f00'}); - } + if (url === undefined || url === null || !url.trim().length) { + return null; + } - // over video, but not controls - hoverDivs['top'] - .width( containerWidth ) - .height( fullScreenBtnOffsetTop ); - - // over controls, but not the fullscreen button - hoverDivs['left'] - .width( fullScreenBtnOffsetLeft ) - .height( fullScreenBtnHeight ) - .css({top: fullScreenBtnOffsetTop}); - - // after the fullscreen button - hoverDivs['right'] - .width( containerWidth - fullScreenBtnOffsetLeft - fullScreenBtnWidth ) - .height( fullScreenBtnHeight ) - .css({top: fullScreenBtnOffsetTop, - left: fullScreenBtnOffsetLeft + fullScreenBtnWidth}); - - // under the fullscreen button - hoverDivs['bottom'] - .width( containerWidth ) - .height( containerHeight - fullScreenBtnHeight - fullScreenBtnOffsetTop ) - .css({top: fullScreenBtnOffsetTop + fullScreenBtnHeight}); - }; + var parts = url.split('?'), + parameters = parts[1].split('&'); - t.globalBind('resize', function() { - positionHoverDivs(); - }); + var youTubeId = ''; - for (i = 0, len = hoverDivNames.length; i < len; i++) { - hoverDivs[hoverDivNames[i]] = $('<div class="mejs-fullscreen-hover" />').appendTo(t.container).mouseover(restoreControls).hide(); + for (var i = 0, total = parameters.length; i < total; i++) { + var paramParts = parameters[i].split('='); + if (paramParts[0] === 'v') { + youTubeId = paramParts[1]; + break; } + } - // on hover, kill the fullscreen button's HTML handling, allowing clicks down to Flash - fullscreenBtn.on('mouseover',function() { + return youTubeId; + }, - if (!t.isFullScreen) { + getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) { - var buttonPos = fullscreenBtn.offset(), - containerPos = player.container.offset(); + if (url === undefined || url === null || !url.trim().length) { + return null; + } - // move the button in Flash into place - media.positionFullscreenButton(buttonPos.left - containerPos.left, buttonPos.top - containerPos.top, false); + var parts = url.split('?'); + url = parts[0]; + return url.substring(url.lastIndexOf('/') + 1); + }, - // allows click through - t.fullscreenBtn.css('pointer-events', 'none'); - t.controls.css('pointer-events', 'none'); + getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) { + if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) { + return url; + } - // restore click-to-play - t.media.addEventListener('click', t.clickToPlayPauseCallback); + var parts = url.split('/'); + parts[2] = parts[2].replace('.com', '-nocookie.com'); + return parts.join('/'); + } +}; - // show the divs that will restore things - for (i in hoverDivs) { - hoverDivs[i].show(); +var YouTubeIframeRenderer = { + name: 'youtube_iframe', + + options: { + prefix: 'youtube_iframe', + + youtube: { + autoplay: 0, + controls: 0, + disablekb: 1, + end: 0, + loop: 0, + modestbranding: 0, + playsinline: 0, + rel: 0, + showinfo: 0, + start: 0, + iv_load_policy: 3, + + nocookie: false + } + }, + + canPlayType: function canPlayType(type) { + return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase()); + }, + + create: function create(mediaElement, options, mediaFiles) { + + var youtube = {}, + apiStack = [], + readyState = 4; + + var youTubeApi = null, + paused = true, + ended = false, + youTubeIframe = null, + volume = 1; + + youtube.options = options; + youtube.id = mediaElement.id + '_' + options.prefix; + youtube.mediaElement = mediaElement; + + var props = _mejs2.default.html5media.properties, + assignGettersSetters = function assignGettersSetters(propName) { + + var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); + + youtube['get' + capName] = function () { + if (youTubeApi !== null) { + var value = null; + + switch (propName) { + case 'currentTime': + return youTubeApi.getCurrentTime(); + case 'duration': + return youTubeApi.getDuration(); + case 'volume': + volume = youTubeApi.getVolume() / 100; + return volume; + case 'paused': + return paused; + case 'ended': + return ended; + case 'muted': + return youTubeApi.isMuted(); + case 'buffered': + var percentLoaded = youTubeApi.getVideoLoadedFraction(), + duration = youTubeApi.getDuration(); + return { + start: function start() { + return 0; + }, + end: function end() { + return percentLoaded * duration; + }, + length: 1 + }; + case 'src': + return youTubeApi.getVideoUrl(); + case 'readyState': + return readyState; } - positionHoverDivs(); + return value; + } else { + return null; + } + }; + + youtube['set' + capName] = function (value) { + if (youTubeApi !== null) { + switch (propName) { + case 'src': + var url = typeof value === 'string' ? value : value[0].src, + _videoId = YouTubeApi.getYouTubeId(url); - fullscreenIsDisabled = true; + if (mediaElement.originalNode.autoplay) { + youTubeApi.loadVideoById(_videoId); + } else { + youTubeApi.cueVideoById(_videoId); + } + break; + case 'currentTime': + youTubeApi.seekTo(value); + break; + case 'muted': + if (value) { + youTubeApi.mute(); + } else { + youTubeApi.unMute(); + } + setTimeout(function () { + var event = (0, _general.createEvent)('volumechange', youtube); + mediaElement.dispatchEvent(event); + }, 50); + break; + case 'volume': + volume = value; + youTubeApi.setVolume(value * 100); + setTimeout(function () { + var event = (0, _general.createEvent)('volumechange', youtube); + mediaElement.dispatchEvent(event); + }, 50); + break; + case 'readyState': + var event = (0, _general.createEvent)('canplay', youtube); + mediaElement.dispatchEvent(event); + break; + default: + + break; + } + } else { + apiStack.push({ type: 'set', propName: propName, value: value }); } + }; + }; - }); + for (var i = 0, total = props.length; i < total; i++) { + assignGettersSetters(props[i]); + } - // restore controls anytime the user enters or leaves fullscreen - media.addEventListener('fullscreenchange', function(e) { - t.isFullScreen = !t.isFullScreen; - // don't allow plugin click to pause video - messes with - // plugin's controls - if (t.isFullScreen) { - t.media.removeEventListener('click', t.clickToPlayPauseCallback); + var methods = _mejs2.default.html5media.methods, + assignMethods = function assignMethods(methodName) { + youtube[methodName] = function () { + if (youTubeApi !== null) { + switch (methodName) { + case 'play': + paused = false; + return youTubeApi.playVideo(); + case 'pause': + paused = true; + return youTubeApi.pauseVideo(); + case 'load': + return null; + } } else { - t.media.addEventListener('click', t.clickToPlayPauseCallback); + apiStack.push({ type: 'call', methodName: methodName }); } - restoreControls(); - }); + }; + }; + + for (var _i = 0, _total = methods.length; _i < _total; _i++) { + assignMethods(methods[_i]); + } + var youtubeContainer = _document2.default.createElement('div'); + youtubeContainer.id = youtube.id; - // the mouseout event doesn't work on the fullscren button, because we already killed the pointer-events - // so we use the document.mousemove event to restore controls when the mouse moves outside the fullscreen button + if (youtube.options.youtube.nocookie) { + mediaElement.originalNode.setAttribute('src', YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src)); + } - t.globalBind('mousemove', function(e) { + mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode); + mediaElement.originalNode.style.display = 'none'; + + var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio', + height = isAudio ? '1' : mediaElement.originalNode.height, + width = isAudio ? '1' : mediaElement.originalNode.width, + videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src), + youtubeSettings = { + id: youtube.id, + containerId: youtubeContainer.id, + videoId: videoId, + height: height, + width: width, + playerVars: Object.assign({ + controls: 0, + rel: 0, + disablekb: 1, + showinfo: 0, + modestbranding: 0, + html5: 1, + playsinline: 0, + start: 0, + end: 0, + iv_load_policy: 3 + }, youtube.options.youtube), + origin: _window2.default.location.host, + events: { + onReady: function onReady(e) { + mediaElement.youTubeApi = youTubeApi = e.target; + mediaElement.youTubeState = { + paused: true, + ended: false + }; - // if the mouse is anywhere but the fullsceen button, then restore it all - if (fullscreenIsDisabled) { + if (apiStack.length) { + for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { - var fullscreenBtnPos = fullscreenBtn.offset(); + var stackItem = apiStack[_i2]; + if (stackItem.type === 'set') { + var propName = stackItem.propName, + capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); - if (e.pageY < fullscreenBtnPos.top || e.pageY > fullscreenBtnPos.top + fullscreenBtn.outerHeight(true) || - e.pageX < fullscreenBtnPos.left || e.pageX > fullscreenBtnPos.left + fullscreenBtn.outerWidth(true) - ) { + youtube['set' + capName](stackItem.value); + } else if (stackItem.type === 'call') { + youtube[stackItem.methodName](); + } + } + } - fullscreenBtn.css('pointer-events', ''); - t.controls.css('pointer-events', ''); + youTubeIframe = youTubeApi.getIframe(); - fullscreenIsDisabled = false; + if (mediaElement.originalNode.getAttribute('muted')) { + youTubeApi.mute(); } - } - }); + var events = ['mouseover', 'mouseout'], + assignEvents = function assignEvents(e) { + var newEvent = (0, _general.createEvent)(e.type, youtube); + mediaElement.dispatchEvent(newEvent); + }; - t.isPluginClickThroughCreated = true; - }, + for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { + youTubeIframe.addEventListener(events[_i3], assignEvents, false); + } - cleanfullscreen: function(player) { - player.exitFullScreen(); - }, + var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay']; - containerSizeTimeout: null, + for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) { + var event = (0, _general.createEvent)(initEvents[_i4], youtube); + mediaElement.dispatchEvent(event); + } + }, + onStateChange: function onStateChange(e) { + var events = []; + + switch (e.data) { + case -1: + events = ['loadedmetadata']; + paused = true; + ended = false; + break; + case 0: + events = ['ended']; + paused = false; + ended = !youtube.options.youtube.loop; + if (!youtube.options.youtube.loop) { + youtube.stopInterval(); + } + break; + case 1: + events = ['play', 'playing']; + paused = false; + ended = false; + youtube.startInterval(); + break; + case 2: + events = ['pause']; + paused = true; + ended = false; + youtube.stopInterval(); + break; + case 3: + events = ['progress']; + ended = false; + break; + case 5: + events = ['loadeddata', 'loadedmetadata', 'canplay']; + paused = true; + ended = false; + break; + } - enterFullScreen: function() { + for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) { + var event = (0, _general.createEvent)(events[_i5], youtube); + mediaElement.dispatchEvent(event); + } + }, + onError: function onError(e) { + var event = (0, _general.createEvent)('error', youtube); + event.data = e.data; + mediaElement.dispatchEvent(event); + } + } + }; - var t = this; + if (isAudio) { + youtubeSettings.playerVars.playsinline = 1; + } - if (mejs.MediaFeatures.isiOS && mejs.MediaFeatures.hasiOSFullScreen && typeof t.media.webkitEnterFullscreen === 'function') { - t.media.webkitEnterFullscreen(); - return; + if (mediaElement.originalNode.autoplay) { + youtubeSettings.playerVars.autoplay = 1; + } + + if (mediaElement.originalNode.loop) { + youtubeSettings.playerVars.loop = 1; + } + + YouTubeApi.enqueueIframe(youtubeSettings); + + youtube.onEvent = function (eventName, player, _youTubeState) { + if (_youTubeState !== null && _youTubeState !== undefined) { + mediaElement.youTubeState = _youTubeState; } + }; - // set it to not show scroll bars so 100% will work - $(document.documentElement).addClass('mejs-fullscreen'); + youtube.setSize = function (width, height) { + if (youTubeApi !== null) { + youTubeApi.setSize(width, height); + } + }; + youtube.hide = function () { + youtube.stopInterval(); + youtube.pause(); + if (youTubeIframe) { + youTubeIframe.style.display = 'none'; + } + }; + youtube.show = function () { + if (youTubeIframe) { + youTubeIframe.style.display = ''; + } + }; + youtube.destroy = function () { + youTubeApi.destroy(); + }; + youtube.interval = null; - // store sizing - t.normalHeight = t.container.height(); - t.normalWidth = t.container.width(); + youtube.startInterval = function () { + youtube.interval = setInterval(function () { + var event = (0, _general.createEvent)('timeupdate', youtube); + mediaElement.dispatchEvent(event); + }, 250); + }; + youtube.stopInterval = function () { + if (youtube.interval) { + clearInterval(youtube.interval); + } + }; + return youtube; + } +}; +if (_window2.default.postMessage && _typeof(_window2.default.addEventListener)) { - // attempt to do true fullscreen - if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') { + _window2.default.onYouTubePlayerAPIReady = function () { + YouTubeApi.iFrameReady(); + }; - mejs.MediaFeatures.requestFullScreen(t.container[0]); - //return; + _media.typeChecks.push(function (url) { + return (/\/\/(www\.youtube|youtu\.be)/i.test(url) ? 'video/x-youtube' : null + ); + }); - if (t.isInIframe) { - // sometimes exiting from fullscreen doesn't work - // notably in Chrome <iframe>. Fixed in version 17 - setTimeout(function checkFullscreen() { + _renderer.renderer.add(YouTubeIframeRenderer); +} - if (t.isNativeFullScreen) { - var percentErrorMargin = 0.002, // 0.2% - windowWidth = $(window).width(), - screenWidth = screen.width, - absDiff = Math.abs(screenWidth - windowWidth), - marginError = screenWidth * percentErrorMargin; +},{"2":2,"24":24,"25":25,"26":26,"3":3,"6":6,"7":7}],23:[function(_dereq_,module,exports){ +'use strict'; - // check if the video is suddenly not really fullscreen - if (absDiff > marginError) { - // manually exit - t.exitFullScreen(); - } else { - // test again - setTimeout(checkFullscreen, 500); - } - } - - }, 1000); - } - - } else if (t.fullscreeMode == 'fullwindow') { - // move into position - - } - - // make full size - t.container - .addClass('mejs-container-fullscreen') - .width('100%') - .height('100%'); - //.css({position: 'fixed', left: 0, top: 0, right: 0, bottom: 0, overflow: 'hidden', width: '100%', height: '100%', 'z-index': 1000}); - - // Only needed for safari 5.1 native full screen, can cause display issues elsewhere - // Actually, it seems to be needed for IE8, too - //if (mejs.MediaFeatures.hasTrueNativeFullScreen) { - t.containerSizeTimeout = setTimeout(function() { - t.container.css({width: '100%', height: '100%'}); - t.setControlsSize(); - }, 500); - //} +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined; - if (t.media.pluginType === 'native') { - t.$media - .width('100%') - .height('100%'); - } else { - t.container.find('.mejs-shim') - .width('100%') - .height('100%'); - - setTimeout(function() { - var win = $(window), - winW = win.width(), - winH = win.height(); - - t.media.setVideoSize(winW,winH); - }, 500); - } +var _window = _dereq_(3); - t.layers.children('div') - .width('100%') - .height('100%'); +var _window2 = _interopRequireDefault(_window); - if (t.fullscreenBtn) { - t.fullscreenBtn - .removeClass('mejs-fullscreen') - .addClass('mejs-unfullscreen'); - } +var _document = _dereq_(2); - t.setControlsSize(); - t.isFullScreen = true; +var _document2 = _interopRequireDefault(_document); - var zoomFactor = Math.min(screen.width / t.width, screen.height / t.height); - t.container.find('.mejs-captions-text').css('font-size', zoomFactor * 100 + '%'); - t.container.find('.mejs-captions-text').css('line-height', 'normal'); - t.container.find('.mejs-captions-position').css('bottom', '45px'); +var _mejs = _dereq_(6); - t.container.trigger('enteredfullscreen'); - }, +var _mejs2 = _interopRequireDefault(_mejs); - exitFullScreen: function() { +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - var t = this; +var NAV = exports.NAV = _window2.default.navigator; +var UA = exports.UA = NAV.userAgent.toLowerCase(); +var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA); +var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA); +var IS_IOS = exports.IS_IOS = IS_IPHONE || IS_IPAD; +var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA); +var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName); +var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default); +var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA); +var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA); +var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME; +var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA); +var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default; +var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function () { + var element = _document2.default.createElement('x'), + documentElement = _document2.default.documentElement, + getComputedStyle = _window2.default.getComputedStyle; - // Prevent container from attempting to stretch a second time - clearTimeout(t.containerSizeTimeout); + if (!('pointerEvents' in element.style)) { + return false; + } - // firefox can't adjust plugins - /* - if (t.media.pluginType !== 'native' && mejs.MediaFeatures.isFirefox) { - t.media.setFullscreen(false); - //player.isFullScreen = false; - return; - } - */ + element.style.pointerEvents = 'auto'; + element.style.pointerEvents = 'x'; + documentElement.appendChild(element); + var supports = getComputedStyle && getComputedStyle(element, '').pointerEvents === 'auto'; + element.remove(); + return !!supports; +}(); - // come out of native fullscreen - if (mejs.MediaFeatures.hasTrueNativeFullScreen && (mejs.MediaFeatures.isFullScreen() || t.isFullScreen)) { - mejs.MediaFeatures.cancelFullScreen(); - } +var html5Elements = ['source', 'track', 'audio', 'video']; +var video = void 0; - // restore scroll bars to document - $(document.documentElement).removeClass('mejs-fullscreen'); +for (var i = 0, total = html5Elements.length; i < total; i++) { + video = _document2.default.createElement(html5Elements[i]); +} - t.container - .removeClass('mejs-container-fullscreen') - .width(t.normalWidth) - .height(t.normalHeight); +var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA); - if (t.media.pluginType === 'native') { - t.$media - .width(t.normalWidth) - .height(t.normalHeight); - } else { - t.container.find('.mejs-shim') - .width(t.normalWidth) - .height(t.normalHeight); +var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined; - t.media.setVideoSize(t.normalWidth, t.normalHeight); - } +var hasNativeFullscreen = video.requestFullscreen !== undefined; - t.layers.children('div') - .width(t.normalWidth) - .height(t.normalHeight); +if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) { + hasNativeFullscreen = false; + hasiOSFullScreen = false; +} - t.fullscreenBtn - .removeClass('mejs-unfullscreen') - .addClass('mejs-fullscreen'); +var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined; +var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined; +var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined; +var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen; +var nativeFullScreenEnabled = hasTrueNativeFullScreen; +var fullScreenEventName = ''; +var isFullScreen = void 0, + requestFullScreen = void 0, + cancelFullScreen = void 0; + +if (hasMozNativeFullScreen) { + nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled; +} else if (hasMsNativeFullScreen) { + nativeFullScreenEnabled = _document2.default.msFullscreenEnabled; +} - t.setControlsSize(); - t.isFullScreen = false; +if (IS_CHROME) { + hasiOSFullScreen = false; +} - t.container.find('.mejs-captions-text').css('font-size',''); - t.container.find('.mejs-captions-text').css('line-height', ''); - t.container.find('.mejs-captions-position').css('bottom', ''); +if (hasTrueNativeFullScreen) { + if (hasWebkitNativeFullScreen) { + fullScreenEventName = 'webkitfullscreenchange'; + } else if (hasMozNativeFullScreen) { + fullScreenEventName = 'mozfullscreenchange'; + } else if (hasMsNativeFullScreen) { + fullScreenEventName = 'MSFullscreenChange'; + } - t.container.trigger('exitedfullscreen'); + exports.isFullScreen = isFullScreen = function isFullScreen() { + if (hasMozNativeFullScreen) { + return _document2.default.mozFullScreen; + } else if (hasWebkitNativeFullScreen) { + return _document2.default.webkitIsFullScreen; + } else if (hasMsNativeFullScreen) { + return _document2.default.msFullscreenElement !== null; } - }); + }; -})(mejs.$); + exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) { + if (hasWebkitNativeFullScreen) { + el.webkitRequestFullScreen(); + } else if (hasMozNativeFullScreen) { + el.mozRequestFullScreen(); + } else if (hasMsNativeFullScreen) { + el.msRequestFullscreen(); + } + }; -(function($) { + exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() { + if (hasWebkitNativeFullScreen) { + _document2.default.webkitCancelFullScreen(); + } else if (hasMozNativeFullScreen) { + _document2.default.mozCancelFullScreen(); + } else if (hasMsNativeFullScreen) { + _document2.default.msExitFullscreen(); + } + }; +} - // Speed - $.extend(mejs.MepDefaults, { +var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen; +var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen; +var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen; +var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen; +var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen; +var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen; +var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled; +var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName; +exports.isFullScreen = isFullScreen; +exports.requestFullScreen = requestFullScreen; +exports.cancelFullScreen = cancelFullScreen; + + +_mejs2.default.Features = _mejs2.default.Features || {}; +_mejs2.default.Features.isiPad = IS_IPAD; +_mejs2.default.Features.isiPhone = IS_IPHONE; +_mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad; +_mejs2.default.Features.isAndroid = IS_ANDROID; +_mejs2.default.Features.isIE = IS_IE; +_mejs2.default.Features.isEdge = IS_EDGE; +_mejs2.default.Features.isChrome = IS_CHROME; +_mejs2.default.Features.isFirefox = IS_FIREFOX; +_mejs2.default.Features.isSafari = IS_SAFARI; +_mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID; +_mejs2.default.Features.hasMSE = HAS_MSE; +_mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS; +_mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS; +_mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN; +_mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN; +_mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN; +_mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN; +_mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN; +_mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN; +_mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED; +_mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME; +_mejs2.default.Features.isFullScreen = isFullScreen; +_mejs2.default.Features.requestFullScreen = requestFullScreen; +_mejs2.default.Features.cancelFullScreen = cancelFullScreen; + +},{"2":2,"3":3,"6":6}],24:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.removeClass = exports.addClass = exports.hasClass = undefined; +exports.loadScript = loadScript; +exports.offset = offset; +exports.toggleClass = toggleClass; +exports.fadeOut = fadeOut; +exports.fadeIn = fadeIn; +exports.siblings = siblings; +exports.visible = visible; +exports.ajax = ajax; - // We also support to pass object like this: - // [{name: 'Slow', value: '0.75'}, {name: 'Normal', value: '1.00'}, ...] - speeds: ['2.00', '1.50', '1.25', '1.00', '0.75'], +var _window = _dereq_(3); - defaultSpeed: '1.00', - - speedChar: 'x' +var _window2 = _interopRequireDefault(_window); - }); +var _document = _dereq_(2); - $.extend(MediaElementPlayer.prototype, { +var _document2 = _interopRequireDefault(_document); - buildspeed: function(player, controls, layers, media) { - var t = this; +var _mejs = _dereq_(6); - if (t.media.pluginType == 'native') { - var - speedButton = null, - speedSelector = null, - playbackSpeed = null, - inputId = null; - - var speeds = []; - var defaultInArray = false; - for (var i=0, len=t.options.speeds.length; i < len; i++) { - var s = t.options.speeds[i]; - if (typeof(s) === 'string'){ - speeds.push({ - name: s + t.options.speedChar, - value: s - }); - if(s === t.options.defaultSpeed) { - defaultInArray = true; - } - } - else { - speeds.push(s); - if(s.value === t.options.defaultSpeed) { - defaultInArray = true; - } - } - } +var _mejs2 = _interopRequireDefault(_mejs); - if (!defaultInArray) { - speeds.push({ - name: t.options.defaultSpeed + t.options.speedChar, - value: t.options.defaultSpeed - }); - } +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - speeds.sort(function(a, b) { - return parseFloat(b.value) - parseFloat(a.value); - }); +function TinyPromise(handler) { + var thens = []; + var state = -1; + var result = void 0; + var then = void 0; - var getSpeedNameFromValue = function(value) { - for(i=0,len=speeds.length; i <len; i++) { - if (speeds[i].value === value) { - return speeds[i].name; - } - } - }; + function done(value) { + for (result = value; then = thens.shift();) { + then[state] && then[state](result); + } + } - var html = '<div class="mejs-button mejs-speed-button">' + - '<button type="button">' + getSpeedNameFromValue(t.options.defaultSpeed) + '</button>' + - '<div class="mejs-speed-selector">' + - '<ul>'; - - for (i = 0, il = speeds.length; i<il; i++) { - inputId = t.id + '-speed-' + speeds[i].value; - html += '<li>' + - '<input type="radio" name="speed" ' + - 'value="' + speeds[i].value + '" ' + - 'id="' + inputId + '" ' + - (speeds[i].value === t.options.defaultSpeed ? ' checked' : '') + - ' />' + - '<label for="' + inputId + '" ' + - (speeds[i].value === t.options.defaultSpeed ? ' class="mejs-speed-selected"' : '') + - '>' + speeds[i].name + '</label>' + - '</li>'; - } - html += '</ul></div></div>'; - - speedButton = $(html).appendTo(controls); - speedSelector = speedButton.find('.mejs-speed-selector'); - - playbackSpeed = t.options.defaultSpeed; - - media.addEventListener('loadedmetadata', function(e) { - if (playbackSpeed) { - media.playbackRate = parseFloat(playbackSpeed); - } - }, true); - - speedSelector - .on('click', 'input[type="radio"]', function() { - var newSpeed = $(this).attr('value'); - playbackSpeed = newSpeed; - media.playbackRate = parseFloat(newSpeed); - speedButton.find('button').html(getSpeedNameFromValue(newSpeed)); - speedButton.find('.mejs-speed-selected').removeClass('mejs-speed-selected'); - speedButton.find('input[type="radio"]:checked').next().addClass('mejs-speed-selected'); - }); - speedButton - .one( 'mouseenter focusin', function() { - speedSelector - .height( - speedButton.find('.mejs-speed-selector ul').outerHeight(true) + - speedButton.find('.mejs-speed-translations').outerHeight(true)) - .css('top', (-1 * speedSelector.height()) + 'px'); - }); + handler(function (value) { + return done(value, state = 0); + }, function (value) { + return done(value, state = 1); + }); + + return { + then: function then() { + for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; } + + ~state ? args[state] && args[state](result) : thens.push(args); } + }; +} + +function loadScript(url) { + return TinyPromise(function (resolve, reject) { + var script = _document2.default.createElement('script'); + script.src = url; + script.async = true; + script.onload = function () { + script.remove(); + resolve(); + }; + script.onerror = function () { + script.remove(); + reject(); + }; + _document2.default.head.appendChild(script); }); +} -})(mejs.$); +function offset(el) { + var rect = el.getBoundingClientRect(), + scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft, + scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop; + return { top: rect.top + scrollTop, left: rect.left + scrollLeft }; +} -(function($) { +var hasClassMethod = void 0, + addClassMethod = void 0, + removeClassMethod = void 0; - // add extra default options - $.extend(mejs.MepDefaults, { - // this will automatically turn on a <track> - startLanguage: '', +if ('classList' in _document2.default.documentElement) { + hasClassMethod = function hasClassMethod(el, className) { + return el.classList !== undefined && el.classList.contains(className); + }; + addClassMethod = function addClassMethod(el, className) { + return el.classList.add(className); + }; + removeClassMethod = function removeClassMethod(el, className) { + return el.classList.remove(className); + }; +} else { + hasClassMethod = function hasClassMethod(el, className) { + return new RegExp('\\b' + className + '\\b').test(el.className); + }; + addClassMethod = function addClassMethod(el, className) { + if (!hasClass(el, className)) { + el.className += ' ' + className; + } + }; + removeClassMethod = function removeClassMethod(el, className) { + el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), ''); + }; +} - tracksText: '', +var hasClass = exports.hasClass = hasClassMethod; +var addClass = exports.addClass = addClassMethod; +var removeClass = exports.removeClass = removeClassMethod; - // By default, no WAI-ARIA live region - don't make a - // screen reader speak captions over an audio track. - tracksAriaLive: false, +function toggleClass(el, className) { + hasClass(el, className) ? removeClass(el, className) : addClass(el, className); +} - // option to remove the [cc] button when no <track kind="subtitles"> are present - hideCaptionsButtonWhenEmpty: true, +function fadeOut(el) { + var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; + var callback = arguments[2]; - // If true and we only have one track, change captions to popup - toggleCaptionsButtonWhenOnlyOne: false, + if (!el.style.opacity) { + el.style.opacity = 1; + } - // #id or .class - slidesSelector: '' + var start = null; + _window2.default.requestAnimationFrame(function animate(timestamp) { + start = start || timestamp; + var progress = timestamp - start; + var opacity = parseFloat(1 - progress / duration, 2); + el.style.opacity = opacity < 0 ? 0 : opacity; + if (progress > duration) { + if (callback && typeof callback === 'function') { + callback(); + } + } else { + _window2.default.requestAnimationFrame(animate); + } }); +} - $.extend(MediaElementPlayer.prototype, { +function fadeIn(el) { + var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400; + var callback = arguments[2]; - hasChapters: false, + if (!el.style.opacity) { + el.style.opacity = 0; + } - cleartracks: function(player, controls, layers, media){ - if(player) { - if(player.captions) player.captions.remove(); - if(player.chapters) player.chapters.remove(); - if(player.captionsText) player.captionsText.remove(); - if(player.captionsButton) player.captionsButton.remove(); + var start = null; + _window2.default.requestAnimationFrame(function animate(timestamp) { + start = start || timestamp; + var progress = timestamp - start; + var opacity = parseFloat(progress / duration, 2); + el.style.opacity = opacity > 1 ? 1 : opacity; + if (progress > duration) { + if (callback && typeof callback === 'function') { + callback(); } - }, - buildtracks: function(player, controls, layers, media) { - if (player.tracks.length === 0) - return; + } else { + _window2.default.requestAnimationFrame(animate); + } + }); +} - var t = this, - attr = t.options.tracksAriaLive ? - 'role="log" aria-live="assertive" aria-atomic="false"' : '', - tracksTitle = t.options.tracksText ? t.options.tracksText : mejs.i18n.t('mejs.captions-subtitles'), - i, - kind; - - if (t.domNode.textTracks) { // if browser will do native captions, prefer mejs captions, loop through tracks and hide - for (i = t.domNode.textTracks.length - 1; i >= 0; i--) { - t.domNode.textTracks[i].mode = "hidden"; - } - } - t.cleartracks(player, controls, layers, media); - player.chapters = - $('<div class="mejs-chapters mejs-layer"></div>') - .prependTo(layers).hide(); - player.captions = - $('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position mejs-captions-position-hover" ' + - attr + '><span class="mejs-captions-text"></span></div></div>') - .prependTo(layers).hide(); - player.captionsText = player.captions.find('.mejs-captions-text'); - player.captionsButton = - $('<div class="mejs-button mejs-captions-button">'+ - '<button type="button" aria-controls="' + t.id + '" title="' + tracksTitle + '" aria-label="' + tracksTitle + '"></button>'+ - '<div class="mejs-captions-selector">'+ - '<ul>'+ - '<li>'+ - '<input type="radio" name="' + player.id + '_captions" id="' + player.id + '_captions_none" value="none" checked="checked" />' + - '<label for="' + player.id + '_captions_none">' + mejs.i18n.t('mejs.none') +'</label>'+ - '</li>' + - '</ul>'+ - '</div>'+ - '</div>') - .appendTo(controls); - - - var subtitleCount = 0; - for (i=0; i<player.tracks.length; i++) { - kind = player.tracks[i].kind; - if (kind === 'subtitles' || kind === 'captions') { - subtitleCount++; - } - } - - // if only one language then just make the button a toggle - if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount == 1){ - // click - player.captionsButton.on('click',function() { - if (player.selectedTrack === null) { - lang = player.tracks[0].srclang; - } else { - lang = 'none'; - } - player.setTrack(lang); - }); - } else { - // hover or keyboard focus - player.captionsButton.on( 'mouseenter focusin', function() { - $(this).find('.mejs-captions-selector').removeClass('mejs-offscreen'); - }) - - // handle clicks to the language radio buttons - .on('click','input[type=radio]',function() { - lang = this.value; - player.setTrack(lang); - }); +function siblings(el, filter) { + var siblings = []; + el = el.parentNode.firstChild; + do { + if (!filter || filter(el)) { + siblings.push(el); + } + } while (el = el.nextSibling); + return siblings; +} - player.captionsButton.on( 'mouseleave focusout', function() { - $(this).find(".mejs-captions-selector").addClass("mejs-offscreen"); - }); +function visible(elem) { + return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); +} - } +function ajax(url, dataType, success, error) { + var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); + + var type = 'application/x-www-form-urlencoded; charset=UTF-8', + completed = false, + accept = '*/'.concat('*'); + + switch (dataType) { + case 'text': + type = 'text/plain'; + break; + case 'json': + type = 'application/json, text/javascript'; + break; + case 'html': + type = 'text/html'; + break; + case 'xml': + type = 'application/xml, text/xml'; + break; + } - if (!player.options.alwaysShowControls) { - // move with controls - player.container - .bind('controlsshown', function () { - // push captions above controls - player.container.find('.mejs-captions-position').addClass('mejs-captions-position-hover'); + if (type !== 'application/x-www-form-urlencoded') { + accept = type + ', */*; q=0.01'; + } - }) - .bind('controlshidden', function () { - if (!media.paused) { - // move back to normal place - player.container.find('.mejs-captions-position').removeClass('mejs-captions-position-hover'); - } - }); - } else { - player.container.find('.mejs-captions-position').addClass('mejs-captions-position-hover'); + if (xhr) { + xhr.open('GET', url, true); + xhr.setRequestHeader('Accept', accept); + xhr.onreadystatechange = function () { + if (completed) { + return; } - player.trackToLoad = -1; - player.selectedTrack = null; - player.isLoadingTrack = false; - - // add to list - for (i=0; i<player.tracks.length; i++) { - kind = player.tracks[i].kind; - if (kind === 'subtitles' || kind === 'captions') { - player.addTrackButton(player.tracks[i].srclang, player.tracks[i].label); + if (xhr.readyState === 4) { + if (xhr.status === 200) { + completed = true; + var data = void 0; + switch (dataType) { + case 'json': + data = JSON.parse(xhr.responseText); + break; + case 'xml': + data = xhr.responseXML; + break; + default: + data = xhr.responseText; + break; + } + success(data); + } else if (typeof error === 'function') { + error(xhr.status); } } + }; - // start loading tracks - player.loadNextTrack(); - - media.addEventListener('timeupdate',function() { - player.displayCaptions(); - }, false); - - if (player.options.slidesSelector !== '') { - player.slidesContainer = $(player.options.slidesSelector); - - media.addEventListener('timeupdate',function() { - player.displaySlides(); - }, false); + xhr.send(); + } +} - } +_mejs2.default.Utils = _mejs2.default.Utils || {}; +_mejs2.default.Utils.offset = offset; +_mejs2.default.Utils.hasClass = hasClass; +_mejs2.default.Utils.addClass = addClass; +_mejs2.default.Utils.removeClass = removeClass; +_mejs2.default.Utils.toggleClass = toggleClass; +_mejs2.default.Utils.fadeIn = fadeIn; +_mejs2.default.Utils.fadeOut = fadeOut; +_mejs2.default.Utils.siblings = siblings; +_mejs2.default.Utils.visible = visible; +_mejs2.default.Utils.ajax = ajax; +_mejs2.default.Utils.loadScript = loadScript; + +},{"2":2,"3":3,"6":6}],25:[function(_dereq_,module,exports){ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.escapeHTML = escapeHTML; +exports.debounce = debounce; +exports.isObjectEmpty = isObjectEmpty; +exports.splitEvents = splitEvents; +exports.createEvent = createEvent; +exports.isNodeAfter = isNodeAfter; +exports.isString = isString; - media.addEventListener('loadedmetadata', function() { - player.displayChapters(); - }, false); +var _mejs = _dereq_(6); - player.container.hover( - function () { - // chapters - if (player.hasChapters) { - player.chapters.removeClass('mejs-offscreen'); - player.chapters.fadeIn(200).height(player.chapters.find('.mejs-chapter').outerHeight()); - } - }, - function () { - if (player.hasChapters && !media.paused) { - player.chapters.fadeOut(200, function() { - $(this).addClass('mejs-offscreen'); - $(this).css('display','block'); - }); - } - }); +var _mejs2 = _interopRequireDefault(_mejs); - t.container.on('controlsresize', function() { - t.adjustLanguageBox(); - }); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - // check for autoplay - if (player.node.getAttribute('autoplay') !== null) { - player.chapters.addClass('mejs-offscreen'); - } - }, +function escapeHTML(input) { - setTrack: function(lang){ + if (typeof input !== 'string') { + throw new Error('Argument passed must be a string'); + } - var t = this, - i; + var map = { + '&': '&', + '<': '<', + '>': '>', + '"': '"' + }; - if (lang == 'none') { - t.selectedTrack = null; - t.captionsButton.removeClass('mejs-captions-enabled'); - } else { - for (i=0; i<t.tracks.length; i++) { - if (t.tracks[i].srclang == lang) { - if (t.selectedTrack === null) - t.captionsButton.addClass('mejs-captions-enabled'); - t.selectedTrack = t.tracks[i]; - t.captions.attr('lang', t.selectedTrack.srclang); - t.displayCaptions(); - break; - } - } - } - }, + return input.replace(/[&<>"]/g, function (c) { + return map[c]; + }); +} - loadNextTrack: function() { - var t = this; +function debounce(func, wait) { + var _this = this, + _arguments = arguments; - t.trackToLoad++; - if (t.trackToLoad < t.tracks.length) { - t.isLoadingTrack = true; - t.loadTrack(t.trackToLoad); - } else { - // add done? - t.isLoadingTrack = false; + var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - t.checkForTracks(); - } - }, - loadTrack: function(index){ - var - t = this, - track = t.tracks[index], - after = function() { + if (typeof func !== 'function') { + throw new Error('First argument must be a function'); + } - track.isLoaded = true; + if (typeof wait !== 'number') { + throw new Error('Second argument must be a numeric value'); + } - t.enableTrackButton(track.srclang, track.label); + var timeout = void 0; + return function () { + var context = _this, + args = _arguments; + var later = function later() { + timeout = null; + if (!immediate) { + func.apply(context, args); + } + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); - t.loadNextTrack(); + if (callNow) { + func.apply(context, args); + } + }; +} - }; +function isObjectEmpty(instance) { + return Object.getOwnPropertyNames(instance).length <= 0; +} +function splitEvents(events, id) { + var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/; - if (track.src !== undefined || track.src !== "") { - $.ajax({ - url: track.src, - dataType: "text", - success: function(d) { + var ret = { d: [], w: [] }; + (events || '').split(' ').forEach(function (v) { + var eventName = '' + v + (id ? '.' + id : ''); - // parse the loaded file - if (typeof d == "string" && (/<tt\s+xml/ig).exec(d)) { - track.entries = mejs.TrackFormatParser.dfxp.parse(d); - } else { - track.entries = mejs.TrackFormatParser.webvtt.parse(d); - } + if (eventName.startsWith('.')) { + ret.d.push(eventName); + ret.w.push(eventName); + } else { + ret[rwindow.test(v) ? 'w' : 'd'].push(eventName); + } + }); - after(); + ret.d = ret.d.join(' '); + ret.w = ret.w.join(' '); + return ret; +} - if (track.kind == 'chapters') { - t.media.addEventListener('play', function() { - if (t.media.duration > 0) { - t.displayChapters(track); - } - }, false); - } +function createEvent(eventName, target) { - if (track.kind == 'slides') { - t.setupSlides(track); - } - }, - error: function() { - t.removeTrackButton(track.srclang); - t.loadNextTrack(); - } - }); - } - }, + if (typeof eventName !== 'string') { + throw new Error('Event name must be a string'); + } - enableTrackButton: function(lang, label) { - var t = this; + var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i), + detail = { + target: target + }; - if (label === '') { - label = mejs.language.codes[lang] || lang; - } + if (eventFrags !== null) { + eventName = eventFrags[1]; + detail.namespace = eventFrags[2]; + } - t.captionsButton - .find('input[value=' + lang + ']') - .prop('disabled',false) - .siblings('label') - .html( label ); + return new window.CustomEvent(eventName, { + detail: detail + }); +} - // auto select - if (t.options.startLanguage == lang) { - $('#' + t.id + '_captions_' + lang).prop('checked', true).trigger('click'); - } +function isNodeAfter(sourceNode, targetNode) { - t.adjustLanguageBox(); - }, + return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2); +} - removeTrackButton: function(lang) { - var t = this; +function isString(value) { + return typeof value === 'string'; +} - t.captionsButton.find('input[value=' + lang + ']').closest('li').remove(); +_mejs2.default.Utils = _mejs2.default.Utils || {}; +_mejs2.default.Utils.escapeHTML = escapeHTML; +_mejs2.default.Utils.debounce = debounce; +_mejs2.default.Utils.isObjectEmpty = isObjectEmpty; +_mejs2.default.Utils.splitEvents = splitEvents; +_mejs2.default.Utils.createEvent = createEvent; +_mejs2.default.Utils.isNodeAfter = isNodeAfter; +_mejs2.default.Utils.isString = isString; - t.adjustLanguageBox(); - }, +},{"6":6}],26:[function(_dereq_,module,exports){ +'use strict'; - addTrackButton: function(lang, label) { - var t = this; - if (label === '') { - label = mejs.language.codes[lang] || lang; - } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.typeChecks = undefined; +exports.absolutizeUrl = absolutizeUrl; +exports.formatType = formatType; +exports.getMimeFromType = getMimeFromType; +exports.getTypeFromFile = getTypeFromFile; +exports.getExtension = getExtension; +exports.normalizeExtension = normalizeExtension; - t.captionsButton.find('ul').append( - $('<li>'+ - '<input type="radio" name="' + t.id + '_captions" id="' + t.id + '_captions_' + lang + '" value="' + lang + '" disabled="disabled" />' + - '<label for="' + t.id + '_captions_' + lang + '">' + label + ' (loading)' + '</label>'+ - '</li>') - ); +var _mejs = _dereq_(6); - t.adjustLanguageBox(); +var _mejs2 = _interopRequireDefault(_mejs); - // remove this from the dropdownlist (if it exists) - t.container.find('.mejs-captions-translations option[value=' + lang + ']').remove(); - }, +var _general = _dereq_(25); - adjustLanguageBox:function() { - var t = this; - // adjust the size of the outer box - t.captionsButton.find('.mejs-captions-selector').height( - t.captionsButton.find('.mejs-captions-selector ul').outerHeight(true) + - t.captionsButton.find('.mejs-captions-translations').outerHeight(true) - ); - }, +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - checkForTracks: function() { - var - t = this, - hasSubtitles = false; - - // check if any subtitles - if (t.options.hideCaptionsButtonWhenEmpty) { - for (var i=0; i<t.tracks.length; i++) { - var kind = t.tracks[i].kind; - if ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) { - hasSubtitles = true; - break; - } - } +var typeChecks = exports.typeChecks = []; - if (!hasSubtitles) { - t.captionsButton.hide(); - t.setControlsSize(); - } - } - }, +function absolutizeUrl(url) { - displayCaptions: function() { + if (typeof url !== 'string') { + throw new Error('`url` argument must be a string'); + } - if (typeof this.tracks == 'undefined') - return; + var el = document.createElement('div'); + el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>'; + return el.firstChild.href; +} - var - t = this, - i, - track = t.selectedTrack; - - if (track !== null && track.isLoaded) { - for (i=0; i<track.entries.times.length; i++) { - if (t.media.currentTime >= track.entries.times[i].start && t.media.currentTime <= track.entries.times[i].stop) { - // Set the line before the timecode as a class so the cue can be targeted if needed - t.captionsText.html(track.entries.text[i]).attr('class', 'mejs-captions-text ' + (track.entries.times[i].identifier || '')); - t.captions.show().height(0); - return; // exit out if one is visible; - } - } - t.captions.hide(); - } else { - t.captions.hide(); - } - }, +function formatType(url) { + var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; - setupSlides: function(track) { - var t = this; + return url && !type ? getTypeFromFile(url) : getMimeFromType(type); +} - t.slides = track; - t.slides.entries.imgs = [t.slides.entries.text.length]; - t.showSlide(0); +function getMimeFromType(type) { - }, + if (typeof type !== 'string') { + throw new Error('`type` argument must be a string'); + } - showSlide: function(index) { - if (typeof this.tracks == 'undefined' || typeof this.slidesContainer == 'undefined') { - return; - } + return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type; +} - var t = this, - url = t.slides.entries.text[index], - img = t.slides.entries.imgs[index]; +function getTypeFromFile(url) { - if (typeof img == 'undefined' || typeof img.fadeIn == 'undefined') { + if (typeof url !== 'string') { + throw new Error('`url` argument must be a string'); + } - t.slides.entries.imgs[index] = img = $('<img src="' + url + '">') - .on('load', function() { - img.appendTo(t.slidesContainer) - .hide() - .fadeIn() - .siblings(':visible') - .fadeOut(); + for (var i = 0, total = typeChecks.length; i < total; i++) { + var type = typeChecks[i](url); - }); + if (type) { + return type; + } + } - } else { + var ext = getExtension(url), + normalizedExt = normalizeExtension(ext); - if (!img.is(':visible') && !img.is(':animated')) { + var mime = 'video/mp4'; - // + if (normalizedExt) { + if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) { + mime = 'video/' + normalizedExt; + } else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) { + mime = 'audio/' + normalizedExt; + } + } - img.fadeIn() - .siblings(':visible') - .fadeOut(); - } - } + return mime; +} - }, +function getExtension(url) { - displaySlides: function() { + if (typeof url !== 'string') { + throw new Error('`url` argument must be a string'); + } - if (typeof this.slides == 'undefined') - return; + var baseUrl = url.split('?')[0], + baseName = baseUrl.split('\\').pop().split('/').pop(); + return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : ''; +} - var - t = this, - slides = t.slides, - i; +function normalizeExtension(extension) { - for (i=0; i<slides.entries.times.length; i++) { - if (t.media.currentTime >= slides.entries.times[i].start && t.media.currentTime <= slides.entries.times[i].stop){ + if (typeof extension !== 'string') { + throw new Error('`extension` argument must be a string'); + } - t.showSlide(i); + switch (extension) { + case 'mp4': + case 'm4v': + return 'mp4'; + case 'webm': + case 'webma': + case 'webmv': + return 'webm'; + case 'ogg': + case 'oga': + case 'ogv': + return 'ogg'; + default: + return extension; + } +} - return; // exit out if one is visible; - } - } - }, +_mejs2.default.Utils = _mejs2.default.Utils || {}; +_mejs2.default.Utils.typeChecks = typeChecks; +_mejs2.default.Utils.absolutizeUrl = absolutizeUrl; +_mejs2.default.Utils.formatType = formatType; +_mejs2.default.Utils.getMimeFromType = getMimeFromType; +_mejs2.default.Utils.getTypeFromFile = getTypeFromFile; +_mejs2.default.Utils.getExtension = getExtension; +_mejs2.default.Utils.normalizeExtension = normalizeExtension; - displayChapters: function() { - var - t = this, - i; +},{"25":25,"6":6}],27:[function(_dereq_,module,exports){ +'use strict'; - for (i=0; i<t.tracks.length; i++) { - if (t.tracks[i].kind == 'chapters' && t.tracks[i].isLoaded) { - t.drawChapters(t.tracks[i]); - t.hasChapters = true; - break; - } - } - }, +var _document = _dereq_(2); - drawChapters: function(chapters) { - var - t = this, - i, - dur, - //width, - //left, - percent = 0, - usedPercent = 0; - - t.chapters.empty(); - - for (i=0; i<chapters.entries.times.length; i++) { - dur = chapters.entries.times[i].stop - chapters.entries.times[i].start; - percent = Math.floor(dur / t.media.duration * 100); - if (percent + usedPercent > 100 || // too large - i == chapters.entries.times.length-1 && percent + usedPercent < 100) // not going to fill it in - { - percent = 100 - usedPercent; - } - //width = Math.floor(t.width * dur / t.media.duration); - //left = Math.floor(t.width * chapters.entries.times[i].start / t.media.duration); - //if (left + width > t.width) { - // width = t.width - left; - //} - - t.chapters.append( $( - '<div class="mejs-chapter" rel="' + chapters.entries.times[i].start + '" style="left: ' + usedPercent.toString() + '%;width: ' + percent.toString() + '%;">' + - '<div class="mejs-chapter-block' + ((i==chapters.entries.times.length-1) ? ' mejs-chapter-block-last' : '') + '">' + - '<span class="ch-title">' + chapters.entries.text[i] + '</span>' + - '<span class="ch-time">' + mejs.Utility.secondsToTimeCode(chapters.entries.times[i].start, t.options) + '–' + mejs.Utility.secondsToTimeCode(chapters.entries.times[i].stop, t.options) + '</span>' + - '</div>' + - '</div>')); - usedPercent += percent; - } - - t.chapters.find('div.mejs-chapter').click(function() { - t.media.setCurrentTime( parseFloat( $(this).attr('rel') ) ); - if (t.media.paused) { - t.media.play(); - } - }); +var _document2 = _interopRequireDefault(_document); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - t.chapters.show(); +(function (arr) { + arr.forEach(function (item) { + if (item.hasOwnProperty('remove')) { + return; } + Object.defineProperty(item, 'remove', { + configurable: true, + enumerable: true, + writable: true, + value: function remove() { + this.parentNode.removeChild(this); + } + }); }); +})([Element.prototype, CharacterData.prototype, DocumentType.prototype]); + +(function () { + + if (typeof window.CustomEvent === 'function') { + return false; + } + + function CustomEvent(event, params) { + params = params || { bubbles: false, cancelable: false, detail: undefined }; + var evt = _document2.default.createEvent('CustomEvent'); + evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); + return evt; + } + CustomEvent.prototype = window.Event.prototype; + window.CustomEvent = CustomEvent; +})(); +if (typeof Object.assign !== 'function') { + Object.assign = function (target) { - mejs.language = { - codes: { - af:'Afrikaans', - sq:'Albanian', - ar:'Arabic', - be:'Belarusian', - bg:'Bulgarian', - ca:'Catalan', - zh:'Chinese', - 'zh-cn':'Chinese Simplified', - 'zh-tw':'Chinese Traditional', - hr:'Croatian', - cs:'Czech', - da:'Danish', - nl:'Dutch', - en:'English', - et:'Estonian', - fl:'Filipino', - fi:'Finnish', - fr:'French', - gl:'Galician', - de:'German', - el:'Greek', - ht:'Haitian Creole', - iw:'Hebrew', - hi:'Hindi', - hu:'Hungarian', - is:'Icelandic', - id:'Indonesian', - ga:'Irish', - it:'Italian', - ja:'Japanese', - ko:'Korean', - lv:'Latvian', - lt:'Lithuanian', - mk:'Macedonian', - ms:'Malay', - mt:'Maltese', - no:'Norwegian', - fa:'Persian', - pl:'Polish', - pt:'Portuguese', - // 'pt-pt':'Portuguese (Portugal)', - ro:'Romanian', - ru:'Russian', - sr:'Serbian', - sk:'Slovak', - sl:'Slovenian', - es:'Spanish', - sw:'Swahili', - sv:'Swedish', - tl:'Tagalog', - th:'Thai', - tr:'Turkish', - uk:'Ukrainian', - vi:'Vietnamese', - cy:'Welsh', - yi:'Yiddish' + if (target === null || target === undefined) { + throw new TypeError('Cannot convert undefined or null to object'); } - }; - /* - Parses WebVTT format which should be formatted as - ================================ - WEBVTT - - 1 - 00:00:01,1 --> 00:00:05,000 - A line of text - - 2 - 00:01:15,1 --> 00:02:05,000 - A second line of text - - =============================== - - Adapted from: http://www.delphiki.com/html5/playr - */ - mejs.TrackFormatParser = { - webvtt: { - pattern_timecode: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/, - - parse: function(trackText) { - var - i = 0, - lines = mejs.TrackFormatParser.split2(trackText, /\r?\n/), - entries = {text:[], times:[]}, - timecode, - text, - identifier; - for(; i<lines.length; i++) { - timecode = this.pattern_timecode.exec(lines[i]); - - if (timecode && i<lines.length) { - if ((i - 1) >= 0 && lines[i - 1] !== '') { - identifier = lines[i - 1]; - } - i++; - // grab all the (possibly multi-line) text that follows - text = lines[i]; - i++; - while(lines[i] !== '' && i<lines.length){ - text = text + '\n' + lines[i]; - i++; - } - text = $.trim(text).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>"); - // Text is in a different array so I can use .join - entries.text.push(text); - entries.times.push( - { - identifier: identifier, - start: (mejs.Utility.convertSMPTEtoSeconds(timecode[1]) === 0) ? 0.200 : mejs.Utility.convertSMPTEtoSeconds(timecode[1]), - stop: mejs.Utility.convertSMPTEtoSeconds(timecode[3]), - settings: timecode[5] - }); - } - identifier = ''; - } - return entries; - } - }, - // Thanks to Justin Capella: https://github.com/johndyer/mediaelement/pull/420 - dfxp: { - parse: function(trackText) { - trackText = $(trackText).filter("tt"); - var - i = 0, - container = trackText.children("div").eq(0), - lines = container.find("p"), - styleNode = trackText.find("#" + container.attr("style")), - styles, - text, - entries = {text:[], times:[]}; - - - if (styleNode.length) { - var attributes = styleNode.removeAttr("id").get(0).attributes; - if (attributes.length) { - styles = {}; - for (i = 0; i < attributes.length; i++) { - styles[attributes[i].name.split(":")[1]] = attributes[i].value; - } - } - } + var to = Object(target); - for(i = 0; i<lines.length; i++) { - var style; - var _temp_times = { - start: null, - stop: null, - style: null - }; - if (lines.eq(i).attr("begin")) _temp_times.start = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i).attr("begin")); - if (!_temp_times.start && lines.eq(i-1).attr("end")) _temp_times.start = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i-1).attr("end")); - if (lines.eq(i).attr("end")) _temp_times.stop = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i).attr("end")); - if (!_temp_times.stop && lines.eq(i+1).attr("begin")) _temp_times.stop = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i+1).attr("begin")); - if (styles) { - style = ""; - for (var _style in styles) { - style += _style + ":" + styles[_style] + ";"; - } + for (var index = 1, total = arguments.length; index < total; index++) { + var nextSource = arguments[index]; + + if (nextSource !== null) { + for (var nextKey in nextSource) { + if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) { + to[nextKey] = nextSource[nextKey]; } - if (style) _temp_times.style = style; - if (_temp_times.start === 0) _temp_times.start = 0.200; - entries.times.push(_temp_times); - text = $.trim(lines.eq(i).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>"); - entries.text.push(text); } - return entries; } - }, - split2: function (text, regex) { - // normal version for compliant browsers - // see below for IE fix - return text.split(regex); } + return to; }; +} - // test for browsers with bad String.split method. - if ('x\n\ny'.split(/\n/gi).length != 3) { - // add super slow IE8 and below version - mejs.TrackFormatParser.split2 = function(text, regex) { - var - parts = [], - chunk = '', - i; +if (!String.prototype.startsWith) { + String.prototype.startsWith = function (searchString, position) { + position = position || 0; + return this.substr(position, searchString.length) === searchString; + }; +} - for (i=0; i<text.length; i++) { - chunk += text.substring(i,i+1); - if (regex.test(chunk)) { - parts.push(chunk.replace(regex, '')); - chunk = ''; - } - } - parts.push(chunk); - return parts; - }; +if (!Element.prototype.matches) { + Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) { + var matches = (this.document || this.ownerDocument).querySelectorAll(s), + i = matches.length - 1; + while (--i >= 0 && matches.item(i) !== this) {} + return i > -1; + }; +} + +if (window.Element && !Element.prototype.closest) { + Element.prototype.closest = function (s) { + var matches = (this.document || this.ownerDocument).querySelectorAll(s), + i = void 0, + el = this; + do { + i = matches.length; + while (--i >= 0 && matches.item(i) !== el) {} + } while (i < 0 && (el = el.parentElement)); + return el; + }; +} + +(function () { + var lastTime = 0; + var vendors = ['ms', 'moz', 'webkit', 'o']; + for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { + window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; + window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame']; } -})(mejs.$); + if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) { + var currTime = new Date().getTime(); + var timeToCall = Math.max(0, 16 - (currTime - lastTime)); + var id = window.setTimeout(function () { + callback(currTime + timeToCall); + }, timeToCall); + lastTime = currTime + timeToCall; + return id; + }; -// Source Chooser Plugin -(function($) { + if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) { + clearTimeout(id); + }; +})(); - $.extend(mejs.MepDefaults, { - sourcechooserText: '' - }); +if (/firefox/i.test(navigator.userAgent)) { + window.mediaElementJsOldGetComputedStyle = window.getComputedStyle; + window.getComputedStyle = function (el, pseudoEl) { + var t = window.mediaElementJsOldGetComputedStyle(el, pseudoEl); + return t === null ? { getPropertyValue: function getPropertyValue() {} } : t; + }; +} - $.extend(MediaElementPlayer.prototype, { - buildsourcechooser: function(player, controls, layers, media) { - - var - t = this, - sourceTitle = t.options.sourcechooserText ? t.options.sourcechooserText : mejs.i18n.t('mejs.source-chooser'), - hoverTimeout - ; - - player.sourcechooserButton = - $('<div class="mejs-button mejs-sourcechooser-button">'+ - '<button type="button" role="button" aria-haspopup="true" aria-owns="' + t.id + '" title="' + sourceTitle + '" aria-label="' + sourceTitle + '"></button>'+ - '<div class="mejs-sourcechooser-selector mejs-offscreen" role="menu" aria-expanded="false" aria-hidden="true">'+ - '<ul>'+ - '</ul>'+ - '</div>'+ - '</div>') - .appendTo(controls) - - // hover - .hover(function() { - clearTimeout(hoverTimeout); - player.showSourcechooserSelector(); - }, function() { - var self = $(this); - hoverTimeout = setTimeout(function () { - player.hideSourcechooserSelector(); - }, 500); - }) - - // keyboard menu activation - .on('keydown', function (e) { - var keyCode = e.keyCode; - - switch (keyCode) { - case 32: // space - if (!mejs.MediaFeatures.isFirefox) { // space sends the click event in Firefox - player.showSourcechooserSelector(); - } - $(this).find('.mejs-sourcechooser-selector') - .find('input[type=radio]:checked').first().focus(); - break; - case 13: // enter - player.showSourcechooserSelector(); - $(this).find('.mejs-sourcechooser-selector') - .find('input[type=radio]:checked').first().focus(); - break; - case 27: // esc - player.hideSourcechooserSelector(); - $(this).find('button').focus(); - break; - default: - return true; - } - }) - - // close menu when tabbing away - .on('focusout', mejs.Utility.debounce(function (e) { // Safari triggers focusout multiple times - // Firefox does NOT support e.relatedTarget to see which element - // just lost focus, so wait to find the next focused element - setTimeout(function () { - var parent = $(document.activeElement).closest('.mejs-sourcechooser-selector'); - if (!parent.length) { - // focus is outside the control; close menu - player.hideSourcechooserSelector(); - } - }, 0); - }, 100)) +},{"2":2}],28:[function(_dereq_,module,exports){ +'use strict'; - // handle clicks to the source radio buttons - .delegate('input[type=radio]', 'click', function() { - // set aria states - $(this).attr('aria-selected', true).attr('checked', 'checked'); - $(this).closest('.mejs-sourcechooser-selector').find('input[type=radio]').not(this).attr('aria-selected', 'false').removeAttr('checked'); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isDropFrame = isDropFrame; +exports.secondsToTimeCode = secondsToTimeCode; +exports.timeCodeToSeconds = timeCodeToSeconds; +exports.calculateTimeFormat = calculateTimeFormat; +exports.convertSMPTEtoSeconds = convertSMPTEtoSeconds; - var src = this.value; +var _mejs = _dereq_(6); - if (media.currentSrc != src) { - var currentTime = media.currentTime; - var paused = media.paused; - media.pause(); - media.setSrc(src); +var _mejs2 = _interopRequireDefault(_mejs); - media.addEventListener('loadedmetadata', function(e) { - media.currentTime = currentTime; - }, true); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - var canPlayAfterSourceSwitchHandler = function(e) { - if (!paused) { - media.play(); - } - media.removeEventListener("canplay", canPlayAfterSourceSwitchHandler, true); - }; - media.addEventListener('canplay', canPlayAfterSourceSwitchHandler, true); - media.load(); - } - }) +function isDropFrame() { + var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25; - // Handle click so that screen readers can toggle the menu - .delegate('button', 'click', function (e) { - if ($(this).siblings('.mejs-sourcechooser-selector').hasClass('mejs-offscreen')) { - player.showSourcechooserSelector(); - $(this).siblings('.mejs-sourcechooser-selector').find('input[type=radio]:checked').first().focus(); - } else { - player.hideSourcechooserSelector(); - } - }); + return !(fps % 1 === 0); +} +function secondsToTimeCode(time) { + var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var fps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25; + var secondsDecimalLength = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0; + + + time = !time || typeof time !== 'number' || time < 0 ? 0 : time; + + var dropFrames = Math.round(fps * 0.066666), + timeBase = Math.round(fps), + framesPer24Hours = Math.round(fps * 3600) * 24, + framesPer10Minutes = Math.round(fps * 600), + frameSep = isDropFrame(fps) ? ';' : ':', + hours = void 0, + minutes = void 0, + seconds = void 0, + frames = void 0, + f = Math.round(time * fps); + + if (isDropFrame(fps)) { + + if (f < 0) { + f = framesPer24Hours + f; + } - // add to list - for (var i in this.node.children) { - var src = this.node.children[i]; - if (src.nodeName === 'SOURCE' && (media.canPlayType(src.type) == 'probably' || media.canPlayType(src.type) == 'maybe')) { - player.addSourceButton(src.src, src.title, src.type, media.src == src.src); - } - } - }, + f = f % framesPer24Hours; - addSourceButton: function(src, label, type, isCurrent) { - var t = this; - if (label === '' || label == undefined) { - label = src; - } - type = type.split('/')[1]; + var d = Math.floor(f / framesPer10Minutes); + var m = f % framesPer10Minutes; + f = f + dropFrames * 9 * d; + if (m > dropFrames) { + f = f + dropFrames * Math.floor((m - dropFrames) / Math.round(timeBase * 60 - dropFrames)); + } - t.sourcechooserButton.find('ul').append( - $('<li>'+ - '<input type="radio" name="' + t.id + '_sourcechooser" id="' + t.id + '_sourcechooser_' + label + type + '" role="menuitemradio" value="' + src + '" ' + (isCurrent ? 'checked="checked"' : '') + 'aria-selected="' + isCurrent + '"' + ' />'+ - '<label for="' + t.id + '_sourcechooser_' + label + type + '" aria-hidden="true">' + label + ' (' + type + ')</label>'+ - '</li>') - ); + var timeBaseDivision = Math.floor(f / timeBase); - t.adjustSourcechooserBox(); + hours = Math.floor(Math.floor(timeBaseDivision / 60) / 60); + minutes = Math.floor(timeBaseDivision / 60) % 60; - }, + if (showFrameCount) { + seconds = timeBaseDivision % 60; + } else { + seconds = (f / timeBase % 60).toFixed(secondsDecimalLength); + } + } else { + hours = Math.floor(time / 3600) % 24; + minutes = Math.floor(time / 60) % 60; + if (showFrameCount) { + seconds = Math.floor(time % 60); + } else { + seconds = (time % 60).toFixed(secondsDecimalLength); + } + } + hours = hours <= 0 ? 0 : hours; + minutes = minutes <= 0 ? 0 : minutes; + seconds = seconds <= 0 ? 0 : seconds; + + var result = forceHours || hours > 0 ? (hours < 10 ? '0' + hours : hours) + ':' : ''; + result += (minutes < 10 ? '0' + minutes : minutes) + ':'; + result += '' + (seconds < 10 ? '0' + seconds : seconds); + + if (showFrameCount) { + frames = (f % timeBase).toFixed(0); + frames = frames <= 0 ? 0 : frames; + result += frames < 10 ? frameSep + '0' + frames : '' + frameSep + frames; + } - adjustSourcechooserBox: function() { - var t = this; - // adjust the size of the outer box - t.sourcechooserButton.find('.mejs-sourcechooser-selector').height( - t.sourcechooserButton.find('.mejs-sourcechooser-selector ul').outerHeight(true) - ); - }, + return result; +} - hideSourcechooserSelector: function () { - this.sourcechooserButton.find('.mejs-sourcechooser-selector') - .addClass('mejs-offscreen') - .attr('aria-expanded', 'false') - .attr('aria-hidden', 'true') - .find('input[type=radio]') // make radios not fucusable - .attr('tabindex', '-1'); - }, +function timeCodeToSeconds(time) { + var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25; - showSourcechooserSelector: function () { - this.sourcechooserButton.find('.mejs-sourcechooser-selector') - .removeClass('mejs-offscreen') - .attr('aria-expanded', 'true') - .attr('aria-hidden', 'false') - .find('input[type=radio]') - .attr('tabindex', '0'); - } - }); -})(mejs.$); + if (typeof time !== 'string') { + throw new TypeError('Time must be a string'); + } -/* -* ContextMenu Plugin -* -* -*/ + if (time.indexOf(';') > 0) { + time = time.replace(';', ':'); + } -(function($) { + if (!/\d{2}(\:\d{2}){0,3}/i.test(time)) { + throw new TypeError('Time code must have the format `00:00:00`'); + } -$.extend(mejs.MepDefaults, - { 'contextMenuItems': [ - // demo of a fullscreen option - { - render: function(player) { - - // check for fullscreen plugin - if (typeof player.enterFullScreen == 'undefined') - return null; - - if (player.isFullScreen) { - return mejs.i18n.t('mejs.fullscreen-off'); - } else { - return mejs.i18n.t('mejs.fullscreen-on'); - } - }, - click: function(player) { - if (player.isFullScreen) { - player.exitFullScreen(); - } else { - player.enterFullScreen(); - } - } - } - , - // demo of a mute/unmute button - { - render: function(player) { - if (player.media.muted) { - return mejs.i18n.t('mejs.unmute'); - } else { - return mejs.i18n.t('mejs.mute'); - } - }, - click: function(player) { - if (player.media.muted) { - player.setMuted(false); - } else { - player.setMuted(true); + var parts = time.split(':'); + + var output = void 0, + hours = 0, + minutes = 0, + seconds = 0, + frames = 0, + totalMinutes = 0, + dropFrames = Math.round(fps * 0.066666), + timeBase = Math.round(fps), + hFrames = timeBase * 3600, + mFrames = timeBase * 60; + + switch (parts.length) { + default: + case 1: + seconds = parseInt(parts[0], 10); + break; + case 2: + minutes = parseInt(parts[0], 10); + seconds = parseInt(parts[1], 10); + break; + case 3: + hours = parseInt(parts[0], 10); + minutes = parseInt(parts[1], 10); + seconds = parseInt(parts[2], 10); + break; + case 4: + hours = parseInt(parts[0], 10); + minutes = parseInt(parts[1], 10); + seconds = parseInt(parts[2], 10); + frames = parseInt(parts[3], 10); + break; + } + + if (isDropFrame(fps)) { + totalMinutes = 60 * hours + minutes; + output = hFrames * hours + mFrames * minutes + timeBase * seconds + frames - dropFrames * (totalMinutes - Math.floor(totalMinutes / 10)); + } else { + output = (hFrames * hours + mFrames * minutes + fps * seconds + frames) / fps; + } + + return parseFloat(output.toFixed(3)); +} + +function calculateTimeFormat(time, options) { + var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25; + + + time = !time || typeof time !== 'number' || time < 0 ? 0 : time; + + var hours = Math.floor(time / 3600) % 24, + minutes = Math.floor(time / 60) % 60, + seconds = Math.floor(time % 60), + frames = Math.floor((time % 1 * fps).toFixed(3)), + lis = [[frames, 'f'], [seconds, 's'], [minutes, 'm'], [hours, 'h']]; + + var format = options.timeFormat, + firstTwoPlaces = format[1] === format[0], + separatorIndex = firstTwoPlaces ? 2 : 1, + separator = format.length < separatorIndex ? format[separatorIndex] : ':', + firstChar = format[0], + required = false; + + for (var i = 0, len = lis.length; i < len; i++) { + if (~format.indexOf(lis[i][1])) { + required = true; + } else if (required) { + var hasNextValue = false; + for (var j = i; j < len; j++) { + if (lis[j][0] > 0) { + hasNextValue = true; + break; } } - }, - // separator - { - isSeparator: true - } - , - // demo of simple download video - { - render: function(player) { - return mejs.i18n.t('mejs.download-video'); - }, - click: function(player) { - window.location.href = player.media.currentSrc; - } - } - ]} -); - - - $.extend(MediaElementPlayer.prototype, { - buildcontextmenu: function(player, controls, layers, media) { - - // create context menu - player.contextMenu = $('<div class="mejs-contextmenu"></div>') - .appendTo($('body')) - .hide(); - - // create events for showing context menu - player.container.bind('contextmenu', function(e) { - if (player.isContextMenuEnabled) { - e.preventDefault(); - player.renderContextMenu(e.clientX-1, e.clientY-1); - return false; - } - }); - player.container.bind('click', function() { - player.contextMenu.hide(); - }); - player.contextMenu.bind('mouseleave', function() { - // - player.startContextMenuTimer(); - - }); - }, + if (!hasNextValue) { + break; + } - cleancontextmenu: function(player) { - player.contextMenu.remove(); - }, - - isContextMenuEnabled: true, - enableContextMenu: function() { - this.isContextMenuEnabled = true; - }, - disableContextMenu: function() { - this.isContextMenuEnabled = false; - }, - - contextMenuTimeout: null, - startContextMenuTimer: function() { - // - - var t = this; - - t.killContextMenuTimer(); - - t.contextMenuTimer = setTimeout(function() { - t.hideContextMenu(); - t.killContextMenuTimer(); - }, 750); - }, - killContextMenuTimer: function() { - var timer = this.contextMenuTimer; - - // - - if (timer != null) { - clearTimeout(timer); - delete timer; - timer = null; - } - }, - - hideContextMenu: function() { - this.contextMenu.hide(); - }, - - renderContextMenu: function(x,y) { - - // alway re-render the items so that things like "turn fullscreen on" and "turn fullscreen off" are always written correctly - var t = this, - html = '', - items = t.options.contextMenuItems; - - for (var i=0, il=items.length; i<il; i++) { - - if (items[i].isSeparator) { - html += '<div class="mejs-contextmenu-separator"></div>'; - } else { - - var rendered = items[i].render(t); - - // render can return null if the item doesn't need to be used at the moment - if (rendered != null) { - html += '<div class="mejs-contextmenu-item" data-itemindex="' + i + '" id="element-' + (Math.random()*1000000) + '">' + rendered + '</div>'; - } - } + if (!firstTwoPlaces) { + format = firstChar + format; } - - // position and show the context menu - t.contextMenu - .empty() - .append($(html)) - .css({top:y, left:x}) - .show(); - - // bind events - t.contextMenu.find('.mejs-contextmenu-item').each(function() { - - // which one is this? - var $dom = $(this), - itemIndex = parseInt( $dom.data('itemindex'), 10 ), - item = t.options.contextMenuItems[itemIndex]; - - // bind extra functionality? - if (typeof item.show != 'undefined') - item.show( $dom , t); - - // bind click action - $dom.click(function() { - // perform click action - if (typeof item.click != 'undefined') - item.click(t); - - // close - t.contextMenu.hide(); - }); - }); - - // stop the controls from hiding - setTimeout(function() { - t.killControlsTimer('rev3'); - }, 100); - + format = lis[i][1] + separator + format; + if (firstTwoPlaces) { + format = lis[i][1] + format; + } + firstChar = lis[i][1]; } - }); - -})(mejs.$); -(function($) { - // skip back button - - $.extend(mejs.MepDefaults, { - skipBackInterval: 30, - // %1 will be replaced with skipBackInterval in this string - skipBackText: '' - }); + } - $.extend(MediaElementPlayer.prototype, { - buildskipback: function(player, controls, layers, media) { - var - t = this, - defaultTitle = mejs.i18n.t('mejs.time-skip-back', t.options.skipBackInterval), - skipTitle = t.options.skipBackText ? t.options.skipBackText : defaultTitle, - // create the loop button - loop = - $('<div class="mejs-button mejs-skip-back-button">' + - '<button type="button" aria-controls="' + t.id + '" title="' + skipTitle + '" aria-label="' + skipTitle + '">' + t.options.skipBackInterval + '</button>' + - '</div>') - // append it to the toolbar - .appendTo(controls) - // add a click toggle event - .click(function() { - media.setCurrentTime(Math.max(media.currentTime - t.options.skipBackInterval, 0)); - $(this).find('button').blur(); - }); - } - }); + options.currentTimeFormat = format; +} -})(mejs.$); +function convertSMPTEtoSeconds(SMPTE) { -/** - * Postroll plugin - */ -(function($) { + if (typeof SMPTE !== 'string') { + throw new TypeError('Argument must be a string value'); + } - $.extend(mejs.MepDefaults, { - postrollCloseText: '' - }); + SMPTE = SMPTE.replace(',', '.'); - // Postroll - $.extend(MediaElementPlayer.prototype, { - buildpostroll: function(player, controls, layers, media) { - var - t = this, - postrollTitle = t.options.postrollCloseText ? t.options.postrollCloseText : mejs.i18n.t('mejs.close'), - postrollLink = t.container.find('link[rel="postroll"]').attr('href'); - - if (typeof postrollLink !== 'undefined') { - player.postroll = - $('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">' + postrollTitle + '</a><div class="mejs-postroll-layer-content"></div></div>').prependTo(layers).hide(); - - t.media.addEventListener('ended', function (e) { - $.ajax({ - dataType: 'html', - url: postrollLink, - success: function (data, textStatus) { - layers.find('.mejs-postroll-layer-content').html(data); - } - }); - player.postroll.show(); - }, false); - } - } - }); + var decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0; -})(mejs.$); -/* -MediaElement-Markers is a MediaElement.js plugin that lets you add Visual Cues in the progress time rail. -This plugin also lets you register a custom callback function that will be called everytime the play position reaches a marker. -Marker position and a reference to the MediaElement Player object is passed to the registered callback function for any post processing. Marker color is configurable. + var secs = 0, + multiplier = 1; -*/ + SMPTE = SMPTE.split(':').reverse(); -(function ($) { - // markers - - $.extend(mejs.MepDefaults, { - markerColor: '#E9BC3D', //default marker color - markers: [], - markerCallback: function () { - - } - }); - - $.extend(MediaElementPlayer.prototype, { - buildmarkers: function (player, controls, layers, media) { - var t = this, - i = 0, - currentPos = -1, - currentMarker = -1, - lastPlayPos = -1, //Track backward seek - lastMarkerCallBack = -1; //Prevents successive firing of callbacks - - for (i = 0; i < player.options.markers.length; ++i) { - controls.find('.mejs-time-total').append('<span class="mejs-time-marker"></span>'); - } - - media.addEventListener('durationchange', function (e) { - player.setmarkers(controls); - }); - media.addEventListener('timeupdate', function (e) { - currentPos = Math.floor(media.currentTime); - if (lastPlayPos > currentPos) { - if (lastMarkerCallBack > currentPos) { - lastMarkerCallBack = -1; - } - } else { - lastPlayPos = currentPos; - } - - for (i = 0; i < player.options.markers.length; ++i) { - currentMarker = Math.floor(player.options.markers[i]); - if (currentPos === currentMarker && currentMarker !== lastMarkerCallBack) { - player.options.markerCallback(media, media.currentTime); //Fires the callback function - lastMarkerCallBack = currentMarker; - } - } - - }, false); - - }, - setmarkers: function (controls) { - var t = this, - i = 0, - left; - - for (i = 0; i < t.options.markers.length; ++i) { - if (Math.floor(t.options.markers[i]) <= t.media.duration && Math.floor(t.options.markers[i]) >= 0) { - left = 100 * Math.floor(t.options.markers[i]) / t.media.duration; - $(controls.find('.mejs-time-marker')[i]).css({ - "width": "1px", - "left": left+"%", - "background": t.options.markerColor - }); - } - } - - } - }); -})(mejs.$); \ No newline at end of file + for (var i = 0, total = SMPTE.length; i < total; i++) { + multiplier = 1; + if (i > 0) { + multiplier = Math.pow(60, i); + } + secs += Number(SMPTE[i]) * multiplier; + } + return Number(secs.toFixed(decimalLen)); +} + +_mejs2.default.Utils = _mejs2.default.Utils || {}; +_mejs2.default.Utils.secondsToTimeCode = secondsToTimeCode; +_mejs2.default.Utils.timeCodeToSeconds = timeCodeToSeconds; +_mejs2.default.Utils.calculateTimeFormat = calculateTimeFormat; +_mejs2.default.Utils.convertSMPTEtoSeconds = convertSMPTEtoSeconds; + +},{"6":6}]},{},[27,5,4,14,21,18,17,19,20,22,15,16,8,9,10,11,12,13]); diff --git a/src/main/webapp/static/movie/mediaelementjs/mediaelement-and-player.min.js b/src/main/webapp/static/movie/mediaelementjs/mediaelement-and-player.min.js old mode 100644 new mode 100755 index d714a852df1afecb8a7f56ffc778cf20db1ea724..e9325a069bc022e8b6001360e4aafac49d52d5e3 --- a/src/main/webapp/static/movie/mediaelementjs/mediaelement-and-player.min.js +++ b/src/main/webapp/static/movie/mediaelementjs/mediaelement-and-player.min.js @@ -1,43 +1,12 @@ /*! - * * MediaElement.js - * HTML5 <video> and <audio> shim and player - * http://mediaelementjs.com/ - * - * Creates a JavaScript object that mimics HTML5 MediaElement API - * for browsers that don't understand HTML5 or can't play the provided codec - * Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3 - * - * Copyright 2010-2014, John Dyer (http://j.hn) - * License: MIT - * - */ -var mejs=mejs||{};mejs.version="2.23.5",mejs.meIndex=0,mejs.plugins={silverlight:[{version:[3,0],types:["video/mp4","video/m4v","video/mov","video/wmv","audio/wma","audio/m4a","audio/mp3","audio/wav","audio/mpeg"]}],flash:[{version:[9,0,124],types:["video/mp4","video/m4v","video/mov","video/flv","video/rtmp","video/x-flv","audio/flv","audio/x-flv","audio/mp3","audio/m4a","audio/mp4","audio/mpeg","video/dailymotion","video/x-dailymotion","application/x-mpegURL","audio/ogg"]}],youtube:[{version:null,types:["video/youtube","video/x-youtube","audio/youtube","audio/x-youtube"]}],vimeo:[{version:null,types:["video/vimeo","video/x-vimeo"]}]},mejs.Utility={encodeUrl:function(a){return encodeURIComponent(a)},escapeHTML:function(a){return a.toString().split("&").join("&").split("<").join("<").split('"').join(""")},absolutizeUrl:function(a){var b=document.createElement("div");return b.innerHTML='<a href="'+this.escapeHTML(a)+'">x</a>',b.firstChild.href},getScriptPath:function(a){for(var b,c,d,e,f,g,h=0,i="",j="",k=document.getElementsByTagName("script"),l=k.length,m=a.length;l>h;h++){for(e=k[h].src,c=e.lastIndexOf("/"),c>-1?(g=e.substring(c+1),f=e.substring(0,c+1)):(g=e,f=""),b=0;m>b;b++)if(j=a[b],d=g.indexOf(j),d>-1){i=f;break}if(""!==i)break}return i},calculateTimeFormat:function(a,b,c){0>a&&(a=0),"undefined"==typeof c&&(c=25);var d=b.timeFormat,e=d[0],f=d[1]==d[0],g=f?2:1,h=":",i=Math.floor(a/3600)%24,j=Math.floor(a/60)%60,k=Math.floor(a%60),l=Math.floor((a%1*c).toFixed(3)),m=[[l,"f"],[k,"s"],[j,"m"],[i,"h"]];d.length<g&&(h=d[g]);for(var n=!1,o=0,p=m.length;p>o;o++)if(-1!==d.indexOf(m[o][1]))n=!0;else if(n){for(var q=!1,r=o;p>r;r++)if(m[r][0]>0){q=!0;break}if(!q)break;f||(d=e+d),d=m[o][1]+h+d,f&&(d=m[o][1]+d),e=m[o][1]}b.currentTimeFormat=d},twoDigitsString:function(a){return 10>a?"0"+a:String(a)},secondsToTimeCode:function(a,b){if(0>a&&(a=0),"object"!=typeof b){var c="m:ss";c=arguments[1]?"hh:mm:ss":c,c=arguments[2]?c+":ff":c,b={currentTimeFormat:c,framesPerSecond:arguments[3]||25}}var d=b.framesPerSecond;"undefined"==typeof d&&(d=25);var c=b.currentTimeFormat,e=Math.floor(a/3600)%24,f=Math.floor(a/60)%60,g=Math.floor(a%60),h=Math.floor((a%1*d).toFixed(3));lis=[[h,"f"],[g,"s"],[f,"m"],[e,"h"]];var j=c;for(i=0,len=lis.length;i<len;i++)j=j.replace(lis[i][1]+lis[i][1],this.twoDigitsString(lis[i][0])),j=j.replace(lis[i][1],lis[i][0]);return j},timeCodeToSeconds:function(a,b,c,d){"undefined"==typeof c?c=!1:"undefined"==typeof d&&(d=25);var e=a.split(":"),f=parseInt(e[0],10),g=parseInt(e[1],10),h=parseInt(e[2],10),i=0,j=0;return c&&(i=parseInt(e[3])/d),j=3600*f+60*g+h+i},convertSMPTEtoSeconds:function(a){if("string"!=typeof a)return!1;a=a.replace(",",".");var b=0,c=-1!=a.indexOf(".")?a.split(".")[1].length:0,d=1;a=a.split(":").reverse();for(var e=0;e<a.length;e++)d=1,e>0&&(d=Math.pow(60,e)),b+=Number(a[e])*d;return Number(b.toFixed(c))},removeSwf:function(a){var b=document.getElementById(a);b&&/object|embed/i.test(b.nodeName)&&(mejs.MediaFeatures.isIE?(b.style.display="none",function(){4==b.readyState?mejs.Utility.removeObjectInIE(a):setTimeout(arguments.callee,10)}()):b.parentNode.removeChild(b))},removeObjectInIE:function(a){var b=document.getElementById(a);if(b){for(var c in b)"function"==typeof b[c]&&(b[c]=null);b.parentNode.removeChild(b)}},determineScheme:function(a){return a&&-1!=a.indexOf("://")?a.substr(0,a.indexOf("://")+3):"//"},debounce:function(a,b,c){var d;return function(){var e=this,f=arguments,g=function(){d=null,c||a.apply(e,f)},h=c&&!d;clearTimeout(d),d=setTimeout(g,b),h&&a.apply(e,f)}},isNodeAfter:function(a,b){return!!(a&&b&&"function"==typeof a.compareDocumentPosition&&a.compareDocumentPosition(b)&Node.DOCUMENT_POSITION_PRECEDING)}},mejs.PluginDetector={hasPluginVersion:function(a,b){var c=this.plugins[a];return b[1]=b[1]||0,b[2]=b[2]||0,c[0]>b[0]||c[0]==b[0]&&c[1]>b[1]||c[0]==b[0]&&c[1]==b[1]&&c[2]>=b[2]?!0:!1},nav:window.navigator,ua:window.navigator.userAgent.toLowerCase(),plugins:[],addPlugin:function(a,b,c,d,e){this.plugins[a]=this.detectPlugin(b,c,d,e)},detectPlugin:function(a,b,c,d){var e,f,g,h=[0,0,0];if("undefined"!=typeof this.nav.plugins&&"object"==typeof this.nav.plugins[a]){if(e=this.nav.plugins[a].description,e&&("undefined"==typeof this.nav.mimeTypes||!this.nav.mimeTypes[b]||this.nav.mimeTypes[b].enabledPlugin))for(h=e.replace(a,"").replace(/^\s+/,"").replace(/\sr/gi,".").split("."),f=0;f<h.length;f++)h[f]=parseInt(h[f].match(/\d+/),10)}else if("undefined"!=typeof window.ActiveXObject)try{g=new ActiveXObject(c),g&&(h=d(g))}catch(i){}return h}},mejs.PluginDetector.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(a){var b=[],c=a.GetVariable("$version");return c&&(c=c.split(" ")[1].split(","),b=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]),b}),mejs.PluginDetector.addPlugin("silverlight","Silverlight Plug-In","application/x-silverlight-2","AgControl.AgControl",function(a){var b=[0,0,0,0],c=function(a,b,c,d){for(;a.isVersionSupported(b[0]+"."+b[1]+"."+b[2]+"."+b[3]);)b[c]+=d;b[c]-=d};return c(a,b,0,1),c(a,b,1,1),c(a,b,2,1e4),c(a,b,2,1e3),c(a,b,2,100),c(a,b,2,10),c(a,b,2,1),c(a,b,3,1),b}),mejs.MediaFeatures={init:function(){var a,b,c=this,d=document,e=mejs.PluginDetector.nav,f=mejs.PluginDetector.ua.toLowerCase(),g=["source","track","audio","video"];c.isiPad=null!==f.match(/ipad/i),c.isiPhone=null!==f.match(/iphone/i),c.isiOS=c.isiPhone||c.isiPad,c.isAndroid=null!==f.match(/android/i),c.isBustedAndroid=null!==f.match(/android 2\.[12]/),c.isBustedNativeHTTPS="https:"===location.protocol&&(null!==f.match(/android [12]\./)||null!==f.match(/macintosh.* version.* safari/)),c.isIE=-1!=e.appName.toLowerCase().indexOf("microsoft")||null!==e.appName.toLowerCase().match(/trident/gi),c.isChrome=null!==f.match(/chrome/gi),c.isChromium=null!==f.match(/chromium/gi),c.isFirefox=null!==f.match(/firefox/gi),c.isWebkit=null!==f.match(/webkit/gi),c.isGecko=null!==f.match(/gecko/gi)&&!c.isWebkit&&!c.isIE,c.isOpera=null!==f.match(/opera/gi),c.hasTouch="ontouchstart"in window,c.svgAsImg=!!document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1");for(a=0;a<g.length;a++)b=document.createElement(g[a]);c.supportsMediaTag="undefined"!=typeof b.canPlayType||c.isBustedAndroid;try{b.canPlayType("video/mp4")}catch(h){c.supportsMediaTag=!1}c.supportsPointerEvents=function(){var a,b=document.createElement("x"),c=document.documentElement,d=window.getComputedStyle;return"pointerEvents"in b.style?(b.style.pointerEvents="auto",b.style.pointerEvents="x",c.appendChild(b),a=d&&"auto"===d(b,"").pointerEvents,c.removeChild(b),!!a):!1}(),c.hasFirefoxPluginMovingProblem=!1,c.hasiOSFullScreen="undefined"!=typeof b.webkitEnterFullscreen,c.hasNativeFullscreen="undefined"!=typeof b.requestFullscreen,c.hasWebkitNativeFullScreen="undefined"!=typeof b.webkitRequestFullScreen,c.hasMozNativeFullScreen="undefined"!=typeof b.mozRequestFullScreen,c.hasMsNativeFullScreen="undefined"!=typeof b.msRequestFullscreen,c.hasTrueNativeFullScreen=c.hasWebkitNativeFullScreen||c.hasMozNativeFullScreen||c.hasMsNativeFullScreen,c.nativeFullScreenEnabled=c.hasTrueNativeFullScreen,c.hasMozNativeFullScreen?c.nativeFullScreenEnabled=document.mozFullScreenEnabled:c.hasMsNativeFullScreen&&(c.nativeFullScreenEnabled=document.msFullscreenEnabled),c.isChrome&&(c.hasiOSFullScreen=!1),c.hasTrueNativeFullScreen&&(c.fullScreenEventName="",c.hasWebkitNativeFullScreen?c.fullScreenEventName="webkitfullscreenchange":c.hasMozNativeFullScreen?c.fullScreenEventName="mozfullscreenchange":c.hasMsNativeFullScreen&&(c.fullScreenEventName="MSFullscreenChange"),c.isFullScreen=function(){return c.hasMozNativeFullScreen?d.mozFullScreen:c.hasWebkitNativeFullScreen?d.webkitIsFullScreen:c.hasMsNativeFullScreen?null!==d.msFullscreenElement:void 0},c.requestFullScreen=function(a){c.hasWebkitNativeFullScreen?a.webkitRequestFullScreen():c.hasMozNativeFullScreen?a.mozRequestFullScreen():c.hasMsNativeFullScreen&&a.msRequestFullscreen()},c.cancelFullScreen=function(){c.hasWebkitNativeFullScreen?document.webkitCancelFullScreen():c.hasMozNativeFullScreen?document.mozCancelFullScreen():c.hasMsNativeFullScreen&&document.msExitFullscreen()}),c.hasiOSFullScreen&&f.match(/mac os x 10_5/i)&&(c.hasNativeFullScreen=!1,c.hasiOSFullScreen=!1)}},mejs.MediaFeatures.init(),mejs.HtmlMediaElement={pluginType:"native",isFullScreen:!1,setCurrentTime:function(a){this.currentTime=a},setMuted:function(a){this.muted=a},setVolume:function(a){this.volume=a},stop:function(){this.pause()},setSrc:function(a){for(var b=this.getElementsByTagName("source");b.length>0;)this.removeChild(b[0]);if("string"==typeof a)this.src=a;else{var c,d;for(c=0;c<a.length;c++)if(d=a[c],this.canPlayType(d.type)){this.src=d.src;break}}},setVideoSize:function(a,b){this.width=a,this.height=b}},mejs.PluginMediaElement=function(a,b,c){this.id=a,this.pluginType=b,this.src=c,this.events={},this.attributes={}},mejs.PluginMediaElement.prototype={pluginElement:null,pluginType:"",isFullScreen:!1,playbackRate:-1,defaultPlaybackRate:-1,seekable:[],played:[],paused:!0,ended:!1,seeking:!1,duration:0,error:null,tagName:"",muted:!1,volume:1,currentTime:0,play:function(){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType?this.pluginApi.playVideo():this.pluginApi.playMedia(),this.paused=!1)},load:function(){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType||this.pluginApi.loadMedia(),this.paused=!1)},pause:function(){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType?1==this.pluginApi.getPlayerState()&&this.pluginApi.pauseVideo():this.pluginApi.pauseMedia(),this.paused=!0)},stop:function(){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType?this.pluginApi.stopVideo():this.pluginApi.stopMedia(),this.paused=!0)},canPlayType:function(a){var b,c,d,e=mejs.plugins[this.pluginType];for(b=0;b<e.length;b++)if(d=e[b],mejs.PluginDetector.hasPluginVersion(this.pluginType,d.version))for(c=0;c<d.types.length;c++)if(a==d.types[c])return"probably";return""},positionFullscreenButton:function(a,b,c){null!=this.pluginApi&&this.pluginApi.positionFullscreenButton&&this.pluginApi.positionFullscreenButton(Math.floor(a),Math.floor(b),c)},hideFullscreenButton:function(){null!=this.pluginApi&&this.pluginApi.hideFullscreenButton&&this.pluginApi.hideFullscreenButton()},setSrc:function(a){if("string"==typeof a)this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(a)),this.src=mejs.Utility.absolutizeUrl(a);else{var b,c;for(b=0;b<a.length;b++)if(c=a[b],this.canPlayType(c.type)){this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(c.src)),this.src=mejs.Utility.absolutizeUrl(c.src);break}}},setCurrentTime:function(a){null!=this.pluginApi&&("youtube"==this.pluginType||"vimeo"==this.pluginType?this.pluginApi.seekTo(a):this.pluginApi.setCurrentTime(a),this.currentTime=a)},setVolume:function(a){null!=this.pluginApi&&("youtube"==this.pluginType?this.pluginApi.setVolume(100*a):this.pluginApi.setVolume(a),this.volume=a)},setMuted:function(a){null!=this.pluginApi&&("youtube"==this.pluginType?(a?this.pluginApi.mute():this.pluginApi.unMute(),this.muted=a,this.dispatchEvent({type:"volumechange"})):this.pluginApi.setMuted(a),this.muted=a)},setVideoSize:function(a,b){this.pluginElement&&this.pluginElement.style&&(this.pluginElement.style.width=a+"px",this.pluginElement.style.height=b+"px"),null!=this.pluginApi&&this.pluginApi.setVideoSize&&this.pluginApi.setVideoSize(a,b)},setFullscreen:function(a){null!=this.pluginApi&&this.pluginApi.setFullscreen&&this.pluginApi.setFullscreen(a)},enterFullScreen:function(){null!=this.pluginApi&&this.pluginApi.setFullscreen&&this.setFullscreen(!0)},exitFullScreen:function(){null!=this.pluginApi&&this.pluginApi.setFullscreen&&this.setFullscreen(!1)},addEventListener:function(a,b,c){this.events[a]=this.events[a]||[],this.events[a].push(b)},removeEventListener:function(a,b){if(!a)return this.events={},!0;var c=this.events[a];if(!c)return!0;if(!b)return this.events[a]=[],!0;for(var d=0;d<c.length;d++)if(c[d]===b)return this.events[a].splice(d,1),!0;return!1},dispatchEvent:function(a){var b,c=this.events[a.type];if(c)for(b=0;b<c.length;b++)c[b].apply(this,[a])},hasAttribute:function(a){return a in this.attributes},removeAttribute:function(a){delete this.attributes[a]},getAttribute:function(a){return this.hasAttribute(a)?this.attributes[a]:null},setAttribute:function(a,b){this.attributes[a]=b},remove:function(){mejs.Utility.removeSwf(this.pluginElement.id)}},mejs.MediaElementDefaults={mode:"auto",plugins:["flash","silverlight","youtube","vimeo"],enablePluginDebug:!1,httpsBasicAuthSite:!1,type:"",pluginPath:mejs.Utility.getScriptPath(["mediaelement.js","mediaelement.min.js","mediaelement-and-player.js","mediaelement-and-player.min.js"]),flashName:"flashmediaelement.swf",flashStreamer:"",flashScriptAccess:"sameDomain",enablePluginSmoothing:!1,enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",silverlightName:"silverlightmediaelement.xap",defaultVideoWidth:480,defaultVideoHeight:270,pluginWidth:-1,pluginHeight:-1,pluginVars:[],timerRate:250,startVolume:.8,customError:"",success:function(){},error:function(){}},mejs.MediaElement=function(a,b){return mejs.HtmlMediaElementShim.create(a,b)},mejs.HtmlMediaElementShim={create:function(a,b){var c,d,e={},f="string"==typeof a?document.getElementById(a):a,g=f.tagName.toLowerCase(),h="audio"===g||"video"===g,i=h?f.getAttribute("src"):f.getAttribute("href"),j=f.getAttribute("poster"),k=f.getAttribute("autoplay"),l=f.getAttribute("preload"),m=f.getAttribute("controls");for(d in mejs.MediaElementDefaults)e[d]=mejs.MediaElementDefaults[d];for(d in b)e[d]=b[d];return i="undefined"==typeof i||null===i||""==i?null:i,j="undefined"==typeof j||null===j?"":j,l="undefined"==typeof l||null===l||"false"===l?"none":l,k=!("undefined"==typeof k||null===k||"false"===k),m=!("undefined"==typeof m||null===m||"false"===m),c=this.determinePlayback(f,e,mejs.MediaFeatures.supportsMediaTag,h,i),c.url=null!==c.url?mejs.Utility.absolutizeUrl(c.url):"",c.scheme=mejs.Utility.determineScheme(c.url),"native"==c.method?(mejs.MediaFeatures.isBustedAndroid&&(f.src=c.url,f.addEventListener("click",function(){f.play()},!1)),this.updateNative(c,e,k,l)):""!==c.method?this.createPlugin(c,e,j,k,l,m):(this.createErrorMessage(c,e,j),this)},determinePlayback:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=[],r={method:"",url:"",htmlMediaElement:a,isVideo:"audio"!==a.tagName.toLowerCase(),scheme:""};if("undefined"!=typeof b.type&&""!==b.type)if("string"==typeof b.type)q.push({type:b.type,url:e});else for(f=0;f<b.type.length;f++)q.push({type:b.type[f],url:e});else if(null!==e)k=this.formatType(e,a.getAttribute("type")),q.push({type:k,url:e});else for(f=0;f<a.childNodes.length;f++)j=a.childNodes[f],1==j.nodeType&&"source"==j.tagName.toLowerCase()&&(e=j.getAttribute("src"),k=this.formatType(e,j.getAttribute("type")),p=j.getAttribute("media"),(!p||!window.matchMedia||window.matchMedia&&window.matchMedia(p).matches)&&q.push({type:k,url:e}));if(!d&&q.length>0&&null!==q[0].url&&this.getTypeFromFile(q[0].url).indexOf("audio")>-1&&(r.isVideo=!1),r.isVideo&&mejs.MediaFeatures.isBustedAndroid&&(a.canPlayType=function(a){return null!==a.match(/video\/(mp4|m4v)/gi)?"maybe":""}),r.isVideo&&mejs.MediaFeatures.isChromium&&(a.canPlayType=function(a){return null!==a.match(/video\/(webm|ogv|ogg)/gi)?"maybe":""}),c&&("auto"===b.mode||"auto_plugin"===b.mode||"native"===b.mode)&&(!mejs.MediaFeatures.isBustedNativeHTTPS||b.httpsBasicAuthSite!==!0)){for(d||(o=document.createElement(r.isVideo?"video":"audio"),a.parentNode.insertBefore(o,a),a.style.display="none",r.htmlMediaElement=a=o),f=0;f<q.length;f++)if("video/m3u8"==q[f].type||""!==a.canPlayType(q[f].type).replace(/no/,"")||""!==a.canPlayType(q[f].type.replace(/mp3/,"mpeg")).replace(/no/,"")||""!==a.canPlayType(q[f].type.replace(/m4a/,"mp4")).replace(/no/,"")){r.method="native",r.url=q[f].url;break}if("native"===r.method&&(null!==r.url&&(a.src=r.url),"auto_plugin"!==b.mode))return r}if("auto"===b.mode||"auto_plugin"===b.mode||"shim"===b.mode)for(f=0;f<q.length;f++)for(k=q[f].type,g=0;g<b.plugins.length;g++)for(l=b.plugins[g],m=mejs.plugins[l],h=0;h<m.length;h++)if(n=m[h],null==n.version||mejs.PluginDetector.hasPluginVersion(l,n.version))for(i=0;i<n.types.length;i++)if(k.toLowerCase()==n.types[i].toLowerCase())return r.method=l,r.url=q[f].url,r;return"auto_plugin"===b.mode&&"native"===r.method?r:(""===r.method&&q.length>0&&(r.url=q[0].url),r)},formatType:function(a,b){return a&&!b?this.getTypeFromFile(a):b&&~b.indexOf(";")?b.substr(0,b.indexOf(";")):b},getTypeFromFile:function(a){a=a.split("?")[0];var b=a.substring(a.lastIndexOf(".")+1).toLowerCase(),c=/(mp4|m4v|ogg|ogv|m3u8|webm|webmv|flv|wmv|mpeg|mov)/gi.test(b)?"video/":"audio/";return this.getTypeFromExtension(b,c)},getTypeFromExtension:function(a,b){switch(b=b||"",a){case"mp4":case"m4v":case"m4a":case"f4v":case"f4a":return b+"mp4";case"flv":return b+"x-flv";case"webm":case"webma":case"webmv":return b+"webm";case"ogg":case"oga":case"ogv":return b+"ogg";case"m3u8":return"application/x-mpegurl";case"ts":return b+"mp2t";default:return b+a}},createErrorMessage:function(a,b,c){var d=a.htmlMediaElement,e=document.createElement("div"),f=b.customError;e.className="me-cannotplay";try{e.style.width=d.width+"px",e.style.height=d.height+"px"}catch(g){}f||(f='<a href="'+a.url+'">',""!==c&&(f+='<img src="'+c+'" width="100%" height="100%" alt="" />'),f+="<span>"+mejs.i18n.t("mejs.download-file")+"</span></a>"),e.innerHTML=f,d.parentNode.insertBefore(e,d),d.style.display="none",b.error(d)},createPlugin:function(a,b,c,d,e,f){var g,h,i,j=a.htmlMediaElement,k=1,l=1,m="me_"+a.method+"_"+mejs.meIndex++,n=new mejs.PluginMediaElement(m,a.method,a.url),o=document.createElement("div");n.tagName=j.tagName;for(var p=0;p<j.attributes.length;p++){var q=j.attributes[p];q.specified&&n.setAttribute(q.name,q.value)}for(h=j.parentNode;null!==h&&null!=h.tagName&&"body"!==h.tagName.toLowerCase()&&null!=h.parentNode&&null!=h.parentNode.tagName&&null!=h.parentNode.constructor&&"ShadowRoot"===h.parentNode.constructor.name;){if("p"===h.parentNode.tagName.toLowerCase()){h.parentNode.parentNode.insertBefore(h,h.parentNode);break}h=h.parentNode}if(a.isVideo?(k=b.pluginWidth>0?b.pluginWidth:b.videoWidth>0?b.videoWidth:null!==j.getAttribute("width")?j.getAttribute("width"):b.defaultVideoWidth,l=b.pluginHeight>0?b.pluginHeight:b.videoHeight>0?b.videoHeight:null!==j.getAttribute("height")?j.getAttribute("height"):b.defaultVideoHeight,k=mejs.Utility.encodeUrl(k),l=mejs.Utility.encodeUrl(l)):b.enablePluginDebug&&(k=320,l=240),n.success=b.success,o.className="me-plugin",o.id=m+"_container",a.isVideo?j.parentNode.insertBefore(o,j):document.body.insertBefore(o,document.body.childNodes[0]),"flash"===a.method||"silverlight"===a.method){var r="audio/mp4"===j.getAttribute("type"),s=j.getElementsByTagName("source");if(s&&!r)for(var p=0,t=s.length;t>p;p++)"audio/mp4"===s[p].getAttribute("type")&&(r=!0);i=["id="+m,"isvideo="+(a.isVideo||r?"true":"false"),"autoplay="+(d?"true":"false"),"preload="+e,"width="+k,"startvolume="+b.startVolume,"timerrate="+b.timerRate,"flashstreamer="+b.flashStreamer,"height="+l,"pseudostreamstart="+b.pseudoStreamingStartQueryParam],null!==a.url&&("flash"==a.method?i.push("file="+mejs.Utility.encodeUrl(a.url)):i.push("file="+a.url)),b.enablePluginDebug&&i.push("debug=true"),b.enablePluginSmoothing&&i.push("smoothing=true"),b.enablePseudoStreaming&&i.push("pseudostreaming=true"),f&&i.push("controls=true"),b.pluginVars&&(i=i.concat(b.pluginVars)),window[m+"_init"]=function(){switch(n.pluginType){case"flash":n.pluginElement=n.pluginApi=document.getElementById(m);break;case"silverlight":n.pluginElement=document.getElementById(n.id),n.pluginApi=n.pluginElement.Content.MediaElementJS}null!=n.pluginApi&&n.success&&n.success(n,j)},window[m+"_event"]=function(a,b){var c,d,e;c={type:a,target:n};for(d in b)n[d]=b[d],c[d]=b[d];e=b.bufferedTime||0,c.target.buffered=c.buffered={start:function(a){return 0},end:function(a){return e},length:1},n.dispatchEvent(c)}}switch(a.method){case"silverlight":o.innerHTML='<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="'+m+'" name="'+m+'" width="'+k+'" height="'+l+'" class="mejs-shim"><param name="initParams" value="'+i.join(",")+'" /><param name="windowless" value="true" /><param name="background" value="black" /><param name="minRuntimeVersion" value="3.0.0.0" /><param name="autoUpgrade" value="true" /><param name="source" value="'+b.pluginPath+b.silverlightName+'" /></object>';break;case"flash":mejs.MediaFeatures.isIE?(g=document.createElement("div"),o.appendChild(g),g.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+m+'" width="'+k+'" height="'+l+'" class="mejs-shim"><param name="movie" value="'+b.pluginPath+b.flashName+"?"+(new Date).getTime()+'" /><param name="flashvars" value="'+i.join("&")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+b.flashScriptAccess+'" /><param name="allowFullScreen" value="true" /><param name="scale" value="default" /></object>'):o.innerHTML='<embed id="'+m+'" name="'+m+'" play="true" loop="false" quality="high" bgcolor="#000000" wmode="transparent" allowScriptAccess="'+b.flashScriptAccess+'" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" src="'+b.pluginPath+b.flashName+'" flashvars="'+i.join("&")+'" width="'+k+'" height="'+l+'" scale="default"class="mejs-shim"></embed>';break;case"youtube":var u;if(-1!=a.url.lastIndexOf("youtu.be"))u=a.url.substr(a.url.lastIndexOf("/")+1),-1!=u.indexOf("?")&&(u=u.substr(0,u.indexOf("?")));else{var v=a.url.match(/[?&]v=([^&#]+)|&|#|$/);v&&(u=v[1])}youtubeSettings={container:o,containerId:o.id,pluginMediaElement:n,pluginId:m,videoId:u,height:l,width:k,scheme:a.scheme,variables:b.youtubeIframeVars},window.postMessage?mejs.YouTubeApi.enqueueIframe(youtubeSettings):mejs.PluginDetector.hasPluginVersion("flash",[10,0,0])&&mejs.YouTubeApi.createFlash(youtubeSettings,b);break;case"vimeo":var w=m+"_player";if(n.vimeoid=a.url.substr(a.url.lastIndexOf("/")+1),o.innerHTML='<iframe src="'+a.scheme+"player.vimeo.com/video/"+n.vimeoid+"?api=1&portrait=0&byline=0&title=0&player_id="+w+'" width="'+k+'" height="'+l+'" frameborder="0" class="mejs-shim" id="'+w+'" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>',"function"==typeof $f){var x=$f(o.childNodes[0]),y=-1;x.addEvent("ready",function(){function a(a,b,c,d){var e={type:c,target:b};"timeupdate"==c&&(b.currentTime=e.currentTime=d.seconds,b.duration=e.duration=d.duration),b.dispatchEvent(e)}x.playVideo=function(){x.api("play")},x.stopVideo=function(){x.api("unload")},x.pauseVideo=function(){x.api("pause")},x.seekTo=function(a){x.api("seekTo",a)},x.setVolume=function(a){x.api("setVolume",a)},x.setMuted=function(a){a?(x.lastVolume=x.api("getVolume"),x.api("setVolume",0)):(x.api("setVolume",x.lastVolume),delete x.lastVolume)},x.getPlayerState=function(){return y},x.addEvent("play",function(){y=1,a(x,n,"play"),a(x,n,"playing")}),x.addEvent("pause",function(){y=2,a(x,n,"pause")}),x.addEvent("finish",function(){y=0,a(x,n,"ended")}),x.addEvent("playProgress",function(b){a(x,n,"timeupdate",b)}),x.addEvent("seek",function(b){y=3,a(x,n,"seeked",b)}),x.addEvent("loadProgress",function(b){y=3,a(x,n,"progress",b)}),n.pluginElement=o,n.pluginApi=x,n.success(n,n.pluginElement)})}else console.warn("You need to include froogaloop for vimeo to work")}return j.style.display="none",j.removeAttribute("autoplay"),n},updateNative:function(a,b,c,d){var e,f=a.htmlMediaElement;for(e in mejs.HtmlMediaElement)f[e]=mejs.HtmlMediaElement[e];return b.success(f,f),f}},mejs.YouTubeApi={isIframeStarted:!1,isIframeLoaded:!1,loadIframeApi:function(a){if(!this.isIframeStarted){var b=document.createElement("script");b.src=a.scheme+"www.youtube.com/player_api";var c=document.getElementsByTagName("script")[0];c.parentNode.insertBefore(b,c),this.isIframeStarted=!0}},iframeQueue:[],enqueueIframe:function(a){this.isLoaded?this.createIframe(a):(this.loadIframeApi(a),this.iframeQueue.push(a))},createIframe:function(a){var b=a.pluginMediaElement,c={controls:0,wmode:"transparent"},d=new YT.Player(a.containerId,{height:a.height,width:a.width,videoId:a.videoId,playerVars:mejs.$.extend({},c,a.variables),events:{onReady:function(c){d.setVideoSize=function(a,b){d.setSize(a,b)},a.pluginMediaElement.pluginApi=d,a.pluginMediaElement.pluginElement=document.getElementById(a.containerId),b.success(b,b.pluginElement),mejs.YouTubeApi.createEvent(d,b,"canplay"),setInterval(function(){mejs.YouTubeApi.createEvent(d,b,"timeupdate")},250),"undefined"!=typeof b.attributes.autoplay&&d.playVideo()},onStateChange:function(a){mejs.YouTubeApi.handleStateChange(a.data,d,b)}}})},createEvent:function(a,b,c){var d={type:c,target:b};if(a&&a.getDuration){b.currentTime=d.currentTime=a.getCurrentTime(),b.duration=d.duration=a.getDuration(),d.paused=b.paused,d.ended=b.ended,d.muted=a.isMuted(),d.volume=a.getVolume()/100,d.bytesTotal=a.getVideoBytesTotal(),d.bufferedBytes=a.getVideoBytesLoaded();var e=d.bufferedBytes/d.bytesTotal*d.duration;d.target.buffered=d.buffered={start:function(a){return 0},end:function(a){return e},length:1}}b.dispatchEvent(d)},iFrameReady:function(){for(this.isLoaded=!0,this.isIframeLoaded=!0;this.iframeQueue.length>0;){var a=this.iframeQueue.pop();this.createIframe(a)}},flashPlayers:{},createFlash:function(a){this.flashPlayers[a.pluginId]=a;var b,c=a.scheme+"www.youtube.com/apiplayer?enablejsapi=1&playerapiid="+a.pluginId+"&version=3&autoplay=0&controls=0&modestbranding=1&loop=0";mejs.MediaFeatures.isIE?(b=document.createElement("div"),a.container.appendChild(b),b.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="'+a.scheme+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" id="'+a.pluginId+'" width="'+a.width+'" height="'+a.height+'" class="mejs-shim"><param name="movie" value="'+c+'" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+options.flashScriptAccess+'" /><param name="allowFullScreen" value="true" /></object>'):a.container.innerHTML='<object type="application/x-shockwave-flash" id="'+a.pluginId+'" data="'+c+'" width="'+a.width+'" height="'+a.height+'" style="visibility: visible; " class="mejs-shim"><param name="allowScriptAccess" value="'+options.flashScriptAccess+'"><param name="wmode" value="transparent"></object>'},flashReady:function(a){var b=this.flashPlayers[a],c=document.getElementById(a),d=b.pluginMediaElement;d.pluginApi=d.pluginElement=c,b.success(d,d.pluginElement),c.cueVideoById(b.videoId);var e=b.containerId+"_callback";window[e]=function(a){mejs.YouTubeApi.handleStateChange(a,c,d)},c.addEventListener("onStateChange",e),setInterval(function(){mejs.YouTubeApi.createEvent(c,d,"timeupdate")},250),mejs.YouTubeApi.createEvent(c,d,"canplay")},handleStateChange:function(a,b,c){switch(a){case-1:c.paused=!0,c.ended=!0,mejs.YouTubeApi.createEvent(b,c,"loadedmetadata");break;case 0:c.paused=!1,c.ended=!0,mejs.YouTubeApi.createEvent(b,c,"ended");break;case 1:c.paused=!1,c.ended=!1,mejs.YouTubeApi.createEvent(b,c,"play"),mejs.YouTubeApi.createEvent(b,c,"playing");break;case 2:c.paused=!0,c.ended=!1,mejs.YouTubeApi.createEvent(b,c,"pause");break;case 3:mejs.YouTubeApi.createEvent(b,c,"progress");break;case 5:}}},window.onYouTubePlayerAPIReady=function(){mejs.YouTubeApi.iFrameReady()},window.onYouTubePlayerReady=function(a){mejs.YouTubeApi.flashReady(a)},window.mejs=mejs,window.MediaElement=mejs.MediaElement,function(a,b,c,d){var e={"default":"en",locale:{language:c.i18n&&c.i18n.locale.language||"",strings:c.i18n&&c.i18n.locale.strings||{}},pluralForms:[function(){return arguments[1]},function(){var a=arguments;return 1===a[0]?a[1]:a[2]},function(){var a=arguments;return[0,1].indexOf(a[0])>-1?a[1]:a[2]},function(){var a=arguments;return a[0]%10===1&&a[0]%100!==11?a[1]:0!==a[0]?a[2]:a[3]},function(){var a=arguments;return 1===a[0]||11===a[0]?a[1]:2===a[0]||12===a[0]?a[2]:a[0]>2&&a[0]<20?a[3]:a[4]},function(){return 1===args[0]?args[1]:0===args[0]||args[0]%100>0&&args[0]%100<20?args[2]:args[3]},function(){var a=arguments;return a[0]%10===1&&a[0]%100!==11?a[1]:a[0]%10>=2&&(a[0]%100<10||a[0]%100>=20)?a[2]:[3]},function(){var a=arguments;return a[0]%10===1&&a[0]%100!==11?a[1]:a[0]%10>=2&&a[0]%10<=4&&(a[0]%100<10||a[0]%100>=20)?a[2]:a[3]},function(){var a=arguments;return 1===a[0]?a[1]:a[0]>=2&&a[0]<=4?a[2]:a[3]},function(){var a=arguments;return 1===a[0]?a[1]:a[0]%10>=2&&a[0]%10<=4&&(a[0]%100<10||a[0]%100>=20)?a[2]:a[3]},function(){var a=arguments;return a[0]%100===1?a[2]:a[0]%100===2?a[3]:a[0]%100===3||a[0]%100===4?a[4]:a[1]},function(){var a=arguments;return 1===a[0]?a[1]:2===a[0]?a[2]:a[0]>2&&a[0]<7?a[3]:a[0]>6&&a[0]<11?a[4]:a[5]},function(){var a=arguments;return 0===a[0]?a[1]:1===a[0]?a[2]:2===a[0]?a[3]:a[0]%100>=3&&a[0]%100<=10?a[4]:a[0]%100>=11?a[5]:a[6]},function(){var a=arguments;return 1===a[0]?a[1]:0===a[0]||a[0]%100>1&&a[0]%100<11?a[2]:a[0]%100>10&&a[0]%100<20?a[3]:a[4]},function(){var a=arguments;return a[0]%10===1?a[1]:a[0]%10===2?a[2]:a[3]},function(){var a=arguments;return 11!==a[0]&&a[0]%10===1?a[1]:a[2]},function(){var a=arguments;return 1===a[0]?a[1]:a[0]%10>=2&&a[0]%10<=4&&(a[0]%100<10||a[0]%100>=20)?a[2]:a[3]},function(){var a=arguments;return 1===a[0]?a[1]:2===a[0]?a[2]:8!==a[0]&&11!==a[0]?a[3]:a[4]},function(){var a=arguments;return 0===a[0]?a[1]:a[2]},function(){var a=arguments;return 1===a[0]?a[1]:2===a[0]?a[2]:3===a[0]?a[3]:a[4]},function(){var a=arguments;return 0===a[0]?a[1]:1===a[0]?a[2]:a[3]}],getLanguage:function(){var a=e.locale.language||e["default"];return/^(x\-)?[a-z]{2,}(\-\w{2,})?(\-\w{2,})?$/.exec(a)?a:e["default"]},t:function(a,b){if("string"==typeof a&&a.length){var c,d,f=e.getLanguage(),g=function(a,b,c){return"object"!=typeof a||"number"!=typeof b||"number"!=typeof c?a:"string"==typeof a?a:e.pluralForms[c].apply(null,[b].concat(a))},h=function(a){var b={"&":"&","<":"<",">":">",'"':"""};return a.replace(/[&<>"]/g,function(a){return b[a]})};return e.locale.strings&&e.locale.strings[f]&&(c=e.locale.strings[f][a],"number"==typeof b&&(d=e.locale.strings[f]["mejs.plural-form"],c=g.apply(null,[c,b,d]))),!c&&e.locale.strings&&e.locale.strings[e["default"]]&&(c=e.locale.strings[e["default"]][a],"number"==typeof b&&(d=e.locale.strings[e["default"]]["mejs.plural-form"],c=g.apply(null,[c,b,d]))),c=c||a,"number"==typeof b&&(c=c.replace("%1",b)),h(c)}return a}};"undefined"!=typeof mejsL10n&&(e.locale.language=mejsL10n.language),c.i18n=e}(document,window,mejs),function(a,b){"use strict";"undefined"!=typeof mejsL10n&&(a[mejsL10n.language]=mejsL10n.strings)}(mejs.i18n.locale.strings),/*! - * This is a i18n.locale language object. - * - * English; This can serve as a template for other languages to translate - * - * @author - * TBD - * Sascha Greuel (Twitter: @SoftCreatR) - * - * @see - * me-i18n.js - * - * @params - * - exports - CommonJS, window .. - */ -function(a){"use strict";void 0===a.en&&(a.en={"mejs.plural-form":1,"mejs.download-file":"Download File","mejs.fullscreen-off":"Turn off Fullscreen","mejs.fullscreen-on":"Go Fullscreen","mejs.download-video":"Download Video","mejs.fullscreen":"Fullscreen","mejs.time-jump-forward":["Jump forward 1 second","Jump forward %1 seconds"],"mejs.play":"Play","mejs.pause":"Pause","mejs.close":"Close","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.time-skip-back":["Skip back 1 second","Skip back %1 seconds"],"mejs.captions-subtitles":"Captions/Subtitles","mejs.none":"None","mejs.mute-toggle":"Mute Toggle","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.ad-skip":"Skip ad","mejs.ad-skip-info":["Skip in 1 second","Skip in %1 seconds"],"mejs.source-chooser":"Source Chooser"})}(mejs.i18n.locale.strings),/*! - * - * MediaElementPlayer - * http://mediaelementjs.com/ + * http://www.mediaelementjs.com/ * - * Creates a controller bar for HTML5 <video> add <audio> tags - * using jQuery and MediaElement.js (HTML5 Flash/Silverlight wrapper) + * Wrapper that mimics native HTML5 MediaElement (audio and video) + * using a variety of technologies (pure JavaScript, Flash, iframe) * - * Copyright 2010-2013, John Dyer (http://j.hn/) + * Copyright 2010-2017, John Dyer (http://j.hn/) * License: MIT * */ -"undefined"!=typeof jQuery?mejs.$=jQuery:"undefined"!=typeof Zepto?(mejs.$=Zepto,Zepto.fn.outerWidth=function(a){var b=$(this).width();return a&&(b+=parseInt($(this).css("margin-right"),10),b+=parseInt($(this).css("margin-left"),10)),b}):"undefined"!=typeof ender&&(mejs.$=ender),function(a){mejs.MepDefaults={poster:"",showPosterWhenEnded:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:30,defaultSeekBackwardInterval:function(a){return.05*a.duration},defaultSeekForwardInterval:function(a){return.05*a.duration},setDimensions:!0,audioWidth:-1,audioHeight:-1,startVolume:.8,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,autosizeProgress:!0,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,stretching:"auto",enableKeyboard:!0,pauseOtherPlayers:!0,keyActions:[{keys:[32,179],action:function(a,b,c,d){mejs.MediaFeatures.isFirefox||(b.paused||b.ended?b.play():b.pause())}},{keys:[38],action:function(a,b,c,d){a.container.find(".mejs-volume-slider").css("display","block"),a.isVideo&&(a.showControls(),a.startControlsTimer());var e=Math.min(b.volume+.1,1);b.setVolume(e)}},{keys:[40],action:function(a,b,c,d){a.container.find(".mejs-volume-slider").css("display","block"),a.isVideo&&(a.showControls(),a.startControlsTimer());var e=Math.max(b.volume-.1,0);b.setVolume(e)}},{keys:[37,227],action:function(a,b,c,d){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var e=Math.max(b.currentTime-a.options.defaultSeekBackwardInterval(b),0);b.setCurrentTime(e)}}},{keys:[39,228],action:function(a,b,c,d){if(!isNaN(b.duration)&&b.duration>0){a.isVideo&&(a.showControls(),a.startControlsTimer());var e=Math.min(b.currentTime+a.options.defaultSeekForwardInterval(b),b.duration);b.setCurrentTime(e)}}},{keys:[70],action:function(a,b,c,d){"undefined"!=typeof a.enterFullScreen&&(a.isFullScreen?a.exitFullScreen():a.enterFullScreen())}},{keys:[77],action:function(a,b,c,d){a.container.find(".mejs-volume-slider").css("display","block"),a.isVideo&&(a.showControls(),a.startControlsTimer()),a.media.muted?a.setMuted(!1):a.setMuted(!0)}}]},mejs.mepIndex=0,mejs.players={},mejs.MediaElementPlayer=function(b,c){if(!(this instanceof mejs.MediaElementPlayer))return new mejs.MediaElementPlayer(b,c);var d=this;return d.$media=d.$node=a(b),d.node=d.media=d.$media[0],d.node?"undefined"!=typeof d.node.player?d.node.player:("undefined"==typeof c&&(c=d.$node.data("mejsoptions")),d.options=a.extend({},mejs.MepDefaults,c),d.options.timeFormat||(d.options.timeFormat="mm:ss",d.options.alwaysShowHours&&(d.options.timeFormat="hh:mm:ss"),d.options.showTimecodeFrameCount&&(d.options.timeFormat+=":ff")),mejs.Utility.calculateTimeFormat(0,d.options,d.options.framesPerSecond||25),d.id="mep_"+mejs.mepIndex++,mejs.players[d.id]=d,d.init(),d):void 0},mejs.MediaElementPlayer.prototype={hasFocus:!1,controlsAreVisible:!0,init:function(){var b=this,c=mejs.MediaFeatures,d=a.extend(!0,{},b.options,{success:function(a,c){b.meReady(a,c)},error:function(a){b.handleError(a)}}),e=b.media.tagName.toLowerCase();if(b.isDynamic="audio"!==e&&"video"!==e,b.isDynamic?b.isVideo=b.options.isVideo:b.isVideo="audio"!==e&&b.options.isVideo,c.isiPad&&b.options.iPadUseNativeControls||c.isiPhone&&b.options.iPhoneUseNativeControls)b.$media.attr("controls","controls"),c.isiPad&&null!==b.media.getAttribute("autoplay")&&b.play();else if(c.isAndroid&&b.options.AndroidUseNativeControls);else if(b.isVideo||!b.isVideo&&b.options.features.length){b.$media.removeAttr("controls");var f=b.isVideo?mejs.i18n.t("mejs.video-player"):mejs.i18n.t("mejs.audio-player");a('<span class="mejs-offscreen">'+f+"</span>").insertBefore(b.$media),b.container=a('<div id="'+b.id+'" class="mejs-container '+(mejs.MediaFeatures.svgAsImg?"svg":"no-svg")+'" tabindex="0" role="application" aria-label="'+f+'"><div class="mejs-inner"><div class="mejs-mediaelement"></div><div class="mejs-layers"></div><div class="mejs-controls"></div><div class="mejs-clear"></div></div></div>').addClass(b.$media[0].className).insertBefore(b.$media).focus(function(a){if(!b.controlsAreVisible&&!b.hasFocus&&b.controlsEnabled&&(b.showControls(!0),!b.hasMsNativeFullScreen)){var c=".mejs-playpause-button > button";mejs.Utility.isNodeAfter(a.relatedTarget,b.container[0])&&(c=".mejs-controls .mejs-button:last-child > button");var d=b.container.find(c);d.focus()}}),b.options.features.length||b.container.css("background","transparent").find(".mejs-controls").hide(),b.isVideo&&"fill"===b.options.stretching&&!b.container.parent("mejs-fill-container").length&&(b.outerContainer=b.$media.parent(),b.container.wrap('<div class="mejs-fill-container"/>')),b.container.addClass((c.isAndroid?"mejs-android ":"")+(c.isiOS?"mejs-ios ":"")+(c.isiPad?"mejs-ipad ":"")+(c.isiPhone?"mejs-iphone ":"")+(b.isVideo?"mejs-video ":"mejs-audio ")),b.container.find(".mejs-mediaelement").append(b.$media),b.node.player=b,b.controls=b.container.find(".mejs-controls"),b.layers=b.container.find(".mejs-layers");var g=b.isVideo?"video":"audio",h=g.substring(0,1).toUpperCase()+g.substring(1);b.options[g+"Width"]>0||b.options[g+"Width"].toString().indexOf("%")>-1?b.width=b.options[g+"Width"]:""!==b.media.style.width&&null!==b.media.style.width?b.width=b.media.style.width:null!==b.media.getAttribute("width")?b.width=b.$media.attr("width"):b.width=b.options["default"+h+"Width"],b.options[g+"Height"]>0||b.options[g+"Height"].toString().indexOf("%")>-1?b.height=b.options[g+"Height"]:""!==b.media.style.height&&null!==b.media.style.height?b.height=b.media.style.height:null!==b.$media[0].getAttribute("height")?b.height=b.$media.attr("height"):b.height=b.options["default"+h+"Height"],b.setPlayerSize(b.width,b.height),d.pluginWidth=b.width,d.pluginHeight=b.height}else b.isVideo||b.options.features.length||b.$media.hide();mejs.MediaElement(b.$media[0],d),"undefined"!=typeof b.container&&b.options.features.length&&b.controlsAreVisible&&b.container.trigger("controlsshown")},showControls:function(a){var b=this;a="undefined"==typeof a||a,b.controlsAreVisible||(a?(b.controls.removeClass("mejs-offscreen").stop(!0,!0).fadeIn(200,function(){b.controlsAreVisible=!0,b.container.trigger("controlsshown")}),b.container.find(".mejs-control").removeClass("mejs-offscreen").stop(!0,!0).fadeIn(200,function(){b.controlsAreVisible=!0})):(b.controls.removeClass("mejs-offscreen").css("display","block"),b.container.find(".mejs-control").removeClass("mejs-offscreen").css("display","block"),b.controlsAreVisible=!0,b.container.trigger("controlsshown")),b.setControlsSize())},hideControls:function(b){var c=this;b="undefined"==typeof b||b,!c.controlsAreVisible||c.options.alwaysShowControls||c.keyboardAction||c.media.paused||c.media.ended||(b?(c.controls.stop(!0,!0).fadeOut(200,function(){a(this).addClass("mejs-offscreen").css("display","block"),c.controlsAreVisible=!1,c.container.trigger("controlshidden")}),c.container.find(".mejs-control").stop(!0,!0).fadeOut(200,function(){a(this).addClass("mejs-offscreen").css("display","block")})):(c.controls.addClass("mejs-offscreen").css("display","block"),c.container.find(".mejs-control").addClass("mejs-offscreen").css("display","block"),c.controlsAreVisible=!1,c.container.trigger("controlshidden")))},controlsTimer:null,startControlsTimer:function(a){var b=this;a="undefined"!=typeof a?a:b.options.controlsTimeoutDefault,b.killControlsTimer("start"),b.controlsTimer=setTimeout(function(){b.hideControls(),b.killControlsTimer("hide")},a)},killControlsTimer:function(a){var b=this;null!==b.controlsTimer&&(clearTimeout(b.controlsTimer),delete b.controlsTimer,b.controlsTimer=null)},controlsEnabled:!0,disableControls:function(){var a=this;a.killControlsTimer(),a.hideControls(!1),this.controlsEnabled=!1},enableControls:function(){var a=this;a.showControls(!1),a.controlsEnabled=!0},meReady:function(b,c){var d,e,f=this,g=mejs.MediaFeatures,h=c.getAttribute("autoplay"),i=!("undefined"==typeof h||null===h||"false"===h);if(!f.created){if(f.created=!0,f.media=b,f.domNode=c,!(g.isAndroid&&f.options.AndroidUseNativeControls||g.isiPad&&f.options.iPadUseNativeControls||g.isiPhone&&f.options.iPhoneUseNativeControls)){if(!f.isVideo&&!f.options.features.length)return i&&"native"==b.pluginType&&f.play(),void(f.options.success&&("string"==typeof f.options.success?window[f.options.success](f.media,f.domNode,f):f.options.success(f.media,f.domNode,f)));f.buildposter(f,f.controls,f.layers,f.media),f.buildkeyboard(f,f.controls,f.layers,f.media),f.buildoverlays(f,f.controls,f.layers,f.media),f.findTracks();for(d in f.options.features)if(e=f.options.features[d],f["build"+e])try{f["build"+e](f,f.controls,f.layers,f.media)}catch(j){}f.container.trigger("controlsready"),f.setPlayerSize(f.width,f.height),f.setControlsSize(),f.isVideo&&(mejs.MediaFeatures.hasTouch&&!f.options.alwaysShowControls?f.$media.bind("touchstart",function(){f.controlsAreVisible?f.hideControls(!1):f.controlsEnabled&&f.showControls(!1)}):(f.clickToPlayPauseCallback=function(){if(f.options.clickToPlayPause){f.media.paused?f.play():f.pause();var a=f.$media.closest(".mejs-container").find(".mejs-overlay-button"),b=a.attr("aria-pressed");a.attr("aria-pressed",!b)}},f.media.addEventListener("click",f.clickToPlayPauseCallback,!1),f.container.bind("mouseenter",function(){f.controlsEnabled&&(f.options.alwaysShowControls||(f.killControlsTimer("enter"),f.showControls(),f.startControlsTimer(f.options.controlsTimeoutMouseEnter)))}).bind("mousemove",function(){f.controlsEnabled&&(f.controlsAreVisible||f.showControls(),f.options.alwaysShowControls||f.startControlsTimer(f.options.controlsTimeoutMouseEnter))}).bind("mouseleave",function(){f.controlsEnabled&&(f.media.paused||f.options.alwaysShowControls||f.startControlsTimer(f.options.controlsTimeoutMouseLeave))})),f.options.hideVideoControlsOnLoad&&f.hideControls(!1),i&&!f.options.alwaysShowControls&&f.hideControls(),f.options.enableAutosize&&f.media.addEventListener("loadedmetadata",function(a){f.options.videoHeight<=0&&null===f.domNode.getAttribute("height")&&!isNaN(a.target.videoHeight)&&(f.setPlayerSize(a.target.videoWidth,a.target.videoHeight),f.setControlsSize(),f.media.setVideoSize(a.target.videoWidth,a.target.videoHeight))},!1)),f.media.addEventListener("play",function(){var a;for(a in mejs.players){var b=mejs.players[a];b.id==f.id||!f.options.pauseOtherPlayers||b.paused||b.ended||b.pause(),b.hasFocus=!1}f.hasFocus=!0},!1),f.media.addEventListener("ended",function(b){if(f.options.autoRewind)try{f.media.setCurrentTime(0),window.setTimeout(function(){a(f.container).find(".mejs-overlay-loading").parent().hide()},20)}catch(c){}"youtube"===f.media.pluginType?f.media.stop():f.media.pause(),f.setProgressRail&&f.setProgressRail(),f.setCurrentRail&&f.setCurrentRail(),f.options.loop?f.play():!f.options.alwaysShowControls&&f.controlsEnabled&&f.showControls()},!1),f.media.addEventListener("loadedmetadata",function(){mejs.Utility.calculateTimeFormat(f.duration,f.options,f.options.framesPerSecond||25),f.updateDuration&&f.updateDuration(),f.updateCurrent&&f.updateCurrent(),f.isFullScreen||(f.setPlayerSize(f.width,f.height),f.setControlsSize())},!1);var k=null;f.media.addEventListener("timeupdate",function(){k!==this.duration&&(k=this.duration,mejs.Utility.calculateTimeFormat(k,f.options,f.options.framesPerSecond||25),f.updateDuration&&f.updateDuration(),f.updateCurrent&&f.updateCurrent(),f.setControlsSize())},!1),f.container.focusout(function(b){if(b.relatedTarget){var c=a(b.relatedTarget);f.keyboardAction&&0===c.parents(".mejs-container").length&&(f.keyboardAction=!1,f.isVideo&&!f.options.alwaysShowControls&&f.hideControls(!0))}}),setTimeout(function(){f.setPlayerSize(f.width,f.height),f.setControlsSize()},50),f.globalBind("resize",function(){f.isFullScreen||mejs.MediaFeatures.hasTrueNativeFullScreen&&document.webkitIsFullScreen||f.setPlayerSize(f.width,f.height),f.setControlsSize()}),"youtube"==f.media.pluginType&&(g.isiOS||g.isAndroid)&&(f.container.find(".mejs-overlay-play").hide(),f.container.find(".mejs-poster").hide())}i&&"native"==b.pluginType&&f.play(),f.options.success&&("string"==typeof f.options.success?window[f.options.success](f.media,f.domNode,f):f.options.success(f.media,f.domNode,f))}},handleError:function(a){var b=this;b.controls&&b.controls.hide(),b.options.error&&b.options.error(a)},setPlayerSize:function(a,b){var c=this;if(!c.options.setDimensions)return!1;switch("undefined"!=typeof a&&(c.width=a),"undefined"!=typeof b&&(c.height=b),c.options.stretching){case"fill":c.isVideo?this.setFillMode():this.setDimensions(c.width,c.height);break;case"responsive":this.setResponsiveMode();break;case"none":this.setDimensions(c.width,c.height);break;default:this.hasFluidMode()===!0?this.setResponsiveMode():this.setDimensions(c.width,c.height)}},hasFluidMode:function(){var a=this;return a.height.toString().indexOf("%")>0||"none"!==a.$node.css("max-width")&&"t.width"!==a.$node.css("max-width")||a.$node[0].currentStyle&&"100%"===a.$node[0].currentStyle.maxWidth},setResponsiveMode:function(){var b=this,c=function(){return b.isVideo?b.media.videoWidth&&b.media.videoWidth>0?b.media.videoWidth:null!==b.media.getAttribute("width")?b.media.getAttribute("width"):b.options.defaultVideoWidth:b.options.defaultAudioWidth}(),d=function(){return b.isVideo?b.media.videoHeight&&b.media.videoHeight>0?b.media.videoHeight:null!==b.media.getAttribute("height")?b.media.getAttribute("height"):b.options.defaultVideoHeight:b.options.defaultAudioHeight}(),e=b.container.parent().closest(":visible").width(),f=b.container.parent().closest(":visible").height(),g=b.isVideo||!b.options.autosizeProgress?parseInt(e*d/c,10):d;(isNaN(g)||0!==f&&g>f&&f>d)&&(g=f),b.container.parent().length>0&&"body"===b.container.parent()[0].tagName.toLowerCase()&&(e=a(window).width(),g=a(window).height()),g&&e&&(b.container.width(e).height(g),b.$media.add(b.container.find(".mejs-shim")).width("100%").height("100%"),b.isVideo&&b.media.setVideoSize&&b.media.setVideoSize(e,g),b.layers.children(".mejs-layer").width("100%").height("100%"))},setFillMode:function(){var a=this,b=a.outerContainer;b.width()||b.height(a.$media.width()),b.height()||b.height(a.$media.height());var c=b.width(),d=b.height();a.setDimensions("100%","100%"),a.container.find(".mejs-poster img").css("display","block"),targetElement=a.container.find("object, embed, iframe, video");var e=a.height,f=a.width,g=c,h=e*c/f,i=f*d/e,j=d,k=!(i>c),l=k?Math.floor(g):Math.floor(i),m=k?Math.floor(h):Math.floor(j);k?(targetElement.height(m).width(c),a.media.setVideoSize&&a.media.setVideoSize(c,m)):(targetElement.height(d).width(l),a.media.setVideoSize&&a.media.setVideoSize(l,d)),targetElement.css({"margin-left":Math.floor((c-l)/2),"margin-top":0})},setDimensions:function(a,b){var c=this;c.container.width(a).height(b),c.layers.children(".mejs-layer").width(a).height(b)},setControlsSize:function(){var b=this,c=0,d=0,e=b.controls.find(".mejs-time-rail"),f=b.controls.find(".mejs-time-total"),g=e.siblings(),h=g.last(),i=null,j=b.options&&!b.options.autosizeProgress;if(b.container.is(":visible")&&e.length&&e.is(":visible")){j&&(d=parseInt(e.css("width"),10)),0!==d&&d||(g.each(function(){var b=a(this);"absolute"!=b.css("position")&&b.is(":visible")&&(c+=a(this).outerWidth(!0))}),d=b.controls.width()-c-(e.outerWidth(!0)-e.width()));do j||e.width(d),f.width(d-(f.outerWidth(!0)-f.width())),"absolute"!=h.css("position")&&(i=h.length?h.position():null,d--);while(null!==i&&i.top.toFixed(2)>0&&d>0);b.container.trigger("controlsresize")}},buildposter:function(b,c,d,e){var f=this,g=a('<div class="mejs-poster mejs-layer"></div>').appendTo(d),h=b.$media.attr("poster");""!==b.options.poster&&(h=b.options.poster),h?f.setPoster(h):g.hide(),e.addEventListener("play",function(){g.hide()},!1),b.options.showPosterWhenEnded&&b.options.autoRewind&&e.addEventListener("ended",function(){g.show()},!1)},setPoster:function(b){var c=this,d=c.container.find(".mejs-poster"),e=d.find("img");0===e.length&&(e=a('<img width="100%" height="100%" alt="" />').appendTo(d)),e.attr("src",b),d.css({"background-image":"url("+b+")"})},buildoverlays:function(b,c,d,e){var f=this;if(b.isVideo){var g=a('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-loading"><span></span></div></div>').hide().appendTo(d),h=a('<div class="mejs-overlay mejs-layer"><div class="mejs-overlay-error"></div></div>').hide().appendTo(d),i=a('<div class="mejs-overlay mejs-layer mejs-overlay-play"><div class="mejs-overlay-button" role="button" aria-label="'+mejs.i18n.t("mejs.play")+'" aria-pressed="false"></div></div>').appendTo(d).bind("click",function(){if(f.options.clickToPlayPause){e.paused&&e.play();var b=a(this).find(".mejs-overlay-button"),c=b.attr("aria-pressed");b.attr("aria-pressed",!!c)}});e.addEventListener("play",function(){i.hide(),g.hide(),c.find(".mejs-time-buffering").hide(),h.hide()},!1),e.addEventListener("playing",function(){i.hide(),g.hide(),c.find(".mejs-time-buffering").hide(),h.hide()},!1),e.addEventListener("seeking",function(){g.show(),c.find(".mejs-time-buffering").show()},!1),e.addEventListener("seeked",function(){g.hide(),c.find(".mejs-time-buffering").hide()},!1),e.addEventListener("pause",function(){mejs.MediaFeatures.isiPhone||i.show()},!1),e.addEventListener("waiting",function(){g.show(),c.find(".mejs-time-buffering").show()},!1),e.addEventListener("loadeddata",function(){g.show(),c.find(".mejs-time-buffering").show(),mejs.MediaFeatures.isAndroid&&(e.canplayTimeout=window.setTimeout(function(){if(document.createEvent){var a=document.createEvent("HTMLEvents");return a.initEvent("canplay",!0,!0),e.dispatchEvent(a)}},300))},!1),e.addEventListener("canplay",function(){g.hide(),c.find(".mejs-time-buffering").hide(),clearTimeout(e.canplayTimeout)},!1),e.addEventListener("error",function(a){f.handleError(a),g.hide(),i.hide(),h.show(),h.find(".mejs-overlay-error").html("Error loading this resource")},!1),e.addEventListener("keydown",function(a){f.onkeydown(b,e,a)},!1)}},buildkeyboard:function(b,c,d,e){var f=this;f.container.keydown(function(){f.keyboardAction=!0}),f.globalBind("keydown",function(c){return b.hasFocus=0!==a(c.target).closest(".mejs-container").length&&a(c.target).closest(".mejs-container").attr("id")===b.$media.closest(".mejs-container").attr("id"),f.onkeydown(b,e,c)}),f.globalBind("click",function(c){b.hasFocus=0!==a(c.target).closest(".mejs-container").length})},onkeydown:function(a,b,c){if(a.hasFocus&&a.options.enableKeyboard)for(var d=0,e=a.options.keyActions.length;e>d;d++)for(var f=a.options.keyActions[d],g=0,h=f.keys.length;h>g;g++)if(c.keyCode==f.keys[g])return"function"==typeof c.preventDefault&&c.preventDefault(),f.action(a,b,c.keyCode,c),!1;return!0},findTracks:function(){var b=this,c=b.$media.find("track");b.tracks=[],c.each(function(c,d){d=a(d),b.tracks.push({srclang:d.attr("srclang")?d.attr("srclang").toLowerCase():"",src:d.attr("src"),kind:d.attr("kind"),label:d.attr("label")||"",entries:[],isLoaded:!1})})},changeSkin:function(a){this.container[0].className="mejs-container "+a,this.setPlayerSize(this.width,this.height),this.setControlsSize()},play:function(){this.load(),this.media.play()},pause:function(){try{this.media.pause()}catch(a){}},load:function(){this.isLoaded||this.media.load(),this.isLoaded=!0},setMuted:function(a){this.media.setMuted(a)},setCurrentTime:function(a){this.media.setCurrentTime(a)},getCurrentTime:function(){return this.media.currentTime},setVolume:function(a){this.media.setVolume(a)},getVolume:function(){return this.media.volume},setSrc:function(a){var b=this;if("youtube"===b.media.pluginType){var c;if("string"!=typeof a){var d,e;for(d=0;d<a.length;d++)if(e=a[d],this.canPlayType(e.type)){a=e.src;break}}if(-1!==a.lastIndexOf("youtu.be"))c=a.substr(a.lastIndexOf("/")+1),-1!==c.indexOf("?")&&(c=c.substr(0,c.indexOf("?")));else{var f=a.match(/[?&]v=([^&#]+)|&|#|$/);f&&(c=f[1])}null!==b.media.getAttribute("autoplay")?b.media.pluginApi.loadVideoById(c):b.media.pluginApi.cueVideoById(c)}else b.media.setSrc(a)},remove:function(){var a,b,c=this;c.container.prev(".mejs-offscreen").remove();for(a in c.options.features)if(b=c.options.features[a],c["clean"+b])try{c["clean"+b](c)}catch(d){}c.isDynamic?c.$node.insertBefore(c.container):(c.$media.prop("controls",!0),c.$node.clone().insertBefore(c.container).show(),c.$node.remove()),"native"!==c.media.pluginType&&c.media.remove(),delete mejs.players[c.id],"object"==typeof c.container&&c.container.remove(),c.globalUnbind(),delete c.node.player},rebuildtracks:function(){var a=this;a.findTracks(),a.buildtracks(a,a.controls,a.layers,a.media)},resetSize:function(){var a=this;setTimeout(function(){a.setPlayerSize(a.width,a.height),a.setControlsSize()},50)}},function(){function b(b,d){var e={d:[],w:[]};return a.each((b||"").split(" "),function(a,b){var f=b+"."+d;0===f.indexOf(".")?(e.d.push(f),e.w.push(f)):e[c.test(b)?"w":"d"].push(f)}),e.d=e.d.join(" "),e.w=e.w.join(" "),e}var c=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;mejs.MediaElementPlayer.prototype.globalBind=function(c,d,e){var f=this,g=f.node?f.node.ownerDocument:document;c=b(c,f.id),c.d&&a(g).bind(c.d,d,e),c.w&&a(window).bind(c.w,d,e)},mejs.MediaElementPlayer.prototype.globalUnbind=function(c,d){var e=this,f=e.node?e.node.ownerDocument:document;c=b(c,e.id),c.d&&a(f).unbind(c.d,d),c.w&&a(window).unbind(c.w,d)}}(),"undefined"!=typeof a&&(a.fn.mediaelementplayer=function(b){return b===!1?this.each(function(){var b=a(this).data("mediaelementplayer");b&&b.remove(),a(this).removeData("mediaelementplayer")}):this.each(function(){a(this).data("mediaelementplayer",new mejs.MediaElementPlayer(this,b))}),this},a(document).ready(function(){a(".mejs-player").mediaelementplayer()})),window.MediaElementPlayer=mejs.MediaElementPlayer}(mejs.$),function(a){a.extend(mejs.MepDefaults,{playText:"",pauseText:""}),a.extend(MediaElementPlayer.prototype,{buildplaypause:function(b,c,d,e){function f(a){"play"===a?(k.removeClass("mejs-play").addClass("mejs-pause"),l.attr({title:j,"aria-label":j})):(k.removeClass("mejs-pause").addClass("mejs-play"),l.attr({title:i,"aria-label":i}))}var g=this,h=g.options,i=h.playText?h.playText:mejs.i18n.t("mejs.play"),j=h.pauseText?h.pauseText:mejs.i18n.t("mejs.pause"),k=a('<div class="mejs-button mejs-playpause-button mejs-play" ><button type="button" aria-controls="'+g.id+'" title="'+i+'" aria-label="'+j+'"></button></div>').appendTo(c).click(function(a){return a.preventDefault(),e.paused?e.play():e.pause(),!1}),l=k.find("button");f("pse"),e.addEventListener("play",function(){f("play")},!1),e.addEventListener("playing",function(){f("play")},!1),e.addEventListener("pause",function(){f("pse")},!1),e.addEventListener("paused",function(){f("pse")},!1)}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{stopText:"Stop"}),a.extend(MediaElementPlayer.prototype,{buildstop:function(b,c,d,e){var f=this;a('<div class="mejs-button mejs-stop-button mejs-stop"><button type="button" aria-controls="'+f.id+'" title="'+f.options.stopText+'" aria-label="'+f.options.stopText+'"></button></div>').appendTo(c).click(function(){e.paused||e.pause(),e.currentTime>0&&(e.setCurrentTime(0),e.pause(),c.find(".mejs-time-current").width("0px"),c.find(".mejs-time-handle").css("left","0px"),c.find(".mejs-time-float-current").html(mejs.Utility.secondsToTimeCode(0,b.options)),c.find(".mejs-currenttime").html(mejs.Utility.secondsToTimeCode(0,b.options)),d.find(".mejs-poster").show())})}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{enableProgressTooltip:!0,progressHelpText:""}),a.extend(MediaElementPlayer.prototype,{buildprogress:function(b,c,d,e){var f=this,g=!1,h=!1,i=0,j=!1,k=b.options.autoRewind,l=(f.options.progressHelpText?f.options.progressHelpText:mejs.i18n.t("mejs.time-help-text"),b.options.enableProgressTooltip?'<span class="mejs-time-float"><span class="mejs-time-float-current">00:00</span><span class="mejs-time-float-corner"></span></span>':"");a('<div class="mejs-time-rail"><span class="mejs-time-total mejs-time-slider"><span class="mejs-time-buffering"></span><span class="mejs-time-loaded"></span><span class="mejs-time-current"></span><span class="mejs-time-handle"></span>'+l+"</span></div>").appendTo(c),c.find(".mejs-time-buffering").hide(),f.total=c.find(".mejs-time-total"),f.loaded=c.find(".mejs-time-loaded"),f.current=c.find(".mejs-time-current"),f.handle=c.find(".mejs-time-handle"),f.timefloat=c.find(".mejs-time-float"),f.timefloatcurrent=c.find(".mejs-time-float-current"),f.slider=c.find(".mejs-time-slider");var m=function(a){var c,d=f.total.offset(),h=f.total.width(),i=0,j=0,k=0;c=a.originalEvent&&a.originalEvent.changedTouches?a.originalEvent.changedTouches[0].pageX:a.changedTouches?a.changedTouches[0].pageX:a.pageX,e.duration&&(c<d.left?c=d.left:c>h+d.left&&(c=h+d.left),k=c-d.left,i=k/h,j=.02>=i?0:i*e.duration,g&&j!==e.currentTime&&e.setCurrentTime(j),mejs.MediaFeatures.hasTouch||(f.timefloat.css("left",k),f.timefloatcurrent.html(mejs.Utility.secondsToTimeCode(j,b.options)),f.timefloat.show()))},n=function(a){var c=e.currentTime,d=mejs.i18n.t("mejs.time-slider"),g=mejs.Utility.secondsToTimeCode(c,b.options),h=e.duration;f.slider.attr({"aria-label":d,"aria-valuemin":0,"aria-valuemax":h,"aria-valuenow":c,"aria-valuetext":g,role:"slider",tabindex:0})},o=function(){var a=new Date;a-i>=1e3&&e.play()};f.slider.bind("focus",function(a){b.options.autoRewind=!1}),f.slider.bind("blur",function(a){b.options.autoRewind=k}),f.slider.bind("keydown",function(a){new Date-i>=1e3&&(j=e.paused);var c=a.keyCode,d=e.duration,f=e.currentTime,g=b.options.defaultSeekForwardInterval(e),h=b.options.defaultSeekBackwardInterval(e);switch(c){case 37:case 40:f-=h;break;case 39:case 38:f+=g;break;case 36:f=0;break;case 35:f=d;break;case 32:case 13:return void(e.paused?e.play():e.pause());default:return}return f=0>f?0:f>=d?d:Math.floor(f),i=new Date,j||e.pause(),f<e.duration&&!j&&setTimeout(o,1100),e.setCurrentTime(f),a.preventDefault(),a.stopPropagation(),!1}),f.total.bind("mousedown touchstart",function(a){(1===a.which||0===a.which)&&(g=!0,m(a),f.globalBind("mousemove.dur touchmove.dur",function(a){m(a)}),f.globalBind("mouseup.dur touchend.dur",function(a){g=!1,"undefined"!=typeof f.timefloat&&f.timefloat.hide(),f.globalUnbind(".dur")}))}).bind("mouseenter",function(a){h=!0,f.globalBind("mousemove.dur",function(a){m(a)}),"undefined"==typeof f.timefloat||mejs.MediaFeatures.hasTouch||f.timefloat.show()}).bind("mouseleave",function(a){h=!1,g||(f.globalUnbind(".dur"),"undefined"!=typeof f.timefloat&&f.timefloat.hide())}),e.addEventListener("progress",function(a){b.setProgressRail(a),b.setCurrentRail(a)},!1),e.addEventListener("timeupdate",function(a){b.setProgressRail(a),b.setCurrentRail(a),n(a)},!1),f.container.on("controlsresize",function(a){b.setProgressRail(a),b.setCurrentRail(a)})},setProgressRail:function(a){var b=this,c=void 0!==a?a.target:b.media,d=null;c&&c.buffered&&c.buffered.length>0&&c.buffered.end&&c.duration?d=c.buffered.end(c.buffered.length-1)/c.duration:c&&void 0!==c.bytesTotal&&c.bytesTotal>0&&void 0!==c.bufferedBytes?d=c.bufferedBytes/c.bytesTotal:a&&a.lengthComputable&&0!==a.total&&(d=a.loaded/a.total),null!==d&&(d=Math.min(1,Math.max(0,d)),b.loaded&&b.total&&b.loaded.width(b.total.width()*d))},setCurrentRail:function(){var a=this;if(void 0!==a.media.currentTime&&a.media.duration&&a.total&&a.handle){var b=Math.round(a.total.width()*a.media.currentTime/a.media.duration),c=b-Math.round(a.handle.outerWidth(!0)/2);a.current.width(b),a.handle.css("left",c)}}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{duration:-1,timeAndDurationSeparator:"<span> | </span>"}),a.extend(MediaElementPlayer.prototype,{buildcurrent:function(b,c,d,e){var f=this;a('<div class="mejs-time" role="timer" aria-live="off"><span class="mejs-currenttime">'+mejs.Utility.secondsToTimeCode(0,b.options)+"</span></div>").appendTo(c),f.currenttime=f.controls.find(".mejs-currenttime"),e.addEventListener("timeupdate",function(){f.controlsAreVisible&&b.updateCurrent()},!1)},buildduration:function(b,c,d,e){var f=this;c.children().last().find(".mejs-currenttime").length>0?a(f.options.timeAndDurationSeparator+'<span class="mejs-duration">'+mejs.Utility.secondsToTimeCode(f.options.duration,f.options)+"</span>").appendTo(c.find(".mejs-time")):(c.find(".mejs-currenttime").parent().addClass("mejs-currenttime-container"),a('<div class="mejs-time mejs-duration-container"><span class="mejs-duration">'+mejs.Utility.secondsToTimeCode(f.options.duration,f.options)+"</span></div>").appendTo(c)),f.durationD=f.controls.find(".mejs-duration"),e.addEventListener("timeupdate",function(){f.controlsAreVisible&&b.updateDuration()},!1)},updateCurrent:function(){var a=this,b=a.media.currentTime;isNaN(b)&&(b=0),a.currenttime&&a.currenttime.html(mejs.Utility.secondsToTimeCode(b,a.options))},updateDuration:function(){var a=this,b=a.media.duration;a.options.duration>0&&(b=a.options.duration),isNaN(b)&&(b=0),a.container.toggleClass("mejs-long-video",b>3600),a.durationD&&b>0&&a.durationD.html(mejs.Utility.secondsToTimeCode(b,a.options))}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{muteText:mejs.i18n.t("mejs.mute-toggle"),allyVolumeControlText:mejs.i18n.t("mejs.volume-help-text"),hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical"}),a.extend(MediaElementPlayer.prototype,{buildvolume:function(b,c,d,e){if(!mejs.MediaFeatures.isAndroid&&!mejs.MediaFeatures.isiOS||!this.options.hideVolumeOnTouchDevices){var f=this,g=f.isVideo?f.options.videoVolume:f.options.audioVolume,h="horizontal"==g?a('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+f.id+'" title="'+f.options.muteText+'" aria-label="'+f.options.muteText+'"></button></div><a href="javascript:void(0);" class="mejs-horizontal-volume-slider"><span class="mejs-offscreen">'+f.options.allyVolumeControlText+'</span><div class="mejs-horizontal-volume-total"></div><div class="mejs-horizontal-volume-current"></div><div class="mejs-horizontal-volume-handle"></div></a>').appendTo(c):a('<div class="mejs-button mejs-volume-button mejs-mute"><button type="button" aria-controls="'+f.id+'" title="'+f.options.muteText+'" aria-label="'+f.options.muteText+'"></button><a href="javascript:void(0);" class="mejs-volume-slider"><span class="mejs-offscreen">'+f.options.allyVolumeControlText+'</span><div class="mejs-volume-total"></div><div class="mejs-volume-current"></div><div class="mejs-volume-handle"></div></a></div>').appendTo(c),i=f.container.find(".mejs-volume-slider, .mejs-horizontal-volume-slider"),j=f.container.find(".mejs-volume-total, .mejs-horizontal-volume-total"),k=f.container.find(".mejs-volume-current, .mejs-horizontal-volume-current"),l=f.container.find(".mejs-volume-handle, .mejs-horizontal-volume-handle"),m=function(a,b){if(!i.is(":visible")&&"undefined"==typeof b)return i.show(),m(a,!0),void i.hide();a=Math.max(0,a),a=Math.min(a,1),0===a?(h.removeClass("mejs-mute").addClass("mejs-unmute"),h.children("button").attr("title",mejs.i18n.t("mejs.unmute")).attr("aria-label",mejs.i18n.t("mejs.unmute"))):(h.removeClass("mejs-unmute").addClass("mejs-mute"),h.children("button").attr("title",mejs.i18n.t("mejs.mute")).attr("aria-label",mejs.i18n.t("mejs.mute")));var c=j.position();if("vertical"==g){var d=j.height(),e=d-d*a;l.css("top",Math.round(c.top+e-l.height()/2)),k.height(d-e),k.css("top",c.top+e)}else{var f=j.width(),n=f*a;l.css("left",Math.round(c.left+n-l.width()/2)),k.width(Math.round(n))}},n=function(a){var b=null,c=j.offset();if("vertical"===g){var d=j.height(),f=a.pageY-c.top;if(b=(d-f)/d,0===c.top||0===c.left)return}else{var h=j.width(),i=a.pageX-c.left;b=i/h; -}b=Math.max(0,b),b=Math.min(b,1),m(b),0===b?e.setMuted(!0):e.setMuted(!1),e.setVolume(b)},o=!1,p=!1;h.hover(function(){i.show(),p=!0},function(){p=!1,o||"vertical"!=g||i.hide()});var q=function(a){var b=Math.floor(100*e.volume);i.attr({"aria-label":mejs.i18n.t("mejs.volume-slider"),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":b,"aria-valuetext":b+"%",role:"slider",tabindex:0})};i.bind("mouseover",function(){p=!0}).bind("mousedown",function(a){return n(a),f.globalBind("mousemove.vol",function(a){n(a)}),f.globalBind("mouseup.vol",function(){o=!1,f.globalUnbind(".vol"),p||"vertical"!=g||i.hide()}),o=!0,!1}).bind("keydown",function(a){var b=a.keyCode,c=e.volume;switch(b){case 38:c=Math.min(c+.1,1);break;case 40:c=Math.max(0,c-.1);break;default:return!0}return o=!1,m(c),e.setVolume(c),!1}),h.find("button").click(function(){e.setMuted(!e.muted)}),h.find("button").bind("focus",function(){i.show()}),e.addEventListener("volumechange",function(a){o||(e.muted?(m(0),h.removeClass("mejs-mute").addClass("mejs-unmute")):(m(e.volume),h.removeClass("mejs-unmute").addClass("mejs-mute"))),q(a)},!1),0===b.options.startVolume&&e.setMuted(!0),"native"===e.pluginType&&e.setVolume(b.options.startVolume),f.container.on("controlsresize",function(){e.muted?(m(0),h.removeClass("mejs-mute").addClass("mejs-unmute")):(m(e.volume),h.removeClass("mejs-unmute").addClass("mejs-mute"))})}}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{usePluginFullScreen:!0,newWindowCallback:function(){return""},fullscreenText:""}),a.extend(MediaElementPlayer.prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,fullscreenMode:"",buildfullscreen:function(b,c,d,e){if(b.isVideo){b.isInIframe=window.location!=window.parent.location,e.addEventListener("loadstart",function(){b.detectFullscreenMode()});var f=this,g=null,h=f.options.fullscreenText?f.options.fullscreenText:mejs.i18n.t("mejs.fullscreen"),i=a('<div class="mejs-button mejs-fullscreen-button"><button type="button" aria-controls="'+f.id+'" title="'+h+'" aria-label="'+h+'"></button></div>').appendTo(c).on("click",function(){var a=mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||b.isFullScreen;a?b.exitFullScreen():b.enterFullScreen()}).on("mouseover",function(){if("plugin-hover"==f.fullscreenMode){null!==g&&(clearTimeout(g),delete g);var a=i.offset(),c=b.container.offset();e.positionFullscreenButton(a.left-c.left,a.top-c.top,!0)}}).on("mouseout",function(){"plugin-hover"==f.fullscreenMode&&(null!==g&&(clearTimeout(g),delete g),g=setTimeout(function(){e.hideFullscreenButton()},1500))});if(b.fullscreenBtn=i,f.globalBind("keydown",function(a){27==a.keyCode&&(mejs.MediaFeatures.hasTrueNativeFullScreen&&mejs.MediaFeatures.isFullScreen()||f.isFullScreen)&&b.exitFullScreen()}),f.normalHeight=0,f.normalWidth=0,mejs.MediaFeatures.hasTrueNativeFullScreen){var j=function(a){b.isFullScreen&&(mejs.MediaFeatures.isFullScreen()?(b.isNativeFullScreen=!0,b.setControlsSize()):(b.isNativeFullScreen=!1,b.exitFullScreen()))};b.globalBind(mejs.MediaFeatures.fullScreenEventName,j)}}},detectFullscreenMode:function(){var a=this,b="",c=mejs.MediaFeatures;return c.hasTrueNativeFullScreen&&"native"===a.media.pluginType?b="native-native":c.hasTrueNativeFullScreen&&"native"!==a.media.pluginType&&!c.hasFirefoxPluginMovingProblem?b="plugin-native":a.usePluginFullScreen?mejs.MediaFeatures.supportsPointerEvents?(b="plugin-click",a.createPluginClickThrough()):b="plugin-hover":b="fullwindow",a.fullscreenMode=b,b},isPluginClickThroughCreated:!1,createPluginClickThrough:function(){var b=this;if(!b.isPluginClickThroughCreated){var c,d,e=!1,f=function(){if(e){for(var a in g)g[a].hide();b.fullscreenBtn.css("pointer-events",""),b.controls.css("pointer-events",""),b.media.removeEventListener("click",b.clickToPlayPauseCallback),e=!1}},g={},h=["top","left","right","bottom"],i=function(){var a=fullscreenBtn.offset().left-b.container.offset().left,d=fullscreenBtn.offset().top-b.container.offset().top,e=fullscreenBtn.outerWidth(!0),f=fullscreenBtn.outerHeight(!0),h=b.container.width(),i=b.container.height();for(c in g)g[c].css({position:"absolute",top:0,left:0});g.top.width(h).height(d),g.left.width(a).height(f).css({top:d}),g.right.width(h-a-e).height(f).css({top:d,left:a+e}),g.bottom.width(h).height(i-f-d).css({top:d+f})};for(b.globalBind("resize",function(){i()}),c=0,d=h.length;d>c;c++)g[h[c]]=a('<div class="mejs-fullscreen-hover" />').appendTo(b.container).mouseover(f).hide();fullscreenBtn.on("mouseover",function(){if(!b.isFullScreen){var a=fullscreenBtn.offset(),d=player.container.offset();media.positionFullscreenButton(a.left-d.left,a.top-d.top,!1),b.fullscreenBtn.css("pointer-events","none"),b.controls.css("pointer-events","none"),b.media.addEventListener("click",b.clickToPlayPauseCallback);for(c in g)g[c].show();i(),e=!0}}),media.addEventListener("fullscreenchange",function(a){b.isFullScreen=!b.isFullScreen,b.isFullScreen?b.media.removeEventListener("click",b.clickToPlayPauseCallback):b.media.addEventListener("click",b.clickToPlayPauseCallback),f()}),b.globalBind("mousemove",function(a){if(e){var c=fullscreenBtn.offset();(a.pageY<c.top||a.pageY>c.top+fullscreenBtn.outerHeight(!0)||a.pageX<c.left||a.pageX>c.left+fullscreenBtn.outerWidth(!0))&&(fullscreenBtn.css("pointer-events",""),b.controls.css("pointer-events",""),e=!1)}}),b.isPluginClickThroughCreated=!0}},cleanfullscreen:function(a){a.exitFullScreen()},containerSizeTimeout:null,enterFullScreen:function(){var b=this;if(mejs.MediaFeatures.isiOS&&mejs.MediaFeatures.hasiOSFullScreen&&"function"==typeof b.media.webkitEnterFullscreen)return void b.media.webkitEnterFullscreen();a(document.documentElement).addClass("mejs-fullscreen"),b.normalHeight=b.container.height(),b.normalWidth=b.container.width(),"native-native"===b.fullscreenMode||"plugin-native"===b.fullscreenMode?(mejs.MediaFeatures.requestFullScreen(b.container[0]),b.isInIframe&&setTimeout(function d(){if(b.isNativeFullScreen){var c=.002,e=a(window).width(),f=screen.width,g=Math.abs(f-e),h=f*c;g>h?b.exitFullScreen():setTimeout(d,500)}},1e3)):"fullwindow"==b.fullscreeMode,b.container.addClass("mejs-container-fullscreen").width("100%").height("100%"),b.containerSizeTimeout=setTimeout(function(){b.container.css({width:"100%",height:"100%"}),b.setControlsSize()},500),"native"===b.media.pluginType?b.$media.width("100%").height("100%"):(b.container.find(".mejs-shim").width("100%").height("100%"),setTimeout(function(){var c=a(window),d=c.width(),e=c.height();b.media.setVideoSize(d,e)},500)),b.layers.children("div").width("100%").height("100%"),b.fullscreenBtn&&b.fullscreenBtn.removeClass("mejs-fullscreen").addClass("mejs-unfullscreen"),b.setControlsSize(),b.isFullScreen=!0;var c=Math.min(screen.width/b.width,screen.height/b.height);b.container.find(".mejs-captions-text").css("font-size",100*c+"%"),b.container.find(".mejs-captions-text").css("line-height","normal"),b.container.find(".mejs-captions-position").css("bottom","45px"),b.container.trigger("enteredfullscreen")},exitFullScreen:function(){var b=this;clearTimeout(b.containerSizeTimeout),mejs.MediaFeatures.hasTrueNativeFullScreen&&(mejs.MediaFeatures.isFullScreen()||b.isFullScreen)&&mejs.MediaFeatures.cancelFullScreen(),a(document.documentElement).removeClass("mejs-fullscreen"),b.container.removeClass("mejs-container-fullscreen").width(b.normalWidth).height(b.normalHeight),"native"===b.media.pluginType?b.$media.width(b.normalWidth).height(b.normalHeight):(b.container.find(".mejs-shim").width(b.normalWidth).height(b.normalHeight),b.media.setVideoSize(b.normalWidth,b.normalHeight)),b.layers.children("div").width(b.normalWidth).height(b.normalHeight),b.fullscreenBtn.removeClass("mejs-unfullscreen").addClass("mejs-fullscreen"),b.setControlsSize(),b.isFullScreen=!1,b.container.find(".mejs-captions-text").css("font-size",""),b.container.find(".mejs-captions-text").css("line-height",""),b.container.find(".mejs-captions-position").css("bottom",""),b.container.trigger("exitedfullscreen")}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{speeds:["2.00","1.50","1.25","1.00","0.75"],defaultSpeed:"1.00",speedChar:"x"}),a.extend(MediaElementPlayer.prototype,{buildspeed:function(b,c,d,e){var f=this;if("native"==f.media.pluginType){for(var g=null,h=null,i=null,j=null,k=[],l=!1,m=0,n=f.options.speeds.length;n>m;m++){var o=f.options.speeds[m];"string"==typeof o?(k.push({name:o+f.options.speedChar,value:o}),o===f.options.defaultSpeed&&(l=!0)):(k.push(o),o.value===f.options.defaultSpeed&&(l=!0))}l||k.push({name:f.options.defaultSpeed+f.options.speedChar,value:f.options.defaultSpeed}),k.sort(function(a,b){return parseFloat(b.value)-parseFloat(a.value)});var p=function(a){for(m=0,n=k.length;n>m;m++)if(k[m].value===a)return k[m].name},q='<div class="mejs-button mejs-speed-button"><button type="button">'+p(f.options.defaultSpeed)+'</button><div class="mejs-speed-selector"><ul>';for(m=0,il=k.length;m<il;m++)j=f.id+"-speed-"+k[m].value,q+='<li><input type="radio" name="speed" value="'+k[m].value+'" id="'+j+'" '+(k[m].value===f.options.defaultSpeed?" checked":"")+' /><label for="'+j+'" '+(k[m].value===f.options.defaultSpeed?' class="mejs-speed-selected"':"")+">"+k[m].name+"</label></li>";q+="</ul></div></div>",g=a(q).appendTo(c),h=g.find(".mejs-speed-selector"),i=f.options.defaultSpeed,e.addEventListener("loadedmetadata",function(a){i&&(e.playbackRate=parseFloat(i))},!0),h.on("click",'input[type="radio"]',function(){var b=a(this).attr("value");i=b,e.playbackRate=parseFloat(b),g.find("button").html(p(b)),g.find(".mejs-speed-selected").removeClass("mejs-speed-selected"),g.find('input[type="radio"]:checked').next().addClass("mejs-speed-selected")}),g.one("mouseenter focusin",function(){h.height(g.find(".mejs-speed-selector ul").outerHeight(!0)+g.find(".mejs-speed-translations").outerHeight(!0)).css("top",-1*h.height()+"px")})}}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{startLanguage:"",tracksText:"",tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),a.extend(MediaElementPlayer.prototype,{hasChapters:!1,cleartracks:function(a,b,c,d){a&&(a.captions&&a.captions.remove(),a.chapters&&a.chapters.remove(),a.captionsText&&a.captionsText.remove(),a.captionsButton&&a.captionsButton.remove())},buildtracks:function(b,c,d,e){if(0!==b.tracks.length){var f,g,h=this,i=h.options.tracksAriaLive?'role="log" aria-live="assertive" aria-atomic="false"':"",j=h.options.tracksText?h.options.tracksText:mejs.i18n.t("mejs.captions-subtitles");if(h.domNode.textTracks)for(f=h.domNode.textTracks.length-1;f>=0;f--)h.domNode.textTracks[f].mode="hidden";h.cleartracks(b,c,d,e),b.chapters=a('<div class="mejs-chapters mejs-layer"></div>').prependTo(d).hide(),b.captions=a('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position mejs-captions-position-hover" '+i+'><span class="mejs-captions-text"></span></div></div>').prependTo(d).hide(),b.captionsText=b.captions.find(".mejs-captions-text"),b.captionsButton=a('<div class="mejs-button mejs-captions-button"><button type="button" aria-controls="'+h.id+'" title="'+j+'" aria-label="'+j+'"></button><div class="mejs-captions-selector"><ul><li><input type="radio" name="'+b.id+'_captions" id="'+b.id+'_captions_none" value="none" checked="checked" /><label for="'+b.id+'_captions_none">'+mejs.i18n.t("mejs.none")+"</label></li></ul></div></div>").appendTo(c);var k=0;for(f=0;f<b.tracks.length;f++)g=b.tracks[f].kind,("subtitles"===g||"captions"===g)&&k++;for(h.options.toggleCaptionsButtonWhenOnlyOne&&1==k?b.captionsButton.on("click",function(){null===b.selectedTrack?lang=b.tracks[0].srclang:lang="none",b.setTrack(lang)}):(b.captionsButton.on("mouseenter focusin",function(){a(this).find(".mejs-captions-selector").removeClass("mejs-offscreen")}).on("click","input[type=radio]",function(){lang=this.value,b.setTrack(lang)}),b.captionsButton.on("mouseleave focusout",function(){a(this).find(".mejs-captions-selector").addClass("mejs-offscreen")})),b.options.alwaysShowControls?b.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover"):b.container.bind("controlsshown",function(){b.container.find(".mejs-captions-position").addClass("mejs-captions-position-hover")}).bind("controlshidden",function(){e.paused||b.container.find(".mejs-captions-position").removeClass("mejs-captions-position-hover")}),b.trackToLoad=-1,b.selectedTrack=null,b.isLoadingTrack=!1,f=0;f<b.tracks.length;f++)g=b.tracks[f].kind,("subtitles"===g||"captions"===g)&&b.addTrackButton(b.tracks[f].srclang,b.tracks[f].label);b.loadNextTrack(),e.addEventListener("timeupdate",function(){b.displayCaptions()},!1),""!==b.options.slidesSelector&&(b.slidesContainer=a(b.options.slidesSelector),e.addEventListener("timeupdate",function(){b.displaySlides()},!1)),e.addEventListener("loadedmetadata",function(){b.displayChapters()},!1),b.container.hover(function(){b.hasChapters&&(b.chapters.removeClass("mejs-offscreen"),b.chapters.fadeIn(200).height(b.chapters.find(".mejs-chapter").outerHeight()))},function(){b.hasChapters&&!e.paused&&b.chapters.fadeOut(200,function(){a(this).addClass("mejs-offscreen"),a(this).css("display","block")})}),h.container.on("controlsresize",function(){h.adjustLanguageBox()}),null!==b.node.getAttribute("autoplay")&&b.chapters.addClass("mejs-offscreen")}},setTrack:function(a){var b,c=this;if("none"==a)c.selectedTrack=null,c.captionsButton.removeClass("mejs-captions-enabled");else for(b=0;b<c.tracks.length;b++)if(c.tracks[b].srclang==a){null===c.selectedTrack&&c.captionsButton.addClass("mejs-captions-enabled"),c.selectedTrack=c.tracks[b],c.captions.attr("lang",c.selectedTrack.srclang),c.displayCaptions();break}},loadNextTrack:function(){var a=this;a.trackToLoad++,a.trackToLoad<a.tracks.length?(a.isLoadingTrack=!0,a.loadTrack(a.trackToLoad)):(a.isLoadingTrack=!1,a.checkForTracks())},loadTrack:function(b){var c=this,d=c.tracks[b],e=function(){d.isLoaded=!0,c.enableTrackButton(d.srclang,d.label),c.loadNextTrack()};(void 0!==d.src||""!==d.src)&&a.ajax({url:d.src,dataType:"text",success:function(a){"string"==typeof a&&/<tt\s+xml/gi.exec(a)?d.entries=mejs.TrackFormatParser.dfxp.parse(a):d.entries=mejs.TrackFormatParser.webvtt.parse(a),e(),"chapters"==d.kind&&c.media.addEventListener("play",function(){c.media.duration>0&&c.displayChapters(d)},!1),"slides"==d.kind&&c.setupSlides(d)},error:function(){c.removeTrackButton(d.srclang),c.loadNextTrack()}})},enableTrackButton:function(b,c){var d=this;""===c&&(c=mejs.language.codes[b]||b),d.captionsButton.find("input[value="+b+"]").prop("disabled",!1).siblings("label").html(c),d.options.startLanguage==b&&a("#"+d.id+"_captions_"+b).prop("checked",!0).trigger("click"),d.adjustLanguageBox()},removeTrackButton:function(a){var b=this;b.captionsButton.find("input[value="+a+"]").closest("li").remove(),b.adjustLanguageBox()},addTrackButton:function(b,c){var d=this;""===c&&(c=mejs.language.codes[b]||b),d.captionsButton.find("ul").append(a('<li><input type="radio" name="'+d.id+'_captions" id="'+d.id+"_captions_"+b+'" value="'+b+'" disabled="disabled" /><label for="'+d.id+"_captions_"+b+'">'+c+" (loading)</label></li>")),d.adjustLanguageBox(),d.container.find(".mejs-captions-translations option[value="+b+"]").remove()},adjustLanguageBox:function(){var a=this;a.captionsButton.find(".mejs-captions-selector").height(a.captionsButton.find(".mejs-captions-selector ul").outerHeight(!0)+a.captionsButton.find(".mejs-captions-translations").outerHeight(!0))},checkForTracks:function(){var a=this,b=!1;if(a.options.hideCaptionsButtonWhenEmpty){for(var c=0;c<a.tracks.length;c++){var d=a.tracks[c].kind;if(("subtitles"===d||"captions"===d)&&a.tracks[c].isLoaded){b=!0;break}}b||(a.captionsButton.hide(),a.setControlsSize())}},displayCaptions:function(){if("undefined"!=typeof this.tracks){var a,b=this,c=b.selectedTrack;if(null!==c&&c.isLoaded){for(a=0;a<c.entries.times.length;a++)if(b.media.currentTime>=c.entries.times[a].start&&b.media.currentTime<=c.entries.times[a].stop)return b.captionsText.html(c.entries.text[a]).attr("class","mejs-captions-text "+(c.entries.times[a].identifier||"")),void b.captions.show().height(0);b.captions.hide()}else b.captions.hide()}},setupSlides:function(a){var b=this;b.slides=a,b.slides.entries.imgs=[b.slides.entries.text.length],b.showSlide(0)},showSlide:function(b){if("undefined"!=typeof this.tracks&&"undefined"!=typeof this.slidesContainer){var c=this,d=c.slides.entries.text[b],e=c.slides.entries.imgs[b];"undefined"==typeof e||"undefined"==typeof e.fadeIn?c.slides.entries.imgs[b]=e=a('<img src="'+d+'">').on("load",function(){e.appendTo(c.slidesContainer).hide().fadeIn().siblings(":visible").fadeOut()}):e.is(":visible")||e.is(":animated")||e.fadeIn().siblings(":visible").fadeOut()}},displaySlides:function(){if("undefined"!=typeof this.slides){var a,b=this,c=b.slides;for(a=0;a<c.entries.times.length;a++)if(b.media.currentTime>=c.entries.times[a].start&&b.media.currentTime<=c.entries.times[a].stop)return void b.showSlide(a)}},displayChapters:function(){var a,b=this;for(a=0;a<b.tracks.length;a++)if("chapters"==b.tracks[a].kind&&b.tracks[a].isLoaded){b.drawChapters(b.tracks[a]),b.hasChapters=!0;break}},drawChapters:function(b){var c,d,e=this,f=0,g=0;for(e.chapters.empty(),c=0;c<b.entries.times.length;c++)d=b.entries.times[c].stop-b.entries.times[c].start,f=Math.floor(d/e.media.duration*100),(f+g>100||c==b.entries.times.length-1&&100>f+g)&&(f=100-g),e.chapters.append(a('<div class="mejs-chapter" rel="'+b.entries.times[c].start+'" style="left: '+g.toString()+"%;width: "+f.toString()+'%;"><div class="mejs-chapter-block'+(c==b.entries.times.length-1?" mejs-chapter-block-last":"")+'"><span class="ch-title">'+b.entries.text[c]+'</span><span class="ch-time">'+mejs.Utility.secondsToTimeCode(b.entries.times[c].start,e.options)+"–"+mejs.Utility.secondsToTimeCode(b.entries.times[c].stop,e.options)+"</span></div></div>")),g+=f;e.chapters.find("div.mejs-chapter").click(function(){e.media.setCurrentTime(parseFloat(a(this).attr("rel"))),e.media.paused&&e.media.play()}),e.chapters.show()}}),mejs.language={codes:{af:"Afrikaans",sq:"Albanian",ar:"Arabic",be:"Belarusian",bg:"Bulgarian",ca:"Catalan",zh:"Chinese","zh-cn":"Chinese Simplified","zh-tw":"Chinese Traditional",hr:"Croatian",cs:"Czech",da:"Danish",nl:"Dutch",en:"English",et:"Estonian",fl:"Filipino",fi:"Finnish",fr:"French",gl:"Galician",de:"German",el:"Greek",ht:"Haitian Creole",iw:"Hebrew",hi:"Hindi",hu:"Hungarian",is:"Icelandic",id:"Indonesian",ga:"Irish",it:"Italian",ja:"Japanese",ko:"Korean",lv:"Latvian",lt:"Lithuanian",mk:"Macedonian",ms:"Malay",mt:"Maltese",no:"Norwegian",fa:"Persian",pl:"Polish",pt:"Portuguese",ro:"Romanian",ru:"Russian",sr:"Serbian",sk:"Slovak",sl:"Slovenian",es:"Spanish",sw:"Swahili",sv:"Swedish",tl:"Tagalog",th:"Thai",tr:"Turkish",uk:"Ukrainian",vi:"Vietnamese",cy:"Welsh",yi:"Yiddish"}},mejs.TrackFormatParser={webvtt:{pattern_timecode:/^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,parse:function(b){for(var c,d,e,f=0,g=mejs.TrackFormatParser.split2(b,/\r?\n/),h={text:[],times:[]};f<g.length;f++){if(c=this.pattern_timecode.exec(g[f]),c&&f<g.length){for(f-1>=0&&""!==g[f-1]&&(e=g[f-1]),f++,d=g[f],f++;""!==g[f]&&f<g.length;)d=d+"\n"+g[f],f++;d=a.trim(d).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),h.text.push(d),h.times.push({identifier:e,start:0===mejs.Utility.convertSMPTEtoSeconds(c[1])?.2:mejs.Utility.convertSMPTEtoSeconds(c[1]),stop:mejs.Utility.convertSMPTEtoSeconds(c[3]),settings:c[5]})}e=""}return h}},dfxp:{parse:function(b){b=a(b).filter("tt");var c,d,e=0,f=b.children("div").eq(0),g=f.find("p"),h=b.find("#"+f.attr("style")),i={text:[],times:[]};if(h.length){var j=h.removeAttr("id").get(0).attributes;if(j.length)for(c={},e=0;e<j.length;e++)c[j[e].name.split(":")[1]]=j[e].value}for(e=0;e<g.length;e++){var k,l={start:null,stop:null,style:null};if(g.eq(e).attr("begin")&&(l.start=mejs.Utility.convertSMPTEtoSeconds(g.eq(e).attr("begin"))),!l.start&&g.eq(e-1).attr("end")&&(l.start=mejs.Utility.convertSMPTEtoSeconds(g.eq(e-1).attr("end"))),g.eq(e).attr("end")&&(l.stop=mejs.Utility.convertSMPTEtoSeconds(g.eq(e).attr("end"))),!l.stop&&g.eq(e+1).attr("begin")&&(l.stop=mejs.Utility.convertSMPTEtoSeconds(g.eq(e+1).attr("begin"))),c){k="";for(var m in c)k+=m+":"+c[m]+";"}k&&(l.style=k),0===l.start&&(l.start=.2),i.times.push(l),d=a.trim(g.eq(e).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),i.text.push(d)}return i}},split2:function(a,b){return a.split(b)}},3!="x\n\ny".split(/\n/gi).length&&(mejs.TrackFormatParser.split2=function(a,b){var c,d=[],e="";for(c=0;c<a.length;c++)e+=a.substring(c,c+1),b.test(e)&&(d.push(e.replace(b,"")),e="");return d.push(e),d})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{sourcechooserText:""}),a.extend(MediaElementPlayer.prototype,{buildsourcechooser:function(b,c,d,e){var f,g=this,h=g.options.sourcechooserText?g.options.sourcechooserText:mejs.i18n.t("mejs.source-chooser");b.sourcechooserButton=a('<div class="mejs-button mejs-sourcechooser-button"><button type="button" role="button" aria-haspopup="true" aria-owns="'+g.id+'" title="'+h+'" aria-label="'+h+'"></button><div class="mejs-sourcechooser-selector mejs-offscreen" role="menu" aria-expanded="false" aria-hidden="true"><ul></ul></div></div>').appendTo(c).hover(function(){clearTimeout(f),b.showSourcechooserSelector()},function(){a(this);f=setTimeout(function(){b.hideSourcechooserSelector()},500)}).on("keydown",function(c){var d=c.keyCode;switch(d){case 32:mejs.MediaFeatures.isFirefox||b.showSourcechooserSelector(),a(this).find(".mejs-sourcechooser-selector").find("input[type=radio]:checked").first().focus();break;case 13:b.showSourcechooserSelector(),a(this).find(".mejs-sourcechooser-selector").find("input[type=radio]:checked").first().focus();break;case 27:b.hideSourcechooserSelector(),a(this).find("button").focus();break;default:return!0}}).on("focusout",mejs.Utility.debounce(function(c){setTimeout(function(){var c=a(document.activeElement).closest(".mejs-sourcechooser-selector");c.length||b.hideSourcechooserSelector()},0)},100)).delegate("input[type=radio]","click",function(){a(this).attr("aria-selected",!0).attr("checked","checked"),a(this).closest(".mejs-sourcechooser-selector").find("input[type=radio]").not(this).attr("aria-selected","false").removeAttr("checked");var b=this.value;if(e.currentSrc!=b){var c=e.currentTime,d=e.paused;e.pause(),e.setSrc(b),e.addEventListener("loadedmetadata",function(a){e.currentTime=c},!0);var f=function(a){d||e.play(),e.removeEventListener("canplay",f,!0)};e.addEventListener("canplay",f,!0),e.load()}}).delegate("button","click",function(c){a(this).siblings(".mejs-sourcechooser-selector").hasClass("mejs-offscreen")?(b.showSourcechooserSelector(),a(this).siblings(".mejs-sourcechooser-selector").find("input[type=radio]:checked").first().focus()):b.hideSourcechooserSelector()});for(var i in this.node.children){var j=this.node.children[i];"SOURCE"!==j.nodeName||"probably"!=e.canPlayType(j.type)&&"maybe"!=e.canPlayType(j.type)||b.addSourceButton(j.src,j.title,j.type,e.src==j.src)}},addSourceButton:function(b,c,d,e){var f=this;(""===c||void 0==c)&&(c=b),d=d.split("/")[1],f.sourcechooserButton.find("ul").append(a('<li><input type="radio" name="'+f.id+'_sourcechooser" id="'+f.id+"_sourcechooser_"+c+d+'" role="menuitemradio" value="'+b+'" '+(e?'checked="checked"':"")+'aria-selected="'+e+'" /><label for="'+f.id+"_sourcechooser_"+c+d+'" aria-hidden="true">'+c+" ("+d+")</label></li>")),f.adjustSourcechooserBox()},adjustSourcechooserBox:function(){var a=this;a.sourcechooserButton.find(".mejs-sourcechooser-selector").height(a.sourcechooserButton.find(".mejs-sourcechooser-selector ul").outerHeight(!0))},hideSourcechooserSelector:function(){this.sourcechooserButton.find(".mejs-sourcechooser-selector").addClass("mejs-offscreen").attr("aria-expanded","false").attr("aria-hidden","true").find("input[type=radio]").attr("tabindex","-1")},showSourcechooserSelector:function(){this.sourcechooserButton.find(".mejs-sourcechooser-selector").removeClass("mejs-offscreen").attr("aria-expanded","true").attr("aria-hidden","false").find("input[type=radio]").attr("tabindex","0")}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{contextMenuItems:[{render:function(a){return"undefined"==typeof a.enterFullScreen?null:a.isFullScreen?mejs.i18n.t("mejs.fullscreen-off"):mejs.i18n.t("mejs.fullscreen-on")},click:function(a){a.isFullScreen?a.exitFullScreen():a.enterFullScreen()}},{render:function(a){return a.media.muted?mejs.i18n.t("mejs.unmute"):mejs.i18n.t("mejs.mute")},click:function(a){a.media.muted?a.setMuted(!1):a.setMuted(!0)}},{isSeparator:!0},{render:function(a){return mejs.i18n.t("mejs.download-video")},click:function(a){window.location.href=a.media.currentSrc}}]}),a.extend(MediaElementPlayer.prototype,{buildcontextmenu:function(b,c,d,e){b.contextMenu=a('<div class="mejs-contextmenu"></div>').appendTo(a("body")).hide(),b.container.bind("contextmenu",function(a){return b.isContextMenuEnabled?(a.preventDefault(),b.renderContextMenu(a.clientX-1,a.clientY-1),!1):void 0}),b.container.bind("click",function(){b.contextMenu.hide()}),b.contextMenu.bind("mouseleave",function(){b.startContextMenuTimer()})},cleancontextmenu:function(a){a.contextMenu.remove()},isContextMenuEnabled:!0,enableContextMenu:function(){this.isContextMenuEnabled=!0},disableContextMenu:function(){this.isContextMenuEnabled=!1},contextMenuTimeout:null,startContextMenuTimer:function(){var a=this;a.killContextMenuTimer(),a.contextMenuTimer=setTimeout(function(){a.hideContextMenu(),a.killContextMenuTimer()},750)},killContextMenuTimer:function(){var a=this.contextMenuTimer;null!=a&&(clearTimeout(a),delete a,a=null)},hideContextMenu:function(){this.contextMenu.hide()},renderContextMenu:function(b,c){for(var d=this,e="",f=d.options.contextMenuItems,g=0,h=f.length;h>g;g++)if(f[g].isSeparator)e+='<div class="mejs-contextmenu-separator"></div>';else{var i=f[g].render(d);null!=i&&(e+='<div class="mejs-contextmenu-item" data-itemindex="'+g+'" id="element-'+1e6*Math.random()+'">'+i+"</div>")}d.contextMenu.empty().append(a(e)).css({top:c,left:b}).show(),d.contextMenu.find(".mejs-contextmenu-item").each(function(){var b=a(this),c=parseInt(b.data("itemindex"),10),e=d.options.contextMenuItems[c];"undefined"!=typeof e.show&&e.show(b,d),b.click(function(){"undefined"!=typeof e.click&&e.click(d),d.contextMenu.hide()})}),setTimeout(function(){d.killControlsTimer("rev3")},100)}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{skipBackInterval:30,skipBackText:""}),a.extend(MediaElementPlayer.prototype,{buildskipback:function(b,c,d,e){var f=this,g=mejs.i18n.t("mejs.time-skip-back",f.options.skipBackInterval),h=f.options.skipBackText?f.options.skipBackText:g;a('<div class="mejs-button mejs-skip-back-button"><button type="button" aria-controls="'+f.id+'" title="'+h+'" aria-label="'+h+'">'+f.options.skipBackInterval+"</button></div>").appendTo(c).click(function(){e.setCurrentTime(Math.max(e.currentTime-f.options.skipBackInterval,0)),a(this).find("button").blur()})}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{postrollCloseText:""}),a.extend(MediaElementPlayer.prototype,{buildpostroll:function(b,c,d,e){var f=this,g=f.options.postrollCloseText?f.options.postrollCloseText:mejs.i18n.t("mejs.close"),h=f.container.find('link[rel="postroll"]').attr("href");"undefined"!=typeof h&&(b.postroll=a('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">'+g+'</a><div class="mejs-postroll-layer-content"></div></div>').prependTo(d).hide(),f.media.addEventListener("ended",function(c){a.ajax({dataType:"html",url:h,success:function(a,b){d.find(".mejs-postroll-layer-content").html(a)}}),b.postroll.show()},!1))}})}(mejs.$),function(a){a.extend(mejs.MepDefaults,{markerColor:"#E9BC3D",markers:[],markerCallback:function(){}}),a.extend(MediaElementPlayer.prototype,{buildmarkers:function(a,b,c,d){var e=0,f=-1,g=-1,h=-1,i=-1;for(e=0;e<a.options.markers.length;++e)b.find(".mejs-time-total").append('<span class="mejs-time-marker"></span>');d.addEventListener("durationchange",function(c){a.setmarkers(b)}),d.addEventListener("timeupdate",function(b){for(f=Math.floor(d.currentTime),h>f?i>f&&(i=-1):h=f,e=0;e<a.options.markers.length;++e)g=Math.floor(a.options.markers[e]),f===g&&g!==i&&(a.options.markerCallback(d,d.currentTime),i=g)},!1)},setmarkers:function(b){var c,d=this,e=0;for(e=0;e<d.options.markers.length;++e)Math.floor(d.options.markers[e])<=d.media.duration&&Math.floor(d.options.markers[e])>=0&&(c=100*Math.floor(d.options.markers[e])/d.media.duration,a(b.find(".mejs-time-marker")[e]).css({width:"1px",left:c+"%",background:d.options.markerColor}))}})}(mejs.$); \ No newline at end of file +!function e(t,n,i){function o(r,s){if(!n[r]){if(!t[r]){var l="function"==typeof require&&require;if(!s&&l)return l(r,!0);if(a)return a(r,!0);var d=new Error("Cannot find module '"+r+"'");throw d.code="MODULE_NOT_FOUND",d}var u=n[r]={exports:{}};t[r][0].call(u.exports,function(e){var n=t[r][1][e];return o(n||e)},u,u.exports,e,t,n,i)}return n[r].exports}for(var a="function"==typeof require&&require,r=0;r<i.length;r++)o(i[r]);return o}({1:[function(e,t,n){},{}],2:[function(e,t,n){(function(n){var i=void 0!==n?n:"undefined"!=typeof window?window:{},o=e(1);if("undefined"!=typeof document)t.exports=document;else{var a=i["__GLOBAL_DOCUMENT_CACHE@4"];a||(a=i["__GLOBAL_DOCUMENT_CACHE@4"]=o),t.exports=a}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{1:1}],3:[function(e,t,n){(function(e){"undefined"!=typeof window?t.exports=window:void 0!==e?t.exports=e:"undefined"!=typeof self?t.exports=self:t.exports={}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),a=e(14),r=e(25),s={lang:"en",en:a.EN};s.language=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(null!==t&&void 0!==t&&t.length){if("string"!=typeof t[0])throw new TypeError("Language code must be a string value");if(!/^[a-z]{2}(\-[a-z]{2})?$/i.test(t[0]))throw new TypeError("Language code must have format `xx` or `xx-xx`");s.lang=t[0],void 0===s[t[0]]?(t[1]=null!==t[1]&&void 0!==t[1]&&"object"===i(t[1])?t[1]:{},s[t[0]]=(0,r.isObjectEmpty)(t[1])?a.EN:t[1]):null!==t[1]&&void 0!==t[1]&&"object"===i(t[1])&&(s[t[0]]=t[1])}return s.lang},s.t=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if("string"==typeof e&&e.length){var n=void 0,o=void 0,a=s.language(),l=function(e,t,n){return"object"!==(void 0===e?"undefined":i(e))||"number"!=typeof t||"number"!=typeof n?e:function(){return[function(){return arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 0===(arguments.length<=0?void 0:arguments[0])||1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:0!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])||11===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])||12===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>0&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:[3]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1&&(arguments.length<=0?void 0:arguments[0])%100!=11?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])>=2&&(arguments.length<=0?void 0:arguments[0])<=4?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return(arguments.length<=0?void 0:arguments[0])%100==1?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100==2?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100==3||(arguments.length<=0?void 0:arguments[0])%100==4?arguments.length<=4?void 0:arguments[4]:arguments.length<=1?void 0:arguments[1]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])>2&&(arguments.length<=0?void 0:arguments[0])<7?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])>6&&(arguments.length<=0?void 0:arguments[0])<11?arguments.length<=4?void 0:arguments[4]:arguments.length<=5?void 0:arguments[5]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:(arguments.length<=0?void 0:arguments[0])%100>=3&&(arguments.length<=0?void 0:arguments[0])%100<=10?arguments.length<=4?void 0:arguments[4]:(arguments.length<=0?void 0:arguments[0])%100>=11?arguments.length<=5?void 0:arguments[5]:arguments.length<=6?void 0:arguments[6]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:0===(arguments.length<=0?void 0:arguments[0])||(arguments.length<=0?void 0:arguments[0])%100>1&&(arguments.length<=0?void 0:arguments[0])%100<11?arguments.length<=2?void 0:arguments[2]:(arguments.length<=0?void 0:arguments[0])%100>10&&(arguments.length<=0?void 0:arguments[0])%100<20?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10==2?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 11!==(arguments.length<=0?void 0:arguments[0])&&(arguments.length<=0?void 0:arguments[0])%10==1?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:(arguments.length<=0?void 0:arguments[0])%10>=2&&(arguments.length<=0?void 0:arguments[0])%10<=4&&((arguments.length<=0?void 0:arguments[0])%100<10||(arguments.length<=0?void 0:arguments[0])%100>=20)?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:8!==(arguments.length<=0?void 0:arguments[0])&&11!==(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:arguments.length<=2?void 0:arguments[2]},function(){return 1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:2===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:3===(arguments.length<=0?void 0:arguments[0])?arguments.length<=3?void 0:arguments[3]:arguments.length<=4?void 0:arguments[4]},function(){return 0===(arguments.length<=0?void 0:arguments[0])?arguments.length<=1?void 0:arguments[1]:1===(arguments.length<=0?void 0:arguments[0])?arguments.length<=2?void 0:arguments[2]:arguments.length<=3?void 0:arguments[3]}]}()[n].apply(null,[t].concat(e))};return void 0!==s[a]&&(n=s[a][e],null!==t&&"number"==typeof t&&(o=s[a]["mejs.plural-form"],n=l.apply(null,[n,t,o]))),!n&&s.en&&(n=s.en[e],null!==t&&"number"==typeof t&&(o=s.en["mejs.plural-form"],n=l.apply(null,[n,t,o]))),n=n||e,null!==t&&"number"==typeof t&&(n=n.replace("%1",t)),(0,r.escapeHTML)(n)}return e},o.default.i18n=s,"undefined"!=typeof mejsL10n&&o.default.i18n.language(mejsL10n.language,mejsL10n.strings),n.default=s},{14:14,25:25,6:6}],5:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0});var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=i(e(3)),s=i(e(2)),l=i(e(6)),d=e(25),u=e(26),c=e(7),f=e(23),p=function e(t,n,i){var p=this;o(this,e);var m=this;i=Array.isArray(i)?i:null,m.defaults={renderers:[],fakeNodeName:"mediaelementwrapper",pluginPath:"build/",shimScriptAccess:"sameDomain",customError:""},n=Object.assign(m.defaults,n),m.mediaElement=s.default.createElement(n.fakeNodeName),m.mediaElement.options=n;var h=t,v=!1;if("string"==typeof t?m.mediaElement.originalNode=s.default.getElementById(t):(m.mediaElement.originalNode=t,h=t.id),h=h||"mejs_"+Math.random().toString().slice(2),void 0!==m.mediaElement.originalNode&&null!==m.mediaElement.originalNode&&m.mediaElement.appendChild){m.mediaElement.originalNode.setAttribute("id",h+"_from_mejs");var y=m.mediaElement.originalNode.tagName.toLowerCase();["video","audio"].indexOf(y)>-1&&!m.mediaElement.originalNode.getAttribute("preload")&&m.mediaElement.originalNode.setAttribute("preload","none"),m.mediaElement.originalNode.parentNode.insertBefore(m.mediaElement,m.mediaElement.originalNode),m.mediaElement.appendChild(m.mediaElement.originalNode)}m.mediaElement.id=h,m.mediaElement.renderers={},m.mediaElement.renderer=null,m.mediaElement.rendererName=null,m.mediaElement.changeRenderer=function(e,t){var n=p,i=Object.keys(t[0]).length>2?t[0]:t[0].src;if(void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&n.mediaElement.renderer.name===e)return n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.show(),n.mediaElement.renderer.setSrc(i),!0;void 0!==n.mediaElement.renderer&&null!==n.mediaElement.renderer&&(n.mediaElement.renderer.pause(),n.mediaElement.renderer.stop&&n.mediaElement.renderer.stop(),n.mediaElement.renderer.hide());var o=n.mediaElement.renderers[e],a=null;if(void 0!==o&&null!==o)return o.show(),o.setSrc(i),n.mediaElement.renderer=o,n.mediaElement.rendererName=e,!0;for(var r=n.mediaElement.options.renderers.length?n.mediaElement.options.renderers:c.renderer.order,s=0,l=r.length;s<l;s++){var d=r[s];if(d===e){a=c.renderer.renderers[d];var u=Object.assign(a.options,n.mediaElement.options);return o=a.create(n.mediaElement,u,t),o.name=e,n.mediaElement.renderers[a.name]=o,n.mediaElement.renderer=o,n.mediaElement.rendererName=e,o.show(),!0}}return!1},m.mediaElement.setSize=function(e,t){void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer&&m.mediaElement.renderer.setSize(e,t)},m.mediaElement.createErrorMessage=function(e){e=Array.isArray(e)?e:[];var t=s.default.createElement("div");t.className="me_cannotplay",t.style.width="100%",t.style.height="100%";var n=m.mediaElement.options.customError;if(!n){var i=m.mediaElement.originalNode.getAttribute("poster");i&&(n+='<img src="'+i+'" width="100%" height="100%" alt="'+l.default.i18n.t("mejs.download-file")+'">');for(var o=0,a=e.length;o<a;o++){var r=e[o];n+='<a href="'+r.src+'" data-type="'+r.type+'"><span>'+l.default.i18n.t("mejs.download-file")+": "+r.src+"</span></a>"}}t.innerHTML=n,m.mediaElement.originalNode.parentNode.insertBefore(t,m.mediaElement.originalNode),m.mediaElement.originalNode.style.display="none",v=!0};var g=l.default.html5media.properties,b=l.default.html5media.methods,E=function(e,t,n,i){var o=e[t],a=function(){return n.apply(e,[o])},r=function(t){return o=i.apply(e,[t])};Object.defineProperty(e,t,{get:a,set:r})},S=function(){return void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer?m.mediaElement.renderer.getSrc():null},x=function(e){var t=[];if("string"==typeof e)t.push({src:e,type:e?(0,u.getTypeFromFile)(e):""});else if("object"===(void 0===e?"undefined":a(e))&&void 0!==e.src){var n=(0,u.absolutizeUrl)(e.src),i=e.type,o=Object.assign(e,{src:n,type:""!==i&&null!==i&&void 0!==i||!n?i:(0,u.getTypeFromFile)(n)});t.push(o)}else if(Array.isArray(e))for(var r=0,s=e.length;r<s;r++){var l=(0,u.absolutizeUrl)(e[r].src),f=e[r].type,p=Object.assign(e[r],{src:l,type:""!==f&&null!==f&&void 0!==f||!l?f:(0,u.getTypeFromFile)(l)});t.push(p)}var h=c.renderer.select(t,m.mediaElement.options.renderers.length?m.mediaElement.options.renderers:[]),v=void 0;if(m.mediaElement.paused||(m.mediaElement.pause(),v=(0,d.createEvent)("pause",m.mediaElement),m.mediaElement.dispatchEvent(v)),m.mediaElement.originalNode.setAttribute("src",t[0].src||""),m.mediaElement.querySelector(".me_cannotplay")&&m.mediaElement.querySelector(".me_cannotplay").remove(),null===h)return m.mediaElement.createErrorMessage(t),v=(0,d.createEvent)("error",m.mediaElement),v.message="No renderer found",void m.mediaElement.dispatchEvent(v);m.mediaElement.changeRenderer(h.rendererName,t),void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer||((v=(0,d.createEvent)("error",m.mediaElement)).message="Error creating renderer",m.mediaElement.dispatchEvent(v),m.mediaElement.createErrorMessage(t))};E(m.mediaElement,"src",S,x),m.mediaElement.getSrc=S,m.mediaElement.setSrc=x;for(var w=0,P=g.length;w<P;w++)!function(e){if("src"!==e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1),n=function(){return void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer&&"function"==typeof m.mediaElement.renderer["get"+t]?m.mediaElement.renderer["get"+t]():null},i=function(e){void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer&&"function"==typeof m.mediaElement.renderer["set"+t]&&m.mediaElement.renderer["set"+t](e)};E(m.mediaElement,e,n,i),m.mediaElement["get"+t]=n,m.mediaElement["set"+t]=i}}(g[w]);for(var T=0,C=b.length;T<C;T++)!function(e){m.mediaElement[e]=function(){for(var t=arguments.length,n=Array(t),i=0;i<t;i++)n[i]=arguments[i];if(void 0!==m.mediaElement.renderer&&null!==m.mediaElement.renderer&&"function"==typeof m.mediaElement.renderer[e])try{m.mediaElement.renderer[e](n)}catch(e){m.mediaElement.createErrorMessage()}return null}}(b[T]);m.mediaElement.events={},m.mediaElement.addEventListener=function(e,t){m.mediaElement.events[e]=m.mediaElement.events[e]||[],m.mediaElement.events[e].push(t)},m.mediaElement.removeEventListener=function(e,t){if(!e)return m.mediaElement.events={},!0;var n=m.mediaElement.events[e];if(!n)return!0;if(!t)return m.mediaElement.events[e]=[],!0;for(var i=0;i<n.length;i++)if(n[i]===t)return m.mediaElement.events[e].splice(i,1),!0;return!1},m.mediaElement.dispatchEvent=function(e){var t=m.mediaElement.events[e.type];if(t)for(var n=0;n<t.length;n++)t[n].apply(null,[e])};var k=function(e,t){if(l.default.html5media.mediaTypes.indexOf(t)>-1&&"https:"===r.default.location.protocol&&f.IS_IOS&&!r.default.MSStream){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(4===this.readyState&&200===this.status){var t=(r.default.URL||r.default.webkitURL).createObjectURL(this.response);return m.mediaElement.originalNode.setAttribute("src",t),t}return e},n.open("GET",e),n.responseType="blob",n.send()}return e},_=void 0;if(null!==i)_=i;else if(null!==m.mediaElement.originalNode)switch(_=[],m.mediaElement.originalNode.nodeName.toLowerCase()){case"iframe":_.push({type:"",src:m.mediaElement.originalNode.getAttribute("src")});break;case"audio":case"video":var N=m.mediaElement.originalNode.childNodes.length,A=m.mediaElement.originalNode.getAttribute("src");if(A){var L=m.mediaElement.originalNode,F=(0,u.formatType)(A,L.getAttribute("type"));_.push({type:F,src:k(A,F)})}for(var j=0;j<N;j++){var I=m.mediaElement.originalNode.childNodes[j];if(I.nodeType===Node.ELEMENT_NODE&&"source"===I.tagName.toLowerCase()){var M=I.getAttribute("src"),O=(0,u.formatType)(M,I.getAttribute("type"));_.push({type:O,src:k(M,O)})}}}return _.length&&(m.mediaElement.src=_),m.mediaElement.options.success&&m.mediaElement.options.success(m.mediaElement,m.mediaElement.originalNode),v&&m.mediaElement.options.error&&m.mediaElement.options.error(m.mediaElement,m.mediaElement.originalNode),m.mediaElement};r.default.MediaElement=p,n.default=p},{2:2,23:23,25:25,26:26,3:3,6:6,7:7}],6:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var i=function(e){return e&&e.__esModule?e:{default:e}}(e(3)),o={};o.version="4.1.2",o.html5media={properties:["volume","src","currentTime","muted","duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable","currentSrc","preload","bufferedBytes","bufferedTime","initialTime","startOffsetTime","defaultPlaybackRate","playbackRate","played","autoplay","loop","controls"],readOnlyProperties:["duration","paused","ended","buffered","error","networkState","readyState","seeking","seekable"],methods:["load","play","pause","canPlayType"],events:["loadstart","progress","suspend","abort","error","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],mediaTypes:["audio/mp3","audio/ogg","audio/oga","audio/wav","audio/x-wav","audio/wave","audio/x-pn-wav","audio/mpeg","audio/mp4","video/mp4","video/webm","video/ogg","video/ogv"]},i.default.mejs=o,n.default=o},{3:3}],7:[function(e,t,n){"use strict";function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.renderer=void 0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),r=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),s=function(){function e(){i(this,e),this.renderers={},this.order=[]}return a(e,[{key:"add",value:function(e){if(void 0===e.name)throw new TypeError("renderer must contain at least `name` property");this.renderers[e.name]=e,this.order.push(e.name)}},{key:"select",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=t.length;if(t=t.length?t:this.order,!n){var i=[/^(html5|native)/i,/^flash/i,/iframe$/i],o=function(e){for(var t=0,n=i.length;t<n;t++)if(i[t].test(e))return t;return i.length};t.sort(function(e,t){return o(e)-o(t)})}for(var a=0,r=t.length;a<r;a++){var s=t[a],l=this.renderers[s];if(null!==l&&void 0!==l)for(var d=0,u=e.length;d<u;d++)if("function"==typeof l.canPlayType&&"string"==typeof e[d].type&&l.canPlayType(e[d].type))return{rendererName:l.name,src:e[d].src}}return null}},{key:"order",set:function(e){if(!Array.isArray(e))throw new TypeError("order must be an array of strings.");this._order=e},get:function(){return this._order}},{key:"renderers",set:function(e){if(null!==e&&"object"!==(void 0===e?"undefined":o(e)))throw new TypeError("renderers must be an array of objects.");this._renderers=e},get:function(){return this._renderers}}]),e}(),l=n.renderer=new s;r.default.Renderers=l},{6:6}],8:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(2)),r=i(e(4)),s=e(16),l=i(s),d=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e(23)),u=e(25),c=e(24);Object.assign(s.config,{usePluginFullScreen:!0,fullscreenText:null}),Object.assign(l.default.prototype,{isFullScreen:!1,isNativeFullScreen:!1,isInIframe:!1,isPluginClickThroughCreated:!1,fullscreenMode:"",containerSizeTimeout:null,buildfullscreen:function(e){if(e.isVideo){e.isInIframe=o.default.location!==o.default.parent.location,e.detectFullscreenMode();var t=this,n=(0,u.isString)(t.options.fullscreenText)?t.options.fullscreenText:r.default.t("mejs.fullscreen"),i=a.default.createElement("div");if(i.className=t.options.classPrefix+"button "+t.options.classPrefix+"fullscreen-button",i.innerHTML='<button type="button" aria-controls="'+t.id+'" title="'+n+'" aria-label="'+n+'" tabindex="0"></button>',t.addControlElement(i,"fullscreen"),i.addEventListener("click",function(){d.HAS_TRUE_NATIVE_FULLSCREEN&&d.IS_FULLSCREEN||e.isFullScreen?e.exitFullScreen():e.enterFullScreen()}),e.fullscreenBtn=i,t.globalBind("keydown",function(n){27===(n.which||n.keyCode||0)&&(d.HAS_TRUE_NATIVE_FULLSCREEN&&d.IS_FULLSCREEN||t.isFullScreen)&&e.exitFullScreen()}),t.normalHeight=0,t.normalWidth=0,d.HAS_TRUE_NATIVE_FULLSCREEN){var s=function(){e.isFullScreen&&(d.isFullScreen()?(e.isNativeFullScreen=!0,e.setControlsSize()):(e.isNativeFullScreen=!1,e.exitFullScreen()))};e.globalBind(d.FULLSCREEN_EVENT_NAME,s)}}},detectFullscreenMode:function(){var e=this,t=null!==e.media.rendererName&&/(native|html5)/i.test(e.media.rendererName),n="";return n=d.HAS_TRUE_NATIVE_FULLSCREEN&&t?"native-native":d.HAS_TRUE_NATIVE_FULLSCREEN&&!t?"plugin-native":e.usePluginFullScreen&&d.SUPPORT_POINTER_EVENTS?"plugin-click":"fullwindow",e.fullscreenMode=n,n},cleanfullscreen:function(e){e.exitFullScreen()},enterFullScreen:function(){var e=this,t=null!==e.media.rendererName&&/(html5|native)/i.test(e.media.rendererName),n=getComputedStyle(e.container);if(d.IS_IOS&&d.HAS_IOS_FULLSCREEN)"function"==typeof e.media.webkitEnterFullscreen?e.media.webkitEnterFullscreen():e.media.originalNode.webkitEnterFullscreen();else{if((0,c.addClass)(a.default.documentElement,e.options.classPrefix+"fullscreen"),(0,c.addClass)(e.container,e.options.classPrefix+"container-fullscreen"),e.normalHeight=parseFloat(n.height),e.normalWidth=parseFloat(n.width),"native-native"!==e.fullscreenMode&&"plugin-native"!==e.fullscreenMode||(d.requestFullScreen(e.container),e.isInIframe&&setTimeout(function t(){if(e.isNativeFullScreen){var n=o.default.innerWidth||a.default.documentElement.clientWidth||a.default.body.clientWidth,i=screen.width;Math.abs(i-n)>.002*i?e.exitFullScreen():setTimeout(t,500)}},1e3)),e.container.style.width="100%",e.container.style.height="100%",e.containerSizeTimeout=setTimeout(function(){e.container.style.width="100%",e.container.style.height="100%",e.setControlsSize()},500),t)e.node.style.width="100%",e.node.style.height="100%";else for(var i=e.container.querySelectorAll("iframe, embed, object, video"),r=i.length,s=0;s<r;s++)i[s].style.width="100%",i[s].style.height="100%";e.options.setDimensions&&"function"==typeof e.media.setSize&&e.media.setSize(screen.width,screen.height);for(var l=e.layers.childNodes,f=l.length,p=0;p<f;p++)l[p].style.width="100%",l[p].style.height="100%";e.fullscreenBtn&&((0,c.removeClass)(e.fullscreenBtn,e.options.classPrefix+"fullscreen"),(0,c.addClass)(e.fullscreenBtn,e.options.classPrefix+"unfullscreen")),e.setControlsSize(),e.isFullScreen=!0;var m=Math.min(screen.width/e.width,screen.height/e.height),h=e.container.querySelector("."+e.options.classPrefix+"captions-text");h&&(h.style.fontSize=100*m+"%",h.style.lineHeight="normal",e.container.querySelector("."+e.options.classPrefix+"captions-position").style.bottom="45px");var v=(0,u.createEvent)("enteredfullscreen",e.container);e.container.dispatchEvent(v)}},exitFullScreen:function(){var e=this,t=null!==e.media.rendererName&&/(native|html5)/i.test(e.media.rendererName);if(clearTimeout(e.containerSizeTimeout),d.HAS_TRUE_NATIVE_FULLSCREEN&&(d.IS_FULLSCREEN||e.isFullScreen)&&d.cancelFullScreen(),(0,c.removeClass)(a.default.documentElement,e.options.classPrefix+"fullscreen"),(0,c.removeClass)(e.container,e.options.classPrefix+"container-fullscreen"),e.options.setDimensions){if(e.container.style.width=e.normalWidth+"px",e.container.style.height=e.normalHeight+"px",t)e.node.style.width=e.normalWidth+"px",e.node.style.height=e.normalHeight+"px";else for(var n=e.container.querySelectorAll("iframe, embed, object, video"),i=n.length,o=0;o<i;o++)n[o].style.width=e.normalWidth+"px",n[o].style.height=e.normalHeight+"px";"function"==typeof e.media.setSize&&e.media.setSize(e.normalWidth,e.normalHeight);for(var r=e.layers.childNodes,s=r.length,l=0;l<s;l++)r[l].style.width=e.normalWidth+"px",r[l].style.height=e.normalHeight+"px"}e.fullscreenBtn&&((0,c.removeClass)(e.fullscreenBtn,e.options.classPrefix+"unfullscreen"),(0,c.addClass)(e.fullscreenBtn,e.options.classPrefix+"fullscreen")),e.setControlsSize(),e.isFullScreen=!1;var f=e.container.querySelector("."+e.options.classPrefix+"captions-text");f&&(f.style.fontSize="",f.style.lineHeight="",e.container.querySelector("."+e.options.classPrefix+"captions-position").style.bottom="");var p=(0,u.createEvent)("exitedfullscreen",e.container);e.container.dispatchEvent(p)}})},{16:16,2:2,23:23,24:24,25:25,3:3,4:4}],9:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(25),d=e(24);Object.assign(a.config,{playText:null,pauseText:null}),Object.assign(r.default.prototype,{buildplaypause:function(e,t,n,i){function a(e){"play"===e?((0,d.removeClass)(p,r.options.classPrefix+"play"),(0,d.removeClass)(p,r.options.classPrefix+"replay"),(0,d.addClass)(p,r.options.classPrefix+"pause"),m.setAttribute("title",f),m.setAttribute("aria-label",f)):((0,d.removeClass)(p,r.options.classPrefix+"pause"),(0,d.removeClass)(p,r.options.classPrefix+"replay"),(0,d.addClass)(p,r.options.classPrefix+"play"),m.setAttribute("title",c),m.setAttribute("aria-label",c))}var r=this,u=r.options,c=(0,l.isString)(u.playText)?u.playText:s.default.t("mejs.play"),f=(0,l.isString)(u.pauseText)?u.pauseText:s.default.t("mejs.pause"),p=o.default.createElement("div");p.className=r.options.classPrefix+"button "+r.options.classPrefix+"playpause-button "+r.options.classPrefix+"play",p.innerHTML='<button type="button" aria-controls="'+r.id+'" title="'+c+'" aria-label="'+f+'" tabindex="0"></button>',p.addEventListener("click",function(){i.paused?i.play():i.pause()});var m=p.querySelector("button");r.addControlElement(p,"playpause"),a("pse"),i.addEventListener("loadedmetadata",function(){-1===i.rendererName.indexOf("flash")&&a("pse")}),i.addEventListener("play",function(){a("play")}),i.addEventListener("playing",function(){a("play")}),i.addEventListener("pause",function(){a("pse")}),i.addEventListener("ended",function(){e.options.loop||((0,d.removeClass)(p,r.options.classPrefix+"pause"),(0,d.removeClass)(p,r.options.classPrefix+"play"),(0,d.addClass)(p,r.options.classPrefix+"replay"),m.setAttribute("title",c),m.setAttribute("aria-label",c))})}})},{16:16,2:2,24:24,25:25,4:4}],10:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(23),d=e(28),u=e(24);Object.assign(a.config,{enableProgressTooltip:!0,useSmoothHover:!0}),Object.assign(r.default.prototype,{buildprogress:function(e,t,n,i){var a=0,r=!1,c=!1,f=this,p=e.options.autoRewind,m=e.options.enableProgressTooltip?'<span class="'+f.options.classPrefix+'time-float"><span class="'+f.options.classPrefix+'time-float-current">00:00</span><span class="'+f.options.classPrefix+'time-float-corner"></span></span>':"",h=o.default.createElement("div");h.className=f.options.classPrefix+"time-rail",h.innerHTML='<span class="'+f.options.classPrefix+"time-total "+f.options.classPrefix+'time-slider"><span class="'+f.options.classPrefix+'time-buffering"></span><span class="'+f.options.classPrefix+'time-loaded"></span><span class="'+f.options.classPrefix+'time-current"></span><span class="'+f.options.classPrefix+'time-hovered no-hover"></span><span class="'+f.options.classPrefix+'time-handle"><span class="'+f.options.classPrefix+'time-handle-content"></span></span>'+m+"</span>",f.addControlElement(h,"progress"),t.querySelector("."+f.options.classPrefix+"time-buffering").style.display="none",f.rail=t.querySelector("."+f.options.classPrefix+"time-rail"),f.total=t.querySelector("."+f.options.classPrefix+"time-total"),f.loaded=t.querySelector("."+f.options.classPrefix+"time-loaded"),f.current=t.querySelector("."+f.options.classPrefix+"time-current"),f.handle=t.querySelector("."+f.options.classPrefix+"time-handle"),f.timefloat=t.querySelector("."+f.options.classPrefix+"time-float"),f.timefloatcurrent=t.querySelector("."+f.options.classPrefix+"time-float-current"),f.slider=t.querySelector("."+f.options.classPrefix+"time-slider"),f.hovered=t.querySelector("."+f.options.classPrefix+"time-hovered"),f.newTime=0,f.forcedHandlePause=!1,f.setTransformStyle=function(e,t){e.style.transform=t,e.style.webkitTransform=t,e.style.MozTransform=t,e.style.msTransform=t,e.style.OTransform=t};var v=function(t){var n=getComputedStyle(f.total),i=(0,u.offset)(f.total),o=parseFloat(n.width),a=function(){return void 0!==n.webkitTransform?"webkitTransform":void 0!==n.mozTransform?"mozTransform ":void 0!==n.oTransform?"oTransform":void 0!==n.msTransform?"msTransform":"transform"}(),s=function(){return"WebKitCSSMatrix"in window?"WebKitCSSMatrix":"MSCSSMatrix"in window?"MSCSSMatrix":"CSSMatrix"in window?"CSSMatrix":void 0}(),c=0,p=0,m=void 0;if(m=t.originalEvent&&t.originalEvent.changedTouches?t.originalEvent.changedTouches[0].pageX:t.changedTouches?t.changedTouches[0].pageX:t.pageX,f.getDuration()&&(m<i.left?m=i.left:m>o+i.left&&(m=o+i.left),p=m-i.left,c=p/o,f.newTime=c<=.02?0:c*f.getDuration(),r&&null!==f.getCurrentTime()&&f.newTime.toFixed(4)!==f.getCurrentTime().toFixed(4)&&(f.setCurrentRailHandle(f.newTime),f.updateCurrent(f.newTime)),!l.IS_IOS&&!l.IS_ANDROID&&f.timefloat)){if(p<0&&(p=0),f.options.useSmoothHover&&null!==s&&void 0!==window[s]){var h=new window[s](getComputedStyle(f.handle)[a]).m41,v=p/parseFloat(getComputedStyle(f.total).width)-h/parseFloat(getComputedStyle(f.total).width);f.hovered.style.left=h+"px",f.setTransformStyle(f.hovered,"scaleX("+v+")"),f.hovered.setAttribute("pos",p),v>=0?(0,u.removeClass)(f.hovered,"negative"):(0,u.addClass)(f.hovered,"negative")}f.timefloat.style.left=p+"px",f.timefloatcurrent.innerHTML=(0,d.secondsToTimeCode)(f.newTime,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength),f.timefloat.style.display="block"}},y=function(){var t=f.getCurrentTime(),n=s.default.t("mejs.time-slider"),o=(0,d.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength),a=f.getDuration();f.slider.setAttribute("role","slider"),f.slider.tabIndex=0,i.paused?(f.slider.setAttribute("aria-label",n),f.slider.setAttribute("aria-valuemin",0),f.slider.setAttribute("aria-valuemax",a),f.slider.setAttribute("aria-valuenow",t),f.slider.setAttribute("aria-valuetext",o)):(f.slider.removeAttribute("aria-label"),f.slider.removeAttribute("aria-valuemin"),f.slider.removeAttribute("aria-valuemax"),f.slider.removeAttribute("aria-valuenow"),f.slider.removeAttribute("aria-valuetext"))},g=function(){new Date-a>=1e3&&i.play()},b=function(){r&&null!==f.getCurrentTime()&&f.newTime.toFixed(4)!==f.getCurrentTime().toFixed(4)&&(f.setCurrentTime(f.newTime),e.setCurrentRail(),f.updateCurrent(f.newTime)),f.forcedHandlePause&&f.media.play(),f.forcedHandlePause=!1};f.slider.addEventListener("focus",function(){e.options.autoRewind=!1}),f.slider.addEventListener("blur",function(){e.options.autoRewind=p}),f.slider.addEventListener("keydown",function(t){if(new Date-a>=1e3&&(c=i.paused),f.options.keyActions.length){var n=t.which||t.keyCode||0,o=f.getDuration(),r=e.options.defaultSeekForwardInterval(i),s=e.options.defaultSeekBackwardInterval(i),d=f.getCurrentTime();switch(n){case 37:case 40:f.getDuration()!==1/0&&(d-=s);break;case 39:case 38:f.getDuration()!==1/0&&(d+=r);break;case 36:d=0;break;case 35:d=o;break;case 32:return void(l.IS_FIREFOX||(i.paused?i.play():i.pause()));case 13:return void(i.paused?i.play():i.pause());default:return}d=d<0?0:d>=o?o:Math.floor(d),a=new Date,c||i.pause(),d<f.getDuration()&&!c&&setTimeout(g,1100),f.setCurrentTime(d),t.preventDefault(),t.stopPropagation()}});var E=["mousedown","touchstart"];f.slider.addEventListener("dragstart",function(){return!1});for(var S=0,x=E.length;S<x;S++)f.slider.addEventListener(E[S],function(e){if(f.forcedHandlePause=!1,f.getDuration()!==1/0&&(1===e.which||0===e.which)){i.paused||(f.media.pause(),f.forcedHandlePause=!0),r=!0,v(e);for(var t=["mouseup","touchend"],n=0,o=t.length;n<o;n++)f.container.addEventListener(t[n],function(e){var t=e.target;(t===f.slider||t.closest("."+f.options.classPrefix+"time-slider"))&&v(e)});f.globalBind("mouseup.dur touchend.dur",function(){b(),r=!1,f.timefloat&&(f.timefloat.style.display="none"),f.globalUnbind("mousemove.dur touchmove.dur mouseup.dur touchend.dur")})}});f.slider.addEventListener("mouseenter",function(e){e.target===f.slider&&f.getDuration()!==1/0&&(f.container.addEventListener("mousemove",function(e){var t=e.target;(t===f.slider||t.closest("."+f.options.classPrefix+"time-slider"))&&v(e)}),!f.timefloat||l.IS_IOS||l.IS_ANDROID||(f.timefloat.style.display="block"),f.hovered&&!l.IS_IOS&&!l.IS_ANDROID&&f.options.useSmoothHover&&(0,u.removeClass)(f.hovered,"no-hover"))}),f.slider.addEventListener("mouseleave",function(){f.getDuration()!==1/0&&(r||(f.globalUnbind("mousemove.dur"),f.timefloat&&(f.timefloat.style.display="none"),f.hovered&&f.options.useSmoothHover&&(0,u.addClass)(f.hovered,"no-hover")))}),i.addEventListener("progress",function(n){var i=t.querySelector("."+f.options.classPrefix+"broadcast");if(f.getDuration()!==1/0)i&&(f.slider.style.display="",i.remove()),e.setProgressRail(n),f.forcedHandlePause||e.setCurrentRail(n);else if(!i){var a=o.default.createElement("span");a.className=f.options.classPrefix+"broadcast",a.innerText=s.default.t("mejs.live-broadcast"),f.slider.style.display="none"}}),i.addEventListener("timeupdate",function(n){var i=t.querySelector("."+f.options.classPrefix+"broadcast");if(f.getDuration()!==1/0)i&&(f.slider.style.display="",i.remove()),e.setProgressRail(n),f.forcedHandlePause||e.setCurrentRail(n),y();else if(!i){var a=o.default.createElement("span");a.className=f.options.classPrefix+"broadcast",a.innerText=s.default.t("mejs.live-broadcast"),t.querySelector("."+f.options.classPrefix+"time-rail").appendChild(a),f.slider.style.display="none"}}),f.container.addEventListener("controlsresize",function(t){f.getDuration()!==1/0&&(e.setProgressRail(t),f.forcedHandlePause||e.setCurrentRail(t))})},setProgressRail:function(e){var t=this,n=void 0!==e?e.detail.target||e.target:t.media,i=null;n&&n.buffered&&n.buffered.length>0&&n.buffered.end&&t.getDuration()?i=n.buffered.end(n.buffered.length-1)/t.getDuration():n&&void 0!==n.bytesTotal&&n.bytesTotal>0&&void 0!==n.bufferedBytes?i=n.bufferedBytes/n.bytesTotal:e&&e.lengthComputable&&0!==e.total&&(i=e.loaded/e.total),null!==i&&(i=Math.min(1,Math.max(0,i)),t.loaded&&t.setTransformStyle(t.loaded,"scaleX("+i+")"))},setCurrentRailHandle:function(e){var t=this;t.setCurrentRailMain(t,e)},setCurrentRail:function(){var e=this;e.setCurrentRailMain(e)},setCurrentRailMain:function(e,t){if(void 0!==e.getCurrentTime()&&e.getDuration()){var n=void 0===t?e.getCurrentTime():t;if(e.total&&e.handle){var i=parseFloat(getComputedStyle(e.total).width),o=Math.round(i*n/e.getDuration()),a=o-Math.round(e.handle.offsetWidth/2);if(a=a<0?0:a,e.setTransformStyle(e.current,"scaleX("+o/i+")"),e.setTransformStyle(e.handle,"translateX("+a+"px)"),e.options.useSmoothHover&&!(0,u.hasClass)(e.hovered,"no-hover")){var r=parseInt(e.hovered.getAttribute("pos")),s=(r=isNaN(r)?0:r)/i-a/i;e.hovered.style.left=a+"px",e.setTransformStyle(e.hovered,"scaleX("+s+")"),s>=0?(0,u.removeClass)(e.hovered,"negative"):(0,u.addClass)(e.hovered,"negative")}}}}})},{16:16,2:2,23:23,24:24,28:28,4:4}],11:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=e(28),l=e(24);Object.assign(a.config,{duration:0,timeAndDurationSeparator:"<span> | </span>"}),Object.assign(r.default.prototype,{buildcurrent:function(e,t,n,i){var a=this,r=o.default.createElement("div");r.className=a.options.classPrefix+"time",r.setAttribute("role","timer"),r.setAttribute("aria-live","off"),r.innerHTML='<span class="'+a.options.classPrefix+'currenttime">'+(0,s.secondsToTimeCode)(0,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength)+"</span>",a.addControlElement(r,"current"),i.addEventListener("timeupdate",function(){a.controlsAreVisible&&e.updateCurrent()})},buildduration:function(e,t,n,i){var a=this;if(t.lastChild.querySelector("."+a.options.classPrefix+"currenttime"))t.querySelector("."+a.options.classPrefix+"time").innerHTML+=a.options.timeAndDurationSeparator+'<span class="'+a.options.classPrefix+'duration">'+(0,s.secondsToTimeCode)(a.options.duration,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>";else{t.querySelector("."+a.options.classPrefix+"currenttime")&&(0,l.addClass)(t.querySelector("."+a.options.classPrefix+"currenttime").parentNode,a.options.classPrefix+"currenttime-container");var r=o.default.createElement("div");r.className=a.options.classPrefix+"time "+a.options.classPrefix+"duration-container",r.innerHTML='<span class="'+a.options.classPrefix+'duration">'+(0,s.secondsToTimeCode)(a.options.duration,a.options.alwaysShowHours,a.options.showTimecodeFrameCount,a.options.framesPerSecond,a.options.secondsDecimalLength)+"</span>",a.addControlElement(r,"duration")}i.addEventListener("timeupdate",function(){a.controlsAreVisible&&e.updateDuration()})},updateCurrent:function(){var e=this,t=e.getCurrentTime();isNaN(t)&&(t=0),e.controls.querySelector("."+e.options.classPrefix+"currenttime")&&(e.controls.querySelector("."+e.options.classPrefix+"currenttime").innerText=(0,s.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength))},updateDuration:function(){var e=this,t=e.getDuration();(isNaN(t)||t===1/0||t<0)&&(e.media.duration=e.options.duration=t=0),e.options.duration>0&&(t=e.options.duration);var n=(0,s.secondsToTimeCode)(t,e.options.alwaysShowHours,e.options.showTimecodeFrameCount,e.options.framesPerSecond,e.options.secondsDecimalLength);n.length>5&&(0,l.toggleClass)(e.container,e.options.classPrefix+"long-video"),e.controls.querySelector("."+e.options.classPrefix+"duration")&&t>0&&(e.controls.querySelector("."+e.options.classPrefix+"duration").innerHTML=n)}})},{16:16,2:2,24:24,28:28}],12:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=i(e(6)),r=i(e(4)),s=e(16),l=i(s),d=e(28),u=e(25),c=e(24);Object.assign(s.config,{startLanguage:"",tracksText:null,chaptersText:null,tracksAriaLive:!1,hideCaptionsButtonWhenEmpty:!0,toggleCaptionsButtonWhenOnlyOne:!1,slidesSelector:""}),Object.assign(l.default.prototype,{hasChapters:!1,buildtracks:function(e,t,n,i){if(e.tracks.length||e.trackFiles&&0!==!e.trackFiles.length){var a=this,s=a.options.tracksAriaLive?' role="log" aria-live="assertive" aria-atomic="false"':"",l=(0,u.isString)(a.options.tracksText)?a.options.tracksText:r.default.t("mejs.captions-subtitles"),d=(0,u.isString)(a.options.chaptersText)?a.options.chaptersText:r.default.t("mejs.captions-chapters"),f=null===e.trackFiles?e.tracks.length:e.trackFiles.length;if(a.domNode.textTracks)for(var p=a.domNode.textTracks.length-1;p>=0;p--)a.domNode.textTracks[p].mode="hidden";a.cleartracks(e),e.captions=o.default.createElement("div"),e.captions.className=a.options.classPrefix+"captions-layer "+a.options.classPrefix+"layer",e.captions.innerHTML='<div class="'+a.options.classPrefix+"captions-position "+a.options.classPrefix+'captions-position-hover"'+s+'><span class="'+a.options.classPrefix+'captions-text"></span></div>',e.captions.style.display="none",n.insertBefore(e.captions,n.firstChild),e.captionsText=e.captions.querySelector("."+a.options.classPrefix+"captions-text"),e.captionsButton=o.default.createElement("div"),e.captionsButton.className=a.options.classPrefix+"button "+a.options.classPrefix+"captions-button",e.captionsButton.innerHTML='<button type="button" aria-controls="'+a.id+'" title="'+l+'" aria-label="'+l+'" tabindex="0"></button><div class="'+a.options.classPrefix+"captions-selector "+a.options.classPrefix+'offscreen"><ul class="'+a.options.classPrefix+'captions-selector-list"><li class="'+a.options.classPrefix+'captions-selector-list-item"><input type="radio" class="'+a.options.classPrefix+'captions-selector-input" name="'+e.id+'_captions" id="'+e.id+'_captions_none" value="none" checked disabled><label class="'+a.options.classPrefix+"captions-selector-label "+a.options.classPrefix+'captions-selected" for="'+e.id+'_captions_none">'+r.default.t("mejs.none")+"</label></li></ul></div>",a.addControlElement(e.captionsButton,"tracks"),e.captionsButton.querySelector("."+a.options.classPrefix+"captions-selector-input").disabled=!1,e.chaptersButton=o.default.createElement("div"),e.chaptersButton.className=a.options.classPrefix+"button "+a.options.classPrefix+"chapters-button",e.chaptersButton.innerHTML='<button type="button" aria-controls="'+a.id+'" title="'+d+'" aria-label="'+d+'" tabindex="0"></button><div class="'+a.options.classPrefix+"chapters-selector "+a.options.classPrefix+'offscreen"><ul class="'+a.options.classPrefix+'chapters-selector-list"></ul></div>';for(var m=0,h=0;h<f;h++){var v=e.tracks[h].kind;"subtitles"===v||"captions"===v?m++:"chapters"!==v||t.querySelector("."+a.options.classPrefix+"chapter-selector")||e.captionsButton.parentNode.insertBefore(e.chaptersButton,e.captionsButton)}e.trackToLoad=-1,e.selectedTrack=null,e.isLoadingTrack=!1;for(var y=0;y<f;y++){var g=e.tracks[y].kind;"subtitles"!==g&&"captions"!==g||e.addTrackButton(e.tracks[y].trackId,e.tracks[y].srclang,e.tracks[y].label)}e.loadNextTrack();var b=["mouseenter","focusin"],E=["mouseleave","focusout"];if(a.options.toggleCaptionsButtonWhenOnlyOne&&1===m)e.captionsButton.addEventListener("click",function(){var t="none";null===e.selectedTrack&&(t=e.tracks[0].trackId),e.setTrack(t)});else{for(var S=e.captionsButton.querySelectorAll("."+a.options.classPrefix+"captions-selector-label"),x=e.captionsButton.querySelectorAll("input[type=radio]"),w=0,P=b.length;w<P;w++)e.captionsButton.addEventListener(b[w],function(){(0,c.removeClass)(this.querySelector("."+a.options.classPrefix+"captions-selector"),a.options.classPrefix+"offscreen")});for(var T=0,C=E.length;T<C;T++)e.captionsButton.addEventListener(E[T],function(){(0,c.addClass)(this.querySelector("."+a.options.classPrefix+"captions-selector"),a.options.classPrefix+"offscreen")});for(var k=0,_=x.length;k<_;k++)x[k].addEventListener("click",function(){e.setTrack(this.value)});for(var N=0,A=S.length;N<A;N++)S[N].addEventListener("click",function(){var e=(0,c.siblings)(this,function(e){return"INPUT"===e.tagName})[0],t=(0,u.createEvent)("click",e);e.dispatchEvent(t)});e.captionsButton.addEventListener("keydown",function(e){e.stopPropagation()})}for(var L=0,F=b.length;L<F;L++)e.chaptersButton.addEventListener(b[L],function(){this.querySelector("."+a.options.classPrefix+"chapters-selector-list").childNodes.length&&(0,c.removeClass)(this.querySelector("."+a.options.classPrefix+"chapters-selector"),a.options.classPrefix+"offscreen")});for(var j=0,I=E.length;j<I;j++)e.chaptersButton.addEventListener(E[j],function(){(0,c.addClass)(this.querySelector("."+a.options.classPrefix+"chapters-selector"),a.options.classPrefix+"offscreen")});e.chaptersButton.addEventListener("keydown",function(e){e.stopPropagation()}),e.options.alwaysShowControls?(0,c.addClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover"):(e.container.addEventListener("controlsshown",function(){(0,c.addClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover")}),e.container.addEventListener("controlshidden",function(){i.paused||(0,c.removeClass)(e.container.querySelector("."+a.options.classPrefix+"captions-position"),a.options.classPrefix+"captions-position-hover")})),i.addEventListener("timeupdate",function(){e.displayCaptions()}),""!==e.options.slidesSelector&&(e.slidesContainer=o.default.querySelectorAll(e.options.slidesSelector),i.addEventListener("timeupdate",function(){e.displaySlides()}))}},cleartracks:function(e){e&&(e.captions&&e.captions.remove(),e.chapters&&e.chapters.remove(),e.captionsText&&e.captionsText.remove(),e.captionsButton&&e.captionsButton.remove(),e.chaptersButton&&e.chaptersButton.remove())},rebuildtracks:function(){var e=this;e.findTracks(),e.buildtracks(e,e.controls,e.layers,e.media)},findTracks:function(){var e=this,t=null===e.trackFiles?e.node.querySelectorAll("track"):e.trackFiles,n=t.length;e.tracks=[];for(var i=0;i<n;i++){var o=t[i],a=o.getAttribute("srclang").toLowerCase()||"",r=e.id+"_track_"+i+"_"+o.getAttribute("kind")+"_"+a;e.tracks.push({trackId:r,srclang:a,src:o.getAttribute("src"),kind:o.getAttribute("kind"),label:o.getAttribute("label")||"",entries:[],isLoaded:!1})}},setTrack:function(e){for(var t=this,n=t.captionsButton.querySelectorAll('input[type="radio"]'),i=t.captionsButton.querySelectorAll("."+t.options.classPrefix+"captions-selected"),o=t.captionsButton.querySelector('input[value="'+e+'"]'),a=0,r=n.length;a<r;a++)n[a].checked=!1;for(var s=0,l=i.length;s<l;s++)(0,c.removeClass)(i[s],t.options.classPrefix+"captions-selected");o.checked=!0;for(var d=(0,c.siblings)(o,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"captions-selector-label")}),f=0,p=d.length;f<p;f++)(0,c.addClass)(d[f],t.options.classPrefix+"captions-selected");if("none"===e)t.selectedTrack=null,(0,c.removeClass)(t.captionsButton,t.options.classPrefix+"captions-enabled");else for(var m=0,h=t.tracks.length;m<h;m++){var v=t.tracks[m];if(v.trackId===e){null===t.selectedTrack&&(0,c.addClass)(t.captionsButton,t.options.classPrefix+"captions-enabled"),t.selectedTrack=v,t.captions.setAttribute("lang",t.selectedTrack.srclang),t.displayCaptions();break}}var y=(0,u.createEvent)("captionschange",t.media);y.detail.caption=t.selectedTrack,t.media.dispatchEvent(y)},loadNextTrack:function(){var e=this;++e.trackToLoad<e.tracks.length?(e.isLoadingTrack=!0,e.loadTrack(e.trackToLoad)):(e.isLoadingTrack=!1,e.checkForTracks())},loadTrack:function(e){var t=this,n=t.tracks[e];void 0===n||void 0===n.src&&""===n.src||(0,c.ajax)(n.src,"text",function(e){n.entries="string"==typeof e&&/<tt\s+xml/gi.exec(e)?a.default.TrackFormatParser.dfxp.parse(e):a.default.TrackFormatParser.webvtt.parse(e),n.isLoaded=!0,t.enableTrackButton(n),t.loadNextTrack(),"slides"===n.kind?t.setupSlides(n):"chapters"!==n.kind||t.hasChapters||(t.drawChapters(n),t.hasChapters=!0)},function(){t.removeTrackButton(n.trackId),t.loadNextTrack()})},enableTrackButton:function(e){var t=this,n=e.srclang,i=o.default.getElementById(""+e.trackId);if(i){var s=e.label;""===s&&(s=r.default.t(a.default.language.codes[n])||n),i.disabled=!1;for(var l=(0,c.siblings)(i,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"captions-selector-label")}),d=0,f=l.length;d<f;d++)l[d].innerHTML=s;if(t.options.startLanguage===n){i.checked=!0;var p=(0,u.createEvent)("click",i);i.dispatchEvent(p)}}},removeTrackButton:function(e){var t=o.default.getElementById(""+e);if(t){var n=t.closest("li");n&&n.remove()}},addTrackButton:function(e,t,n){var i=this;""===n&&(n=r.default.t(a.default.language.codes[t])||t),i.captionsButton.querySelector("ul").innerHTML+='<li class="'+i.options.classPrefix+'captions-selector-list-item"><input type="radio" class="'+i.options.classPrefix+'captions-selector-input" name="'+i.id+'_captions" id="'+e+'" value="'+e+'" disabled><label class="'+i.options.classPrefix+'captions-selector-label"for="'+e+'">'+n+" (loading)</label></li>"},checkForTracks:function(){var e=this,t=!1;if(e.options.hideCaptionsButtonWhenEmpty){for(var n=0,i=e.tracks.length;n<i;n++){var o=e.tracks[n].kind;if(("subtitles"===o||"captions"===o)&&e.tracks[n].isLoaded){t=!0;break}}e.captionsButton.style.display=t?"":"none",e.setControlsSize()}},displayCaptions:function(){if(void 0!==this.tracks){var e=this,t=e.selectedTrack;if(null!==t&&t.isLoaded){var n=e.searchTrackPosition(t.entries,e.media.currentTime);if(n>-1)return e.captionsText.innerHTML=function(e){var t=o.default.createElement("div");t.innerHTML=e;for(var n=t.getElementsByTagName("script"),i=n.length;i--;)n[i].remove();for(var a=t.getElementsByTagName("*"),r=0,s=a.length;r<s;r++)for(var l=a[r].attributes,d=Array.prototype.slice.call(l),u=0,c=d.length;u<c;u++)d[u].name.startsWith("on")||d[u].value.startsWith("javascript")?a[r].remove():"style"===d[u].name&&a[r].removeAttribute(d[u].name);return t.innerHTML}(t.entries[n].text),e.captionsText.className=e.options.classPrefix+"captions-text "+(t.entries[n].identifier||""),e.captions.style.display="",void(e.captions.style.height="0px");e.captions.style.display="none"}else e.captions.style.display="none"}},setupSlides:function(e){var t=this;t.slides=e,t.slides.entries.imgs=[t.slides.entries.length],t.showSlide(0)},showSlide:function(e){var t=this,n=this;if(void 0!==n.tracks&&void 0!==n.slidesContainer){var i=n.slides.entries[e].text,a=n.slides.entries[e].imgs;if(void 0===a||void 0===a.fadeIn){var r=o.default.createElement("img");r.src=i,r.addEventListener("load",function(){var e=t,i=(0,c.siblings)(e,function(e){return i(e)});e.style.display="none",n.slidesContainer.innerHTML+=e.innerHTML,(0,c.fadeIn)(n.slidesContainer.querySelector(r));for(var o=0,a=i.length;o<a;o++)(0,c.fadeOut)(i[o],400)}),n.slides.entries[e].imgs=a=r}else if(!(0,c.visible)(a)){var s=(0,c.siblings)(self,function(e){return s(e)});(0,c.fadeIn)(n.slidesContainer.querySelector(a));for(var l=0,d=s.length;l<d;l++)(0,c.fadeOut)(s[l])}}},displaySlides:function(){var e=this;if(void 0!==this.slides){var t=e.slides,n=e.searchTrackPosition(t.entries,e.media.currentTime);n>-1&&e.showSlide(n)}},drawChapters:function(e){var t=this,n=e.entries.length;if(n){t.chaptersButton.querySelector("ul").innerHTML="";for(var i=0;i<n;i++)t.chaptersButton.querySelector("ul").innerHTML+='<li class="'+t.options.classPrefix+'chapters-selector-list-item" role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false"><input type="radio" class="'+t.options.classPrefix+'captions-selector-input" name="'+t.id+'_chapters" id="'+t.id+"_chapters_"+i+'" value="'+e.entries[i].start+'" disabled><label class="'+t.options.classPrefix+'chapters-selector-label"for="'+t.id+"_chapters_"+i+'">'+e.entries[i].text+"</label></li>";for(var o=t.chaptersButton.querySelectorAll('input[type="radio"]'),a=t.chaptersButton.querySelectorAll("."+t.options.classPrefix+"chapters-selector-label"),r=0,s=o.length;r<s;r++)o[r].disabled=!1,o[r].checked=!1,o[r].addEventListener("click",function(){var e=this,n=t.chaptersButton.querySelectorAll("li"),i=(0,c.siblings)(e,function(e){return(0,c.hasClass)(e,t.options.classPrefix+"chapters-selector-label")})[0];e.checked=!0,e.parentNode.setAttribute("aria-checked",!0),(0,c.addClass)(i,t.options.classPrefix+"chapters-selected"),(0,c.removeClass)(t.chaptersButton.querySelector("."+t.options.classPrefix+"chapters-selected"),t.options.classPrefix+"chapters-selected");for(var o=0,a=n.length;o<a;o++)n[o].setAttribute("aria-checked",!1);t.media.setCurrentTime(parseFloat(e.value)),t.media.paused&&t.media.play()});for(var l=0,d=a.length;l<d;l++)a[l].addEventListener("click",function(){var e=(0,c.siblings)(this,function(e){return"INPUT"===e.tagName})[0],t=(0,u.createEvent)("click",e);e.dispatchEvent(t)})}},searchTrackPosition:function(e,t){for(var n=0,i=e.length-1,o=void 0,a=void 0,r=void 0;n<=i;){if(o=n+i>>1,a=e[o].start,r=e[o].stop,t>=a&&t<r)return o;a<t?n=o+1:a>t&&(i=o-1)}return-1}}),a.default.language={codes:{af:"mejs.afrikaans",sq:"mejs.albanian",ar:"mejs.arabic",be:"mejs.belarusian",bg:"mejs.bulgarian",ca:"mejs.catalan",zh:"mejs.chinese","zh-cn":"mejs.chinese-simplified","zh-tw":"mejs.chines-traditional",hr:"mejs.croatian",cs:"mejs.czech",da:"mejs.danish",nl:"mejs.dutch",en:"mejs.english",et:"mejs.estonian",fl:"mejs.filipino",fi:"mejs.finnish",fr:"mejs.french",gl:"mejs.galician",de:"mejs.german",el:"mejs.greek",ht:"mejs.haitian-creole",iw:"mejs.hebrew",hi:"mejs.hindi",hu:"mejs.hungarian",is:"mejs.icelandic",id:"mejs.indonesian",ga:"mejs.irish",it:"mejs.italian",ja:"mejs.japanese",ko:"mejs.korean",lv:"mejs.latvian",lt:"mejs.lithuanian",mk:"mejs.macedonian",ms:"mejs.malay",mt:"mejs.maltese",no:"mejs.norwegian",fa:"mejs.persian",pl:"mejs.polish",pt:"mejs.portuguese",ro:"mejs.romanian",ru:"mejs.russian",sr:"mejs.serbian",sk:"mejs.slovak",sl:"mejs.slovenian",es:"mejs.spanish",sw:"mejs.swahili",sv:"mejs.swedish",tl:"mejs.tagalog",th:"mejs.thai",tr:"mejs.turkish",uk:"mejs.ukrainian",vi:"mejs.vietnamese",cy:"mejs.welsh",yi:"mejs.yiddish"}},a.default.TrackFormatParser={webvtt:{pattern:/^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,parse:function(e){for(var t=e.split(/\r?\n/),n=[],i=void 0,o=void 0,a=void 0,r=0,s=t.length;r<s;r++){if((i=this.pattern.exec(t[r]))&&r<t.length){for(r-1>=0&&""!==t[r-1]&&(a=t[r-1]),o=t[++r],r++;""!==t[r]&&r<t.length;)o=o+"\n"+t[r],r++;o=o.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),n.push({identifier:a,start:0===(0,d.convertSMPTEtoSeconds)(i[1])?.2:(0,d.convertSMPTEtoSeconds)(i[1]),stop:(0,d.convertSMPTEtoSeconds)(i[3]),text:o,settings:i[5]})}a=""}return n}},dfxp:{parse:function(e){var t=(e=$(e).filter("tt")).firstChild,n=t.querySelectorAll("p"),i=e.getElementById(""+t.attr("style")),o=[],a=void 0;if(i.length){i.removeAttribute("id");var r=i.attributes;if(r.length){a={};for(var s=0,l=r.length;s<l;s++)a[r[s].name.split(":")[1]]=r[s].value}}for(var u=0,c=n.length;u<c;u++){var f=void 0,p={start:null,stop:null,style:null,text:null};if(n.eq(u).attr("begin")&&(p.start=(0,d.convertSMPTEtoSeconds)(n.eq(u).attr("begin"))),!p.start&&n.eq(u-1).attr("end")&&(p.start=(0,d.convertSMPTEtoSeconds)(n.eq(u-1).attr("end"))),n.eq(u).attr("end")&&(p.stop=(0,d.convertSMPTEtoSeconds)(n.eq(u).attr("end"))),!p.stop&&n.eq(u+1).attr("begin")&&(p.stop=(0,d.convertSMPTEtoSeconds)(n.eq(u+1).attr("begin"))),a){f="";for(var m in a)f+=m+":"+a[m]+";"}f&&(p.style=f),0===p.start&&(p.start=.2),p.text=n.eq(u).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gi,"<a href='$1' target='_blank'>$1</a>"),o.push(p)}return o}}}},{16:16,2:2,24:24,25:25,28:28,4:4,6:6}],13:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(2)),a=e(16),r=i(a),s=i(e(4)),l=e(23),d=e(25),u=e(24);Object.assign(a.config,{muteText:null,unmuteText:null,allyVolumeControlText:null,hideVolumeOnTouchDevices:!0,audioVolume:"horizontal",videoVolume:"vertical",startVolume:.8}),Object.assign(r.default.prototype,{buildvolume:function(e,t,n,i){if(!l.IS_ANDROID&&!l.IS_IOS||!this.options.hideVolumeOnTouchDevices){var a=this,r=a.isVideo?a.options.videoVolume:a.options.audioVolume,c=(0,d.isString)(a.options.muteText)?a.options.muteText:s.default.t("mejs.mute"),f=(0,d.isString)(a.options.unmuteText)?a.options.unmuteText:s.default.t("mejs.unmute"),p=(0,d.isString)(a.options.allyVolumeControlText)?a.options.allyVolumeControlText:s.default.t("mejs.volume-help-text"),m=o.default.createElement("div");if(m.className=a.options.classPrefix+"button "+a.options.classPrefix+"volume-button "+a.options.classPrefix+"mute",m.innerHTML="horizontal"===r?'<button type="button" aria-controls="'+a.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button>':'<button type="button" aria-controls="'+a.id+'" title="'+c+'" aria-label="'+c+'" tabindex="0"></button><a href="javascript:void(0);" class="'+a.options.classPrefix+'volume-slider" aria-label="'+s.default.t("mejs.volume-slider")+'" aria-valuemin="0" aria-valuemax="100" role="slider" aria-orientation="vertical"><span class="'+a.options.classPrefix+'offscreen">'+p+'</span><div class="'+a.options.classPrefix+'volume-total"><div class="'+a.options.classPrefix+'volume-current"></div><div class="'+a.options.classPrefix+'volume-handle"></div></div></a>',a.addControlElement(m,"volume"),"horizontal"===r){var h=o.default.createElement("a");h.className=a.options.classPrefix+"horizontal-volume-slider",h.href="javascript:void(0);",h.setAttribute("aria-label",s.default.t("mejs.volume-slider")),h.setAttribute("aria-valuemin",0),h.setAttribute("aria-valuemax",100),h.setAttribute("role","slider"),h.innerHTML+='<span class="'+a.options.classPrefix+'offscreen">'+p+'</span><div class="'+a.options.classPrefix+'horizontal-volume-total"><div class="'+a.options.classPrefix+'horizontal-volume-current"></div><div class="'+a.options.classPrefix+'horizontal-volume-handle"></div></div>',m.parentNode.insertBefore(h,m.nextSibling)}var v=!1,y=!1,g=!1,b=function(){var e=Math.floor(100*i.volume);E.setAttribute("aria-valuenow",e),E.setAttribute("aria-valuetext",e+"%")},E="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-slider"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-slider"),S="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-total"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-total"),x="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-current"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-current"),w="vertical"===r?a.container.querySelector("."+a.options.classPrefix+"volume-handle"):a.container.querySelector("."+a.options.classPrefix+"horizontal-volume-handle"),P=function(e){if(null!==e&&!isNaN(e)&&void 0!==e){if(e=Math.max(0,e),0===(e=Math.min(e,1))){(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute");var t=m.firstElementChild;t.setAttribute("title",f),t.setAttribute("aria-label",f)}else{(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute");var n=m.firstElementChild;n.setAttribute("title",c),n.setAttribute("aria-label",c)}var i=100*e+"%",o=getComputedStyle(w);"vertical"===r?(x.style.bottom=0,x.style.height=i,w.style.bottom=i,w.style.marginBottom=-parseFloat(o.height)/2+"px"):(x.style.left=0,x.style.width=i,w.style.left=i,w.style.marginLeft=-parseFloat(o.width)/2+"px")}},T=function(e){var t=(0,u.offset)(S),n=getComputedStyle(S);g=!0;var o=null;if("vertical"===r){var a=parseFloat(n.height);if(o=(a-(e.pageY-t.top))/a,0===t.top||0===t.left)return}else{var s=parseFloat(n.width);o=(e.pageX-t.left)/s}o=Math.max(0,o),o=Math.min(o,1),P(o),i.setMuted(0===o),i.setVolume(o),e.preventDefault(),e.stopPropagation()},C=function(){i.muted?(P(0),(0,u.removeClass)(m,a.options.classPrefix+"mute"),(0,u.addClass)(m,a.options.classPrefix+"unmute")):(P(i.volume),(0,u.removeClass)(m,a.options.classPrefix+"unmute"),(0,u.addClass)(m,a.options.classPrefix+"mute"))};m.addEventListener("mouseenter",function(e){e.target===m&&(E.style.display="block",y=!0,e.preventDefault(),e.stopPropagation())}),m.addEventListener("focusin",function(){E.style.display="block",y=!0}),m.addEventListener("focusout",function(e){e.relatedTarget&&(!e.relatedTarget||e.relatedTarget.matches("."+a.options.classPrefix+"volume-slider"))||"vertical"!==r||(E.style.display="none")}),m.addEventListener("mouseleave",function(){y=!1,v||"vertical"!==r||(E.style.display="none")}),m.addEventListener("focusout",function(){y=!1}),m.addEventListener("keydown",function(e){if(a.options.keyActions.length){var t=e.which||e.keyCode||0,n=i.volume;switch(t){case 38:n=Math.min(n+.1,1);break;case 40:n=Math.max(0,n-.1);break;default:return!0}v=!1,P(n),i.setVolume(n),e.preventDefault(),e.stopPropagation()}}),m.querySelector("button").addEventListener("click",function(){i.setMuted(!i.muted);var e=(0,d.createEvent)("volumechange",i);i.dispatchEvent(e)}),E.addEventListener("dragstart",function(){return!1}),E.addEventListener("mouseover",function(){y=!0}),E.addEventListener("focusin",function(){E.style.display="block",y=!0}),E.addEventListener("focusout",function(){y=!1,v||"vertical"!==r||(E.style.display="none")}),E.addEventListener("mousedown",function(e){T(e),a.globalBind("mousemove.vol",function(e){var t=e.target;v&&(t===E||t.closest("vertical"===r?"."+a.options.classPrefix+"volume-slider":"."+a.options.classPrefix+"horizontal-volume-slider"))&&T(e)}),a.globalBind("mouseup.vol",function(){v=!1,a.globalUnbind("mousemove.vol mouseup.vol"),y||"vertical"!==r||(E.style.display="none")}),v=!0,e.preventDefault(),e.stopPropagation()}),i.addEventListener("volumechange",function(e){v||C(),b()});var k=!1;i.addEventListener("rendererready",function(){g||setTimeout(function(){k=!0,(0===e.options.startVolume||i.originalNode.muted)&&(i.setMuted(!0),e.options.startVolume=0),i.setVolume(e.options.startVolume),a.setControlsSize()},250)}),i.addEventListener("loadedmetadata",function(){setTimeout(function(){g||k||((0===e.options.startVolume||i.originalNode.muted)&&(i.setMuted(!0),e.options.startVolume=0),i.setVolume(e.options.startVolume),a.setControlsSize()),k=!1},250)}),(0===e.options.startVolume||i.originalNode.muted)&&(i.setMuted(!0),e.options.startVolume=0,C()),i.setVolume(e.options.startVolume),a.container.addEventListener("controlsresize",function(){C()})}}})},{16:16,2:2,23:23,24:24,25:25,4:4}],14:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.EN={"mejs.plural-form":1,"mejs.download-file":"Download File","mejs.install-flash":"You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/","mejs.fullscreen":"Fullscreen","mejs.play":"Play","mejs.pause":"Pause","mejs.time-slider":"Time Slider","mejs.time-help-text":"Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.","mejs.live-broadcast":"Live Broadcast","mejs.volume-help-text":"Use Up/Down Arrow keys to increase or decrease volume.","mejs.unmute":"Unmute","mejs.mute":"Mute","mejs.volume-slider":"Volume Slider","mejs.video-player":"Video Player","mejs.audio-player":"Audio Player","mejs.captions-subtitles":"Captions/Subtitles","mejs.captions-chapters":"Chapters","mejs.none":"None","mejs.afrikaans":"Afrikaans","mejs.albanian":"Albanian","mejs.arabic":"Arabic","mejs.belarusian":"Belarusian","mejs.bulgarian":"Bulgarian","mejs.catalan":"Catalan","mejs.chinese":"Chinese","mejs.chinese-simplified":"Chinese (Simplified)","mejs.chinese-traditional":"Chinese (Traditional)","mejs.croatian":"Croatian","mejs.czech":"Czech","mejs.danish":"Danish","mejs.dutch":"Dutch","mejs.english":"English","mejs.estonian":"Estonian","mejs.filipino":"Filipino","mejs.finnish":"Finnish","mejs.french":"French","mejs.galician":"Galician","mejs.german":"German","mejs.greek":"Greek","mejs.haitian-creole":"Haitian Creole","mejs.hebrew":"Hebrew","mejs.hindi":"Hindi","mejs.hungarian":"Hungarian","mejs.icelandic":"Icelandic","mejs.indonesian":"Indonesian","mejs.irish":"Irish","mejs.italian":"Italian","mejs.japanese":"Japanese","mejs.korean":"Korean","mejs.latvian":"Latvian","mejs.lithuanian":"Lithuanian","mejs.macedonian":"Macedonian","mejs.malay":"Malay","mejs.maltese":"Maltese","mejs.norwegian":"Norwegian","mejs.persian":"Persian","mejs.polish":"Polish","mejs.portuguese":"Portuguese","mejs.romanian":"Romanian","mejs.russian":"Russian","mejs.serbian":"Serbian","mejs.slovak":"Slovak","mejs.slovenian":"Slovenian","mejs.spanish":"Spanish","mejs.swahili":"Swahili","mejs.swedish":"Swedish","mejs.tagalog":"Tagalog","mejs.thai":"Thai","mejs.turkish":"Turkish","mejs.ukrainian":"Ukrainian","mejs.vietnamese":"Vietnamese","mejs.welsh":"Welsh","mejs.yiddish":"Yiddish"}},{}],15:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6));"undefined"!=typeof jQuery?a.default.$=o.default.jQuery=o.default.$=jQuery:"undefined"!=typeof Zepto?a.default.$=o.default.Zepto=o.default.$=Zepto:"undefined"!=typeof ender&&(a.default.$=o.default.ender=o.default.$=ender)},{3:3,6:6}],16:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(n,"__esModule",{value:!0}),n.config=void 0;var a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r=function(){function e(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(t,n,i){return n&&e(t.prototype,n),i&&e(t,i),t}}(),s=i(e(3)),l=i(e(2)),d=i(e(6)),u=i(e(5)),c=i(e(4)),f=e(23),p=e(25),m=e(28),h=e(26),v=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(e(24));d.default.mepIndex=0,d.default.players={};var y=n.config={poster:"",showPosterWhenEnded:!1,showPosterWhenPaused:!1,defaultVideoWidth:480,defaultVideoHeight:270,videoWidth:-1,videoHeight:-1,defaultAudioWidth:400,defaultAudioHeight:40,defaultSeekBackwardInterval:function(e){return.05*e.getDuration()},defaultSeekForwardInterval:function(e){return.05*e.getDuration()},setDimensions:!0,audioWidth:-1,audioHeight:-1,loop:!1,autoRewind:!0,enableAutosize:!0,timeFormat:"",alwaysShowHours:!1,showTimecodeFrameCount:!1,framesPerSecond:25,alwaysShowControls:!1,hideVideoControlsOnLoad:!1,hideVideoControlsOnPause:!1,clickToPlayPause:!0,controlsTimeoutDefault:1500,controlsTimeoutMouseEnter:2500,controlsTimeoutMouseLeave:1e3,iPadUseNativeControls:!1,iPhoneUseNativeControls:!1,AndroidUseNativeControls:!1,features:["playpause","current","progress","duration","tracks","volume","fullscreen"],isVideo:!0,stretching:"auto",classPrefix:"mejs__",enableKeyboard:!0,pauseOtherPlayers:!0,secondsDecimalLength:0,keyActions:[{keys:[32,179],action:function(e,t){f.IS_FIREFOX||(t.paused||t.ended?t.play():t.pause())}},{keys:[38],action:function(e,t){(e.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||e.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(e.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.min(t.volume+.1,1);t.setVolume(n),n>0&&t.setMuted(!1)}},{keys:[40],action:function(e,t){(e.container.querySelector("."+y.classPrefix+"volume-button>button").matches(":focus")||e.container.querySelector("."+y.classPrefix+"volume-slider").matches(":focus"))&&(e.container.querySelector("."+y.classPrefix+"volume-slider").style.display=""),e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.max(t.volume-.1,0);t.setVolume(n),n<=.1&&t.setMuted(!0)}},{keys:[37,227],action:function(e,t){if(!isNaN(t.duration)&&t.duration>0){e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.max(t.currentTime-e.options.defaultSeekBackwardInterval(t),0);t.setCurrentTime(n)}}},{keys:[39,228],action:function(e,t){if(!isNaN(t.duration)&&t.duration>0){e.isVideo&&(e.showControls(),e.startControlsTimer());var n=Math.min(t.currentTime+e.options.defaultSeekForwardInterval(t),t.duration);t.setCurrentTime(n)}}},{keys:[70],action:function(e,t,n,i){i.ctrlKey||void 0!==e.enterFullScreen&&(e.isFullScreen?e.exitFullScreen():e.enterFullScreen())}},{keys:[77],action:function(e){e.container.querySelector("."+y.classPrefix+"volume-slider").style.display="",e.isVideo&&(e.showControls(),e.startControlsTimer()),e.media.muted?e.setMuted(!1):e.setMuted(!0)}}]};d.default.MepDefaults=y;var g=function(){function e(t,n){o(this,e);var i=this,a="string"==typeof t?l.default.getElementById(t):t;if(i.hasFocus=!1,i.controlsAreVisible=!0,i.controlsEnabled=!0,i.controlsTimer=null,!(i instanceof e))return new e(a,n);if(i.node=i.media=a,i.node){if(void 0!==i.media.player)return i.media.player;if(void 0===n){var r=i.node.getAttribute("data-mejsoptions");n=r?JSON.parse(r):{}}i.options=Object.assign({},y,n),i.options.loop&&!i.media.getAttribute("loop")?(i.media.loop=!0,i.node.loop=!0):i.media.loop&&(i.options.loop=!0),i.options.timeFormat||(i.options.timeFormat="mm:ss",i.options.alwaysShowHours&&(i.options.timeFormat="hh:mm:ss"),i.options.showTimecodeFrameCount&&(i.options.timeFormat+=":ff")),(0,m.calculateTimeFormat)(0,i.options,i.options.framesPerSecond||25),i.id="mep_"+d.default.mepIndex++,d.default.players[i.id]=i;var s=Object.assign({},i.options,{success:function(e,t){i._meReady(e,t)},error:function(e){i._handleError(e)}}),g=i.node.tagName.toLowerCase();if(i.isDynamic="audio"!==g&&"video"!==g,i.isVideo=i.isDynamic?i.options.isVideo:"audio"!==g&&i.options.isVideo,i.mediaFiles=null,i.trackFiles=null,f.IS_IPAD&&i.options.iPadUseNativeControls||f.IS_IPHONE&&i.options.iPhoneUseNativeControls)i.node.setAttribute("controls",!0),f.IS_IPAD&&i.node.getAttribute("autoplay")&&i.play();else if(!(i.isVideo||!i.isVideo&&i.options.features.length)||f.IS_ANDROID&&i.options.AndroidUseNativeControls)i.isVideo||i.options.features.length||(i.node.style.display="none");else{i.node.removeAttribute("controls");var b=i.isVideo?c.default.t("mejs.video-player"):c.default.t("mejs.audio-player"),E=l.default.createElement("span");if(E.className=i.options.classPrefix+"offscreen",E.innerText=b,i.media.parentNode.insertBefore(E,i.media),i.container=l.default.createElement("div"),i.container.id=i.id,i.container.className=i.options.classPrefix+"container "+i.options.classPrefix+"container-keyboard-inactive "+i.media.className,i.container.tabIndex=0,i.container.setAttribute("role","application"),i.container.setAttribute("aria-label",b),i.container.innerHTML='<div class="'+i.options.classPrefix+'inner"><div class="'+i.options.classPrefix+'mediaelement"></div><div class="'+i.options.classPrefix+'layers"></div><div class="'+i.options.classPrefix+'controls"></div><div class="'+i.options.classPrefix+'clear"></div></div>',i.container.addEventListener("focus",function(e){if(!i.controlsAreVisible&&!i.hasFocus&&i.controlsEnabled){i.showControls(!0);var t=(0,p.isNodeAfter)(e.relatedTarget,i.container)?"."+i.options.classPrefix+"controls ."+i.options.classPrefix+"button:last-child > button":"."+i.options.classPrefix+"playpause-button > button";i.container.querySelector(t).focus()}}),i.node.parentNode.insertBefore(i.container,i.node),i.options.features.length||(i.container.style.background="transparent",i.container.querySelector("."+i.options.classPrefix+"controls").style.display="none"),i.isVideo&&"fill"===i.options.stretching&&!v.hasClass(i.container.parentNode,i.options.classPrefix+"fill-container")){i.outerContainer=i.media.parentNode;var S=l.default.createElement("div");S.className=i.options.classPrefix+"fill-container",i.container.parentNode.insertBefore(S,i.container),S.appendChild(i.container)}if(f.IS_ANDROID&&v.addClass(i.container,i.options.classPrefix+"android"),f.IS_IOS&&v.addClass(i.container,i.options.classPrefix+"ios"),f.IS_IPAD&&v.addClass(i.container,i.options.classPrefix+"ipad"),f.IS_IPHONE&&v.addClass(i.container,i.options.classPrefix+"iphone"),v.addClass(i.container,i.isVideo?i.options.classPrefix+"video":i.options.classPrefix+"audio"),f.IS_SAFARI&&!f.IS_IOS){v.addClass(i.container,i.options.classPrefix+"hide-cues");for(var x=i.node.cloneNode(),w=i.node.childNodes,P=[],T=[],C=0,k=w.length;C<k;C++){var _=w[C];_&&_.nodeType!==Node.TEXT_NODE&&function(){switch(_.tagName.toLowerCase()){case"source":var e={};Array.prototype.slice.call(_.attributes).forEach(function(t){e[t.name]=t.value}),e.type=(0,h.formatType)(e.src,e.type),P.push(e);break;case"track":_.mode="hidden",T.push(_);break;default:x.appendChild(_)}}()}i.node.remove(),i.node=i.media=x,P.length&&(i.mediaFiles=P),T.length&&(i.trackFiles=T)}i.container.querySelector("."+i.options.classPrefix+"mediaelement").appendChild(i.node),i.media.player=i,i.controls=i.container.querySelector("."+i.options.classPrefix+"controls"),i.layers=i.container.querySelector("."+i.options.classPrefix+"layers");var N=i.isVideo?"video":"audio",A=N.substring(0,1).toUpperCase()+N.substring(1);i.options[N+"Width"]>0||i.options[N+"Width"].toString().indexOf("%")>-1?i.width=i.options[N+"Width"]:""!==i.node.style.width&&null!==i.node.style.width?i.width=i.node.style.width:i.node.getAttribute("width")?i.width=i.node.getAttribute("width"):i.width=i.options["default"+A+"Width"],i.options[N+"Height"]>0||i.options[N+"Height"].toString().indexOf("%")>-1?i.height=i.options[N+"Height"]:""!==i.node.style.height&&null!==i.node.style.height?i.height=i.node.style.height:i.node.getAttribute("height")?i.height=i.node.getAttribute("height"):i.height=i.options["default"+A+"Height"],i.initialAspectRatio=i.height>=i.width?i.width/i.height:i.height/i.width,i.setPlayerSize(i.width,i.height),s.pluginWidth=i.width,s.pluginHeight=i.height}if(new u.default(i.media,s,i.mediaFiles),void 0!==i.container&&i.options.features.length&&i.controlsAreVisible&&!i.options.hideVideoControlsOnLoad){var L=(0,p.createEvent)("controlsshown",i.container);i.container.dispatchEvent(L)}return i}}return r(e,[{key:"showControls",value:function(e){var t=this;if(e=void 0===e||e,!t.controlsAreVisible&&t.isVideo){if(e)!function(){v.fadeIn(t.controls,200,function(){v.removeClass(t.controls,t.options.classPrefix+"offscreen");var e=(0,p.createEvent)("controlsshown",t.container);t.container.dispatchEvent(e)});for(var e=t.container.querySelectorAll("."+t.options.classPrefix+"control"),n=0,i=e.length;n<i;n++)!function(n,i){v.fadeIn(e[n],200,function(){v.removeClass(e[n],t.options.classPrefix+"offscreen")})}(n)}();else{v.removeClass(t.controls,t.options.classPrefix+"offscreen"),t.controls.style.display="",t.controls.style.opacity=1;for(var n=t.container.querySelectorAll("."+t.options.classPrefix+"control"),i=0,o=n.length;i<o;i++)v.removeClass(n[i],t.options.classPrefix+"offscreen"),n[i].style.display="";var a=(0,p.createEvent)("controlsshown",t.container);t.container.dispatchEvent(a)}t.controlsAreVisible=!0,t.setControlsSize()}}},{key:"hideControls",value:function(e,t){var n=this;if(e=void 0===e||e,!0===t||!(!n.controlsAreVisible||n.options.alwaysShowControls||n.keyboardAction||n.media.paused&&4===n.media.readyState&&(!n.options.hideVideoControlsOnLoad&&n.media.currentTime<=0||!n.options.hideVideoControlsOnPause&&n.media.currentTime>0)||n.isVideo&&!n.options.hideVideoControlsOnLoad&&!n.media.readyState||n.media.ended)){if(e)!function(){v.fadeOut(n.controls,200,function(){v.addClass(n.controls,n.options.classPrefix+"offscreen"),n.controls.style.display="";var e=(0,p.createEvent)("controlshidden",n.container);n.container.dispatchEvent(e)});for(var e=n.container.querySelectorAll("."+n.options.classPrefix+"control"),t=0,i=e.length;t<i;t++)!function(t,i){v.fadeOut(e[t],200,function(){v.addClass(e[t],n.options.classPrefix+"offscreen"),e[t].style.display=""})}(t)}();else{v.addClass(n.controls,n.options.classPrefix+"offscreen"),n.controls.style.display="",n.controls.style.opacity=0;for(var i=n.container.querySelectorAll("."+n.options.classPrefix+"control"),o=0,a=i.length;o<a;o++)v.addClass(i[o],n.options.classPrefix+"offscreen"),i[o].style.display="";var r=(0,p.createEvent)("controlshidden",n.container);n.container.dispatchEvent(r)}n.controlsAreVisible=!1}}},{key:"startControlsTimer",value:function(e){var t=this;e=void 0!==e?e:t.options.controlsTimeoutDefault,t.killControlsTimer("start"),t.controlsTimer=setTimeout(function(){t.hideControls(),t.killControlsTimer("hide")},e)}},{key:"killControlsTimer",value:function(){var e=this;null!==e.controlsTimer&&(clearTimeout(e.controlsTimer),delete e.controlsTimer,e.controlsTimer=null)}},{key:"disableControls",value:function(){var e=this;e.killControlsTimer(),e.controlsEnabled=!0,e.hideControls(!1,!0)}},{key:"enableControls",value:function(){var e=this;e.controlsEnabled=!0,e.showControls(!1)}},{key:"_meReady",value:function(e,t){var n=this,i=t.getAttribute("autoplay"),o=!(void 0===i||null===i||"false"===i),a=null!==e.rendererName&&/(native|html5)/i.test(n.media.rendererName);if(n.controls&&n.enableControls(),n.container&&n.container.querySelector("."+n.options.classPrefix+"overlay-play")&&(n.container.querySelector("."+n.options.classPrefix+"overlay-play").style.display=""),!n.created){if(n.created=!0,n.media=e,n.domNode=t,!(f.IS_ANDROID&&n.options.AndroidUseNativeControls||f.IS_IPAD&&n.options.iPadUseNativeControls||f.IS_IPHONE&&n.options.iPhoneUseNativeControls)){if(!n.isVideo&&!n.options.features.length)return o&&a&&n.play(),void(n.options.success&&("string"==typeof n.options.success?s.default[n.options.success](n.media,n.domNode,n):n.options.success(n.media,n.domNode,n)));n.buildposter(n,n.controls,n.layers,n.media),n.buildkeyboard(n,n.controls,n.layers,n.media),n.buildoverlays(n,n.controls,n.layers,n.media),n.findTracks(),n.featurePosition={};for(var r=0,u=n.options.features.length;r<u;r++){var c=n.options.features[r];if(n["build"+c])try{n["build"+c](n,n.controls,n.layers,n.media)}catch(e){console.error("error building "+c,e)}}var h=(0,p.createEvent)("controlsready",n.container);n.container.dispatchEvent(h),n.setPlayerSize(n.width,n.height),n.setControlsSize(),n.isVideo&&(n.clickToPlayPauseCallback=function(){if(n.options.clickToPlayPause){var e=n.container.querySelector("."+n.options.classPrefix+"overlay-button"),t=e.getAttribute("aria-pressed");n.media.paused&&t?n.pause():n.media.paused?n.play():n.pause(),e.setAttribute("aria-pressed",!t)}},n.createIframeLayer(),n.media.addEventListener("click",n.clickToPlayPauseCallback),!f.IS_ANDROID&&!f.IS_IOS||n.options.alwaysShowControls?(n.container.addEventListener("mouseenter",function(){n.controlsEnabled&&(n.options.alwaysShowControls||(n.killControlsTimer("enter"),n.showControls(),n.startControlsTimer(n.options.controlsTimeoutMouseEnter)))}),n.container.addEventListener("mousemove",function(){n.controlsEnabled&&(n.controlsAreVisible||n.showControls(),n.options.alwaysShowControls||n.startControlsTimer(n.options.controlsTimeoutMouseEnter))}),n.container.addEventListener("mouseleave",function(){n.controlsEnabled&&(n.media.paused||n.options.alwaysShowControls||n.startControlsTimer(n.options.controlsTimeoutMouseLeave))})):n.node.addEventListener("touchstart",function(){n.controlsAreVisible?n.hideControls(!1):n.controlsEnabled&&n.showControls(!1)}),n.options.hideVideoControlsOnLoad&&n.hideControls(!1),o&&!n.options.alwaysShowControls&&n.hideControls(),n.options.enableAutosize&&n.media.addEventListener("loadedmetadata",function(e){var t=void 0!==e?e.detail.target||e.target:n.media;n.options.videoHeight<=0&&!n.domNode.getAttribute("height")&&null!==t&&!isNaN(t.videoHeight)&&(n.setPlayerSize(t.videoWidth,t.videoHeight),n.setControlsSize(),n.media.setSize(t.videoWidth,t.videoHeight))})),n.media.addEventListener("play",function(){n.hasFocus=!0;for(var e in d.default.players)if(d.default.players.hasOwnProperty(e)){var t=d.default.players[e];t.id===n.id||!n.options.pauseOtherPlayers||t.paused||t.ended||(t.pause(),t.hasFocus=!1)}}),n.media.addEventListener("ended",function(){if(n.options.autoRewind)try{n.media.setCurrentTime(0),setTimeout(function(){var e=n.container.querySelector("."+n.options.classPrefix+"overlay-loading");e&&e.parentNode&&(e.parentNode.style.display="none")},20)}catch(e){}"function"==typeof n.media.stop?n.media.stop():n.media.pause(),n.setProgressRail&&n.setProgressRail(),n.setCurrentRail&&n.setCurrentRail(),n.options.loop?n.play():!n.options.alwaysShowControls&&n.controlsEnabled&&n.showControls()}),n.media.addEventListener("loadedmetadata",function(){(0,m.calculateTimeFormat)(n.duration,n.options,n.options.framesPerSecond||25),n.updateDuration&&n.updateDuration(),n.updateCurrent&&n.updateCurrent(),n.isFullScreen||(n.setPlayerSize(n.width,n.height),n.setControlsSize())});var y=null;n.media.addEventListener("timeupdate",function(){isNaN(n.media.getDuration())||y===n.media.getDuration()||(y=n.media.getDuration(),(0,m.calculateTimeFormat)(y,n.options,n.options.framesPerSecond||25),n.updateDuration&&n.updateDuration(),n.updateCurrent&&n.updateCurrent(),n.setControlsSize())}),n.container.addEventListener("click",function(e){v.addClass(e.currentTarget,n.options.classPrefix+"container-keyboard-inactive")}),n.container.addEventListener("focusin",function(e){v.removeClass(e.currentTarget,n.options.classPrefix+"container-keyboard-inactive"),n.controlsEnabled&&!n.options.alwaysShowControls&&n.showControls(!1)}),n.container.addEventListener("focusout",function(e){setTimeout(function(){e.relatedTarget&&n.keyboardAction&&!e.relatedTarget.closest("."+n.options.classPrefix+"container")&&(n.keyboardAction=!1,n.isVideo&&!n.options.alwaysShowControls&&n.hideControls(!0))},0)}),setTimeout(function(){n.setPlayerSize(n.width,n.height),n.setControlsSize()},0),n.globalBind("resize",function(){n.isFullScreen||f.HAS_TRUE_NATIVE_FULLSCREEN&&l.default.webkitIsFullScreen||n.setPlayerSize(n.width,n.height),n.setControlsSize()})}o&&a&&n.play(),n.options.success&&("string"==typeof n.options.success?s.default[n.options.success](n.media,n.domNode,n):n.options.success(n.media,n.domNode,n))}}},{key:"_handleError",value:function(e){var t=this;t.controls&&t.disableControls();var n=t.layers.querySelector("."+t.options.classPrefix+"overlay-play");n&&(n.style.display="none"),t.options.error&&t.options.error(e)}},{key:"setPlayerSize",value:function(e,t){var n=this;if(!n.options.setDimensions)return!1;switch(void 0!==e&&(n.width=e),void 0!==t&&(n.height=t),n.options.stretching){case"fill":n.isVideo?n.setFillMode():n.setDimensions(n.width,n.height);break;case"responsive":n.setResponsiveMode();break;case"none":n.setDimensions(n.width,n.height);break;default:!0===n.hasFluidMode()?n.setResponsiveMode():n.setDimensions(n.width,n.height)}}},{key:"hasFluidMode",value:function(){var e=this;return-1!==e.height.toString().indexOf("%")||e.node&&e.node.style.maxWidth&&"none"!==e.node.style.maxWidth&&e.node.style.maxWidth!==e.width||e.node&&e.node.currentStyle&&"100%"===e.node.currentStyle.maxWidth}},{key:"setResponsiveMode",value:function(){var e=this,t=function(){for(var t=void 0,n=e.container;n;){try{if(f.IS_FIREFOX&&"html"===n.tagName.toLowerCase()&&s.default.self!==s.default.top&&null!==s.default.frameElement)return s.default.frameElement;t=n.parentElement}catch(e){t=n.parentElement}if(t&&v.visible(t))return t;n=t}return null}(),n=t?getComputedStyle(t,null):getComputedStyle(l.default.body,null),i=function(){return e.isVideo?e.media.videoWidth&&e.media.videoWidth>0?e.media.videoWidth:e.node.getAttribute("width")?e.node.getAttribute("width"):e.options.defaultVideoWidth:e.options.defaultAudioWidth}(),o=function(){return e.isVideo?e.media.videoHeight&&e.media.videoHeight>0?e.media.videoHeight:e.node.getAttribute("height")?e.node.getAttribute("height"):e.options.defaultVideoHeight:e.options.defaultAudioHeight}(),a=function(){var t=1;return e.isVideo?(t=e.media.videoWidth&&e.media.videoWidth>0&&e.media.videoHeight&&e.media.videoHeight>0?e.height>=e.width?e.media.videoWidth/e.media.videoHeight:e.media.videoHeight/e.media.videoWidth:e.initialAspectRatio,(isNaN(t)||t<.01||t>100)&&(t=1),t):t}(),r=parseFloat(n.height),d=void 0,u=parseFloat(n.width);if(d=e.isVideo?"100%"===e.height?parseFloat(u*o/i,10):e.height>=e.width?parseFloat(u/a,10):parseFloat(u*a,10):o,isNaN(d)&&(d=r),e.container.parentNode.length>0&&"body"===e.container.parentNode.tagName.toLowerCase()&&(u=s.default.innerWidth||l.default.documentElement.clientWidth||l.default.body.clientWidth,d=s.default.innerHeight||l.default.documentElement.clientHeight||l.default.body.clientHeight),d&&u){e.container.style.width=u+"px",e.container.style.height=d+"px",e.node.style.width="100%",e.node.style.height="100%",e.isVideo&&e.media.setSize&&e.media.setSize(u,d);for(var c=e.layers.childNodes,p=0,m=c.length;p<m;p++)c[p].style.width="100%",c[p].style.height="100%"}}},{key:"setFillMode",value:function(){var e=this,t=void 0,n=!1;try{s.default.self!==s.default.top?(n=!0,t=s.default.frameElement):t=e.outerContainer}catch(n){t=e.outerContainer}var i=getComputedStyle(t);"none"!==e.node.style.height&&e.node.style.height!==e.height&&(e.node.style.height="auto"),"none"!==e.node.style.maxWidth&&e.node.style.maxWidth!==e.width&&(e.node.style.maxWidth="none"),"none"!==e.node.style.maxHeight&&e.node.style.maxHeight!==e.height&&(e.node.style.maxHeight="none"),e.node.currentStyle&&("100%"===e.node.currentStyle.height&&(e.node.currentStyle.height="auto"),"100%"===e.node.currentStyle.maxWidth&&(e.node.currentStyle.maxWidth="none"),"100%"===e.node.currentStyle.maxHeight&&(e.node.currentStyle.maxHeight="none")),n||parseFloat(i.width)||(t.style.width=e.media.offsetWidth+"px"),n||parseFloat(i.height)||(t.style.height=e.media.offsetHeight+"px"),i=getComputedStyle(t);var o=parseFloat(i.width),a=parseFloat(i.height);e.setDimensions("100%","100%");var r=e.container.querySelector(e.options.classPrefix+"poster img");r&&(r.style.display="");for(var l=e.container.querySelectorAll("object, embed, iframe, video"),d=e.height,u=e.width,c=o,f=d*o/u,p=u*a/d,m=a,h=p>o==!1,v=h?Math.floor(c):Math.floor(p),y=h?Math.floor(f):Math.floor(m),g=h?o+"px":v+"px",b=h?y+"px":a+"px",E=0,S=l.length;E<S;E++)l[E].style.height=b,l[E].style.width=g,e.media.setSize&&e.media.setSize(g,b),l[E].style.marginLeft=Math.floor((o-v)/2)+"px",l[E].style.marginTop=0}},{key:"setDimensions",value:function(e,t){var n=this;e=(0,p.isString)(e)&&e.indexOf("%")>-1?e:parseFloat(e)+"px",t=(0,p.isString)(t)&&t.indexOf("%")>-1?t:parseFloat(t)+"px",n.container.style.width=e,n.container.style.height=t;for(var i=n.layers.childNodes,o=0,a=i.length;o<a;o++)i[o].style.width=e,i[o].style.height=t}},{key:"setControlsSize",value:function(){var e=this;if(v.visible(e.container))if(e.rail&&v.visible(e.rail)){for(var t=e.total?getComputedStyle(e.total,null):null,n=t?parseFloat(t.marginLeft)+parseFloat(t.marginRight):0,i=getComputedStyle(e.rail),o=parseFloat(i.marginLeft)+parseFloat(i.marginRight),a=0,r=v.siblings(e.rail,function(t){return t!==e.rail}),s=r.length,l=0;l<s;l++)a+=r[l].offsetWidth;a+=n+(0===n?2*o:o)+1,e.container.style.minWidth=a+"px";var d=parseFloat(e.controls.offsetWidth);e.rail.style.width=(a>d?0:d-a)+"px";var u=(0,p.createEvent)("controlsresize",e.container);e.container.dispatchEvent(u)}else{for(var c=e.controls.childNodes,f=0,m=0,h=c.length;m<h;m++)f+=c[m].offsetWidth;e.container.style.minWidth=f+"px"}}},{key:"addControlElement",value:function(e,t){var n=this;if(void 0!==n.featurePosition[t]){var i=n.controls.childNodes[n.featurePosition[t]-1];i.parentNode.insertBefore(e,i.nextSibling)}else{n.controls.appendChild(e);for(var o=n.controls.childNodes,a=0,r=o.length;a<r;a++)if(e==o[a]){n.featurePosition[t]=a;break}}}},{key:"createIframeLayer",value:function(){var e=this;if(e.isVideo&&null!==e.media.rendererName&&e.media.rendererName.indexOf("iframe")>-1&&!l.default.getElementById(e.media.id+"-iframe-overlay")){var t=l.default.createElement("div"),n=l.default.getElementById(e.media.id+"_"+e.media.rendererName);t.id=e.media.id+"-iframe-overlay",t.className=e.options.classPrefix+"iframe-overlay",t.addEventListener("click",function(t){e.options.clickToPlayPause&&(e.media.paused?e.media.play():e.media.pause(),t.preventDefault(),t.stopPropagation())}),n.parentNode.insertBefore(t,n)}}},{key:"resetSize",value:function(){var e=this;setTimeout(function(){e.setPlayerSize(e.width,e.height),e.setControlsSize()},50)}},{key:"setPoster",value:function(e){var t=this,n=t.container.querySelector("."+t.options.classPrefix+"poster"),i=n.querySelector("img");i||((i=l.default.createElement("img")).className=t.options.classPrefix+"poster-img",i.width="100%",i.height="100%",n.appendChild(i)),i.setAttribute("src",e),n.style.backgroundImage='url("'+e+'")'}},{key:"changeSkin",value:function(e){var t=this;t.container.className=t.options.classPrefix+"container "+e,t.setPlayerSize(t.width,t.height),t.setControlsSize()}},{key:"globalBind",value:function(e,t){var n=this,i=n.node?n.node.ownerDocument:l.default;if((e=(0,p.splitEvents)(e,n.id)).d)for(var o=e.d.split(" "),a=0,r=o.length;a<r;a++)o[a].split(".").reduce(function(e,n){return i.addEventListener(n,t,!1),n},"");if(e.w)for(var d=e.w.split(" "),u=0,c=d.length;u<c;u++)d[u].split(".").reduce(function(e,n){return s.default.addEventListener(n,t,!1),n},"")}},{key:"globalUnbind",value:function(e,t){var n=this,i=n.node?n.node.ownerDocument:l.default;if((e=(0,p.splitEvents)(e,n.id)).d)for(var o=e.d.split(" "),a=0,r=o.length;a<r;a++)o[a].split(".").reduce(function(e,n){return i.removeEventListener(n,t,!1),n},"");if(e.w)for(var d=e.d.split(" "),u=0,c=d.length;u<c;u++)d[u].split(".").reduce(function(e,n){return s.default.removeEventListener(n,t,!1),n},"")}},{key:"buildposter",value:function(e,t,n,i){var o=this,a=l.default.createElement("div");a.className=o.options.classPrefix+"poster "+o.options.classPrefix+"layer",n.appendChild(a);var r=e.media.getAttribute("poster");""!==e.options.poster&&(r=e.options.poster),r?o.setPoster(r):a.style.display="none",i.addEventListener("play",function(){a.style.display="none"}),i.addEventListener("playing",function(){a.style.display="none"}),e.options.showPosterWhenEnded&&e.options.autoRewind&&i.addEventListener("ended",function(){a.style.display=""}),i.addEventListener("error",function(){a.style.display="none"}),e.options.showPosterWhenPaused&&i.addEventListener("pause",function(){i.ended||(a.style.display="")})}},{key:"buildoverlays",value:function(e,t,n,i){if(e.isVideo){var o=this,a=l.default.createElement("div"),r=l.default.createElement("div"),s=l.default.createElement("div"),d=t.querySelector("."+o.options.classPrefix+"time-buffering");a.style.display="none",a.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer",a.innerHTML='<div class="'+o.options.classPrefix+'overlay-loading"><span class="'+o.options.classPrefix+'overlay-loading-bg-img"></span></div>',n.appendChild(a),r.style.display="none",r.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer",r.innerHTML='<div class="'+o.options.classPrefix+'overlay-error"></div>',n.appendChild(r),s.className=o.options.classPrefix+"overlay "+o.options.classPrefix+"layer "+o.options.classPrefix+"overlay-play",s.innerHTML='<div class="'+o.options.classPrefix+'overlay-button" role="button" tabindex="0"aria-label="'+c.default.t("mejs.play")+'" aria-pressed="false"></div>',s.addEventListener("click",function(){if(o.options.clickToPlayPause){var e=o.container.querySelector("."+o.options.classPrefix+"overlay-button"),t=e.getAttribute("aria-pressed");i.paused?i.play():i.pause(),e.setAttribute("aria-pressed",!!t)}}),s.addEventListener("keydown",function(e){var t=e.keyCode||e.which||0;if(13===t||f.IS_FIREFOX&&32===t){var n=(0,p.createEvent)("click",s);return s.dispatchEvent(n),!1}}),n.appendChild(s),null!==o.media.rendererName&&(/(youtube|facebook)/i.test(o.media.rendererName)&&!e.media.originalNode.getAttribute("poster")&&!e.options.poster||f.IS_STOCK_ANDROID)&&(s.style.display="none"),i.addEventListener("play",function(){s.style.display="none",a.style.display="none",d&&(d.style.display="none"),r.style.display="none"}),i.addEventListener("playing",function(){s.style.display="none",a.style.display="none",d&&(d.style.display="none"),r.style.display="none"}),i.addEventListener("seeking",function(){s.style.display="none",a.style.display="",d&&(d.style.display="")}),i.addEventListener("seeked",function(){s.style.display=i.paused&&!f.IS_STOCK_ANDROID?"":"none",a.style.display="none",d&&(d.style.display="")}),i.addEventListener("pause",function(){a.style.display="none",f.IS_STOCK_ANDROID||(s.style.display=""),d&&(d.style.display="none")}),i.addEventListener("waiting",function(){a.style.display="",d&&(d.style.display="")}),i.addEventListener("loadeddata",function(){a.style.display="",d&&(d.style.display=""),f.IS_ANDROID&&(i.canplayTimeout=setTimeout(function(){if(l.default.createEvent){var e=l.default.createEvent("HTMLEvents");return e.initEvent("canplay",!0,!0),i.dispatchEvent(e)}},300))}),i.addEventListener("canplay",function(){a.style.display="none",d&&(d.style.display="none"),clearTimeout(i.canplayTimeout)}),i.addEventListener("error",function(e){o._handleError(e),a.style.display="none",s.style.display="none",d&&(d.style.display="none"),e.message&&(r.style.display="block",r.querySelector("."+o.options.classPrefix+"overlay-error").innerHTML=e.message)}),i.addEventListener("keydown",function(t){o.onkeydown(e,i,t)})}}},{key:"buildkeyboard",value:function(e,t,n,i){var o=this;o.container.addEventListener("keydown",function(){o.keyboardAction=!0}),o.globalBind("keydown",function(t){var n=l.default.activeElement.closest("."+o.options.classPrefix+"container"),a=o.media.closest("."+o.options.classPrefix+"container");return o.hasFocus=!(!n||!a||n.id!==a.id),o.onkeydown(e,i,t)}),o.globalBind("click",function(e){o.hasFocus=!!e.target.closest("."+o.options.classPrefix+"container")})}},{key:"onkeydown",value:function(e,t,n){if(e.hasFocus&&e.options.enableKeyboard)for(var i=0,o=e.options.keyActions.length;i<o;i++)for(var a=e.options.keyActions[i],r=0,s=a.keys.length;r<s;r++)n.keyCode===a.keys[r]&&(a.action(e,t,n.keyCode,n),n.preventDefault(),n.stopPropagation());return!0}},{key:"play",value:function(){var e=this;e.media.getCurrentTime()<=0&&e.load(),e.media.play()}},{key:"pause",value:function(){try{this.media.pause()}catch(e){}}},{key:"load",value:function(){var e=this;e.isLoaded||e.media.load(),e.isLoaded=!0}},{key:"setMuted",value:function(e){this.media.setMuted(e)}},{key:"setCurrentTime",value:function(e){this.media.setCurrentTime(e)}},{key:"getCurrentTime",value:function(){return this.media.currentTime}},{key:"getDuration",value:function(){return this.media.duration}},{key:"setVolume",value:function(e){this.media.setVolume(e)}},{key:"getVolume",value:function(){return this.media.volume}},{key:"setSrc",value:function(e){var t=this,n=l.default.getElementById(t.media.id+"-iframe-overlay");n&&n.remove(),t.media.setSrc(e),t.createIframeLayer()}},{key:"remove",value:function(){var e=this,t=e.media.rendererName;e.media.paused||e.media.pause();var n=e.media.getSrc();e.media.setSrc("");for(var i in e.options.features){var o=e.options.features[i];if(e["clean"+o])try{e["clean"+o](e)}catch(e){console.error("error cleaning "+o,e)}}var r=e.node.getAttribute("width"),s=e.node.getAttribute("height");r?-1===r.indexOf("%")&&(r+="px"):r="auto",s?-1===s.indexOf("%")&&(s+="px"):s="auto",e.node.style.width=r,e.node.style.height=s,e.isDynamic?e.container.parentNode.insertBefore(e.node,e.container):function(){e.node.setAttribute("controls",!0),e.node.setAttribute("id",e.node.getAttribute("id").replace("_"+t,"").replace("_from_mejs","")),delete e.node.autoplay,""!==e.media.canPlayType((0,h.getTypeFromFile)(n))&&e.node.setAttribute("src",n),~t.indexOf("iframe")&&l.default.getElementById(e.media.id+"-iframe-overlay").remove();var i=e.node.cloneNode();if(i.style.display="",e.container.parentNode.insertBefore(i,e.container),e.node.remove(),e.mediaFiles)for(var o=0,a=e.mediaFiles.length;o<a;o++){var r=l.default.createElement("source");r.setAttribute("src",e.mediaFiles[o].src),r.setAttribute("type",e.mediaFiles[o].type),i.appendChild(r)}if(e.trackFiles)for(var s=0,d=e.trackFiles.length;s<d;s++)!function(t,n){var o=e.trackFiles[t],a=l.default.createElement("track");a.kind=o.kind,a.label=o.label,a.srclang=o.srclang,a.src=o.src,i.appendChild(a),a.addEventListener("load",function(){this.mode="showing",i.textTracks[t].mode="showing"})}(s);delete e.node,delete e.mediaFiles,delete e.trackFiles}(),"function"==typeof e.media.destroy&&e.media.destroy(),delete d.default.players[e.id],"object"===a(e.container)&&(e.container.parentNode.querySelector("."+e.options.classPrefix+"offscreen").remove(),e.container.remove()),e.globalUnbind(),delete e.media.player}}]),e}();s.default.MediaElementPlayer=g,n.default=g,function(e){void 0!==e&&(e.fn.mediaelementplayer=function(t){return!1===t?this.each(function(){var t=e(this).data("mediaelementplayer");t&&t.remove(),e(this).removeData("mediaelementplayer")}):this.each(function(){e(this).data("mediaelementplayer",new g(this,t))}),this},e(l.default).ready(function(){e("."+y.classPrefix+"player").mediaelementplayer()}))}(d.default.$)},{2:2,23:23,24:24,25:25,26:26,28:28,3:3,4:4,5:5,6:6}],17:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=i(e(3)),r=i(e(6)),s=e(7),l=e(25),d=e(26),u=e(23),c=e(24),f={promise:null,load:function(e){"undefined"!=typeof dashjs?f._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdn.dashjs.org/latest/dash.all.min.js",f.promise=f.promise||(0,c.loadScript)(e.options.path),f.promise.then(function(){f._createPlayer(e)}))},_createPlayer:function(e){var t=dashjs.MediaPlayer().create();a.default["__ready__"+e.id](t)}},p={name:"native_dash",options:{prefix:"native_dash",dash:{path:"https://cdn.dashjs.org/latest/dash.all.min.js",debug:!1,drm:{}}},canPlayType:function(e){return u.HAS_MSE&&["application/dash+xml"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var i=e.originalNode,d=e.id+"_"+t.prefix,u=i.getAttribute("preload"),c=i.autoplay,p=null,m=null;p=i.cloneNode(!0),t=Object.assign(t,e.options);for(var h=r.default.html5media.properties,v=0,y=h.length;v<y;v++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);p["get"+t]=function(){return null!==m?p[e]:null},p["set"+t]=function(t){-1===r.default.html5media.readOnlyProperties.indexOf(e)&&("src"===e?"string"==typeof t?(p[e]=t,null!==m&&(m.attachSource(t),c&&p.play())):t&&"object"===(void 0===t?"undefined":o(t))&&t.src&&(p[e]=t.src,null!==m&&(t&&"object"===(void 0===t?"undefined":o(t))&&t.drm&&m.setProtectionData(t.drm),m.attachSource(t.src),c&&p.play())):p[e]=t)}}(h[v]);if(a.default["__ready__"+d]=function(n){e.dashPlayer=m=n,m.getDebug().setLogToBrowserConsole(t.dash.debug),m.setScheduleWhilePaused(u&&"auto"===u||c);for(var i=r.default.html5media.events.concat(["click","mouseover","mouseout"]),o=dashjs.MediaPlayer.events,a=0,s=i.length;a<s;a++)!function(n){"loadedmetadata"===n&&(m.initialize(p,null,c),m.setFastSwitchEnabled(!0),r.default.Utils.isObjectEmpty(t.dash.drm)||m.setProtectionData(t.dash.drm),m.attachSource(p.src)),p.addEventListener(n,function(t){var n=(0,l.createEvent)(t.type,e);e.dispatchEvent(n)})}(i[a]);var d=function(t){var n=(0,l.createEvent)(t.type,p);n.data=t,e.dispatchEvent(n),"error"===t.type.toLowerCase()&&console.error(t)};for(var f in o)o.hasOwnProperty(f)&&m.on(o[f],d)},n&&n.length>0)for(var g=0,b=n.length;g<b;g++)if(s.renderer.renderers[t.prefix].canPlayType(n[g].type)){p.setAttribute("src",n[g].src),void 0!==n[g].drm&&(t.dash.drm=n[g].drm);break}p.setAttribute("id",d),i.parentNode.insertBefore(p,i),i.autoplay=!1,i.style.display="none",f.load({options:t.dash,id:d}),p.setSize=function(e,t){return p.style.width=e+"px",p.style.height=t+"px",p},p.hide=function(){return p.pause(),p.style.display="none",p},p.show=function(){return p.style.display="",p};var E=(0,l.createEvent)("rendererready",p);return e.dispatchEvent(E),p}};d.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".mpd")?"application/dash+xml":null}),s.renderer.add(p)},{23:23,24:24,25:25,26:26,3:3,6:6,7:7}],18:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.PluginDetector=void 0;var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=i(e(3)),r=i(e(2)),s=i(e(6)),l=i(e(4)),d=e(7),u=e(25),c=e(23),f=e(26),p=n.PluginDetector={plugins:[],hasPluginVersion:function(e,t){var n=p.plugins[e];return t[1]=t[1]||0,t[2]=t[2]||0,n[0]>t[0]||n[0]===t[0]&&n[1]>t[1]||n[0]===t[0]&&n[1]===t[1]&&n[2]>=t[2]},addPlugin:function(e,t,n,i,o){p.plugins[e]=p.detectPlugin(t,n,i,o)},detectPlugin:function(e,t,n,i){var r=[0,0,0],s=void 0,l=void 0;if(null!==c.NAV.plugins&&void 0!==c.NAV.plugins&&"object"===o(c.NAV.plugins[e])){if((s=c.NAV.plugins[e].description)&&(void 0===c.NAV.mimeTypes||!c.NAV.mimeTypes[t]||c.NAV.mimeTypes[t].enabledPlugin))for(var d=0,u=(r=s.replace(e,"").replace(/^\s+/,"").replace(/\sr/gi,".").split(".")).length;d<u;d++)r[d]=parseInt(r[d].match(/\d+/),10)}else if(void 0!==a.default.ActiveXObject)try{(l=new ActiveXObject(n))&&(r=i(l))}catch(e){}return r}};p.addPlugin("flash","Shockwave Flash","application/x-shockwave-flash","ShockwaveFlash.ShockwaveFlash",function(e){var t=[],n=e.GetVariable("$version");return n&&(n=n.split(" ")[1].split(","),t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]),t});var m={create:function(e,t,n){var i={};i.options=t,i.id=e.id+"_"+i.options.prefix,i.mediaElement=e,i.flashState={},i.flashApi=null,i.flashApiStack=[];for(var o=s.default.html5media.properties,p=0,m=o.length;p<m;p++)!function(e){i.flashState[e]=null;var t=""+e.substring(0,1).toUpperCase()+e.substring(1);i["get"+t]=function(){if(null!==i.flashApi){if("function"==typeof i.flashApi["get_"+e]){var t=i.flashApi["get_"+e]();return"buffered"===e?{start:function(){return 0},end:function(){return t},length:1}:t}return null}return null},i["set"+t]=function(t){if("src"===e&&(t=(0,f.absolutizeUrl)(t)),null!==i.flashApi&&void 0!==i.flashApi["set_"+e])try{i.flashApi["set_"+e](t)}catch(e){}else i.flashApiStack.push({type:"set",propName:e,value:t})}}(o[p]);var h=s.default.html5media.methods;h.push("stop");for(var v=0,y=h.length;v<y;v++)!function(e){i[e]=function(){if(null!==i.flashApi){if(i.flashApi["fire_"+e])try{i.flashApi["fire_"+e]()}catch(e){}}else i.flashApiStack.push({type:"call",methodName:e})}}(h[v]);for(var g=["rendererready"],b=0,E=g.length;b<E;b++){var S=(0,u.createEvent)(g[b],i);e.dispatchEvent(S)}a.default["__ready__"+i.id]=function(){if(i.flashReady=!0,i.flashApi=r.default.getElementById("__"+i.id),i.flashApiStack.length)for(var e=0,t=i.flashApiStack.length;e<t;e++){var n=i.flashApiStack[e];if("set"===n.type){var o=n.propName,a=""+o.substring(0,1).toUpperCase()+o.substring(1);i["set"+a](n.value)}else"call"===n.type&&i[n.methodName]()}},a.default["__event__"+i.id]=function(e,t){var n=(0,u.createEvent)(e,i);n.message=t||"",i.mediaElement.dispatchEvent(n)},i.flashWrapper=r.default.createElement("div"),-1===["always","sameDomain"].indexOf(i.options.shimScriptAccess)&&(i.options.shimScriptAccess="sameDomain");var x=e.originalNode.autoplay,w=["uid="+i.id,"autoplay="+x,"allowScriptAccess="+i.options.shimScriptAccess],P=null!==e.originalNode&&"video"===e.originalNode.tagName.toLowerCase(),T=P?e.originalNode.height:1,C=P?e.originalNode.width:1;e.originalNode.getAttribute("src")&&w.push("src="+e.originalNode.getAttribute("src")),!0===i.options.enablePseudoStreaming&&(w.push("pseudostreamstart="+i.options.pseudoStreamingStartQueryParam),w.push("pseudostreamtype="+i.options.pseudoStreamingType)),e.appendChild(i.flashWrapper),null!==e.originalNode&&(e.originalNode.style.display="none");var k=[];if(c.IS_IE){var _=r.default.createElement("div");i.flashWrapper.appendChild(_),k=['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"','codebase="//download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"','id="__'+i.id+'"','width="'+C+'"','height="'+T+'"'],P||k.push('style="clip: rect(0 0 0 0); position: absolute;"'),_.outerHTML="<object "+k.join(" ")+'><param name="movie" value="'+i.options.pluginPath+i.options.filename+"?x="+new Date+'" /><param name="flashvars" value="'+w.join("&")+'" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /><param name="wmode" value="transparent" /><param name="allowScriptAccess" value="'+i.options.shimScriptAccess+'" /><param name="allowFullScreen" value="true" /><div>'+l.default.t("mejs.install-flash")+"</div></object>"}else k=['id="__'+i.id+'"','name="__'+i.id+'"','play="true"','loop="false"','quality="high"','bgcolor="#000000"','wmode="transparent"','allowScriptAccess="'+i.options.shimScriptAccess+'"','allowFullScreen="true"','type="application/x-shockwave-flash"','pluginspage="//www.macromedia.com/go/getflashplayer"','src="'+i.options.pluginPath+i.options.filename+'"','flashvars="'+w.join("&")+'"','width="'+C+'"','height="'+T+'"'],P||k.push('style="clip: rect(0 0 0 0); position: absolute;"'),i.flashWrapper.innerHTML="<embed "+k.join(" ")+">";if(i.flashNode=i.flashWrapper.lastChild,i.hide=function(){P&&(i.flashNode.style.display="none")},i.show=function(){P&&(i.flashNode.style.display="")},i.setSize=function(e,t){i.flashNode.style.width=e+"px",i.flashNode.style.height=t+"px",null!==i.flashApi&&"function"==typeof i.flashApi.fire_setSize&&i.flashApi.fire_setSize(e,t)},i.destroy=function(){i.flashNode.remove()},n&&n.length>0)for(var N=0,A=n.length;N<A;N++)if(d.renderer.renderers[t.prefix].canPlayType(n[N].type)){i.setSrc(n[N].src);break}return i}};if(p.hasPluginVersion("flash",[10,0,0])){f.typeChecks.push(function(e){return e=e.toLowerCase(),e.startsWith("rtmp")?~e.indexOf(".mp3")?"audio/rtmp":"video/rtmp":/\.og(a|g)/i.test(e)?"audio/ogg":~e.indexOf(".m3u8")?"application/x-mpegURL":~e.indexOf(".mpd")?"application/dash+xml":~e.indexOf(".flv")?"video/flv":null});var h={name:"flash_video",options:{prefix:"flash_video",filename:"mediaelement-flash-video.swf",enablePseudoStreaming:!1,pseudoStreamingStartQueryParam:"start",pseudoStreamingType:"byte"},canPlayType:function(e){return~["video/mp4","video/rtmp","audio/rtmp","rtmp/mp4","audio/mp4","video/flv","video/x-flv"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(h);var v={name:"flash_hls",options:{prefix:"flash_hls",filename:"mediaelement-flash-video-hls.swf"},canPlayType:function(e){return~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(v);var y={name:"flash_dash",options:{prefix:"flash_dash",filename:"mediaelement-flash-video-mdash.swf"},canPlayType:function(e){return~["application/dash+xml"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(y);var g={name:"flash_audio",options:{prefix:"flash_audio",filename:"mediaelement-flash-audio.swf"},canPlayType:function(e){return~["audio/mp3"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(g);var b={name:"flash_audio_ogg",options:{prefix:"flash_audio_ogg",filename:"mediaelement-flash-audio-ogg.swf"},canPlayType:function(e){return~["audio/ogg","audio/oga","audio/ogv"].indexOf(e.toLowerCase())},create:m.create};d.renderer.add(b)}},{2:2,23:23,25:25,26:26,3:3,4:4,6:6,7:7}],19:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6)),r=e(7),s=e(25),l=e(23),d=e(26),u=e(24),c={promise:null,load:function(e){"undefined"!=typeof flvjs?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){flvjs.LoggingControl.enableDebug=e.options.debug,flvjs.LoggingControl.enableVerbose=e.options.debug;var t=flvjs.createPlayer(e.options);return o.default["__ready__"+e.id](t),t}},f={name:"native_flv",options:{prefix:"native_flv",flv:{path:"https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.2.0/flv.min.js",cors:!0,debug:!1}},canPlayType:function(e){return l.HAS_MSE&&["video/x-flv","video/flv"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var i=e.originalNode,l=e.id+"_"+t.prefix,d=null,u=null;d=i.cloneNode(!0),t=Object.assign(t,e.options);for(var f=a.default.html5media.properties,p=0,m=f.length;p<m;p++)!function(e){var n=""+e.substring(0,1).toUpperCase()+e.substring(1);d["get"+n]=function(){return null!==u?d[e]:null},d["set"+n]=function(n){if(-1===a.default.html5media.readOnlyProperties.indexOf(e)&&(d[e]=n,null!==u&&"src"===e)){var i={};i.type="flv",i.url=n,i.cors=t.flv.cors,i.debug=t.flv.debug,i.path=t.flv.path,u.destroy(),(u=c._createPlayer({options:i,id:l})).attachMediaElement(d),u.load()}}}(f[p]);if(o.default["__ready__"+l]=function(t){e.flvPlayer=u=t;for(var n=a.default.html5media.events.concat(["click","mouseover","mouseout"]),i=0,o=n.length;i<o;i++)!function(t){"loadedmetadata"===t&&(u.unload(),u.detachMediaElement(),u.attachMediaElement(d),u.load()),d.addEventListener(t,function(t){var n=(0,s.createEvent)(t.type,e);e.dispatchEvent(n)})}(n[i])},n&&n.length>0)for(var h=0,v=n.length;h<v;h++)if(r.renderer.renderers[t.prefix].canPlayType(n[h].type)){d.setAttribute("src",n[h].src);break}d.setAttribute("id",l),i.parentNode.insertBefore(d,i),i.autoplay=!1,i.style.display="none";var y={};y.type="flv",y.url=d.src,y.cors=t.flv.cors,y.debug=t.flv.debug,y.path=t.flv.path,c.load({options:y,id:l}),d.setSize=function(e,t){return d.style.width=e+"px",d.style.height=t+"px",d},d.hide=function(){return null!==u&&u.pause(),d.style.display="none",d},d.show=function(){return d.style.display="",d},d.destroy=function(){null!==u&&u.destroy()};var g=(0,s.createEvent)("rendererready",d);return e.dispatchEvent(g),d}};d.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".flv")?"video/flv":null}),r.renderer.add(f)},{23:23,24:24,25:25,26:26,3:3,6:6,7:7}],20:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(6)),r=e(7),s=e(25),l=e(23),d=e(26),u=e(24),c={promise:null,load:function(e){"undefined"!=typeof Hls?c._createPlayer(e):(e.options.path="string"==typeof e.options.path?e.options.path:"http://cdn.jsdelivr.net/npm/hls.js@latest",c.promise=c.promise||(0,u.loadScript)(e.options.path),c.promise.then(function(){c._createPlayer(e)}))},_createPlayer:function(e){var t=new Hls(e.options);return o.default["__ready__"+e.id](t),t}},f={name:"native_hls",options:{prefix:"native_hls",hls:{path:"http://cdn.jsdelivr.net/npm/hls.js@latest",autoStartLoad:!1,debug:!1}},canPlayType:function(e){return l.HAS_MSE&&["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())>-1},create:function(e,t,n){var i=e.originalNode,l=e.id+"_"+t.prefix,d=i.getAttribute("preload"),u=i.autoplay,f=null,p=null;p=i.cloneNode(!0),(t=Object.assign(t,e.options)).hls.autoStartLoad=d&&"none"!==d||u;for(var m=a.default.html5media.properties,h=0,v=m.length;h<v;h++)!function(e){var n=""+e.substring(0,1).toUpperCase()+e.substring(1);p["get"+n]=function(){return null!==f?p[e]:null},p["set"+n]=function(n){-1===a.default.html5media.readOnlyProperties.indexOf(e)&&(p[e]=n,null!==f&&"src"===e&&(f.destroy(),(f=c._createPlayer({options:t.hls,id:l})).loadSource(n),f.attachMedia(p)))}}(m[h]);if(o.default["__ready__"+l]=function(t){e.hlsPlayer=f=t;for(var n=a.default.html5media.events.concat(["click","mouseover","mouseout"]),i=Hls.Events,o=0,r=n.length;o<r;o++)!function(t){if("loadedmetadata"===t){var n=e.originalNode.src;f.detachMedia(),f.loadSource(n),f.attachMedia(p)}p.addEventListener(t,function(t){var n=(0,s.createEvent)(t.type,e);e.dispatchEvent(n)})}(n[o]);var l=void 0,d=void 0,u=function(t,n){var i=(0,s.createEvent)(t,p);if(i.data=n,e.dispatchEvent(i),"hlsError"===t&&(console.warn(t,n),n.fatal))switch(n.type){case"mediaError":var o=(new Date).getTime();!l||o-l>3e3?(l=(new Date).getTime(),f.recoverMediaError()):!d||o-d>3e3?(d=(new Date).getTime(),console.warn("Attempting to swap Audio Codec and recover from media error"),f.swapAudioCodec(),f.recoverMediaError()):console.error("Cannot recover, last media error recovery failed");break;case"networkError":console.error("Network error");break;default:f.destroy()}};for(var c in i)i.hasOwnProperty(c)&&f.on(i[c],u)},n&&n.length>0)for(var y=0,g=n.length;y<g;y++)if(r.renderer.renderers[t.prefix].canPlayType(n[y].type)){p.setAttribute("src",n[y].src);break}"auto"===d||u||(p.addEventListener("play",function(){null!==f&&f.startLoad()}),p.addEventListener("pause",function(){null!==f&&f.stopLoad()})),p.setAttribute("id",l),i.parentNode.insertBefore(p,i),i.autoplay=!1,i.style.display="none",c.load({options:t.hls,id:l}),p.setSize=function(e,t){return p.style.width=e+"px",p.style.height=t+"px",p},p.hide=function(){return p.pause(),p.style.display="none",p},p.show=function(){return p.style.display="",p},p.destroy=function(){null!==f&&f.destroy()},p.stop=function(){null!==f&&f.stopLoad()};var b=(0,s.createEvent)("rendererready",p);return e.dispatchEvent(b),p}};d.typeChecks.push(function(e){return~e.toLowerCase().indexOf(".m3u8")?"application/x-mpegURL":null}),r.renderer.add(f)},{23:23,24:24,25:25,26:26,3:3,6:6,7:7}],21:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o=i(e(3)),a=i(e(2)),r=i(e(6)),s=e(7),l=e(25),d=e(23),u={name:"html5",options:{prefix:"html5"},canPlayType:function(e){var t=a.default.createElement("video");return d.IS_ANDROID&&/\/mp(3|4)$/i.test(e)||~["application/x-mpegurl","vnd.apple.mpegurl","audio/mpegurl","audio/hls","video/hls"].indexOf(e.toLowerCase())&&d.SUPPORTS_NATIVE_HLS?"yes":t.canPlayType?t.canPlayType(e.toLowerCase()).replace(/no/,""):""},create:function(e,t,n){var i=e.id+"_"+t.prefix,o=null;void 0===e.originalNode||null===e.originalNode?(o=a.default.createElement("audio"),e.appendChild(o)):o=e.originalNode,o.setAttribute("id",i);for(var d=r.default.html5media.properties,u=0,c=d.length;u<c;u++)!function(e){var t=""+e.substring(0,1).toUpperCase()+e.substring(1);o["get"+t]=function(){return o[e]},o["set"+t]=function(t){-1===r.default.html5media.readOnlyProperties.indexOf(e)&&(o[e]=t)}}(d[u]);for(var f=r.default.html5media.events.concat(["click","mouseover","mouseout"]),p=0,m=f.length;p<m;p++)!function(t){o.addEventListener(t,function(t){var n=(0,l.createEvent)(t.type,e);e.dispatchEvent(n)})}(f[p]);if(o.setSize=function(e,t){return o.style.width=e+"px",o.style.height=t+"px",o},o.hide=function(){return o.style.display="none",o},o.show=function(){return o.style.display="",o},n&&n.length>0)for(var h=0,v=n.length;h<v;h++)if(s.renderer.renderers[t.prefix].canPlayType(n[h].type)){o.setAttribute("src",n[h].src);break}var y=(0,l.createEvent)("rendererready",o);return e.dispatchEvent(y),o}};o.default.HtmlMediaElement=r.default.HtmlMediaElement=u,s.renderer.add(u)},{2:2,23:23,25:25,3:3,6:6,7:7}],22:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},a=i(e(3)),r=i(e(2)),s=i(e(6)),l=e(7),d=e(25),u=e(26),c=e(24),f={isIframeStarted:!1,isIframeLoaded:!1,iframeQueue:[],enqueueIframe:function(e){f.isLoaded="undefined"!=typeof YT&&YT.loaded,f.isLoaded?f.createIframe(e):(f.loadIframeApi(),f.iframeQueue.push(e))},loadIframeApi:function(){f.isIframeStarted||((0,c.loadScript)("https://www.youtube.com/player_api"),f.isIframeStarted=!0)},iFrameReady:function(){for(f.isLoaded=!0,f.isIframeLoaded=!0;f.iframeQueue.length>0;){var e=f.iframeQueue.pop();f.createIframe(e)}},createIframe:function(e){return new YT.Player(e.containerId,e)},getYouTubeId:function(e){var t="";return e.indexOf("?")>0?""===(t=f.getYouTubeIdFromParam(e))&&(t=f.getYouTubeIdFromUrl(e)):t=f.getYouTubeIdFromUrl(e),t},getYouTubeIdFromParam:function(e){if(void 0===e||null===e||!e.trim().length)return null;for(var t=e.split("?")[1].split("&"),n="",i=0,o=t.length;i<o;i++){var a=t[i].split("=");if("v"===a[0]){n=a[1];break}}return n},getYouTubeIdFromUrl:function(e){return void 0!==e&&null!==e&&e.trim().length?(e=e.split("?")[0]).substring(e.lastIndexOf("/")+1):null},getYouTubeNoCookieUrl:function(e){if(void 0===e||null===e||!e.trim().length||-1===e.indexOf("//www.youtube"))return e;var t=e.split("/");return t[2]=t[2].replace(".com","-nocookie.com"),t.join("/")}},p={name:"youtube_iframe",options:{prefix:"youtube_iframe",youtube:{autoplay:0,controls:0,disablekb:1,end:0,loop:0,modestbranding:0,playsinline:0,rel:0,showinfo:0,start:0,iv_load_policy:3,nocookie:!1}},canPlayType:function(e){return~["video/youtube","video/x-youtube"].indexOf(e.toLowerCase())},create:function(e,t,n){var i={},o=[],l=null,u=!0,c=!1,p=null,m=1;i.options=t,i.id=e.id+"_"+t.prefix,i.mediaElement=e;for(var h=s.default.html5media.properties,v=0,y=h.length;v<y;v++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);i["get"+n]=function(){if(null!==l){switch(t){case"currentTime":return l.getCurrentTime();case"duration":return l.getDuration();case"volume":return m=l.getVolume()/100;case"paused":return u;case"ended":return c;case"muted":return l.isMuted();case"buffered":var e=l.getVideoLoadedFraction(),n=l.getDuration();return{start:function(){return 0},end:function(){return e*n},length:1};case"src":return l.getVideoUrl();case"readyState":return 4}return null}return null},i["set"+n]=function(n){if(null!==l)switch(t){case"src":var a="string"==typeof n?n:n[0].src,r=f.getYouTubeId(a);e.originalNode.autoplay?l.loadVideoById(r):l.cueVideoById(r);break;case"currentTime":l.seekTo(n);break;case"muted":n?l.mute():l.unMute(),setTimeout(function(){var t=(0,d.createEvent)("volumechange",i);e.dispatchEvent(t)},50);break;case"volume":m=n,l.setVolume(100*n),setTimeout(function(){var t=(0,d.createEvent)("volumechange",i);e.dispatchEvent(t)},50);break;case"readyState":var s=(0,d.createEvent)("canplay",i);e.dispatchEvent(s)}else o.push({type:"set",propName:t,value:n})}}(h[v]);for(var g=s.default.html5media.methods,b=0,E=g.length;b<E;b++)!function(e){i[e]=function(){if(null!==l)switch(e){case"play":return u=!1,l.playVideo();case"pause":return u=!0,l.pauseVideo();case"load":return null}else o.push({type:"call",methodName:e})}}(g[b]);var S=r.default.createElement("div");S.id=i.id,i.options.youtube.nocookie&&e.originalNode.setAttribute("src",f.getYouTubeNoCookieUrl(n[0].src)),e.originalNode.parentNode.insertBefore(S,e.originalNode),e.originalNode.style.display="none";var x="audio"===e.originalNode.tagName.toLowerCase(),w=x?"1":e.originalNode.height,P=x?"1":e.originalNode.width,T=f.getYouTubeId(n[0].src),C={id:i.id,containerId:S.id,videoId:T,height:w,width:P,playerVars:Object.assign({controls:0,rel:0,disablekb:1,showinfo:0,modestbranding:0,html5:1,playsinline:0,start:0,end:0,iv_load_policy:3},i.options.youtube),origin:a.default.location.host,events:{onReady:function(t){if(e.youTubeApi=l=t.target,e.youTubeState={paused:!0,ended:!1},o.length)for(var n=0,a=o.length;n<a;n++){var r=o[n];if("set"===r.type){var s=r.propName,u=""+s.substring(0,1).toUpperCase()+s.substring(1);i["set"+u](r.value)}else"call"===r.type&&i[r.methodName]()}p=l.getIframe(),e.originalNode.getAttribute("muted")&&l.mute();for(var c=["mouseover","mouseout"],f=function(t){var n=(0,d.createEvent)(t.type,i);e.dispatchEvent(n)},m=0,h=c.length;m<h;m++)p.addEventListener(c[m],f,!1);for(var v=["rendererready","loadedmetadata","loadeddata","canplay"],y=0,g=v.length;y<g;y++){var b=(0,d.createEvent)(v[y],i);e.dispatchEvent(b)}},onStateChange:function(t){var n=[];switch(t.data){case-1:n=["loadedmetadata"],u=!0,c=!1;break;case 0:n=["ended"],u=!1,c=!i.options.youtube.loop,i.options.youtube.loop||i.stopInterval();break;case 1:n=["play","playing"],u=!1,c=!1,i.startInterval();break;case 2:n=["pause"],u=!0,c=!1,i.stopInterval();break;case 3:n=["progress"],c=!1;break;case 5:n=["loadeddata","loadedmetadata","canplay"],u=!0,c=!1}for(var o=0,a=n.length;o<a;o++){var r=(0,d.createEvent)(n[o],i);e.dispatchEvent(r)}},onError:function(t){var n=(0,d.createEvent)("error",i);n.data=t.data,e.dispatchEvent(n)}}};return x&&(C.playerVars.playsinline=1),e.originalNode.autoplay&&(C.playerVars.autoplay=1),e.originalNode.loop&&(C.playerVars.loop=1),f.enqueueIframe(C),i.onEvent=function(t,n,i){null!==i&&void 0!==i&&(e.youTubeState=i)},i.setSize=function(e,t){null!==l&&l.setSize(e,t)},i.hide=function(){i.stopInterval(),i.pause(),p&&(p.style.display="none")},i.show=function(){p&&(p.style.display="")},i.destroy=function(){l.destroy()},i.interval=null,i.startInterval=function(){i.interval=setInterval(function(){var t=(0,d.createEvent)("timeupdate",i);e.dispatchEvent(t)},250)},i.stopInterval=function(){i.interval&&clearInterval(i.interval)},i}};a.default.postMessage&&o(a.default.addEventListener)&&(a.default.onYouTubePlayerAPIReady=function(){f.iFrameReady()},u.typeChecks.push(function(e){return/\/\/(www\.youtube|youtu\.be)/i.test(e)?"video/x-youtube":null}),l.renderer.add(p))},{2:2,24:24,25:25,26:26,3:3,6:6,7:7}],23:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0}),n.cancelFullScreen=n.requestFullScreen=n.isFullScreen=n.FULLSCREEN_EVENT_NAME=n.HAS_NATIVE_FULLSCREEN_ENABLED=n.HAS_TRUE_NATIVE_FULLSCREEN=n.HAS_IOS_FULLSCREEN=n.HAS_MS_NATIVE_FULLSCREEN=n.HAS_MOZ_NATIVE_FULLSCREEN=n.HAS_WEBKIT_NATIVE_FULLSCREEN=n.HAS_NATIVE_FULLSCREEN=n.SUPPORTS_NATIVE_HLS=n.SUPPORT_POINTER_EVENTS=n.HAS_MSE=n.IS_STOCK_ANDROID=n.IS_SAFARI=n.IS_FIREFOX=n.IS_CHROME=n.IS_EDGE=n.IS_IE=n.IS_ANDROID=n.IS_IOS=n.IS_IPHONE=n.IS_IPAD=n.UA=n.NAV=void 0;for(var o=i(e(3)),a=i(e(2)),r=i(e(6)),s=n.NAV=o.default.navigator,l=n.UA=s.userAgent.toLowerCase(),d=n.IS_IPAD=/ipad/i.test(l),u=n.IS_IPHONE=/iphone/i.test(l),c=(n.IS_IOS=u||d,n.IS_ANDROID=/android/i.test(l)),f=n.IS_IE=/(trident|microsoft)/i.test(s.appName),p=(n.IS_EDGE="msLaunchUri"in s&&!("documentMode"in a.default)),m=n.IS_CHROME=/chrome/i.test(l),h=n.IS_FIREFOX=/firefox/i.test(l),v=n.IS_SAFARI=/safari/i.test(l)&&!m,y=n.IS_STOCK_ANDROID=/^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(l),g=(n.HAS_MSE="MediaSource"in o.default),b=(n.SUPPORT_POINTER_EVENTS=function(){var e=a.default.createElement("x"),t=a.default.documentElement,n=o.default.getComputedStyle;if(!("pointerEvents"in e.style))return!1;e.style.pointerEvents="auto",e.style.pointerEvents="x",t.appendChild(e);var i=n&&"auto"===n(e,"").pointerEvents;return e.remove(),!!i}()),E=["source","track","audio","video"],S=void 0,x=0,w=E.length;x<w;x++)S=a.default.createElement(E[x]);var P=n.SUPPORTS_NATIVE_HLS=v||c&&(m||y)||f&&/edge/i.test(l),T=void 0!==S.webkitEnterFullscreen,C=void 0!==S.requestFullscreen;T&&/mac os x 10_5/i.test(l)&&(C=!1,T=!1);var k=void 0!==S.webkitRequestFullScreen,_=void 0!==S.mozRequestFullScreen,N=void 0!==S.msRequestFullscreen,A=k||_||N,L=A,F="",j=void 0,I=void 0,M=void 0;_?L=a.default.mozFullScreenEnabled:N&&(L=a.default.msFullscreenEnabled),m&&(T=!1),A&&(k?F="webkitfullscreenchange":_?F="mozfullscreenchange":N&&(F="MSFullscreenChange"),n.isFullScreen=j=function(){return _?a.default.mozFullScreen:k?a.default.webkitIsFullScreen:N?null!==a.default.msFullscreenElement:void 0},n.requestFullScreen=I=function(e){k?e.webkitRequestFullScreen():_?e.mozRequestFullScreen():N&&e.msRequestFullscreen()},n.cancelFullScreen=M=function(){k?a.default.webkitCancelFullScreen():_?a.default.mozCancelFullScreen():N&&a.default.msExitFullscreen()});var O=n.HAS_NATIVE_FULLSCREEN=C,H=n.HAS_WEBKIT_NATIVE_FULLSCREEN=k,D=n.HAS_MOZ_NATIVE_FULLSCREEN=_,q=n.HAS_MS_NATIVE_FULLSCREEN=N,R=n.HAS_IOS_FULLSCREEN=T,V=n.HAS_TRUE_NATIVE_FULLSCREEN=A,U=n.HAS_NATIVE_FULLSCREEN_ENABLED=L,B=n.FULLSCREEN_EVENT_NAME=F;n.isFullScreen=j,n.requestFullScreen=I,n.cancelFullScreen=M,r.default.Features=r.default.Features||{},r.default.Features.isiPad=d,r.default.Features.isiPhone=u,r.default.Features.isiOS=r.default.Features.isiPhone||r.default.Features.isiPad,r.default.Features.isAndroid=c,r.default.Features.isIE=f,r.default.Features.isEdge=p,r.default.Features.isChrome=m,r.default.Features.isFirefox=h,r.default.Features.isSafari=v,r.default.Features.isStockAndroid=y,r.default.Features.hasMSE=g,r.default.Features.supportsNativeHLS=P,r.default.Features.supportsPointerEvents=b,r.default.Features.hasiOSFullScreen=R,r.default.Features.hasNativeFullscreen=O,r.default.Features.hasWebkitNativeFullScreen=H,r.default.Features.hasMozNativeFullScreen=D,r.default.Features.hasMsNativeFullScreen=q,r.default.Features.hasTrueNativeFullScreen=V,r.default.Features.nativeFullScreenEnabled=U,r.default.Features.fullScreenEventName=B,r.default.Features.isFullScreen=j,r.default.Features.requestFullScreen=I,r.default.Features.cancelFullScreen=M},{2:2,3:3,6:6}],24:[function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function o(e){function t(e){for(o=e;a=n.shift();)a[i]&&a[i](o)}var n=[],i=-1,o=void 0,a=void 0;return e(function(e){return t(e,i=0)},function(e){return t(e,i=1)}),{then:function(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];~i?t[i]&&t[i](o):n.push(t)}}}function a(e){return o(function(t,n){var i=m.default.createElement("script");i.src=e,i.async=!0,i.onload=function(){i.remove(),t()},i.onerror=function(){i.remove(),n()},m.default.head.appendChild(i)})}function r(e){var t=e.getBoundingClientRect(),n=p.default.pageXOffset||m.default.documentElement.scrollLeft,i=p.default.pageYOffset||m.default.documentElement.scrollTop;return{top:t.top+i,left:t.left+n}}function s(e,t){b(e,t)?S(e,t):E(e,t)}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=1);var i=null;p.default.requestAnimationFrame(function o(a){var r=a-(i=i||a),s=parseFloat(1-r/t,2);e.style.opacity=s<0?0:s,r>t?n&&"function"==typeof n&&n():p.default.requestAnimationFrame(o)})}function d(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:400,n=arguments[2];e.style.opacity||(e.style.opacity=0);var i=null;p.default.requestAnimationFrame(function o(a){var r=a-(i=i||a),s=parseFloat(r/t,2);e.style.opacity=s>1?1:s,r>t?n&&"function"==typeof n&&n():p.default.requestAnimationFrame(o)})}function u(e,t){var n=[];e=e.parentNode.firstChild;do{t&&!t(e)||n.push(e)}while(e=e.nextSibling);return n}function c(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)}function f(e,t,n,i){var o=p.default.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("Microsoft.XMLHTTP"),a="application/x-www-form-urlencoded; charset=UTF-8",r=!1,s="*/".concat("*");switch(t){case"text":a="text/plain";break;case"json":a="application/json, text/javascript";break;case"html":a="text/html";break;case"xml":a="application/xml, text/xml"}"application/x-www-form-urlencoded"!==a&&(s=a+", */*; q=0.01"),o&&(o.open("GET",e,!0),o.setRequestHeader("Accept",s),o.onreadystatechange=function(){if(!r&&4===o.readyState)if(200===o.status){r=!0;var e=void 0;switch(t){case"json":e=JSON.parse(o.responseText);break;case"xml":e=o.responseXML;break;default:e=o.responseText}n(e)}else"function"==typeof i&&i(o.status)},o.send())}Object.defineProperty(n,"__esModule",{value:!0}),n.removeClass=n.addClass=n.hasClass=void 0,n.loadScript=a,n.offset=r,n.toggleClass=s,n.fadeOut=l,n.fadeIn=d,n.siblings=u,n.visible=c,n.ajax=f;var p=i(e(3)),m=i(e(2)),h=i(e(6)),v=void 0,y=void 0,g=void 0;"classList"in m.default.documentElement?(v=function(e,t){return void 0!==e.classList&&e.classList.contains(t)},y=function(e,t){return e.classList.add(t)},g=function(e,t){return e.classList.remove(t)}):(v=function(e,t){return new RegExp("\\b"+t+"\\b").test(e.className)},y=function(e,t){b(e,t)||(e.className+=" "+t)},g=function(e,t){e.className=e.className.replace(new RegExp("\\b"+t+"\\b","g"),"")});var b=n.hasClass=v,E=n.addClass=y,S=n.removeClass=g;h.default.Utils=h.default.Utils||{},h.default.Utils.offset=r,h.default.Utils.hasClass=b,h.default.Utils.addClass=E,h.default.Utils.removeClass=S,h.default.Utils.toggleClass=s,h.default.Utils.fadeIn=d,h.default.Utils.fadeOut=l,h.default.Utils.siblings=u,h.default.Utils.visible=c,h.default.Utils.ajax=f,h.default.Utils.loadScript=a},{2:2,3:3,6:6}],25:[function(e,t,n){"use strict";function i(e){if("string"!=typeof e)throw new Error("Argument passed must be a string");var t={"&":"&","<":"<",">":">",'"':"""};return e.replace(/[&<>"]/g,function(e){return t[e]})}function o(e,t){var n=this,i=arguments,o=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if("function"!=typeof e)throw new Error("First argument must be a function");if("number"!=typeof t)throw new Error("Second argument must be a numeric value");var a=void 0;return function(){var r=n,s=i,l=function(){a=null,o||e.apply(r,s)},d=o&&!a;clearTimeout(a),a=setTimeout(l,t),d&&e.apply(r,s)}}function a(e){return Object.getOwnPropertyNames(e).length<=0}function r(e,t){var n=/^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/,i={d:[],w:[]};return(e||"").split(" ").forEach(function(e){var o=e+(t?"."+t:"");o.startsWith(".")?(i.d.push(o),i.w.push(o)):i[n.test(e)?"w":"d"].push(o)}),i.d=i.d.join(" "),i.w=i.w.join(" "),i}function s(e,t){if("string"!=typeof e)throw new Error("Event name must be a string");var n=e.match(/([a-z]+\.([a-z]+))/i),i={target:t};return null!==n&&(e=n[1],i.namespace=n[2]),new window.CustomEvent(e,{detail:i})}function l(e,t){return!!(e&&t&&2&e.compareDocumentPosition(t))}function d(e){return"string"==typeof e}Object.defineProperty(n,"__esModule",{value:!0}),n.escapeHTML=i,n.debounce=o,n.isObjectEmpty=a,n.splitEvents=r,n.createEvent=s,n.isNodeAfter=l,n.isString=d;var u=function(e){return e&&e.__esModule?e:{default:e}}(e(6));u.default.Utils=u.default.Utils||{},u.default.Utils.escapeHTML=i,u.default.Utils.debounce=o,u.default.Utils.isObjectEmpty=a,u.default.Utils.splitEvents=r,u.default.Utils.createEvent=s,u.default.Utils.isNodeAfter=l,u.default.Utils.isString=d},{6:6}],26:[function(e,t,n){"use strict";function i(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=document.createElement("div");return t.innerHTML='<a href="'+(0,u.escapeHTML)(e)+'">x</a>',t.firstChild.href}function o(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e&&!t?r(e):a(t)}function a(e){if("string"!=typeof e)throw new Error("`type` argument must be a string");return e&&e.indexOf(";")>-1?e.substr(0,e.indexOf(";")):e}function r(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");for(var t=0,n=c.length;t<n;t++){var i=c[t](e);if(i)return i}var o=l(s(e)),a="video/mp4";return o&&(~["mp4","m4v","ogg","ogv","webm","flv","mpeg","mov"].indexOf(o)?a="video/"+o:~["mp3","oga","wav","mid","midi"].indexOf(o)&&(a="audio/"+o)),a}function s(e){if("string"!=typeof e)throw new Error("`url` argument must be a string");var t=e.split("?")[0].split("\\").pop().split("/").pop();return~t.indexOf(".")?t.substring(t.lastIndexOf(".")+1):""}function l(e){if("string"!=typeof e)throw new Error("`extension` argument must be a string");switch(e){case"mp4":case"m4v":return"mp4";case"webm":case"webma":case"webmv":return"webm";case"ogg":case"oga":case"ogv":return"ogg";default:return e}}Object.defineProperty(n,"__esModule",{value:!0}),n.typeChecks=void 0,n.absolutizeUrl=i,n.formatType=o,n.getMimeFromType=a,n.getTypeFromFile=r,n.getExtension=s,n.normalizeExtension=l;var d=function(e){return e&&e.__esModule?e:{default:e}}(e(6)),u=e(25),c=n.typeChecks=[];d.default.Utils=d.default.Utils||{},d.default.Utils.typeChecks=c,d.default.Utils.absolutizeUrl=i,d.default.Utils.formatType=o,d.default.Utils.getMimeFromType=a,d.default.Utils.getTypeFromFile=r,d.default.Utils.getExtension=s,d.default.Utils.normalizeExtension=l},{25:25,6:6}],27:[function(e,t,n){"use strict";var i=function(e){return e&&e.__esModule?e:{default:e}}(e(2));!function(e){e.forEach(function(e){e.hasOwnProperty("remove")||Object.defineProperty(e,"remove",{configurable:!0,enumerable:!0,writable:!0,value:function(){this.parentNode.removeChild(this)}})})}([Element.prototype,CharacterData.prototype,DocumentType.prototype]),function(){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};var n=i.default.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}if("function"==typeof window.CustomEvent)return!1;e.prototype=window.Event.prototype,window.CustomEvent=e}(),"function"!=typeof Object.assign&&(Object.assign=function(e){if(null===e||void 0===e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),n=1,i=arguments.length;n<i;n++){var o=arguments[n];if(null!==o)for(var a in o)Object.prototype.hasOwnProperty.call(o,a)&&(t[a]=o[a])}return t}),String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return t=t||0,this.substr(t,e.length)===e}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){for(var t=(this.document||this.ownerDocument).querySelectorAll(e),n=t.length-1;--n>=0&&t.item(n)!==this;);return n>-1}),window.Element&&!Element.prototype.closest&&(Element.prototype.closest=function(e){var t=(this.document||this.ownerDocument).querySelectorAll(e),n=void 0,i=this;do{for(n=t.length;--n>=0&&t.item(n)!==i;);}while(n<0&&(i=i.parentElement));return i}),function(){for(var e=0,t=["ms","moz","webkit","o"],n=0;n<t.length&&!window.requestAnimationFrame;++n)window.requestAnimationFrame=window[t[n]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[t[n]+"CancelAnimationFrame"]||window[t[n]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t){var n=(new Date).getTime(),i=Math.max(0,16-(n-e)),o=window.setTimeout(function(){t(n+i)},i);return e=n+i,o}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}(),/firefox/i.test(navigator.userAgent)&&(window.mediaElementJsOldGetComputedStyle=window.getComputedStyle,window.getComputedStyle=function(e,t){var n=window.mediaElementJsOldGetComputedStyle(e,t);return null===n?{getPropertyValue:function(){}}:n})},{2:2}],28:[function(e,t,n){"use strict";function i(){return!((arguments.length>0&&void 0!==arguments[0]?arguments[0]:25)%1==0)}function o(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:25,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;e=!e||"number"!=typeof e||e<0?0:e;var r=Math.round(.066666*o),s=Math.round(o),l=24*Math.round(3600*o),d=Math.round(600*o),u=i(o)?";":":",c=void 0,f=void 0,p=void 0,m=void 0,h=Math.round(e*o);if(i(o)){h<0&&(h=l+h);var v=(h%=l)%d;h+=9*r*Math.floor(h/d),v>r&&(h+=r*Math.floor((v-r)/Math.round(60*s-r)));var y=Math.floor(h/s);c=Math.floor(Math.floor(y/60)/60),f=Math.floor(y/60)%60,p=n?y%60:(h/s%60).toFixed(a)}else c=Math.floor(e/3600)%24,f=Math.floor(e/60)%60,p=n?Math.floor(e%60):(e%60).toFixed(a);c=c<=0?0:c,f=f<=0?0:f,p=p<=0?0:p;var g=t||c>0?(c<10?"0"+c:c)+":":"";return g+=(f<10?"0"+f:f)+":",g+=""+(p<10?"0"+p:p),n&&(g+=(m=(m=(h%s).toFixed(0))<=0?0:m)<10?u+"0"+m:""+u+m),g}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:25;if("string"!=typeof e)throw new TypeError("Time must be a string");if(e.indexOf(";")>0&&(e=e.replace(";",":")),!/\d{2}(\:\d{2}){0,3}/i.test(e))throw new TypeError("Time code must have the format `00:00:00`");var n=e.split(":"),o=void 0,a=0,r=0,s=0,l=0,d=0,u=Math.round(.066666*t),c=Math.round(t),f=3600*c,p=60*c;switch(n.length){default:case 1:s=parseInt(n[0],10);break;case 2:r=parseInt(n[0],10),s=parseInt(n[1],10);break;case 3:a=parseInt(n[0],10),r=parseInt(n[1],10),s=parseInt(n[2],10);break;case 4:a=parseInt(n[0],10),r=parseInt(n[1],10),s=parseInt(n[2],10),l=parseInt(n[3],10)}return o=i(t)?f*a+p*r+c*s+l-u*((d=60*a+r)-Math.floor(d/10)):(f*a+p*r+t*s+l)/t,parseFloat(o.toFixed(3))}function r(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:25;e=!e||"number"!=typeof e||e<0?0:e;for(var i=Math.floor(e/3600)%24,o=Math.floor(e/60)%60,a=Math.floor(e%60),r=[[Math.floor((e%1*n).toFixed(3)),"f"],[a,"s"],[o,"m"],[i,"h"]],s=t.timeFormat,l=s[1]===s[0],d=l?2:1,u=s.length<d?s[d]:":",c=s[0],f=!1,p=0,m=r.length;p<m;p++)if(~s.indexOf(r[p][1]))f=!0;else if(f){for(var h=!1,v=p;v<m;v++)if(r[v][0]>0){h=!0;break}if(!h)break;l||(s=c+s),s=r[p][1]+u+s,l&&(s=r[p][1]+s),c=r[p][1]}t.currentTimeFormat=s}function s(e){if("string"!=typeof e)throw new TypeError("Argument must be a string value");for(var t=~(e=e.replace(",",".")).indexOf(".")?e.split(".")[1].length:0,n=0,i=1,o=0,a=(e=e.split(":").reverse()).length;o<a;o++)i=1,o>0&&(i=Math.pow(60,o)),n+=Number(e[o])*i;return Number(n.toFixed(t))}Object.defineProperty(n,"__esModule",{value:!0}),n.isDropFrame=i,n.secondsToTimeCode=o,n.timeCodeToSeconds=a,n.calculateTimeFormat=r,n.convertSMPTEtoSeconds=s;var l=function(e){return e&&e.__esModule?e:{default:e}}(e(6));l.default.Utils=l.default.Utils||{},l.default.Utils.secondsToTimeCode=o,l.default.Utils.timeCodeToSeconds=a,l.default.Utils.calculateTimeFormat=r,l.default.Utils.convertSMPTEtoSeconds=s},{6:6}]},{},[27,5,4,14,21,18,17,19,20,22,15,16,8,9,10,11,12,13]); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-audio-ogg.swf b/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-audio-ogg.swf new file mode 100755 index 0000000000000000000000000000000000000000..102a5c0b3669c73cdcf70c50682ea05b830c8e0a Binary files /dev/null and b/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-audio-ogg.swf differ diff --git a/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-audio.swf b/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-audio.swf new file mode 100755 index 0000000000000000000000000000000000000000..fa3a32a9052e7a1d452b4a0403101aacaa22a3ef Binary files /dev/null and b/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-audio.swf differ diff --git a/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-video-hls.swf b/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-video-hls.swf new file mode 100755 index 0000000000000000000000000000000000000000..c307bcfc031de23b22e440ee070d89175171fbcf Binary files /dev/null and b/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-video-hls.swf differ diff --git a/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-video-mdash.swf b/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-video-mdash.swf new file mode 100755 index 0000000000000000000000000000000000000000..f6061020a1b7a50b6e3ee657b945f9d9d6b51716 Binary files /dev/null and b/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-video-mdash.swf differ diff --git a/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-video.swf b/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-video.swf new file mode 100755 index 0000000000000000000000000000000000000000..c75dea2b76ab080fb27abc94684f472a2c4d30ee Binary files /dev/null and b/src/main/webapp/static/movie/mediaelementjs/mediaelement-flash-video.swf differ diff --git a/src/main/webapp/static/movie/mediaelementjs/mediaelementplayer.css b/src/main/webapp/static/movie/mediaelementjs/mediaelementplayer.css old mode 100644 new mode 100755 index 8336fd54a0cb12349003fcae7b684b7be4690695..98c374e85ed9898fa77b79647d5b207444db2667 --- a/src/main/webapp/static/movie/mediaelementjs/mediaelementplayer.css +++ b/src/main/webapp/static/movie/mediaelementjs/mediaelementplayer.css @@ -1,1007 +1,715 @@ -.mejs-offscreen{ -/* Accessibility: hide screen reader texts (and prefer "top" for RTL languages). Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-how/ */ - clip: rect(1px 1px 1px 1px); /* IE6, IE7 - no likey commas */ - clip: rect(1px, 1px, 1px, 1px); /* IE8-IE11 - we likey commas, no support for clip-path */ - clip-path: polygon(0px 0px, 0px 0px,0px 0px, 0px 0px); - position: absolute !important; - height: 1px; - width: 1px; - overflow: hidden; +/* Accessibility: hide screen reader texts (and prefer "top" for RTL languages). +Reference: http://blog.rrwd.nl/2015/04/04/the-screen-reader-text-class-why-and-how/ */ +.mejs__offscreen { + clip: rect(1px, 1px, 1px, 1px); /* IE8-IE11 - no support for clip-path */ + clip-path: polygon(0px 0px, 0px 0px, 0px 0px, 0px 0px); + position: absolute !important; + height: 1px; + width: 1px; + overflow: hidden; } -.mejs-container { - position: relative; - background: #000; - font-family: "Helvetica", Arial, serif; - text-align: left; - vertical-align: top; - text-indent: 0; +.mejs__container { + position: relative; + background: #000; + font-family: "Helvetica", Arial, serif; + text-align: left; + vertical-align: top; + text-indent: 0; + box-sizing: border-box; } -.mejs-fill-container,.mejs-fill-container .mejs-container{ - width: 100%; - height: 100%; +.mejs__container .mejs__video { + min-height: 140px; } -.mejs-fill-container{ - overflow: hidden; +.mejs__container * { + box-sizing: border-box; } -.mejs-container:focus { - outline: none; +/* Hide native play button from iOS to favor plugin button */ +.mejs__container video::-webkit-media-controls-start-playback-button { + display: none !important; + -webkit-appearance: none; } -.me-plugin { - position: absolute; +.mejs__fill-container, +.mejs__fill-container .mejs__container { + width: 100%; + height: 100%; } -.mejs-embed, .mejs-embed body { - width: 100%; - height: 100%; - margin: 0; - padding: 0; - background: #000; - overflow: hidden; +.mejs__fill-container { + overflow: hidden; + position: relative; + margin: 0 auto; + background: transparent; } -.mejs-fullscreen { - /* set it to not show scroll bars so 100% will work */ - overflow: hidden !important; +.mejs__container:focus { + outline: none; } -.mejs-container-fullscreen { - position: fixed; - left: 0; - top: 0; - right: 0; - bottom: 0; - overflow: hidden; - z-index: 1000; +.mejs__iframe-overlay { + position: absolute; + width: 100%; + height: 100%; } -.mejs-container-fullscreen .mejs-mediaelement, -.mejs-container-fullscreen video { - width: 100%; - height: 100%; + +.mejs__embed, +.mejs__embed body { + width: 100%; + height: 100%; + margin: 0; + padding: 0; + background: #000; + overflow: hidden; +} + +.mejs__fullscreen { + overflow: hidden !important; } -.mejs-clear { - clear: both; +.mejs__container-fullscreen { + position: fixed; + left: 0; + top: 0; + right: 0; + bottom: 0; + overflow: hidden; + z-index: 1000; +} + +.mejs__container-fullscreen .mejs__mediaelement, +.mejs__container-fullscreen video { + width: 100% !important; + height: 100% !important; +} + +.mejs__clear { + clear: both; } /* Start: LAYERS */ -.mejs-background { - position: absolute; - top: 0; - left: 0; +.mejs__background { + position: absolute; + top: 0; + left: 0; +} + +.mejs__mediaelement { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 0; +} + +.mejs__poster { + position: absolute; + top: 0; + left: 0; + background-size: contain; + background-position: 50% 50%; + background-repeat: no-repeat; + z-index: 1; } -.mejs-mediaelement { - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; +:root .mejs__poster-img { + display: none; } -.mejs-poster { - position: absolute; - top: 0; - left: 0; - background-size: contain ; - background-position: 50% 50% ; - background-repeat: no-repeat ; +.mejs__poster-img { + border: 0; + padding: 0; } -:root .mejs-poster img { - display: none ; + +.mejs__overlay { + position: absolute; + top: 0; + left: 0; + z-index: 1; +} + +.mejs__layer { + z-index: 1; } -.mejs-poster img { - border: 0; - padding: 0; +.mejs__overlay-play { + cursor: pointer; } -.mejs-overlay { - position: absolute; - top: 0; - left: 0; +.mejs__overlay-button { + position: absolute; + top: 50%; + left: 50%; + width: 80px; + height: 80px; + margin: -40px 0 0 -40px; + background: url("mejs-controls.svg") no-repeat; + background-position: 0 -39px; + overflow: hidden; + z-index: 1; } -.mejs-overlay-play { - cursor: pointer; +.mejs__overlay:hover > .mejs__overlay-button { + background-position: -80px -39px; } -.mejs-overlay-button { - position: absolute; - top: 50%; - left: 50%; - width: 100px; - height: 100px; - margin: -50px 0 0 -50px; - background: url("bigplay.svg") no-repeat; +.mejs__overlay-loading { + position: absolute; + top: 50%; + left: 50%; + width: 80px; + height: 80px; + margin: -40px 0 0 -40px; } -.no-svg .mejs-overlay-button { - background-image: url("bigplay.png"); +.mejs__overlay-loading-bg-img { + display: block; + width: 80px; + height: 80px; + background: transparent url("mejs-controls.svg") -160px -40px no-repeat; + -webkit-animation: mejs-loading-spinner 1s linear infinite; + -moz-animation: mejs-loading-spinner 1s linear infinite; + animation: mejs-loading-spinner 1s linear infinite; + z-index: 1; } -.mejs-overlay:hover .mejs-overlay-button { - background-position: 0 -100px ; +@-moz-keyframes mejs-loading-spinner { + 100% { + -moz-transform: rotate(360deg); + } } -.mejs-overlay-loading { - position: absolute; - top: 50%; - left: 50%; - width: 80px; - height: 80px; - margin: -40px 0 0 -40px; - background: #333; - background: url("background.png"); - background: rgba(0, 0, 0, 0.9); - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.9)), to(rgba(0,0,0,0.9))); - background: -webkit-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9)); - background: -moz-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9)); - background: -o-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9)); - background: -ms-linear-gradient(top, rgba(50,50,50,0.9), rgba(0,0,0,0.9)); - background: linear-gradient(rgba(50,50,50,0.9), rgba(0,0,0,0.9)); +@-webkit-keyframes mejs-loading-spinner { + 100% { + -webkit-transform: rotate(360deg); + } } -.mejs-overlay-loading span { - display: block; - width: 80px; - height: 80px; - background: transparent url("loading.gif") 50% 50% no-repeat; +@keyframes mejs-loading-spinner { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } } /* End: LAYERS */ /* Start: CONTROL BAR */ -.mejs-container .mejs-controls { - position: absolute; - list-style-type: none; - margin: 0; - padding: 0; - bottom: 0; - left: 0; - background: url("background.png"); - background: rgba(0, 0, 0, 0.7); - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.7)), to(rgba(0,0,0,0.7))); - background: -webkit-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7)); - background: -moz-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7)); - background: -o-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7)); - background: -ms-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7)); - background: linear-gradient(rgba(50,50,50,0.7), rgba(0,0,0,0.7)); - height: 30px; - width: 100%; -} -.mejs-container .mejs-controls div { - list-style-type: none; - background-image: none; - display: block; - float: left; - margin: 0; - padding: 0; - width: 26px; - height: 26px; - font-size: 11px; - line-height: 11px; - font-family: "Helvetica", Arial, serif; - border: 0; -} - -.mejs-controls .mejs-button button { - cursor: pointer; - display: block; - font-size: 0; - line-height: 0; - text-decoration: none; - margin: 7px 5px; - padding: 0; - position: absolute; - height: 16px; - width: 16px; - border: 0; - background: transparent url("controls.svg") no-repeat; -} - -.no-svg .mejs-controls .mejs-button button { - background-image: url("controls.png"); -} - - /* :focus for accessibility */ -.mejs-controls .mejs-button button:focus { - outline: dotted 1px #999; +.mejs__controls { + position: absolute; + list-style-type: none; + margin: 0; + padding: 0 10px; + bottom: 0; + left: 0; + height: 40px; + width: 100%; + z-index: 1; +} + +.mejs__controls:not([style*="display: none"]) { + background: rgba(255, 0, 0, 0.7); + background: linear-gradient(rgba(0, 0, 0, 0.0), rgba(0, 0, 0, 0.35)); +} + +.mejs__button, +.mejs__time, +.mejs__time-rail { + float: left; + margin: 0; + width: 32px; + height: 40px; + font-size: 10px; + line-height: 10px; +} + +.mejs__button > button { + cursor: pointer; + display: block; + font-size: 0; + line-height: 0; + text-decoration: none; + margin: 10px 6px; + padding: 0; + position: absolute; + height: 20px; + width: 20px; + border: 0; + background: transparent url("mejs-controls.svg"); + overflow: hidden; +} + +/* :focus for accessibility */ +.mejs__button > button:focus { + outline: dotted 1px #999; +} + +.mejs__container-keyboard-inactive a, +.mejs__container-keyboard-inactive a:focus, +.mejs__container-keyboard-inactive button, +.mejs__container-keyboard-inactive button:focus, +.mejs__container-keyboard-inactive [role=slider], +.mejs__container-keyboard-inactive [role=slider]:focus { + outline: 0; } /* End: CONTROL BAR */ /* Start: Time (Current / Duration) */ -.mejs-container .mejs-controls .mejs-time { - color: #fff; - display: block; - height: 17px; - width: auto; - padding: 10px 3px 0 3px ; - overflow: hidden; - text-align: center; - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; - box-sizing: content-box; -} - -.mejs-container .mejs-controls .mejs-time a { - color: #fff; - font-size: 11px; - line-height: 12px; - display: block; - float: left; - margin: 1px 2px 0 0; - width: auto; +.mejs__time { + color: #fff; + display: block; + height: 24px; + width: auto; + font-weight: bold; + font-size: 11px; + padding: 16px 6px 0 6px; + overflow: hidden; + text-align: center; + box-sizing: content-box; } + /* End: Time (Current / Duration) */ /* Start: Play/Pause/Stop */ -.mejs-controls .mejs-play button { - background-position: 0 0; +.mejs__play > button { + background-position: 0 0; } -.mejs-controls .mejs-pause button { - background-position: 0 -16px; +.mejs__pause > button { + background-position: -20px 0; } -.mejs-controls .mejs-stop button { - background-position: -112px 0; +.mejs__replay > button { + background-position: -160px 0; } -/* Start: Play/Pause/Stop */ + +/* End: Play/Pause/Stop */ /* Start: Progress Bar */ -.mejs-controls div.mejs-time-rail { - direction: ltr; - width: 200px; - padding-top: 5px; -} - -.mejs-controls .mejs-time-rail span, .mejs-controls .mejs-time-rail a { - display: block; - position: absolute; - width: 180px; - height: 10px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - cursor: pointer; -} - -.mejs-controls .mejs-time-rail .mejs-time-total { - margin: 5px; - background: #333; - background: rgba(50,50,50,0.8); - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(30,30,30,0.8)), to(rgba(60,60,60,0.8))); - background: -webkit-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8)); - background: -moz-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8)); - background: -o-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8)); - background: -ms-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8)); - background: linear-gradient(rgba(30,30,30,0.8), rgba(60,60,60,0.8)); -} - -.mejs-controls .mejs-time-rail .mejs-time-buffering { - width: 100%; - background-image: -o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); - background-image: -webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: -ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - background-image: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); - -webkit-background-size: 15px 15px; - -moz-background-size: 15px 15px; - -o-background-size: 15px 15px; - background-size: 15px 15px; - -webkit-animation: buffering-stripes 2s linear infinite; - -moz-animation: buffering-stripes 2s linear infinite; - -ms-animation: buffering-stripes 2s linear infinite; - -o-animation: buffering-stripes 2s linear infinite; - animation: buffering-stripes 2s linear infinite; -} - -@-webkit-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} } -@-moz-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} } -@-ms-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} } -@-o-keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} } -@keyframes buffering-stripes { from {background-position: 0 0;} to {background-position: 30px 0;} } - -.mejs-controls .mejs-time-rail .mejs-time-loaded { - background: #3caac8; - background: rgba(60,170,200,0.8); - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(44,124,145,0.8)), to(rgba(78,183,212,0.8))); - background: -webkit-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8)); - background: -moz-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8)); - background: -o-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8)); - background: -ms-linear-gradient(top, rgba(44,124,145,0.8), rgba(78,183,212,0.8)); - background: linear-gradient(rgba(44,124,145,0.8), rgba(78,183,212,0.8)); - width: 0; -} - -.mejs-controls .mejs-time-rail .mejs-time-current { - background: #fff; - background: rgba(255,255,255,0.8); - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255,255,255,0.9)), to(rgba(200,200,200,0.8))); - background: -webkit-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8)); - background: -moz-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8)); - background: -o-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8)); - background: -ms-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8)); - background: linear-gradient(rgba(255,255,255,0.9), rgba(200,200,200,0.8)); - width: 0; -} - -.mejs-controls .mejs-time-rail .mejs-time-handle { - display: none; - position: absolute; - margin: 0; - width: 10px; - background: #fff; - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - cursor: pointer; - border: solid 2px #333; - top: -2px; - text-align: center; -} - -.mejs-controls .mejs-time-rail .mejs-time-float { - position: absolute; - display: none; - background: #eee; - width: 36px; - height: 17px; - border: solid 1px #333; - top: -26px; - margin-left: -18px; - text-align: center; - color: #111; -} - -.mejs-controls .mejs-time-rail .mejs-time-float-current { - margin: 2px; - width: 30px; - display: block; - text-align: center; - left: 0; -} - -.mejs-controls .mejs-time-rail .mejs-time-float-corner { - position: absolute; - display: block; - width: 0; - height: 0; - line-height: 0; - border: solid 5px #eee; - border-color: #eee transparent transparent transparent; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - top: 15px; - left: 13px; -} - -.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float { - width: 48px; -} - -.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-current { - width: 44px; -} - -.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-corner { - left: 18px; -} - -/* -.mejs-controls .mejs-time-rail:hover .mejs-time-handle { - visibility:visible; -} -*/ -/* End: Progress Bar */ +.mejs__time-rail { + direction: ltr; + width: 200px; + padding-top: 10px; + height: 40px; + position: relative; + margin: 0 10px; +} + +.mejs__time-total, +.mejs__time-buffering, +.mejs__time-loaded, +.mejs__time-current, +.mejs__time-float, +.mejs__time-hovered, +.mejs__time-float-current, +.mejs__time-float-corner, +.mejs__time-marker { + cursor: pointer; + display: block; + position: absolute; + height: 10px; + border-radius: 2px; +} -/* Start: Fullscreen */ -.mejs-controls .mejs-fullscreen-button button { - background-position: -32px 0; +.mejs__time-total { + margin: 5px 0 0 0; + background: rgba(255, 255, 255, 0.3); + width: 100%; } -.mejs-controls .mejs-unfullscreen button { - background-position: -32px -16px; +.mejs__time-buffering { + width: 100%; + background: linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 15px 15px; + animation: buffering-stripes 2s linear infinite; } -/* End: Fullscreen */ +@keyframes buffering-stripes { + from { + background-position: 0 0; + } + to { + background-position: 30px 0; + } +} -/* Start: Mute/Volume */ -.mejs-controls .mejs-volume-button { -} - -.mejs-controls .mejs-mute button { - background-position: -16px -16px; -} - -.mejs-controls .mejs-unmute button { - background-position: -16px 0; -} - -.mejs-controls .mejs-volume-button { - position: relative; -} - -.mejs-controls .mejs-volume-button .mejs-volume-slider { - display: none; - height: 115px; - width: 25px; - background: url("background.png"); - background: rgba(50, 50, 50, 0.7); - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - top: -115px; - left: 0; - z-index: 1; - position: absolute; - margin: 0; -} - -.mejs-controls .mejs-volume-button:hover { - -webkit-border-radius: 0 0 4px 4px; - -moz-border-radius: 0 0 4px 4px; - border-radius: 0 0 4px 4px; -} - -/* -.mejs-controls .mejs-volume-button:hover .mejs-volume-slider { - display: block; -} -*/ - -.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-total { - position: absolute; - left: 11px; - top: 8px; - width: 2px; - height: 100px; - background: #ddd; - background: rgba(255, 255, 255, 0.5); - margin: 0; -} - -.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-current { - position: absolute; - left: 11px; - top: 8px; - width: 2px; - height: 100px; - background: #ddd; - background: rgba(255, 255, 255, 0.9); - margin: 0; -} - -.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-handle { - position: absolute; - left: 4px; - top: -3px; - width: 16px; - height: 6px; - background: #ddd; - background: rgba(255, 255, 255, 0.9); - cursor: N-resize; - -webkit-border-radius: 1px; - -moz-border-radius: 1px; - border-radius: 1px; - margin: 0; -} - -/* horizontal version */ -.mejs-controls a.mejs-horizontal-volume-slider { - height: 26px; - width: 56px; - position: relative; - display: block; - float: left; - vertical-align: middle; +.mejs__time-loaded { + background: rgba(255, 255, 255, .3); } -.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total { - position: absolute; - left: 0; - top: 11px; - width: 50px; - height: 8px; - margin: 0; - padding: 0; - font-size: 1px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - background: #333; - background: rgba(50,50,50,0.8); - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(30,30,30,0.8)), to(rgba(60,60,60,0.8))); - background: -webkit-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8)); - background: -moz-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8)); - background: -o-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8)); - background: -ms-linear-gradient(top, rgba(30,30,30,0.8), rgba(60,60,60,0.8)); - background: linear-gradient(rgba(30,30,30,0.8), rgba(60,60,60,0.8)); -} - -.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current { - position: absolute; - left: 0; - top: 11px; - width: 50px; - height: 8px; - margin: 0; - padding: 0; - font-size: 1px; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - background: #fff; - background: rgba(255,255,255,0.8); - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(255,255,255,0.9)), to(rgba(200,200,200,0.8))); - background: -webkit-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8)); - background: -moz-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8)); - background: -o-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8)); - background: -ms-linear-gradient(top, rgba(255,255,255,0.9), rgba(200,200,200,0.8)); - background: linear-gradient(rgba(255,255,255,0.9), rgba(200,200,200,0.8)); -} - -.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-handle { - display: none; +.mejs__time-current, .mejs__time-handle-content { + background: rgba(255, 255, 255, 0.9); } -/* End: Mute/Volume */ +.mejs__time-hovered { + background: rgba(255, 255, 255, .5); + z-index: 10; +} -/* Start: Track (Captions and Chapters) */ -.mejs-controls .mejs-captions-button { - position: relative; -} - -.mejs-controls .mejs-captions-button button { - background-position: -48px 0; -} -.mejs-controls .mejs-captions-button .mejs-captions-selector { - visibility: hidden; - position: absolute; - bottom: 26px; - right: -51px; - width: 85px; - height: 100px; - background: url("background.png"); - background: rgba(50,50,50,0.7); - border: solid 1px transparent; - padding: 10px 10px 0 10px; - overflow: hidden; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; -} - -.mejs-controls .mejs-captions-button:hover .mejs-captions-selector { - visibility: visible; -} - -.mejs-controls .mejs-captions-button .mejs-captions-selector ul { - margin: 0; - padding: 0; - display: block; - list-style-type: none !important; - overflow: hidden; -} - -.mejs-controls .mejs-captions-button .mejs-captions-selector ul li { - margin: 0 0 6px 0; - padding: 0; - list-style-type: none !important; - display: block; - color: #fff; - overflow: hidden; -} - -.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input { - clear: both; - float: left; - margin: 3px 3px 0 5px; -} - -.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label { - width: 55px; - float: left; - padding: 4px 0 0 0; - line-height: 15px; - font-family: "Helvetica", Arial, serif; - font-size: 10px; -} - -.mejs-controls .mejs-captions-button .mejs-captions-translations { - font-size: 10px; - margin: 0 0 5px 0; -} - -.mejs-chapters { - position: absolute; - top: 0; - left: 0; - border-right: solid 1px #fff; - width: 10000px; - z-index: 1; -} - -.mejs-chapters .mejs-chapter { - position: absolute; - float: left; - background: #222; - background: rgba(0, 0, 0, 0.7); - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(50,50,50,0.7)), to(rgba(0,0,0,0.7))); - background: -webkit-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7)); - background: -moz-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7)); - background: -o-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7)); - background: -ms-linear-gradient(top, rgba(50,50,50,0.7), rgba(0,0,0,0.7)); - background: linear-gradient(rgba(50,50,50,0.7), rgba(0,0,0,0.7)); - filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#323232,endColorstr=#000000); - overflow: hidden; - border: 0; -} - -.mejs-chapters .mejs-chapter .mejs-chapter-block { - font-size: 11px; - color: #fff; - padding: 5px; - display: block; - border-right: solid 1px #333; - border-bottom: solid 1px #333; - cursor: pointer; -} - -.mejs-chapters .mejs-chapter .mejs-chapter-block-last { - border-right: none; -} - -.mejs-chapters .mejs-chapter .mejs-chapter-block:hover { - background: #666; - background: rgba(102,102,102, 0.7); - background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(rgba(102,102,102,0.7)), to(rgba(50,50,50,0.6))); - background: -webkit-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6)); - background: -moz-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6)); - background: -o-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6)); - background: -ms-linear-gradient(top, rgba(102,102,102,0.7), rgba(50,50,50,0.6)); - background: linear-gradient(rgba(102,102,102,0.7), rgba(50,50,50,0.6)); - filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#666666,endColorstr=#323232); -} +.mejs__time-hovered.negative { + background: rgba(0, 0, 0, 0.2); +} -.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title { - font-size: 12px; - font-weight: bold; - display: block; - white-space: nowrap; - text-overflow: ellipsis; - margin: 0 0 3px 0; - line-height: 12px; +.mejs__time-current, .mejs__time-buffering, .mejs__time-loaded, .mejs__time-hovered { + width: 100%; + left: 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + -ms-transform: scaleX(0); + transform: scaleX(0); + transition: .15s ease-in all; } -.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-timespan { - font-size: 12px; - line-height: 12px; - margin: 3px 0 4px 0; - display: block; - white-space: nowrap; - text-overflow: ellipsis; +.mejs__time-hovered { + transition: height .1s cubic-bezier(0.44, 0.0, 1, 1); } -.mejs-captions-layer { - position: absolute; - bottom: 0; - left: 0; - text-align:center; - line-height: 20px; - font-size: 16px; - color: #fff; +.mejs__time-hovered.no-hover { + -ms-transform: scaleX(0) !important; + transform: scaleX(0) !important; } -.mejs-captions-layer a { - color: #fff; - text-decoration: underline; +.mejs__time-handle, .mejs__time-handle-content { + position: absolute; + cursor: pointer; + border: 4px solid transparent; + z-index: 11; + left: 0; + -ms-transform: translateX(0px); + transform: translateX(0px); } -.mejs-captions-layer[lang=ar] { - font-size: 20px; - font-weight: normal; -} - -.mejs-captions-position { - position: absolute; - width: 100%; - bottom: 15px; - left: 0; -} - -.mejs-captions-position-hover { - bottom: 35px; -} - -.mejs-captions-text { - padding: 0; - background: url("background.png"); - background: rgba(20, 20, 20, 0.5); - white-space: pre-wrap; - -webkit-box-shadow: 5px 0 0 rgba(20, 20, 20, 0.5), -5px 0 0 rgba(20, 20, 20, 0.5); - box-shadow: 5px 0 0 rgba(20, 20, 20, 0.5), -5px 0 0 rgba(20, 20, 20, 0.5); +.mejs__time-handle-content { + left: -7px; + border: 4px solid rgba(255, 255, 255, 0.9); + -ms-transform: scale(0); + transform: scale(0); + top: -4px; + border-radius: 50%; + width: 10px; + height: 10px; } -/* End: Track (Captions and Chapters) */ -/* Start: Error */ -.me-cannotplay { +.mejs__time-rail:hover .mejs__time-handle-content, .mejs__time-rail .mejs__time-handle-content:focus, .mejs__time-rail .mejs__time-handle-content:active { + -ms-transform: scale(1); + transform: scale(1); } -.me-cannotplay a { - color: #fff; - font-weight: bold; +.mejs__time-float { + position: absolute; + display: none; + background: #eee; + width: 36px; + height: 17px; + border: solid 1px #333; + top: -26px; + margin-left: -18px; + text-align: center; + color: #111; } -.me-cannotplay span { - padding: 15px; - display: block; +.mejs__time-float-current { + margin: 2px; + width: 30px; + display: block; + text-align: center; + left: 0; } -/* End: Error */ +.mejs__time-float-corner { + position: absolute; + display: block; + width: 0; + height: 0; + line-height: 0; + border: solid 5px #eee; + border-color: #eee transparent transparent transparent; + border-radius: 0; + top: 15px; + left: 13px; +} -/* Start: Loop */ -.mejs-controls .mejs-loop-off button { - background-position: -64px -16px; +.mejs__long-video .mejs__time-float { + width: 64px; + margin-left: -23px; } -.mejs-controls .mejs-loop-on button { - background-position: -64px 0; +.mejs__long-video .mejs__time-float-current { + width: 60px; } -/* End: Loop */ +.mejs__long-video .mejs__time-float-corner { + left: 18px; +} -/* Start: backlight */ -.mejs-controls .mejs-backlight-off button { - background-position: -80px -16px; +.mejs__broadcast { + color: #fff; + position: absolute; + width: 100%; + height: 10px; + top: 15px; } -.mejs-controls .mejs-backlight-on button { - background-position: -80px 0; +/* End: Progress Bar */ + +/* Start: Fullscreen */ +.mejs__fullscreen-button > button { + background-position: -80px 0; } -/* End: backlight */ -/* Start: Picture Controls */ -.mejs-controls .mejs-picturecontrols-button { - background-position: -96px 0; +.mejs__unfullscreen > button { + background-position: -100px 0; } -/* End: Picture Controls */ +/* End: Fullscreen */ + +/* Start: Mute/Volume */ +.mejs__mute > button { + background-position: -60px 0; +} -/* context menu */ -.mejs-contextmenu { - position: absolute; - width: 150px; - padding: 10px; - border-radius: 4px; - top: 0; - left: 0; - background: #fff; - border: solid 1px #999; - z-index: 1001; /* make sure it shows on fullscreen */ +.mejs__unmute > button { + background-position: -40px 0; } -.mejs-contextmenu .mejs-contextmenu-separator { - height: 1px; - font-size: 0; - margin: 5px 6px; - background: #333; + +.mejs__volume-button { + position: relative; } -.mejs-contextmenu .mejs-contextmenu-item { - font-family: "Helvetica", Arial, serif; - font-size: 12px; - padding: 4px 6px; - cursor: pointer; - color: #333; +.mejs__volume-button > .mejs__volume-slider { + display: none; + height: 115px; + width: 25px; + background: rgba(50, 50, 50, 0.7); + border-radius: 0; + top: -115px; + left: 5px; + z-index: 1; + position: absolute; + margin: 0; } -.mejs-contextmenu .mejs-contextmenu-item:hover { - background: #2C7C91; - color: #fff; + +.mejs__volume-button:hover { + border-radius: 0 0 4px 4px; } -/* Start: Source Chooser */ -.mejs-controls .mejs-sourcechooser-button { - position: relative; +.mejs__volume-total { + position: absolute; + left: 11px; + top: 8px; + width: 2px; + height: 100px; + background: rgba(255, 255, 255, 0.5); + margin: 0; } -.mejs-controls .mejs-sourcechooser-button button { - background-position: -128px 0; +.mejs__volume-current { + position: absolute; + left: 0; + bottom: 0; + width: 100%; + height: 100%; + background: rgba(255, 255, 255, 0.9); + margin: 0; } -.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector { - position: absolute; - bottom: 26px; - right: -10px; - width: 130px; - height: 100px; - background: url("background.png"); - background: rgba(50,50,50,0.7); - border: solid 1px transparent; - padding: 10px; - overflow: hidden; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; +.mejs__volume-handle { + position: absolute; + left: 0; + bottom: 100%; + width: 16px; + height: 6px; + margin: 0 0 -3px -7px; + background: rgba(255, 255, 255, 0.9); + cursor: ns-resize; + border-radius: 1px; } -.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul { - margin: 0; - padding: 0; - display: block; - list-style-type: none !important; - overflow: hidden; +.mejs__horizontal-volume-slider { + height: 36px; + width: 56px; + position: relative; + display: block; + float: left; + vertical-align: middle; } -.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li { - margin: 0 0 6px 0; - padding: 0; - list-style-type: none !important; - display: block; - color: #fff; - overflow: hidden; +.mejs__horizontal-volume-total { + position: absolute; + left: 0; + top: 16px; + width: 50px; + height: 8px; + margin: 0; + padding: 0; + font-size: 1px; + border-radius: 2px; + background: rgba(50, 50, 50, 0.8); } -.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input { - clear: both; - float: left; - margin: 3px 3px 0 5px; +.mejs__horizontal-volume-current { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + font-size: 1px; + border-radius: 2px; + background: rgba(255, 255, 255, 0.8); } -.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label { - width: 100px; - float: left; - padding: 4px 0 0 0; - line-height: 15px; - font-family: "Helvetica", Arial, serif; - font-size: 10px; -} -/* End: Source Chooser */ - -/* Start: Postroll */ -.mejs-postroll-layer { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 100%; - background: url("background.png"); - background: rgba(50,50,50,0.7); - z-index: 1000; - overflow: hidden; -} -.mejs-postroll-layer-content { - width: 100%; - height: 100%; -} -.mejs-postroll-close { - position: absolute; - right: 0; - top: 0; - background: url("background.png"); - background: rgba(50,50,50,0.7); - color: #fff; - padding: 4px; - z-index: 100; - cursor: pointer; +.mejs__horizontal-volume-handle { + display: none; } -/* End: Postroll */ +/* End: Mute/Volume */ -/* Start: Speed */ -div.mejs-speed-button { - width: 46px !important; - position: relative; +/* Start: Track (Captions and Chapters) */ +.mejs__captions-button, .mejs__chapters-button { + position: relative; } -.mejs-controls .mejs-button.mejs-speed-button button { - background: transparent; - width: 36px; - font-size: 11px; - line-height: normal; - color: #ffffff; +.mejs__captions-button > button { + background-position: -140px 0; } -.mejs-controls .mejs-speed-button .mejs-speed-selector { - display: none; - position: absolute; - top: -100px; - left: -10px; - width: 60px; - height: 100px; - background: url("background.png"); - background: rgba(50, 50, 50, 0.7); - border: solid 1px transparent; - padding: 0; - overflow: hidden; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; +.mejs__chapters-button > button { + background-position: -180px 0; } +.mejs__captions-button > .mejs__captions-selector, .mejs__chapters-button > .mejs__chapters-selector { + visibility: hidden; + position: absolute; + bottom: 40px; + right: -51px; + width: 85px; + background: rgba(50, 50, 50, 0.7); + border: solid 1px transparent; + padding: 0; + overflow: hidden; + border-radius: 0; +} -.mejs-controls .mejs-speed-button:hover > .mejs-speed-selector { - display: block; +.mejs__chapters-button > .mejs__chapters-selector { + width: 110px; } -.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label.mejs-speed-selected { - color: rgba(33, 248, 248, 1); +.mejs__captions-button > .mejs__captions-selector, .mejs__chapters-button > .mejs__chapters-selector { + visibility: visible; } -.mejs-controls .mejs-speed-button .mejs-speed-selector ul { - margin: 0; - padding: 0; - display: block; - list-style-type: none !important; - overflow: hidden; +.mejs__captions-selector-list, .mejs__chapters-selector-list { + margin: 0; + padding: 0; + display: block; + list-style-type: none !important; + overflow: hidden; } -.mejs-controls .mejs-speed-button .mejs-speed-selector ul li { - margin: 0 0 6px 0; - padding: 0 10px; - list-style-type: none !important; - display: block; - color: #fff; - overflow: hidden; +.mejs__captions-selector-list-item, .mejs__chapters-selector-list-item { + margin: 0 0 6px 0; + padding: 0 10px; + list-style-type: none !important; + display: block; + color: #fff; + overflow: hidden; + cursor: pointer; } -.mejs-controls .mejs-speed-button .mejs-speed-selector ul li input { - clear: both; - float: left; - margin: 3px 3px 0 5px; - display: none; +.mejs__captions-selector-list-item:hover, .mejs__chapters-selector-list-item:hover { + background-color: rgb(200, 200, 200) !important; + background-color: rgba(255, 255, 255, 0.4) !important; } -.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label { - width: 60px; - float: left; - padding: 4px 0 0 0; - line-height: 15px; - font-family: "Helvetica", Arial, serif; - font-size: 11px; - color: white; - margin-left: 5px; - cursor: pointer; +.mejs__captions-selector-input, .mejs__chapters-selector-input { + clear: both; + float: left; + margin: 3px 3px 0 5px; + position: absolute; + left: -1000px; } -.mejs-controls .mejs-speed-button .mejs-speed-selector ul li:hover { - background-color: rgb(200, 200, 200) !important; - background-color: rgba(255,255,255,.4) !important; +.mejs__captions-selector-label, .mejs__chapters-selector-label { + width: 55px; + float: left; + padding: 4px 0 0 0; + line-height: 15px; + font-size: 10px; + cursor: pointer; } -/* End: Speed */ -/* Start: Jump Forward */ +.mejs__captions-selected, .mejs__chapters-selected { + color: rgba(33, 248, 248, 1); +} -.mejs-controls .mejs-button.mejs-jump-forward-button { - background: transparent url("jumpforward.png") no-repeat 3px 3px; +.mejs__captions-translations { + font-size: 10px; + margin: 0 0 5px 0; } -.mejs-controls .mejs-button.mejs-jump-forward-button button { - background: transparent; - font-size: 9px; - line-height: normal; - color: #ffffff; + +.mejs__captions-layer { + position: absolute; + bottom: 0; + left: 0; + text-align: center; + line-height: 20px; + font-size: 16px; + color: #fff; } -/* End: Jump Forward */ +.mejs__captions-layer a { + color: #fff; + text-decoration: underline; +} -/* Start: Skip Back */ +.mejs__captions-layer[lang=ar] { + font-size: 20px; + font-weight: normal; +} -.mejs-controls .mejs-button.mejs-skip-back-button { - background: transparent url("skipback.png") no-repeat 3px 3px; +.mejs__captions-position { + position: absolute; + width: 100%; + bottom: 15px; + left: 0; } -.mejs-controls .mejs-button.mejs-skip-back-button button { - background: transparent; - font-size: 9px; - line-height: normal; - color: #ffffff; + +.mejs__captions-position-hover { + bottom: 35px; } -/* End: Skip Back */ +.mejs__captions-text, .mejs__captions-text * { + padding: 0; + background: rgba(20, 20, 20, 0.5); + white-space: pre-wrap; + box-shadow: 5px 0 0 rgba(20, 20, 20, 0.5), -5px 0 0 rgba(20, 20, 20, 0.5); +} +.mejs__container.mejs__hide-cues video::-webkit-media-text-track-container { + display: none; +} + +/* End: Track (Captions and Chapters) */ + +/* Start: Error */ +.me_cannotplay a { + font-weight: bold; +} + +.mejs__container .me_cannotplay a { + color: #fff; +} + +.me_cannotplay span { + padding: 15px; + display: block; +} + +/* End: Error */ diff --git a/src/main/webapp/static/movie/mediaelementjs/mediaelementplayer.min.css b/src/main/webapp/static/movie/mediaelementjs/mediaelementplayer.min.css old mode 100644 new mode 100755 index 3959c11ec933a35e20790489b36076c290ac8273..6861fc37b0c737c0ef7675f31702f3175da08de0 --- a/src/main/webapp/static/movie/mediaelementjs/mediaelementplayer.min.css +++ b/src/main/webapp/static/movie/mediaelementjs/mediaelementplayer.min.css @@ -1 +1 @@ -.mejs-offscreen{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);clip-path:polygon(0px 0,0 0,0 0,0 0);position:absolute!important;height:1px;width:1px;overflow:hidden}.mejs-container{position:relative;background:#000;font-family:Helvetica,Arial,serif;text-align:left;vertical-align:top;text-indent:0}.mejs-fill-container,.mejs-fill-container .mejs-container{width:100%;height:100%}.mejs-fill-container{overflow:hidden}.mejs-container:focus{outline:0}.me-plugin{position:absolute}.mejs-embed,.mejs-embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs-fullscreen{overflow:hidden!important}.mejs-container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:1000}.mejs-container-fullscreen .mejs-mediaelement,.mejs-container-fullscreen video{width:100%;height:100%}.mejs-clear{clear:both}.mejs-background{position:absolute;top:0;left:0}.mejs-mediaelement{position:absolute;top:0;left:0;width:100%;height:100%}.mejs-poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat}:root .mejs-poster img{display:none}.mejs-poster img{border:0;padding:0}.mejs-overlay{position:absolute;top:0;left:0}.mejs-overlay-play{cursor:pointer}.mejs-overlay-button{position:absolute;top:50%;left:50%;width:100px;height:100px;margin:-50px 0 0 -50px;background:url(bigplay.svg) no-repeat}.no-svg .mejs-overlay-button{background-image:url(bigplay.png)}.mejs-overlay:hover .mejs-overlay-button{background-position:0 -100px}.mejs-overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:#333;background:url(background.png);background:rgba(0,0,0,.9);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(50,50,50,.9)),to(rgba(0,0,0,.9)));background:-webkit-linear-gradient(top,rgba(50,50,50,.9),rgba(0,0,0,.9));background:-moz-linear-gradient(top,rgba(50,50,50,.9),rgba(0,0,0,.9));background:-o-linear-gradient(top,rgba(50,50,50,.9),rgba(0,0,0,.9));background:-ms-linear-gradient(top,rgba(50,50,50,.9),rgba(0,0,0,.9));background:linear-gradient(rgba(50,50,50,.9),rgba(0,0,0,.9))}.mejs-overlay-loading span{display:block;width:80px;height:80px;background:transparent url(loading.gif) 50% 50% no-repeat}.mejs-container .mejs-controls{position:absolute;list-style-type:none;margin:0;padding:0;bottom:0;left:0;background:url(background.png);background:rgba(0,0,0,.7);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(50,50,50,.7)),to(rgba(0,0,0,.7)));background:-webkit-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-moz-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-o-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-ms-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:linear-gradient(rgba(50,50,50,.7),rgba(0,0,0,.7));height:30px;width:100%}.mejs-container .mejs-controls div{list-style-type:none;background-image:none;display:block;float:left;margin:0;padding:0;width:26px;height:26px;font-size:11px;line-height:11px;font-family:Helvetica,Arial,serif;border:0}.mejs-controls .mejs-button button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:7px 5px;padding:0;position:absolute;height:16px;width:16px;border:0;background:transparent url(controls.svg) no-repeat}.no-svg .mejs-controls .mejs-button button{background-image:url(controls.png)}.mejs-controls .mejs-button button:focus{outline:dotted 1px #999}.mejs-container .mejs-controls .mejs-time{color:#fff;display:block;height:17px;width:auto;padding:10px 3px 0;overflow:hidden;text-align:center;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}.mejs-container .mejs-controls .mejs-time a{color:#fff;font-size:11px;line-height:12px;display:block;float:left;margin:1px 2px 0 0;width:auto}.mejs-controls .mejs-play button{background-position:0 0}.mejs-controls .mejs-pause button{background-position:0 -16px}.mejs-controls .mejs-stop button{background-position:-112px 0}.mejs-controls div.mejs-time-rail{direction:ltr;width:200px;padding-top:5px}.mejs-controls .mejs-time-rail span,.mejs-controls .mejs-time-rail a{display:block;position:absolute;width:180px;height:10px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;cursor:pointer}.mejs-controls .mejs-time-rail .mejs-time-total{margin:5px;background:#333;background:rgba(50,50,50,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(30,30,30,.8)),to(rgba(60,60,60,.8)));background:-webkit-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-moz-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-o-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-ms-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:linear-gradient(rgba(30,30,30,.8),rgba(60,60,60,.8))}.mejs-controls .mejs-time-rail .mejs-time-buffering{width:100%;background-image:-o-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,.15)),color-stop(0.75,rgba(255,255,255,.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-ms-linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(-45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:15px 15px;-moz-background-size:15px 15px;-o-background-size:15px 15px;background-size:15px 15px;-webkit-animation:buffering-stripes 2s linear infinite;-moz-animation:buffering-stripes 2s linear infinite;-ms-animation:buffering-stripes 2s linear infinite;-o-animation:buffering-stripes 2s linear infinite;animation:buffering-stripes 2s linear infinite}@-webkit-keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}@-moz-keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}@-ms-keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}@-o-keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}@keyframes buffering-stripes{from{background-position:0 0}to{background-position:30px 0}}.mejs-controls .mejs-time-rail .mejs-time-loaded{background:#3caac8;background:rgba(60,170,200,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(44,124,145,.8)),to(rgba(78,183,212,.8)));background:-webkit-linear-gradient(top,rgba(44,124,145,.8),rgba(78,183,212,.8));background:-moz-linear-gradient(top,rgba(44,124,145,.8),rgba(78,183,212,.8));background:-o-linear-gradient(top,rgba(44,124,145,.8),rgba(78,183,212,.8));background:-ms-linear-gradient(top,rgba(44,124,145,.8),rgba(78,183,212,.8));background:linear-gradient(rgba(44,124,145,.8),rgba(78,183,212,.8));width:0}.mejs-controls .mejs-time-rail .mejs-time-current{background:#fff;background:rgba(255,255,255,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,.9)),to(rgba(200,200,200,.8)));background:-webkit-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-moz-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-o-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-ms-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:linear-gradient(rgba(255,255,255,.9),rgba(200,200,200,.8));width:0}.mejs-controls .mejs-time-rail .mejs-time-handle{display:none;position:absolute;margin:0;width:10px;background:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;cursor:pointer;border:solid 2px #333;top:-2px;text-align:center}.mejs-controls .mejs-time-rail .mejs-time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:solid 1px #333;top:-26px;margin-left:-18px;text-align:center;color:#111}.mejs-controls .mejs-time-rail .mejs-time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs-controls .mejs-time-rail .mejs-time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:solid 5px #eee;border-color:#eee transparent transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;top:15px;left:13px}.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float{width:48px}.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-current{width:44px}.mejs-long-video .mejs-controls .mejs-time-rail .mejs-time-float-corner{left:18px}.mejs-controls .mejs-fullscreen-button button{background-position:-32px 0}.mejs-controls .mejs-unfullscreen button{background-position:-32px -16px}.mejs-controls .mejs-volume-button{}.mejs-controls .mejs-mute button{background-position:-16px -16px}.mejs-controls .mejs-unmute button{background-position:-16px 0}.mejs-controls .mejs-volume-button{position:relative}.mejs-controls .mejs-volume-button .mejs-volume-slider{display:none;height:115px;width:25px;background:url(background.png);background:rgba(50,50,50,.7);-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;top:-115px;left:0;z-index:1;position:absolute;margin:0}.mejs-controls .mejs-volume-button:hover{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:#ddd;background:rgba(255,255,255,.5);margin:0}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-current{position:absolute;left:11px;top:8px;width:2px;height:100px;background:#ddd;background:rgba(255,255,255,.9);margin:0}.mejs-controls .mejs-volume-button .mejs-volume-slider .mejs-volume-handle{position:absolute;left:4px;top:-3px;width:16px;height:6px;background:#ddd;background:rgba(255,255,255,.9);cursor:N-resize;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;margin:0}.mejs-controls a.mejs-horizontal-volume-slider{height:26px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-total{position:absolute;left:0;top:11px;width:50px;height:8px;margin:0;padding:0;font-size:1px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#333;background:rgba(50,50,50,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(30,30,30,.8)),to(rgba(60,60,60,.8)));background:-webkit-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-moz-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-o-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:-ms-linear-gradient(top,rgba(30,30,30,.8),rgba(60,60,60,.8));background:linear-gradient(rgba(30,30,30,.8),rgba(60,60,60,.8))}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-current{position:absolute;left:0;top:11px;width:50px;height:8px;margin:0;padding:0;font-size:1px;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:#fff;background:rgba(255,255,255,.8);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(255,255,255,.9)),to(rgba(200,200,200,.8)));background:-webkit-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-moz-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-o-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:-ms-linear-gradient(top,rgba(255,255,255,.9),rgba(200,200,200,.8));background:linear-gradient(rgba(255,255,255,.9),rgba(200,200,200,.8))}.mejs-controls .mejs-horizontal-volume-slider .mejs-horizontal-volume-handle{display:none}.mejs-controls .mejs-captions-button{position:relative}.mejs-controls .mejs-captions-button button{background-position:-48px 0}.mejs-controls .mejs-captions-button .mejs-captions-selector{visibility:hidden;position:absolute;bottom:26px;right:-51px;width:85px;height:100px;background:url(background.png);background:rgba(50,50,50,.7);border:solid 1px transparent;padding:10px 10px 0;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mejs-controls .mejs-captions-button:hover .mejs-captions-selector{visibility:visible}.mejs-controls .mejs-captions-button .mejs-captions-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li{margin:0 0 6px;padding:0;list-style-type:none!important;display:block;color:#fff;overflow:hidden}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-family:Helvetica,Arial,serif;font-size:10px}.mejs-controls .mejs-captions-button .mejs-captions-translations{font-size:10px;margin:0 0 5px}.mejs-chapters{position:absolute;top:0;left:0;border-right:solid 1px #fff;width:10000px;z-index:1}.mejs-chapters .mejs-chapter{position:absolute;float:left;background:#222;background:rgba(0,0,0,.7);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(50,50,50,.7)),to(rgba(0,0,0,.7)));background:-webkit-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-moz-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-o-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:-ms-linear-gradient(top,rgba(50,50,50,.7),rgba(0,0,0,.7));background:linear-gradient(rgba(50,50,50,.7),rgba(0,0,0,.7));filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#323232, endColorstr=#000000);overflow:hidden;border:0}.mejs-chapters .mejs-chapter .mejs-chapter-block{font-size:11px;color:#fff;padding:5px;display:block;border-right:solid 1px #333;border-bottom:solid 1px #333;cursor:pointer}.mejs-chapters .mejs-chapter .mejs-chapter-block-last{border-right:0}.mejs-chapters .mejs-chapter .mejs-chapter-block:hover{background:#666;background:rgba(102,102,102,.7);background:-webkit-gradient(linear,0 0,0 100%,from(rgba(102,102,102,.7)),to(rgba(50,50,50,.6)));background:-webkit-linear-gradient(top,rgba(102,102,102,.7),rgba(50,50,50,.6));background:-moz-linear-gradient(top,rgba(102,102,102,.7),rgba(50,50,50,.6));background:-o-linear-gradient(top,rgba(102,102,102,.7),rgba(50,50,50,.6));background:-ms-linear-gradient(top,rgba(102,102,102,.7),rgba(50,50,50,.6));background:linear-gradient(rgba(102,102,102,.7),rgba(50,50,50,.6));filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, startColorstr=#666666, endColorstr=#323232)}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title{font-size:12px;font-weight:700;display:block;white-space:nowrap;text-overflow:ellipsis;margin:0 0 3px;line-height:12px}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-timespan{font-size:12px;line-height:12px;margin:3px 0 4px;display:block;white-space:nowrap;text-overflow:ellipsis}.mejs-captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs-captions-layer a{color:#fff;text-decoration:underline}.mejs-captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs-captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs-captions-position-hover{bottom:35px}.mejs-captions-text{padding:0;background:url(background.png);background:rgba(20,20,20,.5);white-space:pre-wrap;-webkit-box-shadow:5px 0 0 rgba(20,20,20,.5),-5px 0 0 rgba(20,20,20,.5);box-shadow:5px 0 0 rgba(20,20,20,.5),-5px 0 0 rgba(20,20,20,.5)}.me-cannotplay{}.me-cannotplay a{color:#fff;font-weight:700}.me-cannotplay span{padding:15px;display:block}.mejs-controls .mejs-loop-off button{background-position:-64px -16px}.mejs-controls .mejs-loop-on button{background-position:-64px 0}.mejs-controls .mejs-backlight-off button{background-position:-80px -16px}.mejs-controls .mejs-backlight-on button{background-position:-80px 0}.mejs-controls .mejs-picturecontrols-button{background-position:-96px 0}.mejs-contextmenu{position:absolute;width:150px;padding:10px;border-radius:4px;top:0;left:0;background:#fff;border:solid 1px #999;z-index:1001}.mejs-contextmenu .mejs-contextmenu-separator{height:1px;font-size:0;margin:5px 6px;background:#333}.mejs-contextmenu .mejs-contextmenu-item{font-family:Helvetica,Arial,serif;font-size:12px;padding:4px 6px;cursor:pointer;color:#333}.mejs-contextmenu .mejs-contextmenu-item:hover{background:#2C7C91;color:#fff}.mejs-controls .mejs-sourcechooser-button{position:relative}.mejs-controls .mejs-sourcechooser-button button{background-position:-128px 0}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector{position:absolute;bottom:26px;right:-10px;width:130px;height:100px;background:url(background.png);background:rgba(50,50,50,.7);border:solid 1px transparent;padding:10px;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li{margin:0 0 6px;padding:0;list-style-type:none!important;display:block;color:#fff;overflow:hidden}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label{width:100px;float:left;padding:4px 0 0;line-height:15px;font-family:Helvetica,Arial,serif;font-size:10px}.mejs-postroll-layer{position:absolute;bottom:0;left:0;width:100%;height:100%;background:url(background.png);background:rgba(50,50,50,.7);z-index:1000;overflow:hidden}.mejs-postroll-layer-content{width:100%;height:100%}.mejs-postroll-close{position:absolute;right:0;top:0;background:url(background.png);background:rgba(50,50,50,.7);color:#fff;padding:4px;z-index:100;cursor:pointer}div.mejs-speed-button{width:46px!important;position:relative}.mejs-controls .mejs-button.mejs-speed-button button{background:transparent;width:36px;font-size:11px;line-height:normal;color:#fff}.mejs-controls .mejs-speed-button .mejs-speed-selector{display:none;position:absolute;top:-100px;left:-10px;width:60px;height:100px;background:url(background.png);background:rgba(50,50,50,.7);border:solid 1px transparent;padding:0;overflow:hidden;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.mejs-controls .mejs-speed-button:hover>.mejs-speed-selector{display:block}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label.mejs-speed-selected{color:rgba(33,248,248,1)}.mejs-controls .mejs-speed-button .mejs-speed-selector ul{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li input{clear:both;float:left;margin:3px 3px 0 5px;display:none}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label{width:60px;float:left;padding:4px 0 0;line-height:15px;font-family:Helvetica,Arial,serif;font-size:11px;color:#fff;margin-left:5px;cursor:pointer}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li:hover{background-color:#c8c8c8!important;background-color:rgba(255,255,255,.4)!important}.mejs-controls .mejs-button.mejs-jump-forward-button{background:transparent url(jumpforward.png) no-repeat 3px 3px}.mejs-controls .mejs-button.mejs-jump-forward-button button{background:transparent;font-size:9px;line-height:normal;color:#fff}.mejs-controls .mejs-button.mejs-skip-back-button{background:transparent url(skipback.png) no-repeat 3px 3px}.mejs-controls .mejs-button.mejs-skip-back-button button{background:transparent;font-size:9px;line-height:normal;color:#fff} \ No newline at end of file +.mejs__offscreen{clip:rect(1px,1px,1px,1px);-webkit-clip-path:polygon(0 0,0 0,0 0,0 0);clip-path:polygon(0 0,0 0,0 0,0 0);position:absolute!important;height:1px;width:1px;overflow:hidden}.mejs__container{position:relative;background:#000;font-family:Helvetica,Arial,serif;text-align:left;vertical-align:top;text-indent:0;box-sizing:border-box}.mejs__container .mejs__video{min-height:140px}.mejs__container *{box-sizing:border-box}.mejs__container video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}.mejs__fill-container,.mejs__fill-container .mejs__container{width:100%;height:100%}.mejs__fill-container{overflow:hidden;position:relative;margin:0 auto;background:transparent}.mejs__container:focus{outline:none}.mejs__iframe-overlay{position:absolute;width:100%;height:100%}.mejs__embed,.mejs__embed body{width:100%;height:100%;margin:0;padding:0;background:#000;overflow:hidden}.mejs__fullscreen{overflow:hidden!important}.mejs__container-fullscreen{position:fixed;left:0;top:0;right:0;bottom:0;overflow:hidden;z-index:4}.mejs__container-fullscreen .mejs__mediaelement,.mejs__container-fullscreen video{width:100%!important;height:100%!important}.mejs__clear{clear:both}.mejs__background,.mejs__mediaelement{position:absolute;top:0;left:0}.mejs__mediaelement{width:100%;height:100%;z-index:0}.mejs__poster{position:absolute;top:0;left:0;background-size:contain;background-position:50% 50%;background-repeat:no-repeat;z-index:1}:root .mejs__poster-img{display:none}.mejs__poster-img{border:0;padding:0}.mejs__overlay{position:absolute;top:0;left:0;z-index:1}.mejs__layer{z-index:1}.mejs__overlay-play{cursor:pointer}.mejs__overlay-button{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px;background:url(mejs-controls.svg) no-repeat;background-position:0 -39px;overflow:hidden;z-index:1}.mejs__overlay:hover>.mejs__overlay-button{background-position:-80px -39px}.mejs__overlay-loading{position:absolute;top:50%;left:50%;width:80px;height:80px;margin:-40px 0 0 -40px}.mejs__overlay-loading-bg-img{display:block;width:80px;height:80px;background:transparent url(mejs-controls.svg) -160px -40px no-repeat;animation:a 1s linear infinite;z-index:1}@keyframes a{to{transform:rotate(1turn)}}.mejs__controls{position:absolute;list-style-type:none;margin:0;padding:0 10px;bottom:0;left:0;height:40px;width:100%;z-index:1}.mejs__controls:not([style*="display: none"]){background:rgba(255,0,0,.7);background:linear-gradient(transparent,rgba(0,0,0,.35))}.mejs__button,.mejs__time,.mejs__time-rail{float:left;margin:0;width:32px;height:40px;font-size:10px;line-height:10px}.mejs__button>button{cursor:pointer;display:block;font-size:0;line-height:0;text-decoration:none;margin:10px 6px;padding:0;position:absolute;height:20px;width:20px;border:0;background:transparent url(mejs-controls.svg);overflow:hidden}.mejs__button>button:focus{outline:1px dotted #999}.mejs__container-keyboard-inactive [role=slider],.mejs__container-keyboard-inactive [role=slider]:focus,.mejs__container-keyboard-inactive a,.mejs__container-keyboard-inactive a:focus,.mejs__container-keyboard-inactive button,.mejs__container-keyboard-inactive button:focus{outline:0}.mejs__time{color:#fff;display:block;height:24px;width:auto;font-weight:700;font-size:11px;padding:16px 6px 0;overflow:hidden;text-align:center;box-sizing:content-box}.mejs__play>button{background-position:0 0}.mejs__pause>button{background-position:-20px 0}.mejs__replay>button{background-position:-160px 0}.mejs__time-rail{direction:ltr;width:200px;padding-top:10px;height:40px;position:relative;margin:0 10px}.mejs__time-buffering,.mejs__time-current,.mejs__time-float,.mejs__time-float-corner,.mejs__time-float-current,.mejs__time-hovered,.mejs__time-loaded,.mejs__time-marker,.mejs__time-total{cursor:pointer;display:block;position:absolute;height:10px;border-radius:2px}.mejs__time-total{margin:5px 0 0;background:hsla(0,0%,100%,.3);width:100%}.mejs__time-buffering{width:100%;background:linear-gradient(-45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:15px 15px;animation:b 2s linear infinite}@keyframes b{0%{background-position:0 0}to{background-position:30px 0}}.mejs__time-loaded{background:hsla(0,0%,100%,.3)}.mejs__time-current,.mejs__time-handle-content{background:hsla(0,0%,100%,.9)}.mejs__time-hovered{background:hsla(0,0%,100%,.5);z-index:2}.mejs__time-hovered.negative{background:rgba(0,0,0,.2)}.mejs__time-buffering,.mejs__time-current,.mejs__time-hovered,.mejs__time-loaded{width:100%;left:0;-ms-transform-origin:0 0;transform-origin:0 0;-ms-transform:scaleX(0);transform:scaleX(0);transition:all .15s ease-in}.mejs__time-hovered{transition:height .1s cubic-bezier(.44,0,1,1)}.mejs__time-hovered.no-hover{-ms-transform:scaleX(0)!important;transform:scaleX(0)!important}.mejs__time-handle,.mejs__time-handle-content{position:absolute;cursor:pointer;border:4px solid transparent;z-index:3;left:0;-ms-transform:translateX(0);transform:translateX(0)}.mejs__time-handle-content{left:-7px;border:4px solid hsla(0,0%,100%,.9);-ms-transform:scale(0);transform:scale(0);top:-4px;border-radius:50%;width:10px;height:10px}.mejs__time-rail .mejs__time-handle-content:active,.mejs__time-rail .mejs__time-handle-content:focus,.mejs__time-rail:hover .mejs__time-handle-content{-ms-transform:scale(1);transform:scale(1)}.mejs__time-float{position:absolute;display:none;background:#eee;width:36px;height:17px;border:1px solid #333;top:-26px;margin-left:-18px;text-align:center;color:#111}.mejs__time-float-current{margin:2px;width:30px;display:block;text-align:center;left:0}.mejs__time-float-corner{position:absolute;display:block;width:0;height:0;line-height:0;border:5px solid #eee;border-color:#eee transparent transparent;border-radius:0;top:15px;left:13px}.mejs__long-video .mejs__time-float{width:64px;margin-left:-23px}.mejs__long-video .mejs__time-float-current{width:60px}.mejs__long-video .mejs__time-float-corner{left:18px}.mejs__broadcast{color:#fff;position:absolute;width:100%;height:10px;top:15px}.mejs__fullscreen-button>button{background-position:-80px 0}.mejs__unfullscreen>button{background-position:-100px 0}.mejs__mute>button{background-position:-60px 0}.mejs__unmute>button{background-position:-40px 0}.mejs__volume-button{position:relative}.mejs__volume-button>.mejs__volume-slider{display:none;height:115px;width:25px;background:rgba(50,50,50,.7);border-radius:0;top:-115px;left:5px;z-index:1;position:absolute;margin:0}.mejs__volume-button:hover{border-radius:0 0 4px 4px}.mejs__volume-total{position:absolute;left:11px;top:8px;width:2px;height:100px;background:hsla(0,0%,100%,.5);margin:0}.mejs__volume-current{bottom:0;width:100%;height:100%;margin:0}.mejs__volume-current,.mejs__volume-handle{position:absolute;left:0;background:hsla(0,0%,100%,.9)}.mejs__volume-handle{bottom:100%;width:16px;height:6px;margin:0 0 -3px -7px;cursor:ns-resize;border-radius:1px}.mejs__horizontal-volume-slider{height:36px;width:56px;position:relative;display:block;float:left;vertical-align:middle}.mejs__horizontal-volume-total{top:16px;width:50px;height:8px;background:rgba(50,50,50,.8)}.mejs__horizontal-volume-current,.mejs__horizontal-volume-total{position:absolute;left:0;margin:0;padding:0;font-size:1px;border-radius:2px}.mejs__horizontal-volume-current{top:0;width:100%;height:100%;background:hsla(0,0%,100%,.8)}.mejs__horizontal-volume-handle{display:none}.mejs__captions-button,.mejs__chapters-button{position:relative}.mejs__captions-button>button{background-position:-140px 0}.mejs__chapters-button>button{background-position:-180px 0}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{visibility:hidden;position:absolute;bottom:40px;right:-51px;width:85px;background:rgba(50,50,50,.7);border:1px solid transparent;padding:0;overflow:hidden;border-radius:0}.mejs__chapters-button>.mejs__chapters-selector{width:110px}.mejs__captions-button>.mejs__captions-selector,.mejs__chapters-button>.mejs__chapters-selector{visibility:visible}.mejs__captions-selector-list,.mejs__chapters-selector-list{margin:0;padding:0;display:block;list-style-type:none!important;overflow:hidden}.mejs__captions-selector-list-item,.mejs__chapters-selector-list-item{margin:0 0 6px;padding:0 10px;list-style-type:none!important;display:block;color:#fff;overflow:hidden;cursor:pointer}.mejs__captions-selector-list-item:hover,.mejs__chapters-selector-list-item:hover{background-color:#c8c8c8!important;background-color:hsla(0,0%,100%,.4)!important}.mejs__captions-selector-input,.mejs__chapters-selector-input{clear:both;float:left;margin:3px 3px 0 5px;position:absolute;left:-1000px}.mejs__captions-selector-label,.mejs__chapters-selector-label{width:55px;float:left;padding:4px 0 0;line-height:15px;font-size:10px;cursor:pointer}.mejs__captions-selected,.mejs__chapters-selected{color:#21f8f8}.mejs__captions-translations{font-size:10px;margin:0 0 5px}.mejs__captions-layer{position:absolute;bottom:0;left:0;text-align:center;line-height:20px;font-size:16px;color:#fff}.mejs__captions-layer a{color:#fff;text-decoration:underline}.mejs__captions-layer[lang=ar]{font-size:20px;font-weight:400}.mejs__captions-position{position:absolute;width:100%;bottom:15px;left:0}.mejs__captions-position-hover{bottom:35px}.mejs__captions-text,.mejs__captions-text *{padding:0;background:hsla(0,0%,8%,.5);white-space:pre-wrap;box-shadow:5px 0 0 hsla(0,0%,8%,.5),-5px 0 0 hsla(0,0%,8%,.5)}.mejs__container.mejs__hide-cues video::-webkit-media-text-track-container{display:none}.me_cannotplay a{font-weight:700}.mejs__container .me_cannotplay a{color:#fff}.me_cannotplay span{padding:15px;display:block} \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/mejs-controls.png b/src/main/webapp/static/movie/mediaelementjs/mejs-controls.png new file mode 100755 index 0000000000000000000000000000000000000000..a8e0fd27702058fde6906da65bef9064c4611d35 Binary files /dev/null and b/src/main/webapp/static/movie/mediaelementjs/mejs-controls.png differ diff --git a/src/main/webapp/static/movie/mediaelementjs/mejs-controls.svg b/src/main/webapp/static/movie/mediaelementjs/mejs-controls.svg new file mode 100755 index 0000000000000000000000000000000000000000..e4db236e5406726315d1dade13ea9124d5abe7f2 --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/mejs-controls.svg @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" + width="400px" height="120px" viewBox="0 0 400 120" style="enable-background:new 0 0 400 120;" xml:space="preserve"> +<style type="text/css"> + .st0{fill:#FFFFFF;width:16px;height:16px} + .st1{fill:none;stroke:#FFFFFF;stroke-width:1.5;stroke-linecap:round;} + .st2{fill:none;stroke:#FFFFFF;stroke-width:2;stroke-linecap:round;} + .st3{fill:none;stroke:#FFFFFF;} + .st4{fill:#231F20;} + .st5{opacity:0.75;fill:none;stroke:#FFFFFF;stroke-width:5;enable-background:new;} + .st6{fill:none;stroke:#FFFFFF;stroke-width:5;} + .st7{opacity:0.4;fill:#FFFFFF;enable-background:new;} + .st8{opacity:0.6;fill:#FFFFFF;enable-background:new;} + .st9{opacity:0.8;fill:#FFFFFF;enable-background:new;} + .st10{opacity:0.9;fill:#FFFFFF;enable-background:new;} + .st11{opacity:0.3;fill:#FFFFFF;enable-background:new;} + .st12{opacity:0.5;fill:#FFFFFF;enable-background:new;} + .st13{opacity:0.7;fill:#FFFFFF;enable-background:new;} +</style> +<g id="controls"> + <g id="play"> + <path class="st0" d="M16.5,8.5c0.3,0.1,0.4,0.5,0.2,0.8c-0.1,0.1-0.1,0.2-0.2,0.2l-11.4,7c-0.5,0.3-0.8,0.1-0.8-0.5V2 + c0-0.5,0.4-0.8,0.8-0.5L16.5,8.5z"/> + </g> + <g id="pause"> + <g> + <path class="st0" d="M24,1h2.2c0.6,0,1,0.4,1,1v14c0,0.6-0.4,1-1,1H24c-0.6,0-1-0.4-1-1V2C23,1.5,23.4,1,24,1z"/> + <path class="st0" d="M33.8,1H36c0.6,0,1,0.4,1,1v14c0,0.6-0.4,1-1,1h-2.2c-0.6,0-1-0.4-1-1V2C32.8,1.5,33.2,1,33.8,1z"/> + </g> + </g> + <g id="fullscreen"> + <g id="enter"> + <path class="st0" d="M81,1.4c0-0.6,0.4-1,1-1h5.4c0.6,0,0.7,0.3,0.3,0.7l-6,6C81.3,7.5,81,7.4,81,6.8V1.4z"/> + <path class="st0" d="M81,17.2c0,0.6,0.4,1,1,1h5.4c0.6,0,0.7-0.3,0.3-0.7l-6-6c-0.4-0.4-0.7-0.3-0.7,0.3L81,17.2z"/> + <path class="st0" d="M98.8,1.4c0-0.6-0.4-1-1-1h-5.4c-0.6,0-0.7,0.3-0.3,0.7l6,6c0.4,0.4,0.7,0.3,0.7-0.3 + C98.8,6.8,98.8,1.4,98.8,1.4z"/> + <path class="st0" d="M98.8,17.2c0,0.6-0.4,1-1,1h-5.4c-0.6,0-0.7-0.3-0.3-0.7l6-6c0.4-0.4,0.7-0.3,0.7,0.3 + C98.8,11.8,98.8,17.2,98.8,17.2z"/> + </g> + <g id="exit"> + <g> + <path class="st0" d="M112.7,5c0,0.6,0.4,1,1,1h4.1c0.6,0,0.7-0.3,0.3-0.7l-4.7-4.7c-0.4-0.4-0.7-0.3-0.7,0.3 + C112.7,0.9,112.7,5,112.7,5z"/> + <path class="st0" d="M105.6,6c0.6,0,1-0.4,1-1V0.9c0-0.6-0.3-0.7-0.7-0.3l-4.7,4.7c-0.4,0.4-0.3,0.7,0.3,0.7L105.6,6z"/> + <path class="st0" d="M106.6,13.1c0-0.6-0.4-1-1-1h-4.1c-0.6,0-0.7,0.3-0.3,0.7l4.7,4.7c0.4,0.4,0.7,0.3,0.7-0.3 + C106.6,17.2,106.6,13.1,106.6,13.1z"/> + <path class="st0" d="M113.7,12.1c-0.6,0-1,0.4-1,1v4.1c0,0.5,0.3,0.7,0.7,0.3l4.7-4.7c0.4-0.4,0.3-0.7-0.3-0.7H113.7z"/> + </g> + </g> + </g> + <g id="volume"> + <g id="unmuted"> + <path class="st0" d="M67,5.8c-0.5,0.4-1.2,0.6-1.8,0.6H62c-0.6,0-1,0.4-1,1v5.7c0,0.6,0.4,1,1,1h3.2c0.3,0,0.7,0,1,0 + c0.3,0.2,0.5,0.4,0.8,0.6l3.5,2.6c0.4,0.3,0.8,0.1,0.8-0.4V3.5c0-0.5-0.4-0.7-0.8-0.4L67,5.8z"/> + <path class="st1" d="M73.9,2.5c0,0,3.9-0.8,3.9,7.7S73.9,18,73.9,18"/> + <path class="st1" d="M72.6,6.4c0,0,2.6-0.4,2.6,3.8s-2.6,3.9-2.6,3.9"/> + </g> + <g id="muted"> + <path class="st0" d="M47,5.8c-0.5,0.4-1.2,0.6-1.8,0.6H42c-0.6,0-1,0.4-1,1v5.7c0,0.6,0.4,1,1,1h3.2c0.3,0,0.7,0,1,0 + c0.3,0.2,0.5,0.4,0.8,0.6l3.5,2.6c0.4,0.3,0.8,0.1,0.8-0.4V3.5c0-0.5-0.4-0.7-0.8-0.4L47,5.8z"/> + <line class="st2" x1="52.8" y1="7" x2="58.2" y2="12.4"/> + <line class="st2" x1="52.8" y1="12.4" x2="58.2" y2="7"/> + </g> + </g> + <g id="closed_captions"> + <path class="st3" d="M128.7,8.6c-6.2-4.2-6.5,7.8,0,3.9"/> + <path class="st3" d="M135.2,8.6c-6.2-4.2-6.5,7.8,0,3.9"/> + <path class="st0" d="M122.2,3.4h15.7v13.1h-15.7V3.4z M120.8,2v15.7h18.3V2H120.8z"/> + </g> + <g> + <path class="st0" d="M143.2,3h14c1.1,0,2,0.9,2,2v10c0,1.1-0.9,2-2,2h-14c-1.1,0-2-0.9-2-2V5C141.2,3.9,142.1,3,143.2,3z"/> + <path class="st4" d="M146.4,13.8c-0.8,0-1.6-0.4-2.1-1c-1.1-1.4-1-3.4,0.1-4.8c0.5-0.6,2-1.7,4.6,0.2L148.4,9 + c-1.4-1-2.6-1.1-3.3-0.3c-0.8,1-0.8,2.4-0.1,3.5c0.7,0.9,1.9,0.8,3.4-0.1l0.5,0.9C148.2,13.5,147.3,13.7,146.4,13.8z"/> + <path class="st4" d="M153.9,13.8c-0.8,0-1.6-0.4-2.1-1c-1.1-1.4-1-3.4,0.1-4.8c0.5-0.6,2-1.7,4.6,0.2L156,9 + c-1.4-1-2.6-1.1-3.3-0.3c-0.8,1-0.8,2.4-0.1,3.5c0.7,0.9,1.9,0.8,3.4-0.1l0.5,0.9C155.7,13.5,154.8,13.7,153.9,13.8z"/> + </g> +</g> +<g id="big_play"> + <g id="big_play_opaque"> + <path class="st0" d="M60.3,77c0.6,0.2,0.8,0.8,0.6,1.4c-0.1,0.3-0.3,0.5-0.6,0.6L30,96.5c-1,0.6-1.7,0.1-1.7-1v-35 + c0-1.1,0.8-1.5,1.7-1L60.3,77z"/> + <path class="st5" d="M2.5,79c0-20.7,16.8-37.5,37.5-37.5S77.5,58.3,77.5,79S60.7,116.5,40,116.5S2.5,99.7,2.5,79L2.5,79z"/> + </g> + <g id="big_play_hover"> + <path class="st0" d="M140.3,77c0.6,0.2,0.8,0.8,0.6,1.4c-0.1,0.3-0.3,0.5-0.6,0.6L110,96.5c-1,0.6-1.7,0.1-1.7-1v-35 + c0-1.1,0.8-1.5,1.7-1L140.3,77z"/> + <path class="st6" d="M82.5,79c0-20.7,16.8-37.5,37.5-37.5s37.5,16.8,37.5,37.5s-16.8,37.5-37.5,37.5S82.5,99.7,82.5,79z"/> + </g> + <g id="loading"> + <circle class="st0" cx="201.9" cy="47.1" r="8.1"/> + <circle class="st7" cx="233.9" cy="79" r="5"/> + <circle class="st8" cx="201.9" cy="110.9" r="6"/> + <circle class="st9" cx="170.1" cy="79" r="7"/> + <circle class="st10" cx="178.2" cy="56.3" r="7.5"/> + <circle class="st11" cx="226.3" cy="56.1" r="4.5"/> + <circle class="st12" cx="225.8" cy="102.8" r="5.5"/> + <circle class="st13" cx="178.2" cy="102.8" r="6.5"/> + </g> +</g> +<g id="replay"> + <path class="st0" d="M178,9.4c0,0.4-0.4,0.7-0.9,0.7c-0.1,0-0.2,0-0.2-0.1l-4.9-1.8c-0.5-0.2-0.6-0.6-0.1-0.8l6.2-3.6 + c0.5-0.3,0.8-0.1,0.7,0.5L178,9.4z"/> + <path class="st0" d="M169.4,15.9c-1,0-2-0.2-2.9-0.7c-2-1-3.2-3-3.2-5.2c0.1-3.4,2.9-6,6.3-6c2.5,0.1,4.8,1.7,5.6,4.1l0.1-0.1 + l2.1,1.1c-0.6-4.4-4.7-7.5-9.1-6.9c-3.9,0.6-6.9,3.9-7,7.9c0,2.9,1.7,5.6,4.3,7c1.2,0.6,2.5,0.9,3.8,1c2.6,0,5-1.2,6.6-3.3 + l-1.8-0.9C173,15.1,171.2,15.9,169.4,15.9z"/> +</g> +<g id="chapters"> + <path class="st0" d="M183.4,3.2L183.4,3.2c0.8,0,1.5,0.7,1.5,1.5l0,0c0,0.8-0.7,1.5-1.5,1.5l0,0c-0.8,0-1.5-0.7-1.5-1.5l0,0 + C181.9,3.8,182.6,3.2,183.4,3.2z"/> + <path class="st0" d="M188.5,3.2h8.5c0.9,0,1.5,0.7,1.5,1.5l0,0c0,0.8-0.7,1.5-1.5,1.5h-8.5c-0.9,0-1.5-0.7-1.5-1.5l0,0 + C186.9,3.8,187.6,3.2,188.5,3.2z"/> + <path class="st0" d="M183.4,8.2L183.4,8.2c0.8,0,1.5,0.7,1.5,1.5l0,0c0,0.8-0.7,1.5-1.5,1.5l0,0c-0.8,0-1.5-0.7-1.5-1.5l0,0 + C181.9,8.8,182.6,8.2,183.4,8.2z"/> + <path class="st0" d="M188.5,8.2h8.5c0.9,0,1.5,0.7,1.5,1.5l0,0c0,0.8-0.7,1.5-1.5,1.5h-8.5c-0.9,0-1.5-0.7-1.5-1.5l0,0 + C186.9,8.8,187.6,8.2,188.5,8.2z"/> + <path class="st0" d="M183.4,13.2L183.4,13.2c0.8,0,1.5,0.7,1.5,1.5l0,0c0,0.8-0.7,1.5-1.5,1.5l0,0c-0.8,0-1.5-0.7-1.5-1.5l0,0 + C181.9,13.8,182.6,13.2,183.4,13.2z"/> + <path class="st0" d="M188.5,13.2h8.5c0.9,0,1.5,0.7,1.5,1.5l0,0c0,0.8-0.7,1.5-1.5,1.5h-8.5c-0.9,0-1.5-0.7-1.5-1.5l0,0 + C186.9,13.8,187.6,13.2,188.5,13.2z"/> +</g> +</svg> diff --git a/src/main/webapp/static/movie/mediaelementjs/renderers/vimeo.js b/src/main/webapp/static/movie/mediaelementjs/renderers/vimeo.js new file mode 100755 index 0000000000000000000000000000000000000000..9f469127017002cfcb100d0931ddee81084c4cae --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/renderers/vimeo.js @@ -0,0 +1,403 @@ +/*! + * MediaElement.js + * http://www.mediaelementjs.com/ + * + * Wrapper that mimics native HTML5 MediaElement (audio and video) + * using a variety of technologies (pure JavaScript, Flash, iframe) + * + * Copyright 2010-2017, John Dyer (http://j.hn/) + * License: MIT + * + */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ +'use strict'; + +var VimeoApi = { + + promise: null, + + load: function load(settings) { + + if (typeof Vimeo !== 'undefined') { + VimeoApi._createPlayer(settings); + } else { + VimeoApi.promise = VimeoApi.promise || mejs.Utils.loadScript('https://player.vimeo.com/api/player.js'); + VimeoApi.promise.then(function () { + VimeoApi._createPlayer(settings); + }); + } + }, + + _createPlayer: function _createPlayer(settings) { + var player = new Vimeo.Player(settings.iframe); + window['__ready__' + settings.id](player); + }, + + getVimeoId: function getVimeoId(url) { + if (url === undefined || url === null) { + return null; + } + + var parts = url.split('?'); + url = parts[0]; + return parseInt(url.substring(url.lastIndexOf('/') + 1)); + } +}; + +var vimeoIframeRenderer = { + + name: 'vimeo_iframe', + options: { + prefix: 'vimeo_iframe' + }, + + canPlayType: function canPlayType(type) { + return ~['video/vimeo', 'video/x-vimeo'].indexOf(type.toLowerCase()); + }, + + create: function create(mediaElement, options, mediaFiles) { + var apiStack = [], + vimeo = {}, + readyState = 4; + + var paused = true, + volume = 1, + oldVolume = volume, + currentTime = 0, + bufferedTime = 0, + ended = false, + duration = 0, + vimeoPlayer = null, + url = ''; + + vimeo.options = options; + vimeo.id = mediaElement.id + '_' + options.prefix; + vimeo.mediaElement = mediaElement; + + var errorHandler = function errorHandler(error, target) { + var event = mejs.Utils.createEvent('error', target); + event.message = error.name + ': ' + error.message; + mediaElement.dispatchEvent(event); + }; + + var props = mejs.html5media.properties, + assignGettersSetters = function assignGettersSetters(propName) { + + var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); + + vimeo['get' + capName] = function () { + if (vimeoPlayer !== null) { + var value = null; + + switch (propName) { + case 'currentTime': + return currentTime; + + case 'duration': + return duration; + + case 'volume': + return volume; + case 'muted': + return volume === 0; + case 'paused': + return paused; + case 'ended': + return ended; + + case 'src': + vimeoPlayer.getVideoUrl().then(function (_url) { + url = _url; + }); + + return url; + case 'buffered': + return { + start: function start() { + return 0; + }, + end: function end() { + return bufferedTime * duration; + }, + length: 1 + }; + case 'readyState': + return readyState; + } + return value; + } else { + return null; + } + }; + + vimeo['set' + capName] = function (value) { + if (vimeoPlayer !== null) { + switch (propName) { + case 'src': + var _url2 = typeof value === 'string' ? value : value[0].src, + videoId = VimeoApi.getVimeoId(_url2); + + vimeoPlayer.loadVideo(videoId).then(function () { + if (mediaElement.originalNode.autoplay) { + vimeoPlayer.play(); + } + }).catch(function (error) { + errorHandler(error, vimeo); + }); + break; + case 'currentTime': + vimeoPlayer.setCurrentTime(value).then(function () { + currentTime = value; + setTimeout(function () { + var event = mejs.Utils.createEvent('timeupdate', vimeo); + mediaElement.dispatchEvent(event); + }, 50); + }).catch(function (error) { + errorHandler(error, vimeo); + }); + break; + case 'volume': + vimeoPlayer.setVolume(value).then(function () { + volume = value; + oldVolume = volume; + setTimeout(function () { + var event = mejs.Utils.createEvent('volumechange', vimeo); + mediaElement.dispatchEvent(event); + }, 50); + }).catch(function (error) { + errorHandler(error, vimeo); + }); + break; + case 'loop': + vimeoPlayer.setLoop(value).catch(function (error) { + errorHandler(error, vimeo); + }); + break; + case 'muted': + if (value) { + vimeoPlayer.setVolume(0).then(function () { + volume = 0; + setTimeout(function () { + var event = mejs.Utils.createEvent('volumechange', vimeo); + mediaElement.dispatchEvent(event); + }, 50); + }).catch(function (error) { + errorHandler(error, vimeo); + }); + } else { + vimeoPlayer.setVolume(oldVolume).then(function () { + volume = oldVolume; + setTimeout(function () { + var event = mejs.Utils.createEvent('volumechange', vimeo); + mediaElement.dispatchEvent(event); + }, 50); + }).catch(function (error) { + errorHandler(error, vimeo); + }); + } + break; + case 'readyState': + var event = mejs.Utils.createEvent('canplay', vimeo); + mediaElement.dispatchEvent(event); + break; + default: + + break; + } + } else { + apiStack.push({ type: 'set', propName: propName, value: value }); + } + }; + }; + + for (var i = 0, total = props.length; i < total; i++) { + assignGettersSetters(props[i]); + } + + var methods = mejs.html5media.methods, + assignMethods = function assignMethods(methodName) { + vimeo[methodName] = function () { + if (vimeoPlayer !== null) { + switch (methodName) { + case 'play': + paused = false; + return vimeoPlayer.play(); + case 'pause': + paused = true; + return vimeoPlayer.pause(); + case 'load': + return null; + } + } else { + apiStack.push({ type: 'call', methodName: methodName }); + } + }; + }; + + for (var _i = 0, _total = methods.length; _i < _total; _i++) { + assignMethods(methods[_i]); + } + + window['__ready__' + vimeo.id] = function (_vimeoPlayer) { + + mediaElement.vimeoPlayer = vimeoPlayer = _vimeoPlayer; + + if (apiStack.length) { + for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) { + var stackItem = apiStack[_i2]; + + if (stackItem.type === 'set') { + var propName = stackItem.propName, + capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); + + vimeo['set' + capName](stackItem.value); + } else if (stackItem.type === 'call') { + vimeo[stackItem.methodName](); + } + } + } + + var vimeoIframe = document.getElementById(vimeo.id); + var events = void 0; + + events = ['mouseover', 'mouseout']; + + var assignEvents = function assignEvents(e) { + var event = mejs.Utils.createEvent(e.type, vimeo); + mediaElement.dispatchEvent(event); + }; + + for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { + vimeoIframe.addEventListener(events[_i3], assignEvents, false); + } + + vimeoPlayer.on('loaded', function () { + vimeoPlayer.getDuration().then(function (loadProgress) { + duration = loadProgress; + if (duration > 0) { + bufferedTime = duration * loadProgress; + if (mediaElement.originalNode.autoplay) { + paused = false; + ended = false; + var event = mejs.Utils.createEvent('play', vimeo); + mediaElement.dispatchEvent(event); + } + } + }).catch(function (error) { + errorHandler(error, vimeo); + }); + }); + vimeoPlayer.on('progress', function () { + vimeoPlayer.getDuration().then(function (loadProgress) { + duration = loadProgress; + + if (duration > 0) { + bufferedTime = duration * loadProgress; + if (mediaElement.originalNode.autoplay) { + var initEvent = mejs.Utils.createEvent('play', vimeo); + mediaElement.dispatchEvent(initEvent); + } + } + + var event = mejs.Utils.createEvent('progress', vimeo); + mediaElement.dispatchEvent(event); + }).catch(function (error) { + errorHandler(error, vimeo); + }); + }); + vimeoPlayer.on('timeupdate', function () { + vimeoPlayer.getCurrentTime().then(function (seconds) { + currentTime = seconds; + + var event = mejs.Utils.createEvent('timeupdate', vimeo); + mediaElement.dispatchEvent(event); + }).catch(function (error) { + errorHandler(error, vimeo); + }); + }); + vimeoPlayer.on('play', function () { + paused = false; + ended = false; + var event = mejs.Utils.createEvent('play', vimeo); + mediaElement.dispatchEvent(event); + }); + vimeoPlayer.on('pause', function () { + paused = true; + ended = false; + + var event = mejs.Utils.createEvent('pause', vimeo); + mediaElement.dispatchEvent(event); + }); + vimeoPlayer.on('ended', function () { + paused = false; + ended = true; + + var event = mejs.Utils.createEvent('ended', vimeo); + mediaElement.dispatchEvent(event); + }); + + events = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay']; + + for (var _i4 = 0, _total4 = events.length; _i4 < _total4; _i4++) { + var event = mejs.Utils.createEvent(events[_i4], vimeo); + mediaElement.dispatchEvent(event); + } + }; + + var height = mediaElement.originalNode.height, + width = mediaElement.originalNode.width, + vimeoContainer = document.createElement('iframe'), + standardUrl = '//player.vimeo.com/video/' + VimeoApi.getVimeoId(mediaFiles[0].src); + + var queryArgs = ~mediaFiles[0].src.indexOf('?') ? '?' + mediaFiles[0].src.slice(mediaFiles[0].src.indexOf('?') + 1) : ''; + if (queryArgs && mediaElement.originalNode.autoplay && queryArgs.indexOf('autoplay') === -1) { + queryArgs += '&autoplay=1'; + } + if (queryArgs && mediaElement.originalNode.loop && queryArgs.indexOf('loop') === -1) { + queryArgs += '&loop=1'; + } + + vimeoContainer.setAttribute('id', vimeo.id); + vimeoContainer.setAttribute('width', width); + vimeoContainer.setAttribute('height', height); + vimeoContainer.setAttribute('frameBorder', '0'); + vimeoContainer.setAttribute('src', '' + standardUrl + queryArgs); + vimeoContainer.setAttribute('webkitallowfullscreen', ''); + vimeoContainer.setAttribute('mozallowfullscreen', ''); + vimeoContainer.setAttribute('allowfullscreen', ''); + + mediaElement.originalNode.parentNode.insertBefore(vimeoContainer, mediaElement.originalNode); + mediaElement.originalNode.style.display = 'none'; + + VimeoApi.load({ + iframe: vimeoContainer, + id: vimeo.id + }); + + vimeo.hide = function () { + vimeo.pause(); + if (vimeoPlayer) { + vimeoContainer.style.display = 'none'; + } + }; + vimeo.setSize = function (width, height) { + vimeoContainer.setAttribute('width', width); + vimeoContainer.setAttribute('height', height); + }; + vimeo.show = function () { + if (vimeoPlayer) { + vimeoContainer.style.display = ''; + } + }; + + return vimeo; + } +}; + +mejs.Utils.typeChecks.push(function (url) { + return (/(\/\/player\.vimeo|vimeo\.com)/i.test(url) ? 'video/x-vimeo' : null + ); +}); + +mejs.Renderers.add(vimeoIframeRenderer); + +},{}]},{},[1]); diff --git a/src/main/webapp/static/movie/mediaelementjs/renderers/vimeo.min.js b/src/main/webapp/static/movie/mediaelementjs/renderers/vimeo.min.js new file mode 100755 index 0000000000000000000000000000000000000000..08bedaaef8542431f7db291ed86e99112617e2fc --- /dev/null +++ b/src/main/webapp/static/movie/mediaelementjs/renderers/vimeo.min.js @@ -0,0 +1,12 @@ +/*! + * MediaElement.js + * http://www.mediaelementjs.com/ + * + * Wrapper that mimics native HTML5 MediaElement (audio and video) + * using a variety of technologies (pure JavaScript, Flash, iframe) + * + * Copyright 2010-2017, John Dyer (http://j.hn/) + * License: MIT + * + */ +!function e(t,n,r){function i(o,s){if(!n[o]){if(!t[o]){var u="function"==typeof require&&require;if(!s&&u)return u(o,!0);if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return i(n||e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var a="function"==typeof require&&require,o=0;o<r.length;o++)i(r[o]);return i}({1:[function(e,t,n){"use strict";var r={promise:null,load:function(e){"undefined"!=typeof Vimeo?r._createPlayer(e):(r.promise=r.promise||mejs.Utils.loadScript("https://player.vimeo.com/api/player.js"),r.promise.then(function(){r._createPlayer(e)}))},_createPlayer:function(e){var t=new Vimeo.Player(e.iframe);window["__ready__"+e.id](t)},getVimeoId:function(e){return void 0===e||null===e?null:(e=e.split("?")[0],parseInt(e.substring(e.lastIndexOf("/")+1)))}},i={name:"vimeo_iframe",options:{prefix:"vimeo_iframe"},canPlayType:function(e){return~["video/vimeo","video/x-vimeo"].indexOf(e.toLowerCase())},create:function(e,t,n){var i=[],a={},o=!0,s=1,u=s,c=0,l=0,d=!1,f=0,m=null,p="";a.options=t,a.id=e.id+"_"+t.prefix,a.mediaElement=e;for(var v=function(t,n){var r=mejs.Utils.createEvent("error",n);r.message=t.name+": "+t.message,e.dispatchEvent(r)},h=mejs.html5media.properties,y=0,g=h.length;y<g;y++)!function(t){var n=""+t.substring(0,1).toUpperCase()+t.substring(1);a["get"+n]=function(){if(null!==m){switch(t){case"currentTime":return c;case"duration":return f;case"volume":return s;case"muted":return 0===s;case"paused":return o;case"ended":return d;case"src":return m.getVideoUrl().then(function(e){p=e}),p;case"buffered":return{start:function(){return 0},end:function(){return l*f},length:1};case"readyState":return 4}return null}return null},a["set"+n]=function(n){if(null!==m)switch(t){case"src":var o="string"==typeof n?n:n[0].src,l=r.getVimeoId(o);m.loadVideo(l).then(function(){e.originalNode.autoplay&&m.play()}).catch(function(e){v(e,a)});break;case"currentTime":m.setCurrentTime(n).then(function(){c=n,setTimeout(function(){var t=mejs.Utils.createEvent("timeupdate",a);e.dispatchEvent(t)},50)}).catch(function(e){v(e,a)});break;case"volume":m.setVolume(n).then(function(){u=s=n,setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50)}).catch(function(e){v(e,a)});break;case"loop":m.setLoop(n).catch(function(e){v(e,a)});break;case"muted":n?m.setVolume(0).then(function(){s=0,setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50)}).catch(function(e){v(e,a)}):m.setVolume(u).then(function(){s=u,setTimeout(function(){var t=mejs.Utils.createEvent("volumechange",a);e.dispatchEvent(t)},50)}).catch(function(e){v(e,a)});break;case"readyState":var d=mejs.Utils.createEvent("canplay",a);e.dispatchEvent(d)}else i.push({type:"set",propName:t,value:n})}}(h[y]);for(var E=mejs.html5media.methods,b=0,U=E.length;b<U;b++)!function(e){a[e]=function(){if(null!==m)switch(e){case"play":return o=!1,m.play();case"pause":return o=!0,m.pause();case"load":return null}else i.push({type:"call",methodName:e})}}(E[b]);window["__ready__"+a.id]=function(t){if(e.vimeoPlayer=m=t,i.length)for(var n=0,r=i.length;n<r;n++){var s=i[n];if("set"===s.type){var u=s.propName,p=""+u.substring(0,1).toUpperCase()+u.substring(1);a["set"+p](s.value)}else"call"===s.type&&a[s.methodName]()}for(var h=document.getElementById(a.id),y=void 0,g=function(t){var n=mejs.Utils.createEvent(t.type,a);e.dispatchEvent(n)},E=0,b=(y=["mouseover","mouseout"]).length;E<b;E++)h.addEventListener(y[E],g,!1);m.on("loaded",function(){m.getDuration().then(function(t){if((f=t)>0&&(l=f*t,e.originalNode.autoplay)){o=!1,d=!1;var n=mejs.Utils.createEvent("play",a);e.dispatchEvent(n)}}).catch(function(e){v(e,a)})}),m.on("progress",function(){m.getDuration().then(function(t){if((f=t)>0&&(l=f*t,e.originalNode.autoplay)){var n=mejs.Utils.createEvent("play",a);e.dispatchEvent(n)}var r=mejs.Utils.createEvent("progress",a);e.dispatchEvent(r)}).catch(function(e){v(e,a)})}),m.on("timeupdate",function(){m.getCurrentTime().then(function(t){c=t;var n=mejs.Utils.createEvent("timeupdate",a);e.dispatchEvent(n)}).catch(function(e){v(e,a)})}),m.on("play",function(){o=!1,d=!1;var t=mejs.Utils.createEvent("play",a);e.dispatchEvent(t)}),m.on("pause",function(){o=!0,d=!1;var t=mejs.Utils.createEvent("pause",a);e.dispatchEvent(t)}),m.on("ended",function(){o=!1,d=!0;var t=mejs.Utils.createEvent("ended",a);e.dispatchEvent(t)});for(var U=0,j=(y=["rendererready","loadedmetadata","loadeddata","canplay"]).length;U<j;U++){var w=mejs.Utils.createEvent(y[U],a);e.dispatchEvent(w)}};var j=e.originalNode.height,w=e.originalNode.width,N=document.createElement("iframe"),_="//player.vimeo.com/video/"+r.getVimeoId(n[0].src),x=~n[0].src.indexOf("?")?"?"+n[0].src.slice(n[0].src.indexOf("?")+1):"";return x&&e.originalNode.autoplay&&-1===x.indexOf("autoplay")&&(x+="&autoplay=1"),x&&e.originalNode.loop&&-1===x.indexOf("loop")&&(x+="&loop=1"),N.setAttribute("id",a.id),N.setAttribute("width",w),N.setAttribute("height",j),N.setAttribute("frameBorder","0"),N.setAttribute("src",""+_+x),N.setAttribute("webkitallowfullscreen",""),N.setAttribute("mozallowfullscreen",""),N.setAttribute("allowfullscreen",""),e.originalNode.parentNode.insertBefore(N,e.originalNode),e.originalNode.style.display="none",r.load({iframe:N,id:a.id}),a.hide=function(){a.pause(),m&&(N.style.display="none")},a.setSize=function(e,t){N.setAttribute("width",e),N.setAttribute("height",t)},a.show=function(){m&&(N.style.display="")},a}};mejs.Utils.typeChecks.push(function(e){return/(\/\/player\.vimeo|vimeo\.com)/i.test(e)?"video/x-vimeo":null}),mejs.Renderers.add(i)},{}]},{},[1]); \ No newline at end of file diff --git a/src/main/webapp/static/movie/mediaelementjs/silverlightmediaelement.xap b/src/main/webapp/static/movie/mediaelementjs/silverlightmediaelement.xap deleted file mode 100644 index 38a9cc490bf7e66037bd83e5c0ab7aad83e08942..0000000000000000000000000000000000000000 Binary files a/src/main/webapp/static/movie/mediaelementjs/silverlightmediaelement.xap and /dev/null differ diff --git a/src/main/webapp/static/movie/mediaelementjs/skipback.png b/src/main/webapp/static/movie/mediaelementjs/skipback.png deleted file mode 100644 index 04756f966d760e8e2728bb90fe8a420ecdc04ecb..0000000000000000000000000000000000000000 Binary files a/src/main/webapp/static/movie/mediaelementjs/skipback.png and /dev/null differ diff --git a/src/main/webapp/static/movie/player.js b/src/main/webapp/static/movie/player.js index 60bee4f36530e96fa0595d3456c8bcf9ef7ed019..7e9f6334e44ff9fc5d55762a045570ce8a62b694 100644 --- a/src/main/webapp/static/movie/player.js +++ b/src/main/webapp/static/movie/player.js @@ -107,13 +107,10 @@ var BPlayer = { async: false, //prevent 2x load of the mediaelement.js which is deadly url: mediaElementJs }).done(function() { - // Add support for AAC audio for flash fallback - mejs.plugins.flash[0].types.push("audio/aac") - // Now load video - if (afterloadCallback) { - afterloadCallback(); - } - }); + if (afterloadCallback) { + afterloadCallback(); + } + }); } }, @@ -150,10 +147,13 @@ var BPlayer = { var meConfig = { loop: config.repeat, pluginPath: mediaElementBaseUrl, - flashName: 'flashmediaelement.swf', - silverlightName: 'silverlightmediaelement.xap', - features: ['playpause','current','volume','progress','duration','speed','fullscreen'], - enablePluginDebug: BPlayer.debugEnabled, + stretching: 'responsive', + hls: { + path: mediaElementBaseUrl + 'hls/hls.min.js' + }, + flv : { + path: mediaElementBaseUrl + 'flv/flv.min.js' + }, success: function(mediaElement, originalNode, player) { if(config.autostart) { try { @@ -163,15 +163,25 @@ var BPlayer = { if(window.console) console.log(e); } } - mediaElement.addEventListener('loadeddata', function() { - if(config.start) { - try { - player.setCurrentTime(config.start); - } catch(e) { - if(window.console) console.log(e); - } + + if(config.start) { + var pauseOnce = true; + if(!config.autostart) { + player.play(); } - }); + + mediaElement.addEventListener('loadedmetadata', function() { + try { + player.setCurrentTime(config.start); + if(!config.autostart && pauseOnce) { + pauseOnce = true; + player.pause();//player need to play to position itself at the current time + } + } catch(e) { + if(window.console) console.log(e); + } + }); + } } }; @@ -182,9 +192,8 @@ var BPlayer = { mimeType = "audio/mp3"; } else if(extension == 'aac') { mimeType = "audio/aac"; - meConfig.pluginVars = 'isvideo=true'; } else if(extension == 'm4a') { - mimeType = "audio/m4a"; + mimeType = "audio/mp4"; } } else if(config.provider == 'youtube') { mimeType = "video/youtube"; @@ -212,18 +221,17 @@ var BPlayer = { } else if(extension == 'm3u8') { mimeType = "application/x-mpegURL"; } else if(extension == 'aac') { - mimeType = "audio/aac"; + mimeType = "audio/mp4"; config.provider = "sound"; - meConfig.pluginVars = 'isvideo=true'; } else if(extension == 'mp3') { mimeType = "audio/mp3"; config.provider = "sound"; } else if(extension == 'm4a') { - mimeType = "audio/m4a"; + mimeType = "audio/mp4"; config.provider = "sound"; } else if(config.file.indexOf('vimeo.com') > -1) { mimeType = "video/vimeo"; - } else if(config.file.indexOf('youtube.com') > -1 || config.file.indexOf('youtube.be') > -1) { + } else if(config.file.indexOf('youtube.com') > -1 || config.file.indexOf('youtu.be') > -1 || config.file.indexOf('youtube.be') > -1) { mimeType = "video/youtube"; } else if(extension.indexOf('mp4?') == 0) { mimeType = "video/mp4"; @@ -246,7 +254,36 @@ var BPlayer = { if(typeof config.repeat != 'undefined' && config.repeat) { content += " loop='loop'"; } - content += " type='" +mimeType + "' src='" + config.file + "'></audio>"; + var objContent = "<object id='" + objectDomId + "' type='application/x-shockwave-flash'"; + if(typeof config.height != 'undefined') { + content += " height='" + config.height + "'"; + objContent += " height='" + config.height + "'"; + meConfig.videoHeight = config.height; + } + if(typeof config.width != 'undefined') { + content += " width='" + config.width + "'"; + objContent += " width='" + config.width + "'"; + meConfig.videoWidth = config.width; + } + if(typeof config.image != 'undefined') { + content += " poster='" + config.image + "'"; + } + content += "><source type='" + mimeType + "' src='" + config.file + "'>"; + + var flashPlayer = "mediaelement-flash-video.swf"; + if(mimeType == "audio/mp3") { + flashPlayer = "mediaelement-flash-audio.swf"; + } else if(mimeType == "audio/ogg") { + flashPlayer = "mediaelement-flash-audio-ogg.swf"; + } + content += objContent + " data='" + mediaElementBaseUrl + flashPlayer + "'>"; + content += "<param name='movie' value='" + mediaElementBaseUrl + flashPlayer + "' />"; + content += "<param name='flashvars' value='controls=true&"; + if(typeof config.streamer != 'undefined') { + content += "&streamer=" + config.streamer; + } + content += "&file=" + config.file + "' /></object>"; + content += "</audio>"; } else { //controls are mandatory for Safari at least content = "<video id='" + mediaDomId + "' controls='controls' preload='none' oncontextmenu='return false;'"; @@ -269,8 +306,8 @@ var BPlayer = { } content += "><source type='" +mimeType + "' src='" + config.file + "' />"; - content += objContent + " data='" + mediaElementBaseUrl + "flashmediaelement.swf'>"; - content += "<param name='movie' value='" + mediaElementBaseUrl + "flashmediaelement.swf' />"; + content += objContent + " data='" + mediaElementBaseUrl + "mediaelement-flash-video.swf'>"; + content += "<param name='movie' value='" + mediaElementBaseUrl + "mediaelement-flash-video.swf' />"; content += "<param name='flashvars' value='controls=true"; if(typeof config.streamer != 'undefined') { content += "&streamer=" + config.streamer; @@ -293,7 +330,21 @@ var BPlayer = { // Now finally add video tags and flash fallback HTML code to DOM and // call player on new video element target.html(content); - jQuery('#' + mediaDomId).mediaelementplayer(meConfig); + + if(mimeType == "video/vimeo") { + var mediaElementBaseUrl = BPlayer._mediaElementBaseUrl(); + var vimeoJs = mediaElementBaseUrl + (BPlayer.debugEnabled ? 'renderers/vimeo.js' : 'renderers/vimeo.min.js'); + jQuery.ajax({ + dataType: 'script', + cache: true, + async: false, //prevent 2x load of the mediaelement.js which is deadly + url: vimeoJs + }).done(function() { + jQuery('#' + mediaDomId).mediaelementplayer(meConfig); + }); + } else { + jQuery('#' + mediaDomId).mediaelementplayer(meConfig); + } }, _mediaElementBaseUrl: function() { diff --git a/src/main/webapp/static/movie/player.min.js b/src/main/webapp/static/movie/player.min.js index 0f4d859eae378710792775957456cf508567ec32..8767757a414647b61db17a6181a4f77921ebc468 100644 --- a/src/main/webapp/static/movie/player.min.js +++ b/src/main/webapp/static/movie/player.min.js @@ -1 +1 @@ -var BPlayer={insertPlayer:function(j,d,c,k,b,e,h,g,l,a,f,i){BPlayer.insertHTML5Player(j,d,c,k,b,e,h,g,l,a,f,i)},insertHTML5Player:function(c,g,l,k,e,a,n,r,p,i,m,j){var f=c;if(c.indexOf("://")<0&&(c.indexOf("/raw/static/")==0||c.indexOf("/secstatic/qtieditor/")>=0||c.indexOf("/secstatic/qti/")>=0)){f=c}else{if(c.indexOf("://")<0&&((n!="rtmp"&&n!="http")||((n=="rtmp"||n=="http")&&(r==undefined||r.length==0)))){var d=document.location.href;f=d.substring(0,d.lastIndexOf("/"));if(c.indexOf("/")!=0){f+="/"}f+=c}}var b={file:f,width:l,height:k,controlbar:{position:"bottom"}};if(typeof n!="undefined"){b.provider=n}if(n=="rtmp"||n=="http"){b.streamer=r}if(typeof e!="undefined"){var h=BPlayer._convertInSeconds(e);if(h>0){b.start=h}}if(typeof a!="undefined"){var q=BPlayer._convertInSeconds(a);if(q>0){b.duration=q}}if(typeof p!="undefined"&&p){b.autostart=true}if(typeof i!="undefined"&&i){b.repeat="single"}if(typeof m!="undefined"&&!m){b.controlbar="none"}if(typeof j!="undefined"){b.image=j}if(BPlayer._needJWPlayerFallback(b)){b.flashplayer=BPlayer._jwPlayerBaseUrl()+"movieViewer.swf";var o=function(){jwplayer(g).setup(b)};BPlayer._loadJWPlayer(o)}else{var o=function(){BPlayer._insertHTML5MediaElementPlayerWorker(g,b)};BPlayer.loadMediaelementJsPlayer(o)}},loadMediaelementJsPlayer:function(d){var a=BPlayer._mediaElementBaseUrl();var c=a+(BPlayer.debugEnabled?"mediaelementplayer.css":"mediaelementplayer.min.css");var b=a+(BPlayer.debugEnabled?"mediaelement-and-player.js":"mediaelement-and-player.min.js");if(jQuery("#mediaelementplayercss").length==0){jQuery("<link>").appendTo("head").attr({id:"mediaelementplayercss",type:"text/css",rel:"stylesheet"}).attr("href",c)}if(typeof jQuery("body").mediaelementplayer!="undefined"){if(d){d()}}else{jQuery.ajax({dataType:"script",cache:true,async:false,url:b}).done(function(){mejs.plugins.flash[0].types.push("audio/aac");if(d){d()}})}},_loadJWPlayer:function(a){if(BPlayer._isIE8()&&domId!="prev_container"&&jQuery("#"+domId).is("span")){alert("This is video is not supported on Internet Explorer 8. Sorry for the inconvenience")}else{jQuery.getScript(BPlayer._jwPlayerBaseUrl()+"player.jw.js",function(){if(a){a()}})}},_needJWPlayerFallback:function(a){if(a.provider=="rtmp"){if(a.file.match(/(.*)\/((flv|mp4|mp3):.*)/)){return false}else{return true}}return false},_insertHTML5MediaElementPlayerWorker:function(e,d){var i=BPlayer._mediaElementBaseUrl();var j={loop:d.repeat,pluginPath:i,flashName:"flashmediaelement.swf",silverlightName:"silverlightmediaelement.xap",features:["playpause","current","volume","progress","duration","speed","fullscreen"],enablePluginDebug:BPlayer.debugEnabled,success:function(l,n,m){if(d.autostart){try{m.load();m.play()}catch(o){if(window.console){console.log(o)}}}l.addEventListener("loadeddata",function(){if(d.start){try{m.setCurrentTime(d.start)}catch(p){if(window.console){console.log(p)}}}})}};var a=null;var k=d.file.split(".").pop().toLowerCase().split("&").shift();if(d.provider=="sound"){if(k=="mp3"){a="audio/mp3"}else{if(k=="aac"){a="audio/aac";j.pluginVars="isvideo=true"}else{if(k=="m4a"){a="audio/m4a"}}}}else{if(d.provider=="youtube"){a="video/youtube"}else{if(d.provider=="vimeo"){a="video/vimeo"}else{if(d.provider=="rtmp"){j.flashStreamer=d.streamer;a="video/rtmp"}else{if(d.provider=="http"){d.enablePseudoStreaming=true;if(k=="flv"){a="video/flv"}else{a="video/mp4"}}else{if(k=="flv"){a="video/flv"}else{if(k=="f4v"){a="video/flv"}else{if(k=="mp4"){a="video/mp4"}else{if(k=="m4v"){a="video/m4v"}else{if(k=="m3u8"){a="application/x-mpegURL"}else{if(k=="aac"){a="audio/aac";d.provider="sound";j.pluginVars="isvideo=true"}else{if(k=="mp3"){a="audio/mp3";d.provider="sound"}else{if(k=="m4a"){a="audio/m4a";d.provider="sound"}else{if(d.file.indexOf("vimeo.com")>-1){a="video/vimeo"}else{if(d.file.indexOf("youtube.com")>-1||d.file.indexOf("youtube.be")>-1){a="video/youtube"}else{if(k.indexOf("mp4?")==0){a="video/mp4"}else{alert("Something go badly wrong!"+d.provider+" "+k)}}}}}}}}}}}}}}}}var h;var c=e+"_oo"+Math.floor(Math.random()*1000000)+"vid";var f=e+"_oo"+Math.floor(Math.random()*1000000)+"obj";if(d.provider=="sound"){if(d.height){j.audioHeight=d.height}if(d.width){j.audioWidth=d.width}h="<audio id='"+c+"' controls='controls' oncontextmenu='return false;'";if(typeof d.repeat!="undefined"&&d.repeat){h+=" loop='loop'"}h+=" type='"+a+"' src='"+d.file+"'></audio>"}else{h="<video id='"+c+"' controls='controls' preload='none' oncontextmenu='return false;'";if(typeof d.repeat!="undefined"&&d.repeat){h+=" loop='loop'"}var b="<object id='"+f+"' type='application/x-shockwave-flash'";if(typeof d.height!="undefined"){h+=" height='"+d.height+"'";b+=" height='"+d.height+"'";j.videoHeight=d.height}if(typeof d.width!="undefined"){h+=" width='"+d.width+"'";b+=" width='"+d.width+"'";j.videoWidth=d.width}if(typeof d.image!="undefined"){h+=" poster='"+d.image+"'"}h+="><source type='"+a+"' src='"+d.file+"' />";h+=b+" data='"+i+"flashmediaelement.swf'>";h+="<param name='movie' value='"+i+"flashmediaelement.swf' />";h+="<param name='flashvars' value='controls=true";if(typeof d.streamer!="undefined"){h+="&streamer="+d.streamer}h+="&file="+d.file+"' /></object></video>"}var g=jQuery("#"+e);g.css({height:"auto"});if(jQuery(window).width()<=d.width){g.css({width:"auto"})}g.html(h);jQuery("#"+c).mediaelementplayer(j)},_mediaElementBaseUrl:function(){var a=BPlayer._findBaseUrl(window);if(a==null){a="/olat/raw/_noversion_/"}a+="movie/mediaelementjs/";return a},_isIE8:function(){return(jQuery.support.opacity==false)},_jwPlayerBaseUrl:function(){var a=BPlayer._findBaseUrl(window);if(a==null){a="/olat/raw/_noversion_/"}a+="movie/jw/";return a},_findBaseUrl:function(a){if(a.o_info){return a.o_info.o_baseURI}else{if(a.opener){return BPlayer._findBaseUrl(a.opener)}else{if(a.parent){return BPlayer._findBaseUrl(a.parent)}else{return null}}}},_convertInSeconds:function(d){if(typeof d=="undefined"||d==null){return 0}if(!d.length){return d}if(d.length==0){return 0}if(d.indexOf(".")>0){d=d.substring(0,d.indexOf("."))}var e=d.lastIndexOf(":");if(e>0){var c=d.substring(e+1,d.length);var a=parseInt(c);d=d.substring(0,e);e=d.lastIndexOf(":");if(e>0){var b=d.substring(e+1,d.length);a+=60*parseInt(b)}d=d.substring(0,e);if(d.length>0){a+=60*60*parseInt(d)}return a}else{return d}},_isOODebug:function(a){if(a.o_info){return a.o_info.debug}else{if(a.opener){return BPlayer._isOODebug(a.opener)}else{if(a.parent){return BPlayer._isOODebug(a.parent)}else{return false}}}}};BPlayer.debugEnabled=BPlayer._isOODebug(window); \ No newline at end of file +var BPlayer={insertPlayer:function(j,d,c,k,b,e,h,g,l,a,f,i){BPlayer.insertHTML5Player(j,d,c,k,b,e,h,g,l,a,f,i)},insertHTML5Player:function(c,g,l,k,e,a,n,r,p,i,m,j){var f=c;if(c.indexOf("://")<0&&(c.indexOf("/raw/static/")==0||c.indexOf("/secstatic/qtieditor/")>=0||c.indexOf("/secstatic/qti/")>=0)){f=c}else{if(c.indexOf("://")<0&&((n!="rtmp"&&n!="http")||((n=="rtmp"||n=="http")&&(r==undefined||r.length==0)))){var d=document.location.href;f=d.substring(0,d.lastIndexOf("/"));if(c.indexOf("/")!=0){f+="/"}f+=c}}var b={file:f,width:l,height:k,controlbar:{position:"bottom"}};if(typeof n!="undefined"){b.provider=n}if(n=="rtmp"||n=="http"){b.streamer=r}if(typeof e!="undefined"){var h=BPlayer._convertInSeconds(e);if(h>0){b.start=h}}if(typeof a!="undefined"){var q=BPlayer._convertInSeconds(a);if(q>0){b.duration=q}}if(typeof p!="undefined"&&p){b.autostart=true}if(typeof i!="undefined"&&i){b.repeat="single"}if(typeof m!="undefined"&&!m){b.controlbar="none"}if(typeof j!="undefined"){b.image=j}if(BPlayer._needJWPlayerFallback(b)){b.flashplayer=BPlayer._jwPlayerBaseUrl()+"movieViewer.swf";var o=function(){jwplayer(g).setup(b)};BPlayer._loadJWPlayer(o)}else{var o=function(){BPlayer._insertHTML5MediaElementPlayerWorker(g,b)};BPlayer.loadMediaelementJsPlayer(o)}},loadMediaelementJsPlayer:function(d){var a=BPlayer._mediaElementBaseUrl();var c=a+(BPlayer.debugEnabled?"mediaelementplayer.css":"mediaelementplayer.min.css");var b=a+(BPlayer.debugEnabled?"mediaelement-and-player.js":"mediaelement-and-player.min.js");if(jQuery("#mediaelementplayercss").length==0){jQuery("<link>").appendTo("head").attr({id:"mediaelementplayercss",type:"text/css",rel:"stylesheet"}).attr("href",c)}if(typeof jQuery("body").mediaelementplayer!="undefined"){if(d){d()}}else{jQuery.ajax({dataType:"script",cache:true,async:false,url:b}).done(function(){if(d){d()}})}},_loadJWPlayer:function(a){if(BPlayer._isIE8()&&domId!="prev_container"&&jQuery("#"+domId).is("span")){alert("This is video is not supported on Internet Explorer 8. Sorry for the inconvenience")}else{jQuery.getScript(BPlayer._jwPlayerBaseUrl()+"player.jw.js",function(){if(a){a()}})}},_needJWPlayerFallback:function(a){if(a.provider=="rtmp"){if(a.file.match(/(.*)\/((flv|mp4|mp3):.*)/)){return false}else{return true}}return false},_insertHTML5MediaElementPlayerWorker:function(e,d){var j=BPlayer._mediaElementBaseUrl();var k={loop:d.repeat,pluginPath:j,stretching:"responsive",hls:{path:j+"hls/hls.min.js"},flv:{path:j+"flv/flv.min.js"},success:function(n,p,o){if(d.autostart){try{o.load();o.play()}catch(q){if(window.console){console.log(q)}}}if(d.start){var r=true;if(!d.autostart){o.play()}n.addEventListener("loadedmetadata",function(){try{o.setCurrentTime(d.start);if(!d.autostart&&r){r=true;o.pause()}}catch(s){if(window.console){console.log(s)}}})}}};var a=null;var m=d.file.split(".").pop().toLowerCase().split("&").shift();if(d.provider=="sound"){if(m=="mp3"){a="audio/mp3"}else{if(m=="aac"){a="audio/aac"}else{if(m=="m4a"){a="audio/mp4"}}}}else{if(d.provider=="youtube"){a="video/youtube"}else{if(d.provider=="vimeo"){a="video/vimeo"}else{if(d.provider=="rtmp"){k.flashStreamer=d.streamer;a="video/rtmp"}else{if(d.provider=="http"){d.enablePseudoStreaming=true;if(m=="flv"){a="video/flv"}else{a="video/mp4"}}else{if(m=="flv"){a="video/flv"}else{if(m=="f4v"){a="video/flv"}else{if(m=="mp4"){a="video/mp4"}else{if(m=="m4v"){a="video/m4v"}else{if(m=="m3u8"){a="application/x-mpegURL"}else{if(m=="aac"){a="audio/mp4";d.provider="sound"}else{if(m=="mp3"){a="audio/mp3";d.provider="sound"}else{if(m=="m4a"){a="audio/mp4";d.provider="sound"}else{if(d.file.indexOf("vimeo.com")>-1){a="video/vimeo"}else{if(d.file.indexOf("youtube.com")>-1||d.file.indexOf("youtu.be")>-1||d.file.indexOf("youtube.be")>-1){a="video/youtube"}else{if(m.indexOf("mp4?")==0){a="video/mp4"}else{alert("Something go badly wrong!"+d.provider+" "+m)}}}}}}}}}}}}}}}}var i;var c=e+"_oo"+Math.floor(Math.random()*1000000)+"vid";var f=e+"_oo"+Math.floor(Math.random()*1000000)+"obj";if(d.provider=="sound"){if(d.height){k.audioHeight=d.height}if(d.width){k.audioWidth=d.width}i="<audio id='"+c+"' controls='controls' oncontextmenu='return false;'";if(typeof d.repeat!="undefined"&&d.repeat){i+=" loop='loop'"}var b="<object id='"+f+"' type='application/x-shockwave-flash'";if(typeof d.height!="undefined"){i+=" height='"+d.height+"'";b+=" height='"+d.height+"'";k.videoHeight=d.height}if(typeof d.width!="undefined"){i+=" width='"+d.width+"'";b+=" width='"+d.width+"'";k.videoWidth=d.width}if(typeof d.image!="undefined"){i+=" poster='"+d.image+"'"}i+="><source type='"+a+"' src='"+d.file+"'>";var g="mediaelement-flash-video.swf";if(a=="audio/mp3"){g="mediaelement-flash-audio.swf"}else{if(a=="audio/ogg"){g="mediaelement-flash-audio-ogg.swf"}}i+=b+" data='"+j+g+"'>";i+="<param name='movie' value='"+j+g+"' />";i+="<param name='flashvars' value='controls=true&";if(typeof d.streamer!="undefined"){i+="&streamer="+d.streamer}i+="&file="+d.file+"' /></object>";i+="</audio>"}else{i="<video id='"+c+"' controls='controls' preload='none' oncontextmenu='return false;'";if(typeof d.repeat!="undefined"&&d.repeat){i+=" loop='loop'"}var b="<object id='"+f+"' type='application/x-shockwave-flash'";if(typeof d.height!="undefined"){i+=" height='"+d.height+"'";b+=" height='"+d.height+"'";k.videoHeight=d.height}if(typeof d.width!="undefined"){i+=" width='"+d.width+"'";b+=" width='"+d.width+"'";k.videoWidth=d.width}if(typeof d.image!="undefined"){i+=" poster='"+d.image+"'"}i+="><source type='"+a+"' src='"+d.file+"' />";i+=b+" data='"+j+"mediaelement-flash-video.swf'>";i+="<param name='movie' value='"+j+"mediaelement-flash-video.swf' />";i+="<param name='flashvars' value='controls=true";if(typeof d.streamer!="undefined"){i+="&streamer="+d.streamer}i+="&file="+d.file+"' /></object></video>"}var h=jQuery("#"+e);h.css({height:"auto"});if(jQuery(window).width()<=d.width){h.css({width:"auto"})}h.html(i);if(a=="video/vimeo"){var j=BPlayer._mediaElementBaseUrl();var l=j+(BPlayer.debugEnabled?"renderers/vimeo.js":"renderers/vimeo.min.js");jQuery.ajax({dataType:"script",cache:true,async:false,url:l}).done(function(){jQuery("#"+c).mediaelementplayer(k)})}else{jQuery("#"+c).mediaelementplayer(k)}},_mediaElementBaseUrl:function(){var a=BPlayer._findBaseUrl(window);if(a==null){a="/olat/raw/_noversion_/"}a+="movie/mediaelementjs/";return a},_isIE8:function(){return(jQuery.support.opacity==false)},_jwPlayerBaseUrl:function(){var a=BPlayer._findBaseUrl(window);if(a==null){a="/olat/raw/_noversion_/"}a+="movie/jw/";return a},_findBaseUrl:function(a){if(a.o_info){return a.o_info.o_baseURI}else{if(a.opener){return BPlayer._findBaseUrl(a.opener)}else{if(a.parent){return BPlayer._findBaseUrl(a.parent)}else{return null}}}},_convertInSeconds:function(d){if(typeof d=="undefined"||d==null){return 0}if(!d.length){return d}if(d.length==0){return 0}if(d.indexOf(".")>0){d=d.substring(0,d.indexOf("."))}var e=d.lastIndexOf(":");if(e>0){var c=d.substring(e+1,d.length);var a=parseInt(c);d=d.substring(0,e);e=d.lastIndexOf(":");if(e>0){var b=d.substring(e+1,d.length);a+=60*parseInt(b)}d=d.substring(0,e);if(d.length>0){a+=60*60*parseInt(d)}return a}else{return d}},_isOODebug:function(a){if(a.o_info){return a.o_info.debug}else{if(a.opener){return BPlayer._isOODebug(a.opener)}else{if(a.parent){return BPlayer._isOODebug(a.parent)}else{return false}}}}};BPlayer.debugEnabled=BPlayer._isOODebug(window); \ No newline at end of file diff --git a/src/main/webapp/static/offline/qti/theme.css b/src/main/webapp/static/offline/qti/theme.css index 8abcb019f48bfd970c0b0dacf31c6692e73a9704..426ab5b5083f45a47406b3708af12abd23a7c616 100644 --- a/src/main/webapp/static/offline/qti/theme.css +++ b/src/main/webapp/static/offline/qti/theme.css @@ -22,5 +22,5 @@ * @author gnaegi, www.frentix.com * @date April. 2014 * ======================================================== -**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn,.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,.form-group-sm .form-control,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn,.form-group-sm .form-control{height:auto}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn,.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,.form-group-lg .form-control,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn,.form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table,.panel-collapse>.table,.panel-collapse>.table-responsive>.table,.panel-collapse>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption,.panel-collapse>.table caption,.panel-collapse>.table-responsive>.table caption,.panel-collapse>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel-collapse>.table:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child,.panel-collapse>.table:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,.panel-collapse>.panel-body+.table,.panel-collapse>.panel-body+.table-responsive,.panel-collapse>.table+.panel-body,.panel-collapse>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.panel-collapse>.table>tbody:first-child>tr:first-child th,.panel-collapse>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,.panel-collapse>.table-bordered,.panel-collapse>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.panel-collapse>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:1.42857;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.panel .panel-heading[data-toggle="collapse"]{cursor:pointer}#o_ajax_busy_backdrop{bottom:0;z-index:1020}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}.btn.btn-primary.o_disabled{color:#fff !important}body .progress-bar[aria-valuenow="1"],body .progress-bar[aria-valuenow="2"]{min-width:1px}td.text-left>div.form-inline>label.checkbox-inline>input[type='checkbox']{position:relative}@-moz-document url-prefix(){fieldset{display:table-cell}}@font-face{font-family:'openolat';src:url("../light/fonts/openolat/openolat.eot?4yacgg");src:url("../light/fonts/openolat/openolat.eot?#iefix4yacgg") format("embedded-opentype"),url("../light/fonts/openolat/openolat.woff?4yacgg") format("woff"),url("../light/fonts/openolat/openolat.ttf?4yacgg") format("truetype"),url("../light/fonts/openolat/openolat.svg?4yacgg#openolat") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot?v=4.5.0");src:url("../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.5.0") format("embedded-opentype"),url("../../font-awesome/fonts/fontawesome-webfont.woff2?v=4.5.0") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff?v=4.5.0") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.5.0") format("truetype"),url("../../font-awesome/fonts/fontawesome-webfont.svg?v=4.5.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.28571em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.o_icon-li.o_icon-lg{left:-1.85714em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.o_icon-pull-left{float:left}.o_icon-pull-right{float:right}.o_icon.o_icon-pull-left{margin-right:.3em}.o_icon.o_icon-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.o_icon-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .o_icon-rotate-90,:root .o_icon-rotate-180,:root .o_icon-rotate-270,:root .o_icon-flip-horizontal,:root .o_icon-flip-vertical{filter:none}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_accepted:before{content:"ï…¤"}.o_icon_accessibility:before{content:""}.o_icon_actions:before{content:"ï‚…"}.o_icon_archive_tool:before{content:""}.o_icon_assessment_mode:before{content:"ï„"}.o_icon_assessment_tool:before{content:"ï‚‘"}.o_icon_attempt_limit:before{content:""}.o_icon_accept:before{content:"";color:#5cb85c}.o_icon_add:before{content:"ï•"}.o_icon_add_member:before{content:""}.o_icon_add_search:before{content:""}.o_icon_audio:before{content:""}.o_icon_back:before{content:"ï“"}.o_icon_back_history:before{content:""}.o_icon_banned:before{content:"";color:#d9534f}.o_icon_bold:before{content:""}.o_icon_booking:before{content:"ïº"}.o_icon_bookmark:before{content:"";color:#bc2d0c}.o_icon_bookmark_add:before{content:"ï‚—"}.o_icon_bookmark_header:before{content:""}.o_icon_browse:before{content:""}.o_icon_browsercheck:before{content:"ï…¤"}.o_icon_busy:before{content:"ï„"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_enabled:before{content:"ï†"}.o_icon_calendar_disabled:before{content:"ï‚–"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_sync:before{content:""}.o_icon_caret:before{content:""}.o_icon_caret_right:before{content:""}.o_icon_catalog:before{content:""}.o_icon_catalog_sub:before{content:"ï»"}.o_icon_certificate:before{content:"ï‚£"}.o_icon_chat:before{content:""}.o_icon_check:before{content:""}.o_icon_check_off:before{content:"ï‚–"}.o_icon_check_on:before{content:"ï†"}.o_icon_checkbox:before{content:"ï‚–"}.o_icon_checkbox_checked:before{content:"ï…Š"}.o_icon_cleanup:before{content:""}.o_icon_close:before{content:"ï€"}.o_icon_close_resource:before{content:""}.o_icon_close_tab:before{content:"ï€"}.o_icon_close_tool:before{content:"ï€"}.o_icon_close_tree:before{content:""}.o_icon_close_togglebox:before{content:""}.o_icon_code:before{content:"ï„¡"}.o_icon_color_picker:before{content:"ïƒ"}.o_icon_copy:before{content:""}.o_icon_courseareas:before{content:""}.o_icon_coursedb:before{content:""}.o_icon_courseeditor:before{content:"ï„"}.o_icon_coursefolder:before{content:"ï„”"}.o_icon_courserun:before{content:""}.o_icon_comments:before{content:""}.o_icon_comments_none:before{content:""}.o_icon_content_popup:before{content:""}.o_icon_correct_answer:before{content:"";color:#5cb85c}.o_icon_customize:before{content:""}.o_icon_delete_item:before{content:""}.o_icon_delete:before{content:"ï–";color:#A87E7E}.o_icon_details:before{content:""}.o_icon_description:before{content:"ïš"}.o_icon_dev:before{content:""}.o_icon_disabled:before{content:""}.o_icon_download:before{content:""}.o_icon_edit:before{content:"ï„"}.o_icon_edit_file:before{content:"ï„"}.o_icon_edit_metadata:before{content:""}.o_icon_enabled:before{content:"ï„‘"}.o_icon_enlarge:before{content:""}.o_icon_eportfolio_add:before{content:"ï„®"}.o_icon_eportfolio_link:before{content:"ï„®"}.o_icon_error:before{content:"ïª";color:#d9534f}.o_icon_expenditure:before{content:""}.o_icon_export:before{content:"ï…"}.o_icon_external_link:before{content:""}.o_icon_failed:before{content:"ï—"}.o_icon_filter:before{content:"ï‚°"}.o_icon_graduate:before{content:"ï†"}.o_icon_group:before,.o_BusinessGroup_icon:before{content:""}.o_icon_header:before{content:""}.o_icon_help:before{content:"ï™";cursor:help}.o_icon_home:before{content:""}.o_icon_impress:before{content:"ïš"}.o_icon_important:before{content:"ï±";color:#f0ad4e}.o_icon_import:before{content:"ï‚“"}.o_icon_info:before{content:"ïš";color:#5bc0de}.o_icon_info_msg:before{content:"ïª";color:#d9534f}.o_icon_info_resource:before{content:"ïš"}.o_icon_inline_editable:before{content:"ï„"}.o_icon_institution:before{content:""}.o_icon_italic:before{content:""}.o_icon_landingpage:before{content:"ï…€"}.o_icon_language:before{content:""}.o_icon_layout:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_link_extern:before{content:""}.o_icon_list:before{content:""}.o_icon_list_num:before{content:""}.o_icon_lifecycle:before{content:""}.o_icon_lifecycle_date:before{content:"ï³"}.o_icon_locked:before{content:""}.o_icon_login:before{content:"ï‚"}.o_icon_logout:before{content:"ï‚‹"}.o_icon_mandatory:before{content:"ï©";color:#f0ad4e}.o_icon_managed:before{content:"ï¹";color:#777}.o_icon_manual:before{content:"ï€";cursor:help}.o_icon_mail:before{content:""}.o_icon_math:before{content:""}.o_icon_membersmanagement:before{content:""}.o_icon_menuhandel:before{content:""}.o_icon_message:before{content:"ïƒ "}.o_icon_mobile:before{content:"ï„‹"}.o_icon_move:before{content:"ï‡"}.o_icon_move_down:before{content:""}.o_icon_move_left:before{content:"ï„€"}.o_icon_move_right:before{content:"ï„"}.o_icon_move_up:before{content:"ï„‚"}.o_icon_new:before{content:"ï©";color:#5cb85c}.o_icon_new_document:before{content:"ï…œ"}.o_icon_new_folder:before{content:"ï»"}.o_icon_news:before{content:"ïš"}.o_icon_next:before{content:""}.o_icon_next_page:before{content:"ï„"}.o_icon_next_toolbar:before{content:""}.o_icon_node_after:before{content:"ï…µ"}.o_icon_node_before:before{content:"ï…¶"}.o_icon_node_under:before{content:"ï„’"}.o_icon_notes:before{content:""}.o_icon_notification:before{content:""}.o_icon_ok:before{content:"";color:#5cb85c}.o_icon_open_tree:before{content:""}.o_icon_open_togglebox:before{content:""}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\E600";font-family:openolat;font-size:10px}.o_icon_options:before{content:""}.o_icon_pageing:before{content:"ï…"}.o_icon_passed:before{content:"ï˜"}.o_icon_password:before{content:""}.o_icon_pending:before{content:"ï„"}.o_icon_phone:before{content:"ï‚•"}.o_icon_post:before{content:""}.o_icon_preview:before{content:"ï®"}.o_icon_previous:before{content:"ï„·"}.o_icon_previous_page:before{content:"ï„€"}.o_icon_previous_toolbar:before{content:""}.o_icon_print:before{content:""}.o_icon_private:before{content:""}.o_icon_provider_adfs:before{content:"ï…º"}.o_icon_provider_facebook:before{content:""}.o_icon_provider_google:before{content:""}.o_icon_provider_guest:before{content:""}.o_icon_provider_ldap:before{content:""}.o_icon_provider_linkedin:before{content:""}.o_icon_provider_oauth:before{content:""}.o_icon_provider_openid:before{content:""}.o_icon_provider_performx:before{content:""}.o_icon_provider_shibboleth:before{content:""}.o_icon_provider_twitter:before{content:"ï‚™"}.o_icon_publish:before{content:"ï¤"}.o_icon_qrcode:before{content:""}.o_icon_quickview:before{content:"ï®"}.o_icon_radio_off:before{content:""}.o_icon_radio_on:before{content:"ï"}.o_icon_rating_on:before{content:""}.o_icon_rating_off:before{content:""}.o_icon_read:before{content:""}.o_icon_readonly:before{content:"ï„";color:red}.o_icon_readwrite:before{content:"ï„"}.o_icon_recycle:before{content:""}.o_icon_refresh:before{content:""}.o_icon_reject:before{content:"ï€";color:#d9534f}.o_icon_rejected:before{content:"ï…¥"}.o_icon_reminder:before{content:""}.o_icon_remove:before{content:"ï€"}.o_icon_replace:before{content:""}.o_icon_reply:before{content:"ï„’"}.o_icon_reply_with_quote:before{content:"ï„¢"}.o_icon_response_feedback:before{content:""}.o_icon_review:before{content:"ï®"}.o_icon_rss:before{content:""}.o_icon_rss_unsubscribe:before{content:"";color:#996633}.o_icon_search:before{content:""}.o_icon_select:before{content:""}.o_icon_send:before{content:"ïƒ "}.o_icon_settings:before{content:"ï‚…"}.o_icon_share:before{content:"ï¤"}.o_icon_show_more:before{content:"ï…"}.o_icon_show_less:before{content:"ï…‘"}.o_icon_show_send:before{content:""}.o_icon_sign_out:before{content:"ï‚‹"}.o_icon_spacer:before{content:"ï¾"}.o_icon_split:before{content:"ï„§"}.o_icon_sort:before{content:""}.o_icon_sort_asc:before{content:""}.o_icon_sort_desc:before{content:"ïƒ"}.o_icon_sort_amount_asc:before{content:"ï… "}.o_icon_sort_amount_desc:before{content:"ï…¡"}.o_icon_sort_menu:before{content:"ï… "}.o_icon_start:before{content:"ï”"}.o_icon_status_available:before{content:"ï„‘";color:#063}.o_icon_status_chat:before{content:"ïµ"}.o_icon_status_dnd:before{content:"";color:#cc3}.o_icon_status_unavailable:before{content:"ïœ";color:#963}.o_icon_statistics_tool:before{content:"ï‚€"}.o_icon_submit:before{content:""}.o_icon_table:before{content:""}.o_icon_table_large:before{content:""}.o_icon_tags:before{content:""}.o_icon_timelimit:before{content:""}.o_icon_toggle:before{content:"ï„‘"}.o_icon_to_read:before{content:"ï„‘"}.o_icon_tool:before{content:""}.o_icon_tools:before{content:"ï‚"}.o_icon_top:before{content:"ï·"}.o_icon_translation_item:before{content:""}.o_icon_translation_package:before{content:"ï„•"}.o_icon_user:before{content:""}.o_icon_user_vip:before{content:"ï†"}.o_icon_user_anonymous:before{content:""}.o_icon_upload:before{content:"ï‚“"}.o_icon_version:before{content:""}.o_icon_video:before{content:""}.o_icon_visitingcard.o_icon_waiting:before{content:""}.o_icon_warn:before{content:"ï±";color:#f0ad4e}.o_icon_wizard:before{content:"ïƒ"}.o_icon_xing:before{content:"ï…¨";color:#cfdc00}.o_CourseModule_icon:before,.o_course_icon:before{content:""}.o_EPStructuredMapTemplate_icon:before{content:"ï„®"}.o_FileResource-BLOG_icon:before{content:"ï‚¡"}.o_FileResource-IMSCP_icon:before{content:""}.o_FileResource-PODCAST_icon:before{content:""}.o_FileResource-SHAREDFOLDER:before{content:""}.o_FileResource-SCORMCP_icon:before{content:""}.o_FileResource-SURVEY_icon:before{content:""}.o_FileResource-TEST_icon:before{content:"ï„"}.o_FileResource-WIKI_icon:before{content:""}.o_FileResource-SHAREDFOLDER_icon:before{content:"ï„•"}.o_FileResource-GLOSSARY_icon:before{content:"ï†"}.o_FileResource-PDF_icon:before{content:"ï‡"}.o_FileResource-XLS_icon:before{content:""}.o_FileResource-PPT_icon:before{content:""}.o_FileResource-DOC_icon:before{content:""}.o_FileResource-ANIM_icon:before{content:""}.o_FileResource-IMAGE_icon:before{content:""}.o_FileResource-SOUND_icon:before{content:""}.o_FileResource-MOVIE_icon:before{content:""}.o_FileResource-FILE_icon:before{content:""}.o_FileResource-VIDEO_icon:before{content:""}.o_CourseModule_icon_closed:before{content:"ïž"}.o_sp_icon:before{content:""}.o_st_icon:before{content:""}.o_tu_icon:before{content:""}.o_bc_icon:before{content:"ï„•"}.o_lti_icon:before{content:""}.o_cp_icon:before{content:""}.o_cp_item:before{content:""}.o_scorm_icon:before{content:""}.o_en_icon:before{content:"ï‚"}.o_fo_icon:before{content:""}.o_co_icon:before{content:""}.o_infomsg_icon:before{content:"ïš"}.o_cal_icon:before{content:"ï³"}.o_wiki_icon:before{content:""}.o_podcast_icon:before{content:""}.o_blog_icon:before{content:"ï‚¡"}.o_ep_icon:before{content:"ï„®"}.o_iqtest_icon:before{content:"ï„"}.o_iqself_icon:before{content:"ï„"}.o_iqsurv_icon:before{content:""}.o_ta_icon:before{content:"ï‚®"}.o_gta_icon:before{content:"ï‚®"}.o_ms_icon:before{content:""}.o_dialog_icon:before{content:""}.o_projectbroker_icon:before{content:""}.o_ll_icon:before{content:"ïƒ"}.o_den_icon:before{content:""}.o_cmembers_icon:before{content:""}.o_cl_icon:before{content:"ï†"}.o_vc_icon:before{content:""}.o_video_icon:before{content:""}.o_vitero_icon:before{content:""}.o_openmeetings_icon:before{content:""}.o_gotomeeting_icon:before{content:""}.o_portlet_infomsg_icon:before{content:"ïš"}.o_portlet_quickstart_icon:before{content:""}.o_portlet_bookmark_icon:before{content:""}.o_portlet_groups_icon:before{content:""}.o_portlet_notes_icon:before{content:""}.o_portlet_noti_icon:before{content:""}.o_portlet_eff_icon:before{content:"ï‚£"}.o_portlet_repository_student_icon:before{content:""}.o_portlet_repository_teacher_icon:before{content:"ï†"}.o_portlet_iframe_icon:before{content:""}.o_portlet_sysinfo_icon:before{content:""}.o_portlet_dyk_icon:before{content:""}.o_portlet_infomessages_icon:before{content:""}.o_portlet_cal_icon:before{content:"ï³"}.o_portlet_institutions_icon:before{content:""}.o_portlet_links_icon:before{content:"ïƒ"}.o_portlet_shibboleth_icon:before{content:"ï‚"}.o_icon_qpool:before{content:""}.o_icon_pool_private:before{content:"ï‚–"}.o_icon_pool_public:before{content:"ï†"}.o_icon_pool_my_items:before{content:""}.o_icon_pool_favorits:before{content:""}.o_icon_pool_collection:before{content:""}.o_icon_pool_pool:before{content:""}.o_icon_pool_share:before{content:""}.o_forum_message_icon:before{content:""}.o_calendar_icon:before{content:"ï³"}.o_forum_status_thread_icon:before{content:""}.o_forum_status_sticky_closed_icon:before{content:"ïž"}.o_forum_status_sticky_icon:before{content:""}.o_forum_status_closed_icon:before{content:"ïž";color:#a94442}.o_forum_status_opened_icon:before{content:"ïž";color:#3c763d}.o_forum_status_hidden_icon:before{content:"ï°";color:#a94442}.o_forum_status_visible_icon:before{content:"ï®";color:#3c763d}.o_forum_all_icon:before{content:""}.o_forum_all_flat_icon:before{content:""}.o_forum_one_icon:before{content:"ï®"}.o_forum_marked_icon:before{content:""}.o_forum_new_icon:before{content:"ï©"}.o_mi_qpool_import:before{content:""}.o_mi_qtisection:before{content:""}.o_mi_qtisc:before{content:""}.o_mi_qtimc:before{content:"ï†"}.o_mi_qtikprim:before{content:"ï…Š"}.o_mi_qtifib:before{content:"ï…"}.o_mi_qtiessay:before{content:""}.o_as_mode_leadtime:before{content:""}.o_as_mode_assessment:before{content:"ï‹"}.o_as_mode_followup:before{content:"ïž"}.o_as_mode_closed:before{content:'-'}.o_black_led:before{content:"ï„‘";color:#337ab7}.o_green_led:before{content:"ï„‘";color:#5cb85c}.o_yellow_led:before{content:"ï„‘";color:#f0ad4e}.o_red_led:before{content:"ï„‘";color:#d9534f}.o_ac_token_icon:before{content:"ï‚„"}.o_ac_free_icon:before{content:"ï«"}.o_ac_group_icon:before{content:""}.o_ac_membersonly_icon:before{content:""}.o_ac_paypal_icon:before{content:""}.o_ac_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_status_succes_icon:before{content:"";color:#5cb85c}.o_ac_status_waiting_icon:before{content:"";color:#337ab7}.o_ac_order_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_order_status_prepayment_icon:before{content:"";color:#5bc0de}.o_ac_order_status_payed_icon:before{content:"";color:#5cb85c}.o_ac_order_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_order_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_order_status_warning_icon:before{content:"";color:#f0ad4e}.o_scorm_org:before{content:""}.o_scorm_item:before{content:""}.o_scorm_completed:before,.o_scorm_passed:before{content:"ï˜"}.o_scorm_failed:before{content:"ï±"}.o_scorm_incomplete:before{content:"ï±"}.o_scorm_not_attempted:before{background:none}.o_midpub:before{content:"ï˜"}.o_midwarn:before{content:"ï±"}.o_midlock:before{content:""}.o_miderr:before{content:"ïª"}.o_middel:before{content:"ï„"}.o_filetype_file:before,.o_filetype_ico:before{content:""}.o_filetype_folder:before{content:"ï„”"}.o_filetype_folder_open:before{content:"ï„•"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:""}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:""}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:""}.o_filetype_xls:before,.o_filetype_xlsx:before{content:""}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:""}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:""}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:""}.o_filetype_ps:before,.o_filetype_pdf:before{content:"ï‡"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:""}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:""}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:""}.o_icon_share_social:before{content:"ï…"}.o_icon_apple:before{content:"ï…¹"}.o_icon_facebook:before{content:"ï‚‚"}.o_icon_twitter:before{content:"ï‚"}.o_icon_google:before{content:""}.o_icon_delicious:before{content:""}.o_icon_digg:before{content:""}.o_icon_mailto:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_yahoo:before{content:""}a.o_icon:hover,a.o_icon:focus{text-decoration:none}.o_block_bottom,.o_block,.o_button_group,.o_header_with_buttons{margin-bottom:1em}.o_block_top,.o_block,.o_button_group{margin-top:1em}.o_block_large_bottom,.o_block_large{margin-bottom:2em}.o_block_large_top,.o_block_large{margin-top:2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h3,.o_header_with_buttons h4{display:inline-block}.o_header_with_buttons .o_button_group{margin-top:10px;margin-bottom:0;float:right}.panel-heading.o_header_with_buttons{margin-bottom:0}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#78acd9;border-radius:10px}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-top:none;border-left:none;border-right:none;color:#337ab7;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:12px}.o_small,.b_small,p.b_small,div.b_small{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:18px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,.o_disabled:focus,.b_disabled:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_info,.b_info,p.b_info,div.b_info,div.o_qti_item_itemfeedback{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info h5,.b_info h2,div.o_qti_item_itemfeedback h2,.b_info h3,div.o_qti_item_itemfeedback h3,.b_info h4,div.o_qti_item_itemfeedback h4,.b_info h5,div.o_qti_item_itemfeedback h5{color:#777}.o_note,.b_note,p.b_note,div.b_note{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note h5,.b_note h2,.b_note h3,.b_note h4,.b_note h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important h5,.b_important h2,.b_important h3,.b_important h4,.b_important h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success h5,.b_success h2,.b_success h3,.b_success h4,.b_success h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning h5,.b_warning h2,.b_warning h3,.b_warning h4,.b_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error h5,.b_error h2,.b_error h3,.b_error h4,.b_error h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.o_user_content_block a{color:#337ab7;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#23527c;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:1px 5px;border:1px solid #777}table.b_grid th{background:#eee}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:1px 5px;border:1px solid #777}table.b_border th{background:#eee}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:1px 5px;border:0}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#337ab7}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_mailto{color:#337ab7}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#337ab7}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}span.olatFlashMovieViewer{max-width:100% !important;border:none !important}.mejs-container,.mejs-mediaelement video,.mejs-layers div,.me-cannotplay{max-width:100%}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#337ab7}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}.o_page_margins{padding-top:25px;padding-bottom:25px;padding-left:25px;padding-right:25px}#o_main{margin-top:25px} +**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#fafafa;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn,.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,.form-group-sm .form-control,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn,.form-group-sm .form-control{height:auto}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn,.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,.form-group-lg .form-control,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn,.form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table,.panel-collapse>.table,.panel-collapse>.table-responsive>.table,.panel-collapse>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption,.panel-collapse>.table caption,.panel-collapse>.table-responsive>.table caption,.panel-collapse>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel-collapse>.table:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child,.panel-collapse>.table:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,.panel-collapse>.panel-body+.table,.panel-collapse>.panel-body+.table-responsive,.panel-collapse>.table+.panel-body,.panel-collapse>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.panel-collapse>.table>tbody:first-child>tr:first-child th,.panel-collapse>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,.panel-collapse>.table-bordered,.panel-collapse>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.panel-collapse>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:1.42857;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.panel .panel-heading[data-toggle="collapse"]{cursor:pointer}#o_ajax_busy_backdrop{bottom:0;z-index:1020}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}.btn.btn-primary.o_disabled{color:#fff !important}body .progress-bar[aria-valuenow="1"],body .progress-bar[aria-valuenow="2"]{min-width:1px}td.text-left>div.form-inline>label.checkbox-inline>input[type='checkbox']{position:relative}@-moz-document url-prefix(){fieldset{display:table-cell}}@font-face{font-family:'openolat';src:url("../light/fonts/openolat/openolat.eot?4yacgg");src:url("../light/fonts/openolat/openolat.eot?#iefix4yacgg") format("embedded-opentype"),url("../light/fonts/openolat/openolat.woff?4yacgg") format("woff"),url("../light/fonts/openolat/openolat.ttf?4yacgg") format("truetype"),url("../light/fonts/openolat/openolat.svg?4yacgg#openolat") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../../font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../../font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.28571em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.o_icon-li.o_icon-lg{left:-1.85714em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.o_icon-pull-left{float:left}.o_icon-pull-right{float:right}.o_icon.o_icon-pull-left{margin-right:.3em}.o_icon.o_icon-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.o_icon-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .o_icon-rotate-90,:root .o_icon-rotate-180,:root .o_icon-rotate-270,:root .o_icon-flip-horizontal,:root .o_icon-flip-vertical{filter:none}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_accepted:before{content:"ï…¤"}.o_icon_accessibility:before{content:""}.o_icon_actions:before{content:"ï‚…"}.o_icon_add_html:before{content:"ï„¡"}.o_icon_archive_tool:before{content:""}.o_icon_assessment_mode:before{content:"ï„"}.o_icon_assessment_tool:before{content:"ï‚‘"}.o_icon_assignment:before{content:"";color:#d9534f}.o_icon_attempt_limit:before{content:""}.o_icon_accept:before{content:"";color:#5cb85c}.o_icon_add:before{content:"ï•"}.o_icon_add_member:before{content:""}.o_icon_add_search:before{content:""}.o_icon_audio:before{content:""}.o_icon_back:before{content:"ï“"}.o_icon_back_history:before{content:""}.o_icon_banned:before{content:"";color:#d9534f}.o_icon_bold:before{content:""}.o_icon_booking:before{content:"ïº"}.o_icon_bookmark:before{content:"";color:#bc2d0c}.o_icon_bookmark_add:before{content:"ï‚—"}.o_icon_bookmark_header:before{content:""}.o_icon_browse:before{content:""}.o_icon_brush:before{content:""}.o_icon_browsercheck:before{content:"ï…¤"}.o_icon_busy:before{content:"ï„"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_enabled:before{content:"ï†"}.o_icon_calendar_disabled:before{content:"ï‚–"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_sync:before{content:""}.o_icon_caret:before{content:""}.o_icon_caret_right:before{content:""}.o_icon_catalog:before{content:""}.o_icon_catalog_sub:before{content:"ï»"}.o_icon_certificate:before{content:"ï‚£"}.o_icon_chat:before{content:""}.o_icon_check:before{content:""}.o_icon_check_off:before{content:"ï‚–"}.o_icon_check_on:before{content:"ï†"}.o_icon_checkbox:before{content:"ï‚–"}.o_icon_checkbox_checked:before{content:"ï…Š"}.o_icon_circle:before{content:""}.o_icon_circle_color:before{content:"ï„‘"}.o_icon_citation:before{content:"ï„"}.o_icon_cleanup:before{content:""}.o_icon_clear_all:before{content:""}.o_icon_close:before{content:"ï€"}.o_icon_close_resource:before{content:""}.o_icon_close_tab:before{content:"ï€"}.o_icon_close_tool:before{content:"ï€"}.o_icon_close_tree:before{content:""}.o_icon_close_togglebox:before{content:""}.o_icon_code:before{content:"ï„¡"}.o_icon_color_picker:before{content:"ïƒ"}.o_icon_copy:before{content:""}.o_icon_courseareas:before{content:""}.o_icon_coursedb:before{content:""}.o_icon_courseeditor:before{content:"ï„"}.o_icon_coursefolder:before{content:"ï„”"}.o_icon_courserun:before{content:""}.o_icon_comments:before{content:""}.o_icon_comments_none:before{content:""}.o_icon_compress:before{content:"ï¦"}.o_icon_content_popup:before{content:""}.o_icon_correct_answer:before{content:"";color:#5cb85c}.o_icon_correction:before{content:"ï€"}.o_icon_customize:before{content:""}.o_icon_delete_item:before{content:""}.o_icon_delete:before{content:"ï–";color:#A87E7E}.o_icon_deleted:before{content:""}.o_icon_details:before{content:""}.o_icon_description:before{content:"ïš"}.o_icon_dev:before{content:""}.o_icon_disabled:before{content:""}.o_icon_download:before{content:""}.o_icon_edit:before{content:"ï„"}.o_icon_edit_file:before{content:"ï„"}.o_icon_edit_metadata:before{content:""}.o_icon_element_after:before{content:"ï£"}.o_icon_element_before:before{content:"ï¢"}.o_icon_enabled:before{content:"ï„‘"}.o_icon_enlarge:before{content:""}.o_icon_eportfolio_add:before{content:"ï„®"}.o_icon_eportfolio_link:before{content:"ï„®"}.o_icon_eraser:before{content:"ï„"}.o_icon_error:before{content:"ïª";color:#d9534f}.o_icon_expand:before{content:"ï¥"}.o_icon_expenditure:before{content:""}.o_icon_export:before{content:"ï…"}.o_icon_external_link:before{content:""}.o_icon_failed:before{content:"ï—"}.o_icon_files:before{content:""}.o_icon_filter:before{content:"ï‚°"}.o_icon_graduate:before{content:"ï†"}.o_icon_group:before,.o_BusinessGroup_icon:before{content:""}.o_icon_header:before{content:""}.o_icon_help:before{content:"ï™";cursor:help}.o_icon_home:before{content:""}.o_icon_image:before{content:""}.o_icon_impress:before{content:"ïš"}.o_icon_important:before{content:"ï±";color:#f0ad4e}.o_icon_import:before{content:"ï‚“"}.o_icon_info:before{content:"ïš";color:#5bc0de}.o_icon_info_msg:before{content:"ïª";color:#d9534f}.o_icon_info_resource:before{content:"ïš"}.o_icon_inline_editable:before{content:"ï„"}.o_icon_institution:before{content:""}.o_icon_italic:before{content:""}.o_icon_landingpage:before{content:"ï…€"}.o_icon_language:before{content:""}.o_icon_layout:before{content:""}.o_icon_line:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_link_extern:before{content:""}.o_icon_list:before{content:""}.o_icon_list_num:before{content:""}.o_icon_lifecycle:before{content:""}.o_icon_lifecycle_date:before{content:"ï³"}.o_icon_locked:before{content:""}.o_icon_login:before{content:"ï‚"}.o_icon_logout:before{content:"ï‚‹"}.o_icon_mandatory:before{content:"ï©";color:#f0ad4e}.o_icon_managed:before{content:"ï¹";color:#777}.o_icon_manual:before{content:"ï€";cursor:help}.o_icon_mail:before{content:""}.o_icon_math:before{content:"\03a3"}.o_icon_media:before{content:""}.o_icon_mediacenter:before{content:"ï¼"}.o_icon_membersmanagement:before{content:""}.o_icon_menuhandel:before{content:""}.o_icon_message:before{content:"ïƒ "}.o_icon_mobile:before{content:"ï„‹"}.o_icon_move:before{content:"ï‡"}.o_icon_move_down:before{content:""}.o_icon_move_left:before{content:"ï„€"}.o_icon_move_right:before{content:"ï„"}.o_icon_move_up:before{content:"ï„‚"}.o_icon_new:before{content:"ï©";color:#5cb85c}.o_icon_new_document:before{content:"ï…œ"}.o_icon_new_folder:before{content:"ï»"}.o_icon_new_portfolio:before{content:"ï€"}.o_icon_news:before{content:"ïš"}.o_icon_next:before{content:""}.o_icon_next_step:before{content:"ï„"}.o_icon_next_page:before{content:"ï„"}.o_icon_next_toolbar:before{content:""}.o_icon_node_after:before{content:"ï…µ"}.o_icon_node_before:before{content:"ï…¶"}.o_icon_node_under:before{content:"ï„’"}.o_icon_notes:before{content:""}.o_icon_notification:before{content:""}.o_icon_ok:before{content:"";color:#5cb85c}.o_icon_open_tree:before{content:""}.o_icon_open_togglebox:before{content:""}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\E600";font-family:openolat;font-size:10px}.o_icon_options:before{content:""}.o_icon_others:before{content:""}.o_icon_pageing:before{content:"ï…"}.o_icon_paragraph:before{content:"ï‡"}.o_icon_passed:before{content:"ï˜"}.o_icon_password:before{content:""}.o_icon_pending:before{content:"ï„"}.o_icon_phone:before{content:"ï‚•"}.o_icon_post:before{content:""}.o_icon_preview:before{content:"ï®"}.o_icon_previous:before{content:"ï„·"}.o_icon_previous_page:before{content:"ï„€"}.o_icon_previous_step:before{content:"ï„€"}.o_icon_previous_toolbar:before{content:""}.o_icon_print:before{content:""}.o_icon_private:before{content:""}.o_icon_progress_success:before{content:"";color:#e5efe5}.o_icon_progress_danger:before{content:"ï€";color:#efe5e5}.o_icon_provider_adfs:before{content:"ï…º"}.o_icon_provider_facebook:before{content:""}.o_icon_provider_google:before{content:""}.o_icon_provider_guest:before{content:""}.o_icon_provider_ldap:before{content:""}.o_icon_provider_linkedin:before{content:""}.o_icon_provider_oauth:before{content:""}.o_icon_provider_openid:before{content:""}.o_icon_provider_performx:before{content:""}.o_icon_provider_shibboleth:before{content:""}.o_icon_provider_twitter:before{content:"ï‚™"}.o_icon_publish:before{content:"ï¤"}.o_icon_qrcode:before{content:""}.o_icon_quickview:before{content:"ï®"}.o_icon_radio_off:before{content:""}.o_icon_radio_on:before{content:"ï"}.o_icon_rating_on:before{content:""}.o_icon_rating_off:before{content:""}.o_icon_read:before{content:""}.o_icon_readonly:before{content:"ï„";color:red}.o_icon_readwrite:before{content:"ï„"}.o_icon_recycle:before{content:""}.o_icon_rectangle:before{content:"ï‚–"}.o_icon_redo:before{content:""}.o_icon_refresh:before{content:""}.o_icon_reject:before{content:"ï€";color:#d9534f}.o_icon_rejected:before{content:"ï…¥"}.o_icon_reminder:before{content:""}.o_icon_remove:before{content:"ï€"}.o_icon_remove_filters:before{content:"ï—"}.o_icon_replace:before{content:""}.o_icon_reply:before{content:"ï„’"}.o_icon_reply_with_quote:before{content:"ï„¢"}.o_icon_response_feedback:before{content:""}.o_icon_restore:before{content:"ï…¤"}.o_icon_results_visible:before{content:"ï®"}.o_icon_results_hidden:before{content:"ï°"}.o_icon_review:before{content:"ï®"}.o_icon_reviewer:before{content:""}.o_icon_rss:before{content:""}.o_icon_rss_unsubscribe:before{content:"";color:#996633}.o_icon_rubric:before{content:""}.o_icon_save:before{content:""}.o_icon_search:before{content:""}.o_icon_select:before{content:""}.o_icon_send:before{content:"ïƒ "}.o_icon_settings:before{content:"ï‚…"}.o_icon_share:before{content:"ï¤"}.o_icon_show_more:before{content:"ï…"}.o_icon_show_less:before{content:"ï…‘"}.o_icon_show_send:before{content:""}.o_icon_sign_out:before{content:"ï‚‹"}.o_icon_slide_down:before{content:"ï¸"}.o_icon_slide_up:before{content:"ï·"}.o_icon_spacer:before{content:"ï¾"}.o_icon_split:before{content:"ï„§"}.o_icon_sort:before{content:""}.o_icon_sort_asc:before{content:""}.o_icon_sort_desc:before{content:"ïƒ"}.o_icon_sort_amount_asc:before{content:"ï… "}.o_icon_sort_amount_desc:before{content:"ï…¡"}.o_icon_sort_menu:before{content:"ï… "}.o_icon_start:before{content:"ï”"}.o_icon_status_available:before{content:"ï„‘";color:#063}.o_icon_status_chat:before{content:"ïµ"}.o_icon_status_dnd:before{content:"";color:#cc3}.o_icon_status_unavailable:before{content:"ïœ";color:#963}.o_icon_status_not_started:before{content:""}.o_icon_status_in_progress:before{content:"ï‹"}.o_icon_status_in_review:before{content:""}.o_icon_status_done:before{content:"ï˜"}.o_icon_statistics_tool:before{content:"ï‚€"}.o_icon_submit:before{content:""}.o_icon_table:before{content:""}.o_icon_table_custom:before{content:""}.o_icon_table_large:before{content:""}.o_icon_tags:before{content:""}.o_icon_textinput:before{content:""}.o_icon_timelimit:before{content:""}.o_icon_timelimit_start:before{content:""}.o_icon_timelimit_half:before{content:""}.o_icon_timelimit_end:before{content:""}.o_icon_toggle:before{content:"ï„‘"}.o_icon_toggle_on:before{content:""}.o_icon_toggle_off:before{content:""}.o_icon_to_read:before{content:"ï„‘"}.o_icon_tool:before{content:""}.o_icon_tools:before{content:"ï‚"}.o_icon_top:before{content:"ï·"}.o_icon_translation_item:before{content:""}.o_icon_translation_package:before{content:"ï„•"}.o_icon_undo:before{content:""}.o_icon_user:before{content:""}.o_icon_user_vip:before{content:"ï†"}.o_icon_user_anonymous:before{content:""}.o_icon_upload:before{content:"ï‚“"}.o_icon_version:before{content:""}.o_icon_video:before{content:""}.o_icon_visitingcard.o_icon_waiting:before{content:""}.o_icon_warn:before{content:"ï±";color:#f0ad4e}.o_icon_wizard:before{content:"ïƒ"}.o_icon_xing:before{content:"ï…¨";color:#cfdc00}.o_BinderTemplate_icon:before{content:""}.o_CourseModule_icon:before,.o_course_icon:before{content:""}.o_EPStructuredMapTemplate_icon:before{content:"ï„®"}.o_FileResource-BLOG_icon:before{content:"ï‚¡"}.o_FileResource-IMSCP_icon:before{content:""}.o_FileResource-FORM_icon:before{content:""}.o_FileResource-PODCAST_icon:before{content:""}.o_FileResource-SHAREDFOLDER:before{content:""}.o_FileResource-SCORMCP_icon:before{content:""}.o_FileResource-SURVEY_icon:before{content:""}.o_FileResource-TEST_icon:before{content:"ï„"}.o_FileResource-IMSQTI21_icon:before{content:"ï…‹"}.o_FileResource-WIKI_icon:before{content:""}.o_FileResource-SHAREDFOLDER_icon:before{content:"ï„•"}.o_FileResource-GLOSSARY_icon:before{content:"ï†"}.o_FileResource-PDF_icon:before{content:"ï‡"}.o_FileResource-XLS_icon:before{content:""}.o_FileResource-PPT_icon:before{content:""}.o_FileResource-DOC_icon:before{content:""}.o_FileResource-ANIM_icon:before{content:""}.o_FileResource-IMAGE_icon:before{content:""}.o_FileResource-SOUND_icon:before{content:""}.o_FileResource-MOVIE_icon:before{content:""}.o_FileResource-FILE_icon:before{content:""}.o_FileResource-VIDEO_icon:before{content:""}.o_CourseModule_icon_closed:before{content:"ïž"}.o_sp_icon:before{content:""}.o_st_icon:before{content:""}.o_tu_icon:before{content:""}.o_bc_icon:before{content:"ï„•"}.o_lti_icon:before{content:""}.o_cp_icon:before{content:""}.o_cp_item:before{content:""}.o_scorm_icon:before{content:""}.o_en_icon:before{content:"ï‚"}.o_fo_icon:before{content:""}.o_co_icon:before{content:""}.o_infomsg_icon:before{content:"ïš"}.o_cal_icon:before{content:"ï³"}.o_wiki_icon:before{content:""}.o_podcast_icon:before{content:""}.o_pf_icon:before{content:""}.o_blog_icon:before{content:"ï‚¡"}.o_ep_icon:before{content:""}.o_ep_icon_v1:before{content:"ï„®"}.o_iqtest_icon:before{content:"ï„"}.o_iqself_icon:before{content:"ï„"}.o_iqsurv_icon:before{content:""}.o_qtiassessment_icon:before{content:"ï…‹"}.o_ta_icon:before{content:"ï‚®"}.o_gta_icon:before{content:"ï‚®"}.o_ms_icon:before{content:""}.o_dialog_icon:before{content:""}.o_projectbroker_icon:before{content:""}.o_ll_icon:before{content:"ïƒ"}.o_den_icon:before{content:""}.o_cmembers_icon:before{content:""}.o_cl_icon:before{content:"ï†"}.o_vc_icon:before{content:""}.o_video_icon:before{content:""}.o_vitero_icon:before{content:""}.o_openmeetings_icon:before{content:""}.o_gotomeeting_icon:before{content:""}.o_card2brain_icon:before{content:""}.o_portlet_infomsg_icon:before{content:"ïš"}.o_portlet_quickstart_icon:before{content:""}.o_portlet_bookmark_icon:before{content:""}.o_portlet_groups_icon:before{content:""}.o_portlet_notes_icon:before{content:""}.o_portlet_noti_icon:before{content:""}.o_portlet_eff_icon:before{content:"ï‚£"}.o_portlet_repository_student_icon:before{content:""}.o_portlet_repository_teacher_icon:before{content:"ï†"}.o_portlet_iframe_icon:before{content:""}.o_portlet_sysinfo_icon:before{content:""}.o_portlet_dyk_icon:before{content:""}.o_portlet_infomessages_icon:before{content:""}.o_portlet_cal_icon:before{content:"ï³"}.o_portlet_institutions_icon:before{content:""}.o_portlet_links_icon:before{content:"ïƒ"}.o_portlet_shibboleth_icon:before{content:"ï‚"}.o_icon_qpool:before{content:""}.o_icon_pool_private:before{content:"ï‚–"}.o_icon_pool_public:before{content:"ï†"}.o_icon_pool_my_items:before{content:""}.o_icon_pool_favorits:before{content:""}.o_icon_pool_collection:before{content:""}.o_icon_pool_pool:before{content:""}.o_icon_pool_share:before{content:""}.o_forum_message_icon:before{content:""}.o_calendar_icon:before{content:"ï³"}.o_icon_pf_section_draft:before{content:"ï°";color:#f0ad4e}.o_icon_pf_section_progress:before{content:"";color:#f0ad4e}.o_icon_pf_section_submitted:before{content:"";color:#337ab7}.o_icon_pf_section_closed:before{content:"";color:#5cb85c}.o_icon_pf_binder:before{content:""}.o_icon_pf_entry:before{content:"ï…›"}.o_icon_pf_entry_draft:before{content:"ï„‘";color:#f0ad4e}.o_icon_pf_entry_published:before{content:"ï„‘";color:#337ab7}.o_icon_pf_entry_revision:before{content:"ï„‘";color:#d9534f}.o_icon_pf_entry_closed:before{content:"ï„‘";color:#5cb85c}.o_icon_pf_entry_deleted:before{content:"";color:#000}.o_icon_pf_history:before{content:""}.o_icon_pf_my_shares:before{content:"ï‡ "}.o_icon_pf_quick_links:before{content:"ï¤"}.o_icon_pf_page:before{content:""}.o_icon_pf_section:before{content:""}.o_icon_pf_shared_with_me:before{content:""}.o_forum_status_thread_icon:before{content:""}.o_forum_status_sticky_closed_icon:before{content:"ïž"}.o_forum_status_sticky_icon:before{content:""}.o_forum_status_closed_icon:before{content:"ïž";color:#a94442}.o_forum_status_opened_icon:before{content:"ïž";color:#3c763d}.o_forum_status_hidden_icon:before{content:"ï°";color:#a94442}.o_forum_status_visible_icon:before{content:"ï®";color:#3c763d}.o_forum_all_icon:before{content:""}.o_forum_all_flat_icon:before{content:""}.o_forum_one_icon:before{content:"ï®"}.o_forum_marked_icon:before{content:""}.o_forum_new_icon:before{content:"ï©"}.o_mi_qpool_import:before{content:""}.o_mi_qtidrawing:before{content:""}.o_mi_qtisection:before{content:""}.o_mi_qtisc:before{content:""}.o_mi_qtimatch:before{content:""}.o_mi_qtimatch_draganddrop:before{content:"ï‰"}.o_mi_qtimc:before{content:"ï†"}.o_mi_qtikprim:before{content:"ï…Š"}.o_mi_qtifib:before{content:"ï…"}.o_mi_qtinumerical:before{content:""}.o_mi_qtihotspot:before{content:""}.o_mi_qtihottext:before{content:"ï"}.o_mi_qtiessay:before{content:""}.o_mi_qtiunkown:before{content:""}.o_mi_qtiupload:before{content:"ï‚“"}.o_as_mode_leadtime:before{content:""}.o_as_mode_assessment:before{content:"ï‹"}.o_as_mode_followup:before{content:"ïž"}.o_as_mode_closed:before{content:'-'}.o_icon_qti_notPresented:before{content:"";color:#ddd}.o_icon_qti_notAnswered:before{content:"ï…„";color:#f0ad4e}.o_icon_qti_answered:before{content:"ï˜";color:#5cb85c}.o_icon_qti_ended:before{content:"ïž";color:#5bc0de}.o_icon_qti_invalid:before{content:"ïª";color:#d9534f}.o_icon_qti_review:before{content:"ï®";color:#5bc0de}.o_icon_qti_reviewNotSeen:before,.o_icon_qti_reviewNotAnswered:before,.o_icon_qti_reviewInvalid:before{content:"ï°";color:#5bc0de}.o_icon_qti_end_testpart:before{content:""}.o_icon_qti_close_test:before{content:"ï‹“"}.o_icon_qti_cancel:before{content:"ï"}.o_icon_qti_suspend:before{content:"ïŒ"}.o_icon_qti_close_results:before{content:"ï‹“"}.o_icon_qti_hint:before{content:"ï™"}.o_icon_qti_summary_notAnswered:before{content:"ï„‘";color:#f0ad4e}.o_icon_qti_summary_ended:before{content:"ï—";color:#d9534f}.o_icon_qti_summary_correct:before{content:"ï˜";color:#5cb85c}.o_black_led:before{content:"ï„‘";color:#337ab7}.o_green_led:before{content:"ï„‘";color:#5cb85c}.o_yellow_led:before{content:"ï„‘";color:#f0ad4e}.o_red_led:before{content:"ï„‘";color:#d9534f}.o_ac_token_icon:before{content:"ï‚„"}.o_ac_free_icon:before{content:"ï«"}.o_ac_group_icon:before{content:""}.o_ac_membersonly_icon:before{content:""}.o_ac_paypal_icon:before{content:""}.o_ac_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_status_success_icon:before{content:"";color:#5cb85c}.o_ac_status_waiting_icon:before{content:"";color:#337ab7}.o_ac_order_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_order_status_prepayment_icon:before{content:"";color:#5bc0de}.o_ac_order_status_payed_icon:before{content:"";color:#5cb85c}.o_ac_order_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_order_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_order_status_warning_icon:before{content:"";color:#f0ad4e}.o_scorm_org:before{content:""}.o_scorm_item:before{content:""}.o_scorm_completed:before,.o_scorm_passed:before{content:"ï˜"}.o_scorm_failed:before{content:"ï±"}.o_scorm_incomplete:before{content:"ï±"}.o_scorm_not_attempted:before{background:none}.o_midpub:before{content:"ï˜"}.o_midwarn:before{content:"ï±"}.o_midlock:before{content:""}.o_miderr:before{content:"ïª"}.o_middel:before{content:"ï„"}.o_filetype_file:before,.o_filetype_ico:before{content:""}.o_filetype_folder:before{content:"ï„”"}.o_filetype_folder_open:before{content:"ï„•"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:""}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:""}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:""}.o_filetype_xls:before,.o_filetype_xlsx:before{content:""}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:""}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:""}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:""}.o_filetype_ps:before,.o_filetype_pdf:before{content:"ï‡"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:""}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:""}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:""}.o_icon_share_social:before{content:"ï…"}.o_icon_apple:before{content:"ï…¹"}.o_icon_facebook:before{content:"ï‚‚"}.o_icon_twitter:before{content:"ï‚"}.o_icon_google:before{content:""}.o_icon_delicious:before{content:""}.o_icon_digg:before{content:""}.o_icon_mailto:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_yahoo:before{content:""}a.o_icon:hover,a.o_icon:focus{text-decoration:none}.o_block_bottom,.o_block,.o_button_group,.o_header_with_buttons{margin-bottom:1em}.o_block_top,.o_block,.o_button_group{margin-top:1em}.o_block_large_bottom,.o_block_large{margin-bottom:2em}.o_block_large_top,.o_block_large{margin-top:2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_centered_wrapper{display:table;width:100%;height:100%}.o_block_centered_content{display:table-cell;vertical-align:middle;text-align:center}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.66667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#78acd9;border-radius:10px}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-top:none;border-left:none;border-right:none;color:#337ab7;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:12px}.o_small,.b_small,p.b_small,div.b_small,.o_assessment_test_results .o_qti_to_overview{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:18px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,.o_disabled:focus,.b_disabled:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_info,.b_info,p.b_info,div.b_info,div.o_qti_item_itemfeedback,.o_assessmentitem_wrapper .modalFeedback .o_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info h5,.b_info h2,div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h3,div.o_qti_item_itemfeedback h3,.o_assessmentitem_wrapper .modalFeedback .o_info h3,.b_info h4,div.o_qti_item_itemfeedback h4,.o_assessmentitem_wrapper .modalFeedback .o_info h4,.b_info h5,div.o_qti_item_itemfeedback h5,.o_assessmentitem_wrapper .modalFeedback .o_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note h5,.b_note h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h3,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h3,.b_note h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.b_note h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h5,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important h5,.b_important h2,.b_important h3,.b_important h4,.b_important h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success h5,.b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h3,.b_success h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h4,.b_success h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning h5,.b_warning h2,.b_warning h3,.b_warning h4,.b_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error h5,.b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h3,.b_error h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h4,.b_error h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.o_user_content_block a{color:#337ab7;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#23527c;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:1px 5px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:1px 5px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:1px 5px;border:0;font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:1px 5px;background:#eee;border:1px solid #fff}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:1px 5px;background:#d9edf7;border:1px solid #fff}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:1px 5px;background:#dff0d8;border:1px solid #fff}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:1px 5px;background:#fcf8e3;border:1px solid #fff}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:1px 5px;background:#f2dede;border:1px solid #fff}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#337ab7}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_mailto{color:#337ab7}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#337ab7}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0;font-size:85%;font-family:inherit}span.olatFlashMovieViewer{max-width:100% !important;border:none !important}.mejs__container,.mejs__mediaelement video,.mejs__layers div,.me_cannotplay{max-width:100%}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}.radial-progress{margin:10px;width:120px;height:120px;background-color:#eee;border-radius:50%;display:inline-block;position:relative}.radial-progress .circle .mask,.radial-progress .circle .fill,.radial-progress .circle .shadow{width:100%;height:100%;position:absolute;border-radius:50%}.radial-progress .circle .shadow{box-shadow:none inset}.radial-progress .circle .mask,.radial-progress .circle .fill{-webkit-backface-visibility:hidden;transition:-webkit-transform 1s;transition:-ms-transform 1s;transition:transform 1s;border-radius:50%}.radial-progress .circle .mask{clip:rect(0px, 120px, 120px, 60px)}.radial-progress .circle .mask .fill{clip:rect(0px, 60px, 120px, 0px);background-color:#337ab7}.radial-progress .inset{width:90px;height:90px;position:absolute;border-radius:50%;margin-left:15px;margin-top:15px;overflow:hidden;background-color:#fff;box-shadow:none;font-size:21.6px}.radial-progress .inset .bgIcon{position:absolute;font-size:80px;top:5px;left:-5px;opacity:0;transition:opacity 0;transition-delay:1s}.radial-progress .inset .percentage{height:80%;width:80%;position:absolute;top:10%;left:10%;display:table;line-height:1}.radial-progress .inset .percentage .centeredWrapper{display:table-cell;vertical-align:middle;text-align:center}.radial-progress .inset .percentage .centeredWrapper .number{font-weight:800;color:#337ab7}.radial-progress .inset .percentage .centeredWrapper .addon{color:#777;margin-top:5px}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(1){font-size:0.55em;font-weight:bold}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(2){margin-top:2px;font-size:0.45em}.radial-progress[data-progress="0"] .circle .mask.full,.radial-progress[data-progress="0"] .circle .fill{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="0"] .circle .fill.fix{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="1"] .circle .mask.full,.radial-progress[data-progress="1"] .circle .fill{-webkit-transform:rotate(1.8deg);-ms-transform:rotate(1.8deg);transform:rotate(1.8deg)}.radial-progress[data-progress="1"] .circle .fill.fix{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .mask.full,.radial-progress[data-progress="2"] .circle .fill{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .fill.fix{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="3"] .circle .mask.full,.radial-progress[data-progress="3"] .circle .fill{-webkit-transform:rotate(5.4deg);-ms-transform:rotate(5.4deg);transform:rotate(5.4deg)}.radial-progress[data-progress="3"] .circle .fill.fix{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="4"] .circle .mask.full,.radial-progress[data-progress="4"] .circle .fill{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="4"] .circle .fill.fix{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="5"] .circle .mask.full,.radial-progress[data-progress="5"] .circle .fill{-webkit-transform:rotate(9deg);-ms-transform:rotate(9deg);transform:rotate(9deg)}.radial-progress[data-progress="5"] .circle .fill.fix{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="6"] .circle .mask.full,.radial-progress[data-progress="6"] .circle .fill{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="6"] .circle .fill.fix{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="7"] .circle .mask.full,.radial-progress[data-progress="7"] .circle .fill{-webkit-transform:rotate(12.6deg);-ms-transform:rotate(12.6deg);transform:rotate(12.6deg)}.radial-progress[data-progress="7"] .circle .fill.fix{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="8"] .circle .mask.full,.radial-progress[data-progress="8"] .circle .fill{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="8"] .circle .fill.fix{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="9"] .circle .mask.full,.radial-progress[data-progress="9"] .circle .fill{-webkit-transform:rotate(16.2deg);-ms-transform:rotate(16.2deg);transform:rotate(16.2deg)}.radial-progress[data-progress="9"] .circle .fill.fix{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="10"] .circle .mask.full,.radial-progress[data-progress="10"] .circle .fill{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="10"] .circle .fill.fix{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="11"] .circle .mask.full,.radial-progress[data-progress="11"] .circle .fill{-webkit-transform:rotate(19.8deg);-ms-transform:rotate(19.8deg);transform:rotate(19.8deg)}.radial-progress[data-progress="11"] .circle .fill.fix{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="12"] .circle .mask.full,.radial-progress[data-progress="12"] .circle .fill{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="12"] .circle .fill.fix{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="13"] .circle .mask.full,.radial-progress[data-progress="13"] .circle .fill{-webkit-transform:rotate(23.4deg);-ms-transform:rotate(23.4deg);transform:rotate(23.4deg)}.radial-progress[data-progress="13"] .circle .fill.fix{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="14"] .circle .mask.full,.radial-progress[data-progress="14"] .circle .fill{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="14"] .circle .fill.fix{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="15"] .circle .mask.full,.radial-progress[data-progress="15"] .circle .fill{-webkit-transform:rotate(27deg);-ms-transform:rotate(27deg);transform:rotate(27deg)}.radial-progress[data-progress="15"] .circle .fill.fix{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="16"] .circle .mask.full,.radial-progress[data-progress="16"] .circle .fill{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="16"] .circle .fill.fix{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="17"] .circle .mask.full,.radial-progress[data-progress="17"] .circle .fill{-webkit-transform:rotate(30.6deg);-ms-transform:rotate(30.6deg);transform:rotate(30.6deg)}.radial-progress[data-progress="17"] .circle .fill.fix{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="18"] .circle .mask.full,.radial-progress[data-progress="18"] .circle .fill{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="18"] .circle .fill.fix{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="19"] .circle .mask.full,.radial-progress[data-progress="19"] .circle .fill{-webkit-transform:rotate(34.2deg);-ms-transform:rotate(34.2deg);transform:rotate(34.2deg)}.radial-progress[data-progress="19"] .circle .fill.fix{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="20"] .circle .mask.full,.radial-progress[data-progress="20"] .circle .fill{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="20"] .circle .fill.fix{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="21"] .circle .mask.full,.radial-progress[data-progress="21"] .circle .fill{-webkit-transform:rotate(37.8deg);-ms-transform:rotate(37.8deg);transform:rotate(37.8deg)}.radial-progress[data-progress="21"] .circle .fill.fix{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="22"] .circle .mask.full,.radial-progress[data-progress="22"] .circle .fill{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="22"] .circle .fill.fix{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="23"] .circle .mask.full,.radial-progress[data-progress="23"] .circle .fill{-webkit-transform:rotate(41.4deg);-ms-transform:rotate(41.4deg);transform:rotate(41.4deg)}.radial-progress[data-progress="23"] .circle .fill.fix{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="24"] .circle .mask.full,.radial-progress[data-progress="24"] .circle .fill{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="24"] .circle .fill.fix{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="25"] .circle .mask.full,.radial-progress[data-progress="25"] .circle .fill{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.radial-progress[data-progress="25"] .circle .fill.fix{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="26"] .circle .mask.full,.radial-progress[data-progress="26"] .circle .fill{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="26"] .circle .fill.fix{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="27"] .circle .mask.full,.radial-progress[data-progress="27"] .circle .fill{-webkit-transform:rotate(48.6deg);-ms-transform:rotate(48.6deg);transform:rotate(48.6deg)}.radial-progress[data-progress="27"] .circle .fill.fix{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="28"] .circle .mask.full,.radial-progress[data-progress="28"] .circle .fill{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="28"] .circle .fill.fix{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="29"] .circle .mask.full,.radial-progress[data-progress="29"] .circle .fill{-webkit-transform:rotate(52.2deg);-ms-transform:rotate(52.2deg);transform:rotate(52.2deg)}.radial-progress[data-progress="29"] .circle .fill.fix{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="30"] .circle .mask.full,.radial-progress[data-progress="30"] .circle .fill{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="30"] .circle .fill.fix{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="31"] .circle .mask.full,.radial-progress[data-progress="31"] .circle .fill{-webkit-transform:rotate(55.8deg);-ms-transform:rotate(55.8deg);transform:rotate(55.8deg)}.radial-progress[data-progress="31"] .circle .fill.fix{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="32"] .circle .mask.full,.radial-progress[data-progress="32"] .circle .fill{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="32"] .circle .fill.fix{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="33"] .circle .mask.full,.radial-progress[data-progress="33"] .circle .fill{-webkit-transform:rotate(59.4deg);-ms-transform:rotate(59.4deg);transform:rotate(59.4deg)}.radial-progress[data-progress="33"] .circle .fill.fix{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="34"] .circle .mask.full,.radial-progress[data-progress="34"] .circle .fill{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="34"] .circle .fill.fix{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="35"] .circle .mask.full,.radial-progress[data-progress="35"] .circle .fill{-webkit-transform:rotate(63deg);-ms-transform:rotate(63deg);transform:rotate(63deg)}.radial-progress[data-progress="35"] .circle .fill.fix{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="36"] .circle .mask.full,.radial-progress[data-progress="36"] .circle .fill{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="36"] .circle .fill.fix{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="37"] .circle .mask.full,.radial-progress[data-progress="37"] .circle .fill{-webkit-transform:rotate(66.6deg);-ms-transform:rotate(66.6deg);transform:rotate(66.6deg)}.radial-progress[data-progress="37"] .circle .fill.fix{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="38"] .circle .mask.full,.radial-progress[data-progress="38"] .circle .fill{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="38"] .circle .fill.fix{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="39"] .circle .mask.full,.radial-progress[data-progress="39"] .circle .fill{-webkit-transform:rotate(70.2deg);-ms-transform:rotate(70.2deg);transform:rotate(70.2deg)}.radial-progress[data-progress="39"] .circle .fill.fix{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="40"] .circle .mask.full,.radial-progress[data-progress="40"] .circle .fill{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="40"] .circle .fill.fix{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="41"] .circle .mask.full,.radial-progress[data-progress="41"] .circle .fill{-webkit-transform:rotate(73.8deg);-ms-transform:rotate(73.8deg);transform:rotate(73.8deg)}.radial-progress[data-progress="41"] .circle .fill.fix{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="42"] .circle .mask.full,.radial-progress[data-progress="42"] .circle .fill{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="42"] .circle .fill.fix{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="43"] .circle .mask.full,.radial-progress[data-progress="43"] .circle .fill{-webkit-transform:rotate(77.4deg);-ms-transform:rotate(77.4deg);transform:rotate(77.4deg)}.radial-progress[data-progress="43"] .circle .fill.fix{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="44"] .circle .mask.full,.radial-progress[data-progress="44"] .circle .fill{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="44"] .circle .fill.fix{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="45"] .circle .mask.full,.radial-progress[data-progress="45"] .circle .fill{-webkit-transform:rotate(81deg);-ms-transform:rotate(81deg);transform:rotate(81deg)}.radial-progress[data-progress="45"] .circle .fill.fix{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="46"] .circle .mask.full,.radial-progress[data-progress="46"] .circle .fill{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="46"] .circle .fill.fix{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="47"] .circle .mask.full,.radial-progress[data-progress="47"] .circle .fill{-webkit-transform:rotate(84.6deg);-ms-transform:rotate(84.6deg);transform:rotate(84.6deg)}.radial-progress[data-progress="47"] .circle .fill.fix{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="48"] .circle .mask.full,.radial-progress[data-progress="48"] .circle .fill{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="48"] .circle .fill.fix{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="49"] .circle .mask.full,.radial-progress[data-progress="49"] .circle .fill{-webkit-transform:rotate(88.2deg);-ms-transform:rotate(88.2deg);transform:rotate(88.2deg)}.radial-progress[data-progress="49"] .circle .fill.fix{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="50"] .circle .mask.full,.radial-progress[data-progress="50"] .circle .fill{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="50"] .circle .fill.fix{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="51"] .circle .mask.full,.radial-progress[data-progress="51"] .circle .fill{-webkit-transform:rotate(91.8deg);-ms-transform:rotate(91.8deg);transform:rotate(91.8deg)}.radial-progress[data-progress="51"] .circle .fill.fix{-webkit-transform:rotate(183.6deg);-ms-transform:rotate(183.6deg);transform:rotate(183.6deg)}.radial-progress[data-progress="52"] .circle .mask.full,.radial-progress[data-progress="52"] .circle .fill{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="52"] .circle .fill.fix{-webkit-transform:rotate(187.2deg);-ms-transform:rotate(187.2deg);transform:rotate(187.2deg)}.radial-progress[data-progress="53"] .circle .mask.full,.radial-progress[data-progress="53"] .circle .fill{-webkit-transform:rotate(95.4deg);-ms-transform:rotate(95.4deg);transform:rotate(95.4deg)}.radial-progress[data-progress="53"] .circle .fill.fix{-webkit-transform:rotate(190.8deg);-ms-transform:rotate(190.8deg);transform:rotate(190.8deg)}.radial-progress[data-progress="54"] .circle .mask.full,.radial-progress[data-progress="54"] .circle .fill{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="54"] .circle .fill.fix{-webkit-transform:rotate(194.4deg);-ms-transform:rotate(194.4deg);transform:rotate(194.4deg)}.radial-progress[data-progress="55"] .circle .mask.full,.radial-progress[data-progress="55"] .circle .fill{-webkit-transform:rotate(99deg);-ms-transform:rotate(99deg);transform:rotate(99deg)}.radial-progress[data-progress="55"] .circle .fill.fix{-webkit-transform:rotate(198deg);-ms-transform:rotate(198deg);transform:rotate(198deg)}.radial-progress[data-progress="56"] .circle .mask.full,.radial-progress[data-progress="56"] .circle .fill{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="56"] .circle .fill.fix{-webkit-transform:rotate(201.6deg);-ms-transform:rotate(201.6deg);transform:rotate(201.6deg)}.radial-progress[data-progress="57"] .circle .mask.full,.radial-progress[data-progress="57"] .circle .fill{-webkit-transform:rotate(102.6deg);-ms-transform:rotate(102.6deg);transform:rotate(102.6deg)}.radial-progress[data-progress="57"] .circle .fill.fix{-webkit-transform:rotate(205.2deg);-ms-transform:rotate(205.2deg);transform:rotate(205.2deg)}.radial-progress[data-progress="58"] .circle .mask.full,.radial-progress[data-progress="58"] .circle .fill{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="58"] .circle .fill.fix{-webkit-transform:rotate(208.8deg);-ms-transform:rotate(208.8deg);transform:rotate(208.8deg)}.radial-progress[data-progress="59"] .circle .mask.full,.radial-progress[data-progress="59"] .circle .fill{-webkit-transform:rotate(106.2deg);-ms-transform:rotate(106.2deg);transform:rotate(106.2deg)}.radial-progress[data-progress="59"] .circle .fill.fix{-webkit-transform:rotate(212.4deg);-ms-transform:rotate(212.4deg);transform:rotate(212.4deg)}.radial-progress[data-progress="60"] .circle .mask.full,.radial-progress[data-progress="60"] .circle .fill{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="60"] .circle .fill.fix{-webkit-transform:rotate(216deg);-ms-transform:rotate(216deg);transform:rotate(216deg)}.radial-progress[data-progress="61"] .circle .mask.full,.radial-progress[data-progress="61"] .circle .fill{-webkit-transform:rotate(109.8deg);-ms-transform:rotate(109.8deg);transform:rotate(109.8deg)}.radial-progress[data-progress="61"] .circle .fill.fix{-webkit-transform:rotate(219.6deg);-ms-transform:rotate(219.6deg);transform:rotate(219.6deg)}.radial-progress[data-progress="62"] .circle .mask.full,.radial-progress[data-progress="62"] .circle .fill{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="62"] .circle .fill.fix{-webkit-transform:rotate(223.2deg);-ms-transform:rotate(223.2deg);transform:rotate(223.2deg)}.radial-progress[data-progress="63"] .circle .mask.full,.radial-progress[data-progress="63"] .circle .fill{-webkit-transform:rotate(113.4deg);-ms-transform:rotate(113.4deg);transform:rotate(113.4deg)}.radial-progress[data-progress="63"] .circle .fill.fix{-webkit-transform:rotate(226.8deg);-ms-transform:rotate(226.8deg);transform:rotate(226.8deg)}.radial-progress[data-progress="64"] .circle .mask.full,.radial-progress[data-progress="64"] .circle .fill{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="64"] .circle .fill.fix{-webkit-transform:rotate(230.4deg);-ms-transform:rotate(230.4deg);transform:rotate(230.4deg)}.radial-progress[data-progress="65"] .circle .mask.full,.radial-progress[data-progress="65"] .circle .fill{-webkit-transform:rotate(117deg);-ms-transform:rotate(117deg);transform:rotate(117deg)}.radial-progress[data-progress="65"] .circle .fill.fix{-webkit-transform:rotate(234deg);-ms-transform:rotate(234deg);transform:rotate(234deg)}.radial-progress[data-progress="66"] .circle .mask.full,.radial-progress[data-progress="66"] .circle .fill{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="66"] .circle .fill.fix{-webkit-transform:rotate(237.6deg);-ms-transform:rotate(237.6deg);transform:rotate(237.6deg)}.radial-progress[data-progress="67"] .circle .mask.full,.radial-progress[data-progress="67"] .circle .fill{-webkit-transform:rotate(120.6deg);-ms-transform:rotate(120.6deg);transform:rotate(120.6deg)}.radial-progress[data-progress="67"] .circle .fill.fix{-webkit-transform:rotate(241.2deg);-ms-transform:rotate(241.2deg);transform:rotate(241.2deg)}.radial-progress[data-progress="68"] .circle .mask.full,.radial-progress[data-progress="68"] .circle .fill{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="68"] .circle .fill.fix{-webkit-transform:rotate(244.8deg);-ms-transform:rotate(244.8deg);transform:rotate(244.8deg)}.radial-progress[data-progress="69"] .circle .mask.full,.radial-progress[data-progress="69"] .circle .fill{-webkit-transform:rotate(124.2deg);-ms-transform:rotate(124.2deg);transform:rotate(124.2deg)}.radial-progress[data-progress="69"] .circle .fill.fix{-webkit-transform:rotate(248.4deg);-ms-transform:rotate(248.4deg);transform:rotate(248.4deg)}.radial-progress[data-progress="70"] .circle .mask.full,.radial-progress[data-progress="70"] .circle .fill{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="70"] .circle .fill.fix{-webkit-transform:rotate(252deg);-ms-transform:rotate(252deg);transform:rotate(252deg)}.radial-progress[data-progress="71"] .circle .mask.full,.radial-progress[data-progress="71"] .circle .fill{-webkit-transform:rotate(127.8deg);-ms-transform:rotate(127.8deg);transform:rotate(127.8deg)}.radial-progress[data-progress="71"] .circle .fill.fix{-webkit-transform:rotate(255.6deg);-ms-transform:rotate(255.6deg);transform:rotate(255.6deg)}.radial-progress[data-progress="72"] .circle .mask.full,.radial-progress[data-progress="72"] .circle .fill{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="72"] .circle .fill.fix{-webkit-transform:rotate(259.2deg);-ms-transform:rotate(259.2deg);transform:rotate(259.2deg)}.radial-progress[data-progress="73"] .circle .mask.full,.radial-progress[data-progress="73"] .circle .fill{-webkit-transform:rotate(131.4deg);-ms-transform:rotate(131.4deg);transform:rotate(131.4deg)}.radial-progress[data-progress="73"] .circle .fill.fix{-webkit-transform:rotate(262.8deg);-ms-transform:rotate(262.8deg);transform:rotate(262.8deg)}.radial-progress[data-progress="74"] .circle .mask.full,.radial-progress[data-progress="74"] .circle .fill{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="74"] .circle .fill.fix{-webkit-transform:rotate(266.4deg);-ms-transform:rotate(266.4deg);transform:rotate(266.4deg)}.radial-progress[data-progress="75"] .circle .mask.full,.radial-progress[data-progress="75"] .circle .fill{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.radial-progress[data-progress="75"] .circle .fill.fix{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.radial-progress[data-progress="76"] .circle .mask.full,.radial-progress[data-progress="76"] .circle .fill{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="76"] .circle .fill.fix{-webkit-transform:rotate(273.6deg);-ms-transform:rotate(273.6deg);transform:rotate(273.6deg)}.radial-progress[data-progress="77"] .circle .mask.full,.radial-progress[data-progress="77"] .circle .fill{-webkit-transform:rotate(138.6deg);-ms-transform:rotate(138.6deg);transform:rotate(138.6deg)}.radial-progress[data-progress="77"] .circle .fill.fix{-webkit-transform:rotate(277.2deg);-ms-transform:rotate(277.2deg);transform:rotate(277.2deg)}.radial-progress[data-progress="78"] .circle .mask.full,.radial-progress[data-progress="78"] .circle .fill{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="78"] .circle .fill.fix{-webkit-transform:rotate(280.8deg);-ms-transform:rotate(280.8deg);transform:rotate(280.8deg)}.radial-progress[data-progress="79"] .circle .mask.full,.radial-progress[data-progress="79"] .circle .fill{-webkit-transform:rotate(142.2deg);-ms-transform:rotate(142.2deg);transform:rotate(142.2deg)}.radial-progress[data-progress="79"] .circle .fill.fix{-webkit-transform:rotate(284.4deg);-ms-transform:rotate(284.4deg);transform:rotate(284.4deg)}.radial-progress[data-progress="80"] .circle .mask.full,.radial-progress[data-progress="80"] .circle .fill{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="80"] .circle .fill.fix{-webkit-transform:rotate(288deg);-ms-transform:rotate(288deg);transform:rotate(288deg)}.radial-progress[data-progress="81"] .circle .mask.full,.radial-progress[data-progress="81"] .circle .fill{-webkit-transform:rotate(145.8deg);-ms-transform:rotate(145.8deg);transform:rotate(145.8deg)}.radial-progress[data-progress="81"] .circle .fill.fix{-webkit-transform:rotate(291.6deg);-ms-transform:rotate(291.6deg);transform:rotate(291.6deg)}.radial-progress[data-progress="82"] .circle .mask.full,.radial-progress[data-progress="82"] .circle .fill{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="82"] .circle .fill.fix{-webkit-transform:rotate(295.2deg);-ms-transform:rotate(295.2deg);transform:rotate(295.2deg)}.radial-progress[data-progress="83"] .circle .mask.full,.radial-progress[data-progress="83"] .circle .fill{-webkit-transform:rotate(149.4deg);-ms-transform:rotate(149.4deg);transform:rotate(149.4deg)}.radial-progress[data-progress="83"] .circle .fill.fix{-webkit-transform:rotate(298.8deg);-ms-transform:rotate(298.8deg);transform:rotate(298.8deg)}.radial-progress[data-progress="84"] .circle .mask.full,.radial-progress[data-progress="84"] .circle .fill{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="84"] .circle .fill.fix{-webkit-transform:rotate(302.4deg);-ms-transform:rotate(302.4deg);transform:rotate(302.4deg)}.radial-progress[data-progress="85"] .circle .mask.full,.radial-progress[data-progress="85"] .circle .fill{-webkit-transform:rotate(153deg);-ms-transform:rotate(153deg);transform:rotate(153deg)}.radial-progress[data-progress="85"] .circle .fill.fix{-webkit-transform:rotate(306deg);-ms-transform:rotate(306deg);transform:rotate(306deg)}.radial-progress[data-progress="86"] .circle .mask.full,.radial-progress[data-progress="86"] .circle .fill{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="86"] .circle .fill.fix{-webkit-transform:rotate(309.6deg);-ms-transform:rotate(309.6deg);transform:rotate(309.6deg)}.radial-progress[data-progress="87"] .circle .mask.full,.radial-progress[data-progress="87"] .circle .fill{-webkit-transform:rotate(156.6deg);-ms-transform:rotate(156.6deg);transform:rotate(156.6deg)}.radial-progress[data-progress="87"] .circle .fill.fix{-webkit-transform:rotate(313.2deg);-ms-transform:rotate(313.2deg);transform:rotate(313.2deg)}.radial-progress[data-progress="88"] .circle .mask.full,.radial-progress[data-progress="88"] .circle .fill{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="88"] .circle .fill.fix{-webkit-transform:rotate(316.8deg);-ms-transform:rotate(316.8deg);transform:rotate(316.8deg)}.radial-progress[data-progress="89"] .circle .mask.full,.radial-progress[data-progress="89"] .circle .fill{-webkit-transform:rotate(160.2deg);-ms-transform:rotate(160.2deg);transform:rotate(160.2deg)}.radial-progress[data-progress="89"] .circle .fill.fix{-webkit-transform:rotate(320.4deg);-ms-transform:rotate(320.4deg);transform:rotate(320.4deg)}.radial-progress[data-progress="90"] .circle .mask.full,.radial-progress[data-progress="90"] .circle .fill{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="90"] .circle .fill.fix{-webkit-transform:rotate(324deg);-ms-transform:rotate(324deg);transform:rotate(324deg)}.radial-progress[data-progress="91"] .circle .mask.full,.radial-progress[data-progress="91"] .circle .fill{-webkit-transform:rotate(163.8deg);-ms-transform:rotate(163.8deg);transform:rotate(163.8deg)}.radial-progress[data-progress="91"] .circle .fill.fix{-webkit-transform:rotate(327.6deg);-ms-transform:rotate(327.6deg);transform:rotate(327.6deg)}.radial-progress[data-progress="92"] .circle .mask.full,.radial-progress[data-progress="92"] .circle .fill{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="92"] .circle .fill.fix{-webkit-transform:rotate(331.2deg);-ms-transform:rotate(331.2deg);transform:rotate(331.2deg)}.radial-progress[data-progress="93"] .circle .mask.full,.radial-progress[data-progress="93"] .circle .fill{-webkit-transform:rotate(167.4deg);-ms-transform:rotate(167.4deg);transform:rotate(167.4deg)}.radial-progress[data-progress="93"] .circle .fill.fix{-webkit-transform:rotate(334.8deg);-ms-transform:rotate(334.8deg);transform:rotate(334.8deg)}.radial-progress[data-progress="94"] .circle .mask.full,.radial-progress[data-progress="94"] .circle .fill{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="94"] .circle .fill.fix{-webkit-transform:rotate(338.4deg);-ms-transform:rotate(338.4deg);transform:rotate(338.4deg)}.radial-progress[data-progress="95"] .circle .mask.full,.radial-progress[data-progress="95"] .circle .fill{-webkit-transform:rotate(171deg);-ms-transform:rotate(171deg);transform:rotate(171deg)}.radial-progress[data-progress="95"] .circle .fill.fix{-webkit-transform:rotate(342deg);-ms-transform:rotate(342deg);transform:rotate(342deg)}.radial-progress[data-progress="96"] .circle .mask.full,.radial-progress[data-progress="96"] .circle .fill{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="96"] .circle .fill.fix{-webkit-transform:rotate(345.6deg);-ms-transform:rotate(345.6deg);transform:rotate(345.6deg)}.radial-progress[data-progress="97"] .circle .mask.full,.radial-progress[data-progress="97"] .circle .fill{-webkit-transform:rotate(174.6deg);-ms-transform:rotate(174.6deg);transform:rotate(174.6deg)}.radial-progress[data-progress="97"] .circle .fill.fix{-webkit-transform:rotate(349.2deg);-ms-transform:rotate(349.2deg);transform:rotate(349.2deg)}.radial-progress[data-progress="98"] .circle .mask.full,.radial-progress[data-progress="98"] .circle .fill{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="98"] .circle .fill.fix{-webkit-transform:rotate(352.8deg);-ms-transform:rotate(352.8deg);transform:rotate(352.8deg)}.radial-progress[data-progress="99"] .circle .mask.full,.radial-progress[data-progress="99"] .circle .fill{-webkit-transform:rotate(178.2deg);-ms-transform:rotate(178.2deg);transform:rotate(178.2deg)}.radial-progress[data-progress="99"] .circle .fill.fix{-webkit-transform:rotate(356.4deg);-ms-transform:rotate(356.4deg);transform:rotate(356.4deg)}.radial-progress[data-progress="100"] .circle .mask.full,.radial-progress[data-progress="100"] .circle .fill{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="100"] .circle .fill.fix{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.radial-progress:not([data-progress="0"]) .inset .bgIcon{opacity:1}.radial-progress.radial-progress-success .circle .mask .fill{background-color:#5cb85c}.radial-progress.radial-progress-success .inset .percentage .number span{color:#5cb85c}.radial-progress.radial-progress-info .circle .mask .fill{background-color:#5bc0de}.radial-progress.radial-progress-info .inset .percentage .number span{color:#5bc0de}.radial-progress.radial-progress-danger .circle .mask .fill{background-color:#d9534f}.radial-progress.radial-progress-danger .inset .percentage .number span{color:#d9534f}.radial-progress.radial-progress-warning .circle .mask .fill{background-color:#f0ad4e}.radial-progress.radial-progress-warning .inset .percentage .number span{color:#f0ad4e}.radial-progress.radial-progress-sm{width:80px;height:80px}.radial-progress.radial-progress-sm .circle .mask{clip:rect(0px, 80px, 80px, 40px)}.radial-progress.radial-progress-sm .circle .mask .fill{clip:rect(0px, 40px, 80px, 0px)}.radial-progress.radial-progress-sm .inset{width:60px;height:60px;margin-left:10px;margin-top:10px;font-size:14.4px}.radial-progress.radial-progress-sm .inset .bgIcon{position:absolute;font-size:50px;top:5px;left:-2px}.radial-progress.radial-progress-lg{width:180px;height:180px}.radial-progress.radial-progress-lg .circle .mask{clip:rect(0px, 180px, 180px, 90px)}.radial-progress.radial-progress-lg .circle .mask .fill{clip:rect(0px, 90px, 180px, 0px)}.radial-progress.radial-progress-lg .inset{width:135px;height:135px;margin-left:22.5px;margin-top:22.5px;font-size:32.4px}.radial-progress.radial-progress-lg .inset .bgIcon{position:absolute;font-size:115px;top:5px;left:-6px}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#337ab7}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #337ab7}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #337ab7 !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid #337ab7}.o_gap_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}div.hotspotInteraction{overflow-x:auto}#itemBody .extendedTextInteraction{margin:15px 0}#itemBody .extendedTextInteraction textarea{resize:vertical !important}#itemBody .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-color:#337ab7}.progress-striped #o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_questioninfo .progress-bar{background-color:#337ab7}.progress-striped #o_qti_run_infos #o_qti_questioninfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_results_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 0 1em 0}#o_qti_results_infos .progress{background-color:#eee}#o_qti_results_infos #o_qti_run_scoreinfo,#o_qti_results_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}.o_qti_hotspot_label{padding-left:48%}.o_info.o_assessmentsection_rubrics{margin:0 0 0.5em 0}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d9534f;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d9534f}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d9534f}.o_assessmentitem div.orderInteraction div.box{background-color:#eee}.o_assessmentitem div.orderInteraction div.box span.info{margin-left:1em;color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction div.box.horizontal{margin:0.5em 0;width:100%}.o_assessmentitem div.orderInteraction ul.horizontal{float:left;margin:0 1em;padding:1em 0;width:100%}.o_assessmentitem div.orderInteraction div.box.vertical{margin:1em 0;width:49%}.o_assessmentitem div.orderInteraction div.box.vertical.source{float:left}.o_assessmentitem div.orderInteraction div.box.vertical.target{float:right}.o_assessmentitem div.orderInteraction ul.vertical{margin:0 1em;padding:1em 0;width:auto}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0;width:60%}.o_assessmentitem div.orderInteraction ul li{margin:0 3px 3px 3px;padding:0.4em;padding-left:1.5em;font-size:1em}.o_assessmentitem div.orderInteraction ul li span.ui-icon{position:absolute;margin-left:-1.3em}.o_assessmentitem div.orderInteraction ul.horizontal li{float:left;width:auto}.o_assessmentitem div.orderInteraction br{clear:both}.o_assessmentitem .hottext{position:relative;margin:-2px 0.15em -2px 0.15em;white-space:nowrap}.o_assessmentitem .hottext input{margin:0 3px 0 2px;position:absolute;top:0.1em;left:0.05em}.o_assessmentitem .hottext input+label{display:inline;padding:0 0.1em 0 1.2em;background:#f8f8f8;border:1px solid #e7e7e7;border-radius:2px;color:#333;font-weight:normal;white-space:normal}.o_assessmentitem .hottext input:checked+label{color:#fff;background:#5bc0de;border:1px solid #31b0d5}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem .textEntryInteraction input{margin:-1px 2px;line-height:90%;vertical-align:middle;font-size:98%;border:0.5px solid #999;background:#fff;padding:0.5px 1px;color:#333}.o_assessmentitem .textEntryInteraction input:valid,.o_assessmentitem .textEntryInteraction input:disabled{color:#fff;-webkit-text-fill-color:#fff;background:#5bc0de;border:0.5px solid #31b0d5}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em}.o_assessmentitem_wrapper #itemBody{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;line-height:1.5em}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d9534f}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#5cb85c}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f0ad4e}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#5bc0de;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}#itemBody{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}.o_assessment_test_results .o_sel_assessment_item_hint{display:none}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction label{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#5cb85c}.matchInteraction div.bar_red{background-color:#d9534f}.source-left,.target-left,.source-right,.target-right{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_match_dnd_sources{padding:10px 10px 0 10px;min-height:60px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_match_dnd_sources.oo-accepted{border-color:#1f7e9a}.o_match_dnd_source{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;cursor:move;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.o_match_dnd_source:before,.o_match_dnd_source:after{content:" ";display:table}.o_match_dnd_source:after{clear:both}.o_match_dnd_source.oo-selected{border:2px dashed #f0ad4e;background:#fae3c4}.o_match_dnd_source.oo-drag{border:2px dashed #f0ad4e !important}.source-bottom .o_match_dnd_source,.source-top .o_match_dnd_source{margin:0 0 10px 0}.o_match_dnd_targets .oo-accepted{border:2px solid #1f7e9a;border-radius:4px}.o_match_dnd_target{padding:10px 10px 0 10px;margin:0 0 10px 10px;border:2px solid #5bc0de;border-radius:4px;background:#d9edf7}.o_match_dnd_target:before,.o_match_dnd_target:after{content:" ";display:table}.o_match_dnd_target:after{clear:both}.o_match_dnd_target .o_match_dnd_target_drop_zone{margin:0;padding:5px 0 0 15px;min-height:30px}.o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{border:2px dashed #777}.target-bottom .o_match_dnd_target,.target-top .o_match_dnd_target{margin:0 0 10px 0}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone{padding-left:0px}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{padding-left:15px}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#5cb85c}.o_assessmentitem div.failure{background-color:#f0ad4e}.o_assessmentitem div.error{background-color:#d9534f}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:10px;border-bottom:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#337ab7;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#23527c;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f0ad4e}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#5bc0de}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}.o_assessment_test_results .o_qti_assessment_title{border-bottom:1px solid #ddd}.o_assessment_test_results table th{width:40%}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section{text-align:center}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section .o_qti_section_sublisting{padding:0 10%;min-height:3em}.o_assessment_test_results .o_qti_sections .o_qti_section{margin-top:40px}.o_assessment_test_results .o_qti_sections .o_qti_section h3{margin-bottom:20px}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_id{display:none}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:0;padding:5px 10px 10px 5px;border-top:1px solid #ddd;broder-bottom:1px solid #ddd}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4{font-size:100%;font-weight:bold;color:inherit}.o_assessment_test_results .o_qti_to_overview{text-align:right}.o_page_margins{padding-top:25px;padding-bottom:25px;padding-left:25px;padding-right:25px}#o_main{margin-top:25px} /*# sourceMappingURL=theme.css.map */ diff --git a/src/main/webapp/static/offline/qti/theme.css.map b/src/main/webapp/static/offline/qti/theme.css.map index b8a6008cd54aa5e7a00aa1b3b59d1769b6905fcb..f2c3b2281f8bc8169d07279276ad94631e0aa47e 100644 --- a/src/main/webapp/static/offline/qti/theme.css.map +++ b/src/main/webapp/static/offline/qti/theme.css.map @@ -1,7 +1,7 @@ { "version": 3, -"mappings": "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", -"sources": ["../../themes/light/_license.scss","../../bootstrap/stylesheets/bootstrap/_normalize.scss","../../bootstrap/stylesheets/bootstrap/_print.scss","../../bootstrap/stylesheets/bootstrap/_scaffolding.scss","../../bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss","../../themes/light/_config.scss","../../bootstrap/stylesheets/bootstrap/_variables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss","../../bootstrap/stylesheets/bootstrap/mixins/_image.scss","../../bootstrap/stylesheets/bootstrap/_type.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss","../../bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss","../../bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss","../../bootstrap/stylesheets/bootstrap/_code.scss","../../bootstrap/stylesheets/bootstrap/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid-framework.scss","../../bootstrap/stylesheets/bootstrap/_tables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_table-row.scss","../../bootstrap/stylesheets/bootstrap/_forms.scss","../../bootstrap/stylesheets/bootstrap/mixins/_forms.scss","../../bootstrap/stylesheets/bootstrap/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_opacity.scss","../../bootstrap/stylesheets/bootstrap/_component-animations.scss","../../bootstrap/stylesheets/bootstrap/_dropdowns.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-divider.scss","../../bootstrap/stylesheets/bootstrap/mixins/_reset-filter.scss","../../bootstrap/stylesheets/bootstrap/_button-groups.scss","../../bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss","../../bootstrap/stylesheets/bootstrap/_input-groups.scss","../../bootstrap/stylesheets/bootstrap/_navs.scss","../../bootstrap/stylesheets/bootstrap/_navbar.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-vertical-align.scss","../../bootstrap/stylesheets/bootstrap/_breadcrumbs.scss","../../bootstrap/stylesheets/bootstrap/_pagination.scss","../../bootstrap/stylesheets/bootstrap/mixins/_pagination.scss","../../bootstrap/stylesheets/bootstrap/_pager.scss","../../bootstrap/stylesheets/bootstrap/_labels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_labels.scss","../../bootstrap/stylesheets/bootstrap/_badges.scss","../../bootstrap/stylesheets/bootstrap/_jumbotron.scss","../../bootstrap/stylesheets/bootstrap/_thumbnails.scss","../../bootstrap/stylesheets/bootstrap/_alerts.scss","../../bootstrap/stylesheets/bootstrap/mixins/_alerts.scss","../../bootstrap/stylesheets/bootstrap/_progress-bars.scss","../../bootstrap/stylesheets/bootstrap/mixins/_gradients.scss","../../bootstrap/stylesheets/bootstrap/mixins/_progress-bar.scss","../../bootstrap/stylesheets/bootstrap/_media.scss","../../bootstrap/stylesheets/bootstrap/_list-group.scss","../../bootstrap/stylesheets/bootstrap/mixins/_list-group.scss","../../bootstrap/stylesheets/bootstrap/_panels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_panels.scss","../../bootstrap/stylesheets/bootstrap/_responsive-embed.scss","../../bootstrap/stylesheets/bootstrap/_wells.scss","../../bootstrap/stylesheets/bootstrap/_close.scss","../../bootstrap/stylesheets/bootstrap/_modals.scss","../../bootstrap/stylesheets/bootstrap/_tooltip.scss","../../bootstrap/stylesheets/bootstrap/_popovers.scss","../../bootstrap/stylesheets/bootstrap/_utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_center-block.scss","../../bootstrap/stylesheets/bootstrap/mixins/_hide-text.scss","../../bootstrap/stylesheets/bootstrap/_responsive-utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_responsive-visibility.scss","../../themes/light/modules/_bootstrap.scss","../../themes/light/modules/_fonts.scss","../../font-awesome/scss/_path.scss","../../font-awesome/scss/_core.scss","../../font-awesome/scss/_larger.scss","../../font-awesome/scss/_fixed-width.scss","../../font-awesome/scss/_list.scss","../../font-awesome/scss/_variables.scss","../../font-awesome/scss/_bordered-pulled.scss","../../font-awesome/scss/_animated.scss","../../font-awesome/scss/_rotated-flipped.scss","../../font-awesome/scss/_mixins.scss","../../font-awesome/scss/_stacked.scss","../../themes/light/modules/_icons.scss","../../themes/light/modules/_helpers.scss","../../themes/light/modules/_dialog.scss","../../themes/light/modules/_mixins.scss","../../themes/light/modules/_content_embedded.scss","../../themes/light/modules/_qti.scss","theme.scss"], +"mappings": "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", +"sources": ["../../themes/light/_license.scss","../../bootstrap/stylesheets/bootstrap/_normalize.scss","../../bootstrap/stylesheets/bootstrap/_print.scss","../../bootstrap/stylesheets/bootstrap/_scaffolding.scss","../../bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss","../../themes/light/_config.scss","../../bootstrap/stylesheets/bootstrap/_variables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss","../../bootstrap/stylesheets/bootstrap/mixins/_image.scss","../../bootstrap/stylesheets/bootstrap/_type.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss","../../bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss","../../bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss","../../bootstrap/stylesheets/bootstrap/_code.scss","../../bootstrap/stylesheets/bootstrap/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid-framework.scss","../../bootstrap/stylesheets/bootstrap/_tables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_table-row.scss","../../bootstrap/stylesheets/bootstrap/_forms.scss","../../bootstrap/stylesheets/bootstrap/mixins/_forms.scss","../../bootstrap/stylesheets/bootstrap/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_opacity.scss","../../bootstrap/stylesheets/bootstrap/_component-animations.scss","../../bootstrap/stylesheets/bootstrap/_dropdowns.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-divider.scss","../../bootstrap/stylesheets/bootstrap/mixins/_reset-filter.scss","../../bootstrap/stylesheets/bootstrap/_button-groups.scss","../../bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss","../../bootstrap/stylesheets/bootstrap/_input-groups.scss","../../bootstrap/stylesheets/bootstrap/_navs.scss","../../bootstrap/stylesheets/bootstrap/_navbar.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-vertical-align.scss","../../bootstrap/stylesheets/bootstrap/_breadcrumbs.scss","../../bootstrap/stylesheets/bootstrap/_pagination.scss","../../bootstrap/stylesheets/bootstrap/mixins/_pagination.scss","../../bootstrap/stylesheets/bootstrap/_pager.scss","../../bootstrap/stylesheets/bootstrap/_labels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_labels.scss","../../bootstrap/stylesheets/bootstrap/_badges.scss","../../bootstrap/stylesheets/bootstrap/_jumbotron.scss","../../bootstrap/stylesheets/bootstrap/_thumbnails.scss","../../bootstrap/stylesheets/bootstrap/_alerts.scss","../../bootstrap/stylesheets/bootstrap/mixins/_alerts.scss","../../bootstrap/stylesheets/bootstrap/_progress-bars.scss","../../bootstrap/stylesheets/bootstrap/mixins/_gradients.scss","../../bootstrap/stylesheets/bootstrap/mixins/_progress-bar.scss","../../bootstrap/stylesheets/bootstrap/_media.scss","../../bootstrap/stylesheets/bootstrap/_list-group.scss","../../bootstrap/stylesheets/bootstrap/mixins/_list-group.scss","../../bootstrap/stylesheets/bootstrap/_panels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_panels.scss","../../bootstrap/stylesheets/bootstrap/_responsive-embed.scss","../../bootstrap/stylesheets/bootstrap/_wells.scss","../../bootstrap/stylesheets/bootstrap/_close.scss","../../bootstrap/stylesheets/bootstrap/_modals.scss","../../bootstrap/stylesheets/bootstrap/_tooltip.scss","../../bootstrap/stylesheets/bootstrap/_popovers.scss","../../bootstrap/stylesheets/bootstrap/_utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_center-block.scss","../../bootstrap/stylesheets/bootstrap/mixins/_hide-text.scss","../../bootstrap/stylesheets/bootstrap/_responsive-utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_responsive-visibility.scss","../../themes/light/modules/_bootstrap.scss","../../themes/light/modules/_fonts.scss","../../font-awesome/scss/_path.scss","../../font-awesome/scss/_core.scss","../../font-awesome/scss/_larger.scss","../../font-awesome/scss/_fixed-width.scss","../../font-awesome/scss/_list.scss","../../font-awesome/scss/_variables.scss","../../font-awesome/scss/_bordered-pulled.scss","../../font-awesome/scss/_animated.scss","../../font-awesome/scss/_rotated-flipped.scss","../../font-awesome/scss/_mixins.scss","../../font-awesome/scss/_stacked.scss","../../themes/light/modules/_icons.scss","../../themes/light/modules/_helpers.scss","../../themes/light/modules/_dialog.scss","../../themes/light/modules/_mixins.scss","../../themes/light/modules/_content_embedded.scss","../../themes/light/modules/_radial-progress.scss","../../themes/light/modules/_qti.scss","../../themes/light/modules/_qti21.scss","theme.scss"], "names": [], "file": "theme.css" } \ No newline at end of file diff --git a/src/main/webapp/static/offline/qti/theme.scss b/src/main/webapp/static/offline/qti/theme.scss index ec668ec1a46d2733038bffebcf9905543883815f..12ef33fe1584517f76322ba694764668cce7dc50 100644 --- a/src/main/webapp/static/offline/qti/theme.scss +++ b/src/main/webapp/static/offline/qti/theme.scss @@ -3,13 +3,11 @@ /* * ================================================= * - * Main SASS file for the OpenOLAT default theme - * - * @author gnaegi, www.frentix.com - * @date April 2014 - * - * please read themes.README to create your own themes! + * SASS file for offline qti results overview * + * compile using standard compiletheme script, e.g. + * cd /my/path/to/OpenOLAT/src/main/webapp/static/themes/ + * ./compiletheme.sh /my/path/to/OpenOLAT/src/main/webapp/static/offline/qti * ================================================= */ @import "../../themes/light/license"; @@ -21,17 +19,17 @@ /* -------- OpenOLAT modules -------- */ @import "../../themes/light/modules/fonts"; /* defines extra fonts used as icons */ -@import "modules/icons"; /* must be second include - provides classes used as extensions */ -//@import "modules/emoticons"; +@import "../../themes/light/modules/icons"; /* must be second include - provides classes used as extensions */ @import "../../themes/light/modules/mixins"; @import "../../themes/light/modules/helpers"; @import "../../themes/light/modules/dialog"; -//@import "modules/type"; @import "../../themes/light/modules/content_embedded"; /* add all styles that are created by html editor but can also be rendered in main window, not in iframe (e.g. forum post, blog entry) */ +@import "../../themes/light/modules/radial-progress"; /* now load QTI suff */ @import "../../themes/light/modules/qti"; +@import "../../themes/light/modules/qti21"; .o_page_margins { padding-top: 25px; diff --git a/src/main/webapp/static/offline/qti/theme_ie_completions.css b/src/main/webapp/static/offline/qti/theme_ie_completions.css index 9bfd54c6ec0f42baba57768d3170881569087561..0adebc6fb568d6f520bf6197270cb0f3344c6c3b 100644 --- a/src/main/webapp/static/offline/qti/theme_ie_completions.css +++ b/src/main/webapp/static/offline/qti/theme_ie_completions.css @@ -22,4 +22,4 @@ * @author gnaegi, www.frentix.com * @date April. 2014 * ======================================================== -**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn,.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,.form-group-sm .form-control,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn,.form-group-sm .form-control{height:auto}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn,.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,.form-group-lg .form-control,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn,.form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table,.panel-collapse>.table,.panel-collapse>.table-responsive>.table,.panel-collapse>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption,.panel-collapse>.table caption,.panel-collapse>.table-responsive>.table caption,.panel-collapse>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel-collapse>.table:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child,.panel-collapse>.table:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,.panel-collapse>.panel-body+.table,.panel-collapse>.panel-body+.table-responsive,.panel-collapse>.table+.panel-body,.panel-collapse>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.panel-collapse>.table>tbody:first-child>tr:first-child th,.panel-collapse>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,.panel-collapse>.table-bordered,.panel-collapse>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.panel-collapse>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:1.42857;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.panel .panel-heading[data-toggle="collapse"]{cursor:pointer}#o_ajax_busy_backdrop{bottom:0;z-index:1020}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}.btn.btn-primary.o_disabled{color:#fff !important}body .progress-bar[aria-valuenow="1"],body .progress-bar[aria-valuenow="2"]{min-width:1px}td.text-left>div.form-inline>label.checkbox-inline>input[type='checkbox']{position:relative}@-moz-document url-prefix(){fieldset{display:table-cell}}@font-face{font-family:'openolat';src:url("../light/fonts/openolat/openolat.eot?4yacgg");src:url("../light/fonts/openolat/openolat.eot?#iefix4yacgg") format("embedded-opentype"),url("../light/fonts/openolat/openolat.woff?4yacgg") format("woff"),url("../light/fonts/openolat/openolat.ttf?4yacgg") format("truetype"),url("../light/fonts/openolat/openolat.svg?4yacgg#openolat") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot?v=4.5.0");src:url("../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.5.0") format("embedded-opentype"),url("../../font-awesome/fonts/fontawesome-webfont.woff2?v=4.5.0") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff?v=4.5.0") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.5.0") format("truetype"),url("../../font-awesome/fonts/fontawesome-webfont.svg?v=4.5.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.28571em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.o_icon-li.o_icon-lg{left:-1.85714em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.o_icon-pull-left{float:left}.o_icon-pull-right{float:right}.o_icon.o_icon-pull-left{margin-right:.3em}.o_icon.o_icon-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.o_icon-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .o_icon-rotate-90,:root .o_icon-rotate-180,:root .o_icon-rotate-270,:root .o_icon-flip-horizontal,:root .o_icon-flip-vertical{filter:none}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_accepted:before{content:"ï…¤"}.o_icon_accessibility:before{content:""}.o_icon_actions:before{content:"ï‚…"}.o_icon_add_html:before{content:"ï„¡"}.o_icon_archive_tool:before{content:""}.o_icon_assessment_mode:before{content:"ï„"}.o_icon_assessment_tool:before{content:"ï‚‘"}.o_icon_assignment:before{content:"";color:#d9534f}.o_icon_attempt_limit:before{content:""}.o_icon_accept:before{content:"";color:#5cb85c}.o_icon_add:before{content:"ï•"}.o_icon_add_member:before{content:""}.o_icon_add_search:before{content:""}.o_icon_audio:before{content:""}.o_icon_back:before{content:"ï“"}.o_icon_back_history:before{content:""}.o_icon_banned:before{content:"";color:#d9534f}.o_icon_bold:before{content:""}.o_icon_booking:before{content:"ïº"}.o_icon_bookmark:before{content:"";color:#bc2d0c}.o_icon_bookmark_add:before{content:"ï‚—"}.o_icon_bookmark_header:before{content:""}.o_icon_browse:before{content:""}.o_icon_brush:before{content:""}.o_icon_browsercheck:before{content:"ï…¤"}.o_icon_busy:before{content:"ï„"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_enabled:before{content:"ï†"}.o_icon_calendar_disabled:before{content:"ï‚–"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_sync:before{content:""}.o_icon_caret:before{content:""}.o_icon_caret_right:before{content:""}.o_icon_catalog:before{content:""}.o_icon_catalog_sub:before{content:"ï»"}.o_icon_certificate:before{content:"ï‚£"}.o_icon_chat:before{content:""}.o_icon_check:before{content:""}.o_icon_check_off:before{content:"ï‚–"}.o_icon_check_on:before{content:"ï†"}.o_icon_checkbox:before{content:"ï‚–"}.o_icon_checkbox_checked:before{content:"ï…Š"}.o_icon_circle:before{content:""}.o_icon_circle_color:before{content:"ï„‘"}.o_icon_citation:before{content:"ï„"}.o_icon_cleanup:before{content:""}.o_icon_clear_all:before{content:""}.o_icon_close:before{content:"ï€"}.o_icon_close_resource:before{content:""}.o_icon_close_tab:before{content:"ï€"}.o_icon_close_tool:before{content:"ï€"}.o_icon_close_tree:before{content:""}.o_icon_close_togglebox:before{content:""}.o_icon_code:before{content:"ï„¡"}.o_icon_color_picker:before{content:"ïƒ"}.o_icon_copy:before{content:""}.o_icon_courseareas:before{content:""}.o_icon_coursedb:before{content:""}.o_icon_courseeditor:before{content:"ï„"}.o_icon_coursefolder:before{content:"ï„”"}.o_icon_courserun:before{content:""}.o_icon_comments:before{content:""}.o_icon_comments_none:before{content:""}.o_icon_compress:before{content:"ï¦"}.o_icon_content_popup:before{content:""}.o_icon_correct_answer:before{content:"";color:#5cb85c}.o_icon_correction:before{content:"ï€"}.o_icon_customize:before{content:""}.o_icon_delete_item:before{content:""}.o_icon_delete:before{content:"ï–";color:#A87E7E}.o_icon_details:before{content:""}.o_icon_description:before{content:"ïš"}.o_icon_dev:before{content:""}.o_icon_disabled:before{content:""}.o_icon_download:before{content:""}.o_icon_edit:before{content:"ï„"}.o_icon_edit_file:before{content:"ï„"}.o_icon_edit_metadata:before{content:""}.o_icon_element_after:before{content:"ï£"}.o_icon_element_before:before{content:"ï¢"}.o_icon_enabled:before{content:"ï„‘"}.o_icon_enlarge:before{content:""}.o_icon_eportfolio_add:before{content:"ï„®"}.o_icon_eportfolio_link:before{content:"ï„®"}.o_icon_eraser:before{content:"ï„"}.o_icon_error:before{content:"ïª";color:#d9534f}.o_icon_expand:before{content:"ï¥"}.o_icon_expenditure:before{content:""}.o_icon_export:before{content:"ï…"}.o_icon_external_link:before{content:""}.o_icon_failed:before{content:"ï—"}.o_icon_files:before{content:""}.o_icon_filter:before{content:"ï‚°"}.o_icon_graduate:before{content:"ï†"}.o_icon_group:before,.o_BusinessGroup_icon:before{content:""}.o_icon_header:before{content:""}.o_icon_help:before{content:"ï™";cursor:help}.o_icon_home:before{content:""}.o_icon_image:before{content:""}.o_icon_impress:before{content:"ïš"}.o_icon_important:before{content:"ï±";color:#f0ad4e}.o_icon_import:before{content:"ï‚“"}.o_icon_info:before{content:"ïš";color:#5bc0de}.o_icon_info_msg:before{content:"ïª";color:#d9534f}.o_icon_info_resource:before{content:"ïš"}.o_icon_inline_editable:before{content:"ï„"}.o_icon_institution:before{content:""}.o_icon_italic:before{content:""}.o_icon_landingpage:before{content:"ï…€"}.o_icon_language:before{content:""}.o_icon_layout:before{content:""}.o_icon_line:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_link_extern:before{content:""}.o_icon_list:before{content:""}.o_icon_list_num:before{content:""}.o_icon_lifecycle:before{content:""}.o_icon_lifecycle_date:before{content:"ï³"}.o_icon_locked:before{content:""}.o_icon_login:before{content:"ï‚"}.o_icon_logout:before{content:"ï‚‹"}.o_icon_mandatory:before{content:"ï©";color:#f0ad4e}.o_icon_managed:before{content:"ï¹";color:#777}.o_icon_manual:before{content:"ï€";cursor:help}.o_icon_mail:before{content:""}.o_icon_math:before{content:"\u03A3"}.o_icon_media:before{content:""}.o_icon_mediacenter:before{content:"ï¼"}.o_icon_membersmanagement:before{content:""}.o_icon_menuhandel:before{content:""}.o_icon_message:before{content:"ïƒ "}.o_icon_mobile:before{content:"ï„‹"}.o_icon_move:before{content:"ï‡"}.o_icon_move_down:before{content:""}.o_icon_move_left:before{content:"ï„€"}.o_icon_move_right:before{content:"ï„"}.o_icon_move_up:before{content:"ï„‚"}.o_icon_new:before{content:"ï©";color:#5cb85c}.o_icon_new_document:before{content:"ï…œ"}.o_icon_new_folder:before{content:"ï»"}.o_icon_new_portfolio:before{content:"ï€"}.o_icon_news:before{content:"ïš"}.o_icon_next:before{content:""}.o_icon_next_page:before{content:"ï„"}.o_icon_next_toolbar:before{content:""}.o_icon_node_after:before{content:"ï…µ"}.o_icon_node_before:before{content:"ï…¶"}.o_icon_node_under:before{content:"ï„’"}.o_icon_notes:before{content:""}.o_icon_notification:before{content:""}.o_icon_ok:before{content:"";color:#5cb85c}.o_icon_open_tree:before{content:""}.o_icon_open_togglebox:before{content:""}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\E600";font-family:openolat;font-size:10px}.o_icon_options:before{content:""}.o_icon_others:before{content:""}.o_icon_pageing:before{content:"ï…"}.o_icon_paragraph:before{content:"ï‡"}.o_icon_passed:before{content:"ï˜"}.o_icon_password:before{content:""}.o_icon_pending:before{content:"ï„"}.o_icon_phone:before{content:"ï‚•"}.o_icon_post:before{content:""}.o_icon_preview:before{content:"ï®"}.o_icon_previous:before{content:"ï„·"}.o_icon_previous_page:before{content:"ï„€"}.o_icon_previous_toolbar:before{content:""}.o_icon_print:before{content:""}.o_icon_private:before{content:""}.o_icon_provider_adfs:before{content:"ï…º"}.o_icon_provider_facebook:before{content:""}.o_icon_provider_google:before{content:""}.o_icon_provider_guest:before{content:""}.o_icon_provider_ldap:before{content:""}.o_icon_provider_linkedin:before{content:""}.o_icon_provider_oauth:before{content:""}.o_icon_provider_openid:before{content:""}.o_icon_provider_performx:before{content:""}.o_icon_provider_shibboleth:before{content:""}.o_icon_provider_twitter:before{content:"ï‚™"}.o_icon_publish:before{content:"ï¤"}.o_icon_qrcode:before{content:""}.o_icon_quickview:before{content:"ï®"}.o_icon_radio_off:before{content:""}.o_icon_radio_on:before{content:"ï"}.o_icon_rating_on:before{content:""}.o_icon_rating_off:before{content:""}.o_icon_read:before{content:""}.o_icon_readonly:before{content:"ï„";color:red}.o_icon_readwrite:before{content:"ï„"}.o_icon_recycle:before{content:""}.o_icon_rectangle:before{content:"ï‚–"}.o_icon_redo:before{content:""}.o_icon_refresh:before{content:""}.o_icon_reject:before{content:"ï€";color:#d9534f}.o_icon_rejected:before{content:"ï…¥"}.o_icon_reminder:before{content:""}.o_icon_remove:before{content:"ï€"}.o_icon_replace:before{content:""}.o_icon_reply:before{content:"ï„’"}.o_icon_reply_with_quote:before{content:"ï„¢"}.o_icon_response_feedback:before{content:""}.o_icon_restore:before{content:"ï…¤"}.o_icon_review:before{content:"ï®"}.o_icon_reviewer:before{content:""}.o_icon_rss:before{content:""}.o_icon_rss_unsubscribe:before{content:"";color:#996633}.o_icon_save:before{content:""}.o_icon_search:before{content:""}.o_icon_select:before{content:""}.o_icon_send:before{content:"ïƒ "}.o_icon_settings:before{content:"ï‚…"}.o_icon_share:before{content:"ï¤"}.o_icon_show_more:before{content:"ï…"}.o_icon_show_less:before{content:"ï…‘"}.o_icon_show_send:before{content:""}.o_icon_sign_out:before{content:"ï‚‹"}.o_icon_slide_down:before{content:"ï¸"}.o_icon_slide_up:before{content:"ï·"}.o_icon_spacer:before{content:"ï¾"}.o_icon_split:before{content:"ï„§"}.o_icon_sort:before{content:""}.o_icon_sort_asc:before{content:""}.o_icon_sort_desc:before{content:"ïƒ"}.o_icon_sort_amount_asc:before{content:"ï… "}.o_icon_sort_amount_desc:before{content:"ï…¡"}.o_icon_sort_menu:before{content:"ï… "}.o_icon_start:before{content:"ï”"}.o_icon_status_available:before{content:"ï„‘";color:#063}.o_icon_status_chat:before{content:"ïµ"}.o_icon_status_dnd:before{content:"";color:#cc3}.o_icon_status_unavailable:before{content:"ïœ";color:#963}.o_icon_status_not_started:before{content:""}.o_icon_status_in_progress:before{content:"ï‹"}.o_icon_status_in_review:before{content:""}.o_icon_status_done:before{content:"ï˜"}.o_icon_statistics_tool:before{content:"ï‚€"}.o_icon_submit:before{content:""}.o_icon_table:before{content:""}.o_icon_table_custom:before{content:""}.o_icon_table_large:before{content:""}.o_icon_tags:before{content:""}.o_icon_timelimit:before{content:""}.o_icon_toggle:before{content:"ï„‘"}.o_icon_toggle_on:before{content:""}.o_icon_toggle_off:before{content:""}.o_icon_to_read:before{content:"ï„‘"}.o_icon_tool:before{content:""}.o_icon_tools:before{content:"ï‚"}.o_icon_top:before{content:"ï·"}.o_icon_translation_item:before{content:""}.o_icon_translation_package:before{content:"ï„•"}.o_icon_undo:before{content:""}.o_icon_user:before{content:""}.o_icon_user_vip:before{content:"ï†"}.o_icon_user_anonymous:before{content:""}.o_icon_upload:before{content:"ï‚“"}.o_icon_version:before{content:""}.o_icon_video:before{content:""}.o_icon_visitingcard.o_icon_waiting:before{content:""}.o_icon_warn:before{content:"ï±";color:#f0ad4e}.o_icon_wizard:before{content:"ïƒ"}.o_icon_xing:before{content:"ï…¨";color:#cfdc00}.o_BinderTemplate_icon:before{content:""}.o_CourseModule_icon:before,.o_course_icon:before{content:""}.o_EPStructuredMapTemplate_icon:before{content:"ï„®"}.o_FileResource-BLOG_icon:before{content:"ï‚¡"}.o_FileResource-IMSCP_icon:before{content:""}.o_FileResource-PODCAST_icon:before{content:""}.o_FileResource-SHAREDFOLDER:before{content:""}.o_FileResource-SCORMCP_icon:before{content:""}.o_FileResource-SURVEY_icon:before{content:""}.o_FileResource-TEST_icon:before{content:"ï„"}.o_FileResource-IMSQTI21_icon:before{content:"ï…‹"}.o_FileResource-WIKI_icon:before{content:""}.o_FileResource-SHAREDFOLDER_icon:before{content:"ï„•"}.o_FileResource-GLOSSARY_icon:before{content:"ï†"}.o_FileResource-PDF_icon:before{content:"ï‡"}.o_FileResource-XLS_icon:before{content:""}.o_FileResource-PPT_icon:before{content:""}.o_FileResource-DOC_icon:before{content:""}.o_FileResource-ANIM_icon:before{content:""}.o_FileResource-IMAGE_icon:before{content:""}.o_FileResource-SOUND_icon:before{content:""}.o_FileResource-MOVIE_icon:before{content:""}.o_FileResource-FILE_icon:before{content:""}.o_FileResource-VIDEO_icon:before{content:""}.o_CourseModule_icon_closed:before{content:"ïž"}.o_sp_icon:before{content:""}.o_st_icon:before{content:""}.o_tu_icon:before{content:""}.o_bc_icon:before{content:"ï„•"}.o_lti_icon:before{content:""}.o_cp_icon:before{content:""}.o_cp_item:before{content:""}.o_scorm_icon:before{content:""}.o_en_icon:before{content:"ï‚"}.o_fo_icon:before{content:""}.o_co_icon:before{content:""}.o_infomsg_icon:before{content:"ïš"}.o_cal_icon:before{content:"ï³"}.o_wiki_icon:before{content:""}.o_podcast_icon:before{content:""}.o_blog_icon:before{content:"ï‚¡"}.o_ep_icon:before{content:""}.o_ep_icon_v1:before{content:"ï„®"}.o_iqtest_icon:before{content:"ï„"}.o_iqself_icon:before{content:"ï„"}.o_iqsurv_icon:before{content:""}.o_qtiassessment_icon:before{content:"ï…‹"}.o_ta_icon:before{content:"ï‚®"}.o_gta_icon:before{content:"ï‚®"}.o_ms_icon:before{content:""}.o_dialog_icon:before{content:""}.o_projectbroker_icon:before{content:""}.o_ll_icon:before{content:"ïƒ"}.o_den_icon:before{content:""}.o_cmembers_icon:before{content:""}.o_cl_icon:before{content:"ï†"}.o_vc_icon:before{content:""}.o_video_icon:before{content:""}.o_vitero_icon:before{content:""}.o_openmeetings_icon:before{content:""}.o_gotomeeting_icon:before{content:""}.o_portlet_infomsg_icon:before{content:"ïš"}.o_portlet_quickstart_icon:before{content:""}.o_portlet_bookmark_icon:before{content:""}.o_portlet_groups_icon:before{content:""}.o_portlet_notes_icon:before{content:""}.o_portlet_noti_icon:before{content:""}.o_portlet_eff_icon:before{content:"ï‚£"}.o_portlet_repository_student_icon:before{content:""}.o_portlet_repository_teacher_icon:before{content:"ï†"}.o_portlet_iframe_icon:before{content:""}.o_portlet_sysinfo_icon:before{content:""}.o_portlet_dyk_icon:before{content:""}.o_portlet_infomessages_icon:before{content:""}.o_portlet_cal_icon:before{content:"ï³"}.o_portlet_institutions_icon:before{content:""}.o_portlet_links_icon:before{content:"ïƒ"}.o_portlet_shibboleth_icon:before{content:"ï‚"}.o_icon_qpool:before{content:""}.o_icon_pool_private:before{content:"ï‚–"}.o_icon_pool_public:before{content:"ï†"}.o_icon_pool_my_items:before{content:""}.o_icon_pool_favorits:before{content:""}.o_icon_pool_collection:before{content:""}.o_icon_pool_pool:before{content:""}.o_icon_pool_share:before{content:""}.o_forum_message_icon:before{content:""}.o_calendar_icon:before{content:"ï³"}.o_icon_pf_section_draft:before{content:"ï°";color:#f0ad4e}.o_icon_pf_section_progress:before{content:"";color:#f0ad4e}.o_icon_pf_section_submitted:before{content:"";color:#337ab7}.o_icon_pf_section_closed:before{content:"";color:#5cb85c}.o_icon_pf_binder:before{content:""}.o_icon_pf_entry:before{content:"ï…›"}.o_icon_pf_entry_draft:before{content:"ï„‘";color:#f0ad4e}.o_icon_pf_entry_published:before{content:"ï„‘";color:#337ab7}.o_icon_pf_entry_revision:before{content:"ï„‘";color:#d9534f}.o_icon_pf_entry_closed:before{content:"ï„‘";color:#5cb85c}.o_icon_pf_entry_deleted:before{content:"";color:#000}.o_icon_pf_history:before{content:""}.o_icon_pf_my_shares:before{content:"ï‡ "}.o_icon_pf_quick_links:before{content:"ï¤"}.o_icon_pf_page:before{content:""}.o_icon_pf_section:before{content:""}.o_icon_pf_shared_with_me:before{content:""}.o_forum_status_thread_icon:before{content:""}.o_forum_status_sticky_closed_icon:before{content:"ïž"}.o_forum_status_sticky_icon:before{content:""}.o_forum_status_closed_icon:before{content:"ïž";color:#a94442}.o_forum_status_opened_icon:before{content:"ïž";color:#3c763d}.o_forum_status_hidden_icon:before{content:"ï°";color:#a94442}.o_forum_status_visible_icon:before{content:"ï®";color:#3c763d}.o_forum_all_icon:before{content:""}.o_forum_all_flat_icon:before{content:""}.o_forum_one_icon:before{content:"ï®"}.o_forum_marked_icon:before{content:""}.o_forum_new_icon:before{content:"ï©"}.o_mi_qpool_import:before{content:""}.o_mi_qtisection:before{content:""}.o_mi_qtisc:before{content:""}.o_mi_qtimc:before{content:"ï†"}.o_mi_qtikprim:before{content:"ï…Š"}.o_mi_qtifib:before{content:"ï…"}.o_mi_qtinumerical:before{content:""}.o_mi_qtihotspot:before{content:""}.o_mi_qtiessay:before{content:""}.o_mi_qtiunkown:before{content:""}.o_as_mode_leadtime:before{content:""}.o_as_mode_assessment:before{content:"ï‹"}.o_as_mode_followup:before{content:"ïž"}.o_as_mode_closed:before{content:'-'}.o_black_led:before{content:"ï„‘";color:#337ab7}.o_green_led:before{content:"ï„‘";color:#5cb85c}.o_yellow_led:before{content:"ï„‘";color:#f0ad4e}.o_red_led:before{content:"ï„‘";color:#d9534f}.o_ac_token_icon:before{content:"ï‚„"}.o_ac_free_icon:before{content:"ï«"}.o_ac_group_icon:before{content:""}.o_ac_membersonly_icon:before{content:""}.o_ac_paypal_icon:before{content:""}.o_ac_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_status_succes_icon:before{content:"";color:#5cb85c}.o_ac_status_waiting_icon:before{content:"";color:#337ab7}.o_ac_order_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_order_status_prepayment_icon:before{content:"";color:#5bc0de}.o_ac_order_status_payed_icon:before{content:"";color:#5cb85c}.o_ac_order_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_order_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_order_status_warning_icon:before{content:"";color:#f0ad4e}.o_scorm_org:before{content:""}.o_scorm_item:before{content:""}.o_scorm_completed:before,.o_scorm_passed:before{content:"ï˜"}.o_scorm_failed:before{content:"ï±"}.o_scorm_incomplete:before{content:"ï±"}.o_scorm_not_attempted:before{background:none}.o_midpub:before{content:"ï˜"}.o_midwarn:before{content:"ï±"}.o_midlock:before{content:""}.o_miderr:before{content:"ïª"}.o_middel:before{content:"ï„"}.o_filetype_file:before,.o_filetype_ico:before{content:""}.o_filetype_folder:before{content:"ï„”"}.o_filetype_folder_open:before{content:"ï„•"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:""}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:""}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:""}.o_filetype_xls:before,.o_filetype_xlsx:before{content:""}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:""}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:""}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:""}.o_filetype_ps:before,.o_filetype_pdf:before{content:"ï‡"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:""}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:""}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:""}.o_icon_share_social:before{content:"ï…"}.o_icon_apple:before{content:"ï…¹"}.o_icon_facebook:before{content:"ï‚‚"}.o_icon_twitter:before{content:"ï‚"}.o_icon_google:before{content:""}.o_icon_delicious:before{content:""}.o_icon_digg:before{content:""}.o_icon_mailto:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_yahoo:before{content:""}a.o_icon:hover,a.o_icon:focus{text-decoration:none}.o_block_bottom,.o_block,.o_button_group,.o_header_with_buttons{margin-bottom:1em}.o_block_top,.o_block,.o_button_group{margin-top:1em}.o_block_large_bottom,.o_block_large{margin-bottom:2em}.o_block_large_top,.o_block_large{margin-top:2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4{display:inline-block}.o_header_with_buttons .o_button_group{margin-top:10px;margin-bottom:0;float:right}.panel-heading.o_header_with_buttons{margin-bottom:0}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#78acd9;border-radius:10px}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-top:none;border-left:none;border-right:none;color:#337ab7;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:12px}.o_small,.b_small,p.b_small,div.b_small{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:18px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,.o_disabled:focus,.b_disabled:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_info,.b_info,p.b_info,div.b_info,div.o_qti_item_itemfeedback{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info h5,.b_info h2,div.o_qti_item_itemfeedback h2,.b_info h3,div.o_qti_item_itemfeedback h3,.b_info h4,div.o_qti_item_itemfeedback h4,.b_info h5,div.o_qti_item_itemfeedback h5{color:#777}.o_note,.b_note,p.b_note,div.b_note{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note h5,.b_note h2,.b_note h3,.b_note h4,.b_note h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important h5,.b_important h2,.b_important h3,.b_important h4,.b_important h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success h5,.b_success h2,.b_success h3,.b_success h4,.b_success h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning h5,.b_warning h2,.b_warning h3,.b_warning h4,.b_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error h5,.b_error h2,.b_error h3,.b_error h4,.b_error h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.o_user_content_block a{color:#337ab7;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#23527c;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:1px 5px;border:1px solid #777}table.b_grid th{background:#eee}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:1px 5px;border:1px solid #777}table.b_border th{background:#eee}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:1px 5px;border:0}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#337ab7}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_mailto{color:#337ab7}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#337ab7}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}span.olatFlashMovieViewer{max-width:100% !important;border:none !important}.mejs-container,.mejs-mediaelement video,.mejs-layers div,.me-cannotplay{max-width:100%}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#337ab7}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}} \ No newline at end of file +**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#fafafa;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn,.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,.form-group-sm .form-control,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn,.form-group-sm .form-control{height:auto}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn,.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,.form-group-lg .form-control,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn,.form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table,.panel-collapse>.table,.panel-collapse>.table-responsive>.table,.panel-collapse>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption,.panel-collapse>.table caption,.panel-collapse>.table-responsive>.table caption,.panel-collapse>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel-collapse>.table:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child,.panel-collapse>.table:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,.panel-collapse>.panel-body+.table,.panel-collapse>.panel-body+.table-responsive,.panel-collapse>.table+.panel-body,.panel-collapse>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.panel-collapse>.table>tbody:first-child>tr:first-child th,.panel-collapse>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,.panel-collapse>.table-bordered,.panel-collapse>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.panel-collapse>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:1.42857;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.panel .panel-heading[data-toggle="collapse"]{cursor:pointer}#o_ajax_busy_backdrop{bottom:0;z-index:1020}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}.btn.btn-primary.o_disabled{color:#fff !important}body .progress-bar[aria-valuenow="1"],body .progress-bar[aria-valuenow="2"]{min-width:1px}td.text-left>div.form-inline>label.checkbox-inline>input[type='checkbox']{position:relative}@-moz-document url-prefix(){fieldset{display:table-cell}}@font-face{font-family:'openolat';src:url("../light/fonts/openolat/openolat.eot?4yacgg");src:url("../light/fonts/openolat/openolat.eot?#iefix4yacgg") format("embedded-opentype"),url("../light/fonts/openolat/openolat.woff?4yacgg") format("woff"),url("../light/fonts/openolat/openolat.ttf?4yacgg") format("truetype"),url("../light/fonts/openolat/openolat.svg?4yacgg#openolat") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../../font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../../font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.28571em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.o_icon-li.o_icon-lg{left:-1.85714em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.o_icon-pull-left{float:left}.o_icon-pull-right{float:right}.o_icon.o_icon-pull-left{margin-right:.3em}.o_icon.o_icon-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.o_icon-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .o_icon-rotate-90,:root .o_icon-rotate-180,:root .o_icon-rotate-270,:root .o_icon-flip-horizontal,:root .o_icon-flip-vertical{filter:none}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_accepted:before{content:"ï…¤"}.o_icon_accessibility:before{content:""}.o_icon_actions:before{content:"ï‚…"}.o_icon_add_html:before{content:"ï„¡"}.o_icon_archive_tool:before{content:""}.o_icon_assessment_mode:before{content:"ï„"}.o_icon_assessment_tool:before{content:"ï‚‘"}.o_icon_assignment:before{content:"";color:#d9534f}.o_icon_attempt_limit:before{content:""}.o_icon_accept:before{content:"";color:#5cb85c}.o_icon_add:before{content:"ï•"}.o_icon_add_member:before{content:""}.o_icon_add_search:before{content:""}.o_icon_audio:before{content:""}.o_icon_back:before{content:"ï“"}.o_icon_back_history:before{content:""}.o_icon_banned:before{content:"";color:#d9534f}.o_icon_bold:before{content:""}.o_icon_booking:before{content:"ïº"}.o_icon_bookmark:before{content:"";color:#bc2d0c}.o_icon_bookmark_add:before{content:"ï‚—"}.o_icon_bookmark_header:before{content:""}.o_icon_browse:before{content:""}.o_icon_brush:before{content:""}.o_icon_browsercheck:before{content:"ï…¤"}.o_icon_busy:before{content:"ï„"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_enabled:before{content:"ï†"}.o_icon_calendar_disabled:before{content:"ï‚–"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_sync:before{content:""}.o_icon_caret:before{content:""}.o_icon_caret_right:before{content:""}.o_icon_catalog:before{content:""}.o_icon_catalog_sub:before{content:"ï»"}.o_icon_certificate:before{content:"ï‚£"}.o_icon_chat:before{content:""}.o_icon_check:before{content:""}.o_icon_check_off:before{content:"ï‚–"}.o_icon_check_on:before{content:"ï†"}.o_icon_checkbox:before{content:"ï‚–"}.o_icon_checkbox_checked:before{content:"ï…Š"}.o_icon_circle:before{content:""}.o_icon_circle_color:before{content:"ï„‘"}.o_icon_citation:before{content:"ï„"}.o_icon_cleanup:before{content:""}.o_icon_clear_all:before{content:""}.o_icon_close:before{content:"ï€"}.o_icon_close_resource:before{content:""}.o_icon_close_tab:before{content:"ï€"}.o_icon_close_tool:before{content:"ï€"}.o_icon_close_tree:before{content:""}.o_icon_close_togglebox:before{content:""}.o_icon_code:before{content:"ï„¡"}.o_icon_color_picker:before{content:"ïƒ"}.o_icon_copy:before{content:""}.o_icon_courseareas:before{content:""}.o_icon_coursedb:before{content:""}.o_icon_courseeditor:before{content:"ï„"}.o_icon_coursefolder:before{content:"ï„”"}.o_icon_courserun:before{content:""}.o_icon_comments:before{content:""}.o_icon_comments_none:before{content:""}.o_icon_compress:before{content:"ï¦"}.o_icon_content_popup:before{content:""}.o_icon_correct_answer:before{content:"";color:#5cb85c}.o_icon_correction:before{content:"ï€"}.o_icon_customize:before{content:""}.o_icon_delete_item:before{content:""}.o_icon_delete:before{content:"ï–";color:#A87E7E}.o_icon_deleted:before{content:""}.o_icon_details:before{content:""}.o_icon_description:before{content:"ïš"}.o_icon_dev:before{content:""}.o_icon_disabled:before{content:""}.o_icon_download:before{content:""}.o_icon_edit:before{content:"ï„"}.o_icon_edit_file:before{content:"ï„"}.o_icon_edit_metadata:before{content:""}.o_icon_element_after:before{content:"ï£"}.o_icon_element_before:before{content:"ï¢"}.o_icon_enabled:before{content:"ï„‘"}.o_icon_enlarge:before{content:""}.o_icon_eportfolio_add:before{content:"ï„®"}.o_icon_eportfolio_link:before{content:"ï„®"}.o_icon_eraser:before{content:"ï„"}.o_icon_error:before{content:"ïª";color:#d9534f}.o_icon_expand:before{content:"ï¥"}.o_icon_expenditure:before{content:""}.o_icon_export:before{content:"ï…"}.o_icon_external_link:before{content:""}.o_icon_failed:before{content:"ï—"}.o_icon_files:before{content:""}.o_icon_filter:before{content:"ï‚°"}.o_icon_graduate:before{content:"ï†"}.o_icon_group:before,.o_BusinessGroup_icon:before{content:""}.o_icon_header:before{content:""}.o_icon_help:before{content:"ï™";cursor:help}.o_icon_home:before{content:""}.o_icon_image:before{content:""}.o_icon_impress:before{content:"ïš"}.o_icon_important:before{content:"ï±";color:#f0ad4e}.o_icon_import:before{content:"ï‚“"}.o_icon_info:before{content:"ïš";color:#5bc0de}.o_icon_info_msg:before{content:"ïª";color:#d9534f}.o_icon_info_resource:before{content:"ïš"}.o_icon_inline_editable:before{content:"ï„"}.o_icon_institution:before{content:""}.o_icon_italic:before{content:""}.o_icon_landingpage:before{content:"ï…€"}.o_icon_language:before{content:""}.o_icon_layout:before{content:""}.o_icon_line:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_link_extern:before{content:""}.o_icon_list:before{content:""}.o_icon_list_num:before{content:""}.o_icon_lifecycle:before{content:""}.o_icon_lifecycle_date:before{content:"ï³"}.o_icon_locked:before{content:""}.o_icon_login:before{content:"ï‚"}.o_icon_logout:before{content:"ï‚‹"}.o_icon_mandatory:before{content:"ï©";color:#f0ad4e}.o_icon_managed:before{content:"ï¹";color:#777}.o_icon_manual:before{content:"ï€";cursor:help}.o_icon_mail:before{content:""}.o_icon_math:before{content:"\03a3"}.o_icon_media:before{content:""}.o_icon_mediacenter:before{content:"ï¼"}.o_icon_membersmanagement:before{content:""}.o_icon_menuhandel:before{content:""}.o_icon_message:before{content:"ïƒ "}.o_icon_mobile:before{content:"ï„‹"}.o_icon_move:before{content:"ï‡"}.o_icon_move_down:before{content:""}.o_icon_move_left:before{content:"ï„€"}.o_icon_move_right:before{content:"ï„"}.o_icon_move_up:before{content:"ï„‚"}.o_icon_new:before{content:"ï©";color:#5cb85c}.o_icon_new_document:before{content:"ï…œ"}.o_icon_new_folder:before{content:"ï»"}.o_icon_new_portfolio:before{content:"ï€"}.o_icon_news:before{content:"ïš"}.o_icon_next:before{content:""}.o_icon_next_step:before{content:"ï„"}.o_icon_next_page:before{content:"ï„"}.o_icon_next_toolbar:before{content:""}.o_icon_node_after:before{content:"ï…µ"}.o_icon_node_before:before{content:"ï…¶"}.o_icon_node_under:before{content:"ï„’"}.o_icon_notes:before{content:""}.o_icon_notification:before{content:""}.o_icon_ok:before{content:"";color:#5cb85c}.o_icon_open_tree:before{content:""}.o_icon_open_togglebox:before{content:""}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\E600";font-family:openolat;font-size:10px}.o_icon_options:before{content:""}.o_icon_others:before{content:""}.o_icon_pageing:before{content:"ï…"}.o_icon_paragraph:before{content:"ï‡"}.o_icon_passed:before{content:"ï˜"}.o_icon_password:before{content:""}.o_icon_pending:before{content:"ï„"}.o_icon_phone:before{content:"ï‚•"}.o_icon_post:before{content:""}.o_icon_preview:before{content:"ï®"}.o_icon_previous:before{content:"ï„·"}.o_icon_previous_page:before{content:"ï„€"}.o_icon_previous_step:before{content:"ï„€"}.o_icon_previous_toolbar:before{content:""}.o_icon_print:before{content:""}.o_icon_private:before{content:""}.o_icon_progress_success:before{content:"";color:#e5efe5}.o_icon_progress_danger:before{content:"ï€";color:#efe5e5}.o_icon_provider_adfs:before{content:"ï…º"}.o_icon_provider_facebook:before{content:""}.o_icon_provider_google:before{content:""}.o_icon_provider_guest:before{content:""}.o_icon_provider_ldap:before{content:""}.o_icon_provider_linkedin:before{content:""}.o_icon_provider_oauth:before{content:""}.o_icon_provider_openid:before{content:""}.o_icon_provider_performx:before{content:""}.o_icon_provider_shibboleth:before{content:""}.o_icon_provider_twitter:before{content:"ï‚™"}.o_icon_publish:before{content:"ï¤"}.o_icon_qrcode:before{content:""}.o_icon_quickview:before{content:"ï®"}.o_icon_radio_off:before{content:""}.o_icon_radio_on:before{content:"ï"}.o_icon_rating_on:before{content:""}.o_icon_rating_off:before{content:""}.o_icon_read:before{content:""}.o_icon_readonly:before{content:"ï„";color:red}.o_icon_readwrite:before{content:"ï„"}.o_icon_recycle:before{content:""}.o_icon_rectangle:before{content:"ï‚–"}.o_icon_redo:before{content:""}.o_icon_refresh:before{content:""}.o_icon_reject:before{content:"ï€";color:#d9534f}.o_icon_rejected:before{content:"ï…¥"}.o_icon_reminder:before{content:""}.o_icon_remove:before{content:"ï€"}.o_icon_remove_filters:before{content:"ï—"}.o_icon_replace:before{content:""}.o_icon_reply:before{content:"ï„’"}.o_icon_reply_with_quote:before{content:"ï„¢"}.o_icon_response_feedback:before{content:""}.o_icon_restore:before{content:"ï…¤"}.o_icon_results_visible:before{content:"ï®"}.o_icon_results_hidden:before{content:"ï°"}.o_icon_review:before{content:"ï®"}.o_icon_reviewer:before{content:""}.o_icon_rss:before{content:""}.o_icon_rss_unsubscribe:before{content:"";color:#996633}.o_icon_rubric:before{content:""}.o_icon_save:before{content:""}.o_icon_search:before{content:""}.o_icon_select:before{content:""}.o_icon_send:before{content:"ïƒ "}.o_icon_settings:before{content:"ï‚…"}.o_icon_share:before{content:"ï¤"}.o_icon_show_more:before{content:"ï…"}.o_icon_show_less:before{content:"ï…‘"}.o_icon_show_send:before{content:""}.o_icon_sign_out:before{content:"ï‚‹"}.o_icon_slide_down:before{content:"ï¸"}.o_icon_slide_up:before{content:"ï·"}.o_icon_spacer:before{content:"ï¾"}.o_icon_split:before{content:"ï„§"}.o_icon_sort:before{content:""}.o_icon_sort_asc:before{content:""}.o_icon_sort_desc:before{content:"ïƒ"}.o_icon_sort_amount_asc:before{content:"ï… "}.o_icon_sort_amount_desc:before{content:"ï…¡"}.o_icon_sort_menu:before{content:"ï… "}.o_icon_start:before{content:"ï”"}.o_icon_status_available:before{content:"ï„‘";color:#063}.o_icon_status_chat:before{content:"ïµ"}.o_icon_status_dnd:before{content:"";color:#cc3}.o_icon_status_unavailable:before{content:"ïœ";color:#963}.o_icon_status_not_started:before{content:""}.o_icon_status_in_progress:before{content:"ï‹"}.o_icon_status_in_review:before{content:""}.o_icon_status_done:before{content:"ï˜"}.o_icon_statistics_tool:before{content:"ï‚€"}.o_icon_submit:before{content:""}.o_icon_table:before{content:""}.o_icon_table_custom:before{content:""}.o_icon_table_large:before{content:""}.o_icon_tags:before{content:""}.o_icon_textinput:before{content:""}.o_icon_timelimit:before{content:""}.o_icon_timelimit_start:before{content:""}.o_icon_timelimit_half:before{content:""}.o_icon_timelimit_end:before{content:""}.o_icon_toggle:before{content:"ï„‘"}.o_icon_toggle_on:before{content:""}.o_icon_toggle_off:before{content:""}.o_icon_to_read:before{content:"ï„‘"}.o_icon_tool:before{content:""}.o_icon_tools:before{content:"ï‚"}.o_icon_top:before{content:"ï·"}.o_icon_translation_item:before{content:""}.o_icon_translation_package:before{content:"ï„•"}.o_icon_undo:before{content:""}.o_icon_user:before{content:""}.o_icon_user_vip:before{content:"ï†"}.o_icon_user_anonymous:before{content:""}.o_icon_upload:before{content:"ï‚“"}.o_icon_version:before{content:""}.o_icon_video:before{content:""}.o_icon_visitingcard.o_icon_waiting:before{content:""}.o_icon_warn:before{content:"ï±";color:#f0ad4e}.o_icon_wizard:before{content:"ïƒ"}.o_icon_xing:before{content:"ï…¨";color:#cfdc00}.o_BinderTemplate_icon:before{content:""}.o_CourseModule_icon:before,.o_course_icon:before{content:""}.o_EPStructuredMapTemplate_icon:before{content:"ï„®"}.o_FileResource-BLOG_icon:before{content:"ï‚¡"}.o_FileResource-IMSCP_icon:before{content:""}.o_FileResource-FORM_icon:before{content:""}.o_FileResource-PODCAST_icon:before{content:""}.o_FileResource-SHAREDFOLDER:before{content:""}.o_FileResource-SCORMCP_icon:before{content:""}.o_FileResource-SURVEY_icon:before{content:""}.o_FileResource-TEST_icon:before{content:"ï„"}.o_FileResource-IMSQTI21_icon:before{content:"ï…‹"}.o_FileResource-WIKI_icon:before{content:""}.o_FileResource-SHAREDFOLDER_icon:before{content:"ï„•"}.o_FileResource-GLOSSARY_icon:before{content:"ï†"}.o_FileResource-PDF_icon:before{content:"ï‡"}.o_FileResource-XLS_icon:before{content:""}.o_FileResource-PPT_icon:before{content:""}.o_FileResource-DOC_icon:before{content:""}.o_FileResource-ANIM_icon:before{content:""}.o_FileResource-IMAGE_icon:before{content:""}.o_FileResource-SOUND_icon:before{content:""}.o_FileResource-MOVIE_icon:before{content:""}.o_FileResource-FILE_icon:before{content:""}.o_FileResource-VIDEO_icon:before{content:""}.o_CourseModule_icon_closed:before{content:"ïž"}.o_sp_icon:before{content:""}.o_st_icon:before{content:""}.o_tu_icon:before{content:""}.o_bc_icon:before{content:"ï„•"}.o_lti_icon:before{content:""}.o_cp_icon:before{content:""}.o_cp_item:before{content:""}.o_scorm_icon:before{content:""}.o_en_icon:before{content:"ï‚"}.o_fo_icon:before{content:""}.o_co_icon:before{content:""}.o_infomsg_icon:before{content:"ïš"}.o_cal_icon:before{content:"ï³"}.o_wiki_icon:before{content:""}.o_podcast_icon:before{content:""}.o_pf_icon:before{content:""}.o_blog_icon:before{content:"ï‚¡"}.o_ep_icon:before{content:""}.o_ep_icon_v1:before{content:"ï„®"}.o_iqtest_icon:before{content:"ï„"}.o_iqself_icon:before{content:"ï„"}.o_iqsurv_icon:before{content:""}.o_qtiassessment_icon:before{content:"ï…‹"}.o_ta_icon:before{content:"ï‚®"}.o_gta_icon:before{content:"ï‚®"}.o_ms_icon:before{content:""}.o_dialog_icon:before{content:""}.o_projectbroker_icon:before{content:""}.o_ll_icon:before{content:"ïƒ"}.o_den_icon:before{content:""}.o_cmembers_icon:before{content:""}.o_cl_icon:before{content:"ï†"}.o_vc_icon:before{content:""}.o_video_icon:before{content:""}.o_vitero_icon:before{content:""}.o_openmeetings_icon:before{content:""}.o_gotomeeting_icon:before{content:""}.o_card2brain_icon:before{content:""}.o_portlet_infomsg_icon:before{content:"ïš"}.o_portlet_quickstart_icon:before{content:""}.o_portlet_bookmark_icon:before{content:""}.o_portlet_groups_icon:before{content:""}.o_portlet_notes_icon:before{content:""}.o_portlet_noti_icon:before{content:""}.o_portlet_eff_icon:before{content:"ï‚£"}.o_portlet_repository_student_icon:before{content:""}.o_portlet_repository_teacher_icon:before{content:"ï†"}.o_portlet_iframe_icon:before{content:""}.o_portlet_sysinfo_icon:before{content:""}.o_portlet_dyk_icon:before{content:""}.o_portlet_infomessages_icon:before{content:""}.o_portlet_cal_icon:before{content:"ï³"}.o_portlet_institutions_icon:before{content:""}.o_portlet_links_icon:before{content:"ïƒ"}.o_portlet_shibboleth_icon:before{content:"ï‚"}.o_icon_qpool:before{content:""}.o_icon_pool_private:before{content:"ï‚–"}.o_icon_pool_public:before{content:"ï†"}.o_icon_pool_my_items:before{content:""}.o_icon_pool_favorits:before{content:""}.o_icon_pool_collection:before{content:""}.o_icon_pool_pool:before{content:""}.o_icon_pool_share:before{content:""}.o_forum_message_icon:before{content:""}.o_calendar_icon:before{content:"ï³"}.o_icon_pf_section_draft:before{content:"ï°";color:#f0ad4e}.o_icon_pf_section_progress:before{content:"";color:#f0ad4e}.o_icon_pf_section_submitted:before{content:"";color:#337ab7}.o_icon_pf_section_closed:before{content:"";color:#5cb85c}.o_icon_pf_binder:before{content:""}.o_icon_pf_entry:before{content:"ï…›"}.o_icon_pf_entry_draft:before{content:"ï„‘";color:#f0ad4e}.o_icon_pf_entry_published:before{content:"ï„‘";color:#337ab7}.o_icon_pf_entry_revision:before{content:"ï„‘";color:#d9534f}.o_icon_pf_entry_closed:before{content:"ï„‘";color:#5cb85c}.o_icon_pf_entry_deleted:before{content:"";color:#000}.o_icon_pf_history:before{content:""}.o_icon_pf_my_shares:before{content:"ï‡ "}.o_icon_pf_quick_links:before{content:"ï¤"}.o_icon_pf_page:before{content:""}.o_icon_pf_section:before{content:""}.o_icon_pf_shared_with_me:before{content:""}.o_forum_status_thread_icon:before{content:""}.o_forum_status_sticky_closed_icon:before{content:"ïž"}.o_forum_status_sticky_icon:before{content:""}.o_forum_status_closed_icon:before{content:"ïž";color:#a94442}.o_forum_status_opened_icon:before{content:"ïž";color:#3c763d}.o_forum_status_hidden_icon:before{content:"ï°";color:#a94442}.o_forum_status_visible_icon:before{content:"ï®";color:#3c763d}.o_forum_all_icon:before{content:""}.o_forum_all_flat_icon:before{content:""}.o_forum_one_icon:before{content:"ï®"}.o_forum_marked_icon:before{content:""}.o_forum_new_icon:before{content:"ï©"}.o_mi_qpool_import:before{content:""}.o_mi_qtidrawing:before{content:""}.o_mi_qtisection:before{content:""}.o_mi_qtisc:before{content:""}.o_mi_qtimatch:before{content:""}.o_mi_qtimatch_draganddrop:before{content:"ï‰"}.o_mi_qtimc:before{content:"ï†"}.o_mi_qtikprim:before{content:"ï…Š"}.o_mi_qtifib:before{content:"ï…"}.o_mi_qtinumerical:before{content:""}.o_mi_qtihotspot:before{content:""}.o_mi_qtihottext:before{content:"ï"}.o_mi_qtiessay:before{content:""}.o_mi_qtiunkown:before{content:""}.o_mi_qtiupload:before{content:"ï‚“"}.o_as_mode_leadtime:before{content:""}.o_as_mode_assessment:before{content:"ï‹"}.o_as_mode_followup:before{content:"ïž"}.o_as_mode_closed:before{content:'-'}.o_icon_qti_notPresented:before{content:"";color:#ddd}.o_icon_qti_notAnswered:before{content:"ï…„";color:#f0ad4e}.o_icon_qti_answered:before{content:"ï˜";color:#5cb85c}.o_icon_qti_ended:before{content:"ïž";color:#5bc0de}.o_icon_qti_invalid:before{content:"ïª";color:#d9534f}.o_icon_qti_review:before{content:"ï®";color:#5bc0de}.o_icon_qti_reviewNotSeen:before,.o_icon_qti_reviewNotAnswered:before,.o_icon_qti_reviewInvalid:before{content:"ï°";color:#5bc0de}.o_icon_qti_end_testpart:before{content:""}.o_icon_qti_close_test:before{content:"ï‹“"}.o_icon_qti_cancel:before{content:"ï"}.o_icon_qti_suspend:before{content:"ïŒ"}.o_icon_qti_close_results:before{content:"ï‹“"}.o_icon_qti_hint:before{content:"ï™"}.o_icon_qti_summary_notAnswered:before{content:"ï„‘";color:#f0ad4e}.o_icon_qti_summary_ended:before{content:"ï—";color:#d9534f}.o_icon_qti_summary_correct:before{content:"ï˜";color:#5cb85c}.o_black_led:before{content:"ï„‘";color:#337ab7}.o_green_led:before{content:"ï„‘";color:#5cb85c}.o_yellow_led:before{content:"ï„‘";color:#f0ad4e}.o_red_led:before{content:"ï„‘";color:#d9534f}.o_ac_token_icon:before{content:"ï‚„"}.o_ac_free_icon:before{content:"ï«"}.o_ac_group_icon:before{content:""}.o_ac_membersonly_icon:before{content:""}.o_ac_paypal_icon:before{content:""}.o_ac_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_status_success_icon:before{content:"";color:#5cb85c}.o_ac_status_waiting_icon:before{content:"";color:#337ab7}.o_ac_order_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_order_status_prepayment_icon:before{content:"";color:#5bc0de}.o_ac_order_status_payed_icon:before{content:"";color:#5cb85c}.o_ac_order_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_order_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_order_status_warning_icon:before{content:"";color:#f0ad4e}.o_scorm_org:before{content:""}.o_scorm_item:before{content:""}.o_scorm_completed:before,.o_scorm_passed:before{content:"ï˜"}.o_scorm_failed:before{content:"ï±"}.o_scorm_incomplete:before{content:"ï±"}.o_scorm_not_attempted:before{background:none}.o_midpub:before{content:"ï˜"}.o_midwarn:before{content:"ï±"}.o_midlock:before{content:""}.o_miderr:before{content:"ïª"}.o_middel:before{content:"ï„"}.o_filetype_file:before,.o_filetype_ico:before{content:""}.o_filetype_folder:before{content:"ï„”"}.o_filetype_folder_open:before{content:"ï„•"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:""}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:""}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:""}.o_filetype_xls:before,.o_filetype_xlsx:before{content:""}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:""}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:""}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:""}.o_filetype_ps:before,.o_filetype_pdf:before{content:"ï‡"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:""}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:""}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:""}.o_icon_share_social:before{content:"ï…"}.o_icon_apple:before{content:"ï…¹"}.o_icon_facebook:before{content:"ï‚‚"}.o_icon_twitter:before{content:"ï‚"}.o_icon_google:before{content:""}.o_icon_delicious:before{content:""}.o_icon_digg:before{content:""}.o_icon_mailto:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_yahoo:before{content:""}a.o_icon:hover,a.o_icon:focus{text-decoration:none}.o_block_bottom,.o_block,.o_button_group,.o_header_with_buttons{margin-bottom:1em}.o_block_top,.o_block,.o_button_group{margin-top:1em}.o_block_large_bottom,.o_block_large{margin-bottom:2em}.o_block_large_top,.o_block_large{margin-top:2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_centered_wrapper{display:table;width:100%;height:100%}.o_block_centered_content{display:table-cell;vertical-align:middle;text-align:center}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.66667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#78acd9;border-radius:10px}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-top:none;border-left:none;border-right:none;color:#337ab7;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:12px}.o_small,.b_small,p.b_small,div.b_small,.o_assessment_test_results .o_qti_to_overview{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:18px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,.o_disabled:focus,.b_disabled:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_info,.b_info,p.b_info,div.b_info,div.o_qti_item_itemfeedback,.o_assessmentitem_wrapper .modalFeedback .o_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info h5,.b_info h2,div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h3,div.o_qti_item_itemfeedback h3,.o_assessmentitem_wrapper .modalFeedback .o_info h3,.b_info h4,div.o_qti_item_itemfeedback h4,.o_assessmentitem_wrapper .modalFeedback .o_info h4,.b_info h5,div.o_qti_item_itemfeedback h5,.o_assessmentitem_wrapper .modalFeedback .o_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note h5,.b_note h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h3,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h3,.b_note h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.b_note h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h5,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important h5,.b_important h2,.b_important h3,.b_important h4,.b_important h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success h5,.b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h3,.b_success h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h4,.b_success h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning h5,.b_warning h2,.b_warning h3,.b_warning h4,.b_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error h5,.b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h3,.b_error h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h4,.b_error h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.o_user_content_block a{color:#337ab7;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#23527c;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:1px 5px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:1px 5px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:1px 5px;border:0;font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:1px 5px;background:#eee;border:1px solid #fff}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:1px 5px;background:#d9edf7;border:1px solid #fff}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:1px 5px;background:#dff0d8;border:1px solid #fff}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:1px 5px;background:#fcf8e3;border:1px solid #fff}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:1px 5px;background:#f2dede;border:1px solid #fff}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#337ab7}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_mailto{color:#337ab7}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#337ab7}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0;font-size:85%;font-family:inherit}span.olatFlashMovieViewer{max-width:100% !important;border:none !important}.mejs__container,.mejs__mediaelement video,.mejs__layers div,.me_cannotplay{max-width:100%}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}.radial-progress{margin:10px;width:120px;height:120px;background-color:#eee;border-radius:50%;display:inline-block;position:relative}.radial-progress .circle .mask,.radial-progress .circle .fill,.radial-progress .circle .shadow{width:100%;height:100%;position:absolute;border-radius:50%}.radial-progress .circle .shadow{box-shadow:none inset}.radial-progress .circle .mask,.radial-progress .circle .fill{-webkit-backface-visibility:hidden;transition:-webkit-transform 1s;transition:-ms-transform 1s;transition:transform 1s;border-radius:50%}.radial-progress .circle .mask{clip:rect(0px, 120px, 120px, 60px)}.radial-progress .circle .mask .fill{clip:rect(0px, 60px, 120px, 0px);background-color:#337ab7}.radial-progress .inset{width:90px;height:90px;position:absolute;border-radius:50%;margin-left:15px;margin-top:15px;overflow:hidden;background-color:#fff;box-shadow:none;font-size:21.6px}.radial-progress .inset .bgIcon{position:absolute;font-size:80px;top:5px;left:-5px;opacity:0;transition:opacity 0;transition-delay:1s}.radial-progress .inset .percentage{height:80%;width:80%;position:absolute;top:10%;left:10%;display:table;line-height:1}.radial-progress .inset .percentage .centeredWrapper{display:table-cell;vertical-align:middle;text-align:center}.radial-progress .inset .percentage .centeredWrapper .number{font-weight:800;color:#337ab7}.radial-progress .inset .percentage .centeredWrapper .addon{color:#777;margin-top:5px}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(1){font-size:0.55em;font-weight:bold}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(2){margin-top:2px;font-size:0.45em}.radial-progress[data-progress="0"] .circle .mask.full,.radial-progress[data-progress="0"] .circle .fill{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="0"] .circle .fill.fix{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="1"] .circle .mask.full,.radial-progress[data-progress="1"] .circle .fill{-webkit-transform:rotate(1.8deg);-ms-transform:rotate(1.8deg);transform:rotate(1.8deg)}.radial-progress[data-progress="1"] .circle .fill.fix{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .mask.full,.radial-progress[data-progress="2"] .circle .fill{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .fill.fix{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="3"] .circle .mask.full,.radial-progress[data-progress="3"] .circle .fill{-webkit-transform:rotate(5.4deg);-ms-transform:rotate(5.4deg);transform:rotate(5.4deg)}.radial-progress[data-progress="3"] .circle .fill.fix{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="4"] .circle .mask.full,.radial-progress[data-progress="4"] .circle .fill{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="4"] .circle .fill.fix{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="5"] .circle .mask.full,.radial-progress[data-progress="5"] .circle .fill{-webkit-transform:rotate(9deg);-ms-transform:rotate(9deg);transform:rotate(9deg)}.radial-progress[data-progress="5"] .circle .fill.fix{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="6"] .circle .mask.full,.radial-progress[data-progress="6"] .circle .fill{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="6"] .circle .fill.fix{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="7"] .circle .mask.full,.radial-progress[data-progress="7"] .circle .fill{-webkit-transform:rotate(12.6deg);-ms-transform:rotate(12.6deg);transform:rotate(12.6deg)}.radial-progress[data-progress="7"] .circle .fill.fix{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="8"] .circle .mask.full,.radial-progress[data-progress="8"] .circle .fill{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="8"] .circle .fill.fix{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="9"] .circle .mask.full,.radial-progress[data-progress="9"] .circle .fill{-webkit-transform:rotate(16.2deg);-ms-transform:rotate(16.2deg);transform:rotate(16.2deg)}.radial-progress[data-progress="9"] .circle .fill.fix{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="10"] .circle .mask.full,.radial-progress[data-progress="10"] .circle .fill{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="10"] .circle .fill.fix{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="11"] .circle .mask.full,.radial-progress[data-progress="11"] .circle .fill{-webkit-transform:rotate(19.8deg);-ms-transform:rotate(19.8deg);transform:rotate(19.8deg)}.radial-progress[data-progress="11"] .circle .fill.fix{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="12"] .circle .mask.full,.radial-progress[data-progress="12"] .circle .fill{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="12"] .circle .fill.fix{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="13"] .circle .mask.full,.radial-progress[data-progress="13"] .circle .fill{-webkit-transform:rotate(23.4deg);-ms-transform:rotate(23.4deg);transform:rotate(23.4deg)}.radial-progress[data-progress="13"] .circle .fill.fix{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="14"] .circle .mask.full,.radial-progress[data-progress="14"] .circle .fill{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="14"] .circle .fill.fix{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="15"] .circle .mask.full,.radial-progress[data-progress="15"] .circle .fill{-webkit-transform:rotate(27deg);-ms-transform:rotate(27deg);transform:rotate(27deg)}.radial-progress[data-progress="15"] .circle .fill.fix{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="16"] .circle .mask.full,.radial-progress[data-progress="16"] .circle .fill{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="16"] .circle .fill.fix{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="17"] .circle .mask.full,.radial-progress[data-progress="17"] .circle .fill{-webkit-transform:rotate(30.6deg);-ms-transform:rotate(30.6deg);transform:rotate(30.6deg)}.radial-progress[data-progress="17"] .circle .fill.fix{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="18"] .circle .mask.full,.radial-progress[data-progress="18"] .circle .fill{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="18"] .circle .fill.fix{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="19"] .circle .mask.full,.radial-progress[data-progress="19"] .circle .fill{-webkit-transform:rotate(34.2deg);-ms-transform:rotate(34.2deg);transform:rotate(34.2deg)}.radial-progress[data-progress="19"] .circle .fill.fix{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="20"] .circle .mask.full,.radial-progress[data-progress="20"] .circle .fill{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="20"] .circle .fill.fix{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="21"] .circle .mask.full,.radial-progress[data-progress="21"] .circle .fill{-webkit-transform:rotate(37.8deg);-ms-transform:rotate(37.8deg);transform:rotate(37.8deg)}.radial-progress[data-progress="21"] .circle .fill.fix{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="22"] .circle .mask.full,.radial-progress[data-progress="22"] .circle .fill{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="22"] .circle .fill.fix{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="23"] .circle .mask.full,.radial-progress[data-progress="23"] .circle .fill{-webkit-transform:rotate(41.4deg);-ms-transform:rotate(41.4deg);transform:rotate(41.4deg)}.radial-progress[data-progress="23"] .circle .fill.fix{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="24"] .circle .mask.full,.radial-progress[data-progress="24"] .circle .fill{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="24"] .circle .fill.fix{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="25"] .circle .mask.full,.radial-progress[data-progress="25"] .circle .fill{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.radial-progress[data-progress="25"] .circle .fill.fix{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="26"] .circle .mask.full,.radial-progress[data-progress="26"] .circle .fill{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="26"] .circle .fill.fix{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="27"] .circle .mask.full,.radial-progress[data-progress="27"] .circle .fill{-webkit-transform:rotate(48.6deg);-ms-transform:rotate(48.6deg);transform:rotate(48.6deg)}.radial-progress[data-progress="27"] .circle .fill.fix{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="28"] .circle .mask.full,.radial-progress[data-progress="28"] .circle .fill{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="28"] .circle .fill.fix{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="29"] .circle .mask.full,.radial-progress[data-progress="29"] .circle .fill{-webkit-transform:rotate(52.2deg);-ms-transform:rotate(52.2deg);transform:rotate(52.2deg)}.radial-progress[data-progress="29"] .circle .fill.fix{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="30"] .circle .mask.full,.radial-progress[data-progress="30"] .circle .fill{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="30"] .circle .fill.fix{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="31"] .circle .mask.full,.radial-progress[data-progress="31"] .circle .fill{-webkit-transform:rotate(55.8deg);-ms-transform:rotate(55.8deg);transform:rotate(55.8deg)}.radial-progress[data-progress="31"] .circle .fill.fix{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="32"] .circle .mask.full,.radial-progress[data-progress="32"] .circle .fill{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="32"] .circle .fill.fix{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="33"] .circle .mask.full,.radial-progress[data-progress="33"] .circle .fill{-webkit-transform:rotate(59.4deg);-ms-transform:rotate(59.4deg);transform:rotate(59.4deg)}.radial-progress[data-progress="33"] .circle .fill.fix{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="34"] .circle .mask.full,.radial-progress[data-progress="34"] .circle .fill{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="34"] .circle .fill.fix{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="35"] .circle .mask.full,.radial-progress[data-progress="35"] .circle .fill{-webkit-transform:rotate(63deg);-ms-transform:rotate(63deg);transform:rotate(63deg)}.radial-progress[data-progress="35"] .circle .fill.fix{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="36"] .circle .mask.full,.radial-progress[data-progress="36"] .circle .fill{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="36"] .circle .fill.fix{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="37"] .circle .mask.full,.radial-progress[data-progress="37"] .circle .fill{-webkit-transform:rotate(66.6deg);-ms-transform:rotate(66.6deg);transform:rotate(66.6deg)}.radial-progress[data-progress="37"] .circle .fill.fix{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="38"] .circle .mask.full,.radial-progress[data-progress="38"] .circle .fill{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="38"] .circle .fill.fix{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="39"] .circle .mask.full,.radial-progress[data-progress="39"] .circle .fill{-webkit-transform:rotate(70.2deg);-ms-transform:rotate(70.2deg);transform:rotate(70.2deg)}.radial-progress[data-progress="39"] .circle .fill.fix{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="40"] .circle .mask.full,.radial-progress[data-progress="40"] .circle .fill{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="40"] .circle .fill.fix{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="41"] .circle .mask.full,.radial-progress[data-progress="41"] .circle .fill{-webkit-transform:rotate(73.8deg);-ms-transform:rotate(73.8deg);transform:rotate(73.8deg)}.radial-progress[data-progress="41"] .circle .fill.fix{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="42"] .circle .mask.full,.radial-progress[data-progress="42"] .circle .fill{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="42"] .circle .fill.fix{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="43"] .circle .mask.full,.radial-progress[data-progress="43"] .circle .fill{-webkit-transform:rotate(77.4deg);-ms-transform:rotate(77.4deg);transform:rotate(77.4deg)}.radial-progress[data-progress="43"] .circle .fill.fix{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="44"] .circle .mask.full,.radial-progress[data-progress="44"] .circle .fill{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="44"] .circle .fill.fix{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="45"] .circle .mask.full,.radial-progress[data-progress="45"] .circle .fill{-webkit-transform:rotate(81deg);-ms-transform:rotate(81deg);transform:rotate(81deg)}.radial-progress[data-progress="45"] .circle .fill.fix{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="46"] .circle .mask.full,.radial-progress[data-progress="46"] .circle .fill{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="46"] .circle .fill.fix{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="47"] .circle .mask.full,.radial-progress[data-progress="47"] .circle .fill{-webkit-transform:rotate(84.6deg);-ms-transform:rotate(84.6deg);transform:rotate(84.6deg)}.radial-progress[data-progress="47"] .circle .fill.fix{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="48"] .circle .mask.full,.radial-progress[data-progress="48"] .circle .fill{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="48"] .circle .fill.fix{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="49"] .circle .mask.full,.radial-progress[data-progress="49"] .circle .fill{-webkit-transform:rotate(88.2deg);-ms-transform:rotate(88.2deg);transform:rotate(88.2deg)}.radial-progress[data-progress="49"] .circle .fill.fix{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="50"] .circle .mask.full,.radial-progress[data-progress="50"] .circle .fill{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="50"] .circle .fill.fix{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="51"] .circle .mask.full,.radial-progress[data-progress="51"] .circle .fill{-webkit-transform:rotate(91.8deg);-ms-transform:rotate(91.8deg);transform:rotate(91.8deg)}.radial-progress[data-progress="51"] .circle .fill.fix{-webkit-transform:rotate(183.6deg);-ms-transform:rotate(183.6deg);transform:rotate(183.6deg)}.radial-progress[data-progress="52"] .circle .mask.full,.radial-progress[data-progress="52"] .circle .fill{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="52"] .circle .fill.fix{-webkit-transform:rotate(187.2deg);-ms-transform:rotate(187.2deg);transform:rotate(187.2deg)}.radial-progress[data-progress="53"] .circle .mask.full,.radial-progress[data-progress="53"] .circle .fill{-webkit-transform:rotate(95.4deg);-ms-transform:rotate(95.4deg);transform:rotate(95.4deg)}.radial-progress[data-progress="53"] .circle .fill.fix{-webkit-transform:rotate(190.8deg);-ms-transform:rotate(190.8deg);transform:rotate(190.8deg)}.radial-progress[data-progress="54"] .circle .mask.full,.radial-progress[data-progress="54"] .circle .fill{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="54"] .circle .fill.fix{-webkit-transform:rotate(194.4deg);-ms-transform:rotate(194.4deg);transform:rotate(194.4deg)}.radial-progress[data-progress="55"] .circle .mask.full,.radial-progress[data-progress="55"] .circle .fill{-webkit-transform:rotate(99deg);-ms-transform:rotate(99deg);transform:rotate(99deg)}.radial-progress[data-progress="55"] .circle .fill.fix{-webkit-transform:rotate(198deg);-ms-transform:rotate(198deg);transform:rotate(198deg)}.radial-progress[data-progress="56"] .circle .mask.full,.radial-progress[data-progress="56"] .circle .fill{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="56"] .circle .fill.fix{-webkit-transform:rotate(201.6deg);-ms-transform:rotate(201.6deg);transform:rotate(201.6deg)}.radial-progress[data-progress="57"] .circle .mask.full,.radial-progress[data-progress="57"] .circle .fill{-webkit-transform:rotate(102.6deg);-ms-transform:rotate(102.6deg);transform:rotate(102.6deg)}.radial-progress[data-progress="57"] .circle .fill.fix{-webkit-transform:rotate(205.2deg);-ms-transform:rotate(205.2deg);transform:rotate(205.2deg)}.radial-progress[data-progress="58"] .circle .mask.full,.radial-progress[data-progress="58"] .circle .fill{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="58"] .circle .fill.fix{-webkit-transform:rotate(208.8deg);-ms-transform:rotate(208.8deg);transform:rotate(208.8deg)}.radial-progress[data-progress="59"] .circle .mask.full,.radial-progress[data-progress="59"] .circle .fill{-webkit-transform:rotate(106.2deg);-ms-transform:rotate(106.2deg);transform:rotate(106.2deg)}.radial-progress[data-progress="59"] .circle .fill.fix{-webkit-transform:rotate(212.4deg);-ms-transform:rotate(212.4deg);transform:rotate(212.4deg)}.radial-progress[data-progress="60"] .circle .mask.full,.radial-progress[data-progress="60"] .circle .fill{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="60"] .circle .fill.fix{-webkit-transform:rotate(216deg);-ms-transform:rotate(216deg);transform:rotate(216deg)}.radial-progress[data-progress="61"] .circle .mask.full,.radial-progress[data-progress="61"] .circle .fill{-webkit-transform:rotate(109.8deg);-ms-transform:rotate(109.8deg);transform:rotate(109.8deg)}.radial-progress[data-progress="61"] .circle .fill.fix{-webkit-transform:rotate(219.6deg);-ms-transform:rotate(219.6deg);transform:rotate(219.6deg)}.radial-progress[data-progress="62"] .circle .mask.full,.radial-progress[data-progress="62"] .circle .fill{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="62"] .circle .fill.fix{-webkit-transform:rotate(223.2deg);-ms-transform:rotate(223.2deg);transform:rotate(223.2deg)}.radial-progress[data-progress="63"] .circle .mask.full,.radial-progress[data-progress="63"] .circle .fill{-webkit-transform:rotate(113.4deg);-ms-transform:rotate(113.4deg);transform:rotate(113.4deg)}.radial-progress[data-progress="63"] .circle .fill.fix{-webkit-transform:rotate(226.8deg);-ms-transform:rotate(226.8deg);transform:rotate(226.8deg)}.radial-progress[data-progress="64"] .circle .mask.full,.radial-progress[data-progress="64"] .circle .fill{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="64"] .circle .fill.fix{-webkit-transform:rotate(230.4deg);-ms-transform:rotate(230.4deg);transform:rotate(230.4deg)}.radial-progress[data-progress="65"] .circle .mask.full,.radial-progress[data-progress="65"] .circle .fill{-webkit-transform:rotate(117deg);-ms-transform:rotate(117deg);transform:rotate(117deg)}.radial-progress[data-progress="65"] .circle .fill.fix{-webkit-transform:rotate(234deg);-ms-transform:rotate(234deg);transform:rotate(234deg)}.radial-progress[data-progress="66"] .circle .mask.full,.radial-progress[data-progress="66"] .circle .fill{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="66"] .circle .fill.fix{-webkit-transform:rotate(237.6deg);-ms-transform:rotate(237.6deg);transform:rotate(237.6deg)}.radial-progress[data-progress="67"] .circle .mask.full,.radial-progress[data-progress="67"] .circle .fill{-webkit-transform:rotate(120.6deg);-ms-transform:rotate(120.6deg);transform:rotate(120.6deg)}.radial-progress[data-progress="67"] .circle .fill.fix{-webkit-transform:rotate(241.2deg);-ms-transform:rotate(241.2deg);transform:rotate(241.2deg)}.radial-progress[data-progress="68"] .circle .mask.full,.radial-progress[data-progress="68"] .circle .fill{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="68"] .circle .fill.fix{-webkit-transform:rotate(244.8deg);-ms-transform:rotate(244.8deg);transform:rotate(244.8deg)}.radial-progress[data-progress="69"] .circle .mask.full,.radial-progress[data-progress="69"] .circle .fill{-webkit-transform:rotate(124.2deg);-ms-transform:rotate(124.2deg);transform:rotate(124.2deg)}.radial-progress[data-progress="69"] .circle .fill.fix{-webkit-transform:rotate(248.4deg);-ms-transform:rotate(248.4deg);transform:rotate(248.4deg)}.radial-progress[data-progress="70"] .circle .mask.full,.radial-progress[data-progress="70"] .circle .fill{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="70"] .circle .fill.fix{-webkit-transform:rotate(252deg);-ms-transform:rotate(252deg);transform:rotate(252deg)}.radial-progress[data-progress="71"] .circle .mask.full,.radial-progress[data-progress="71"] .circle .fill{-webkit-transform:rotate(127.8deg);-ms-transform:rotate(127.8deg);transform:rotate(127.8deg)}.radial-progress[data-progress="71"] .circle .fill.fix{-webkit-transform:rotate(255.6deg);-ms-transform:rotate(255.6deg);transform:rotate(255.6deg)}.radial-progress[data-progress="72"] .circle .mask.full,.radial-progress[data-progress="72"] .circle .fill{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="72"] .circle .fill.fix{-webkit-transform:rotate(259.2deg);-ms-transform:rotate(259.2deg);transform:rotate(259.2deg)}.radial-progress[data-progress="73"] .circle .mask.full,.radial-progress[data-progress="73"] .circle .fill{-webkit-transform:rotate(131.4deg);-ms-transform:rotate(131.4deg);transform:rotate(131.4deg)}.radial-progress[data-progress="73"] .circle .fill.fix{-webkit-transform:rotate(262.8deg);-ms-transform:rotate(262.8deg);transform:rotate(262.8deg)}.radial-progress[data-progress="74"] .circle .mask.full,.radial-progress[data-progress="74"] .circle .fill{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="74"] .circle .fill.fix{-webkit-transform:rotate(266.4deg);-ms-transform:rotate(266.4deg);transform:rotate(266.4deg)}.radial-progress[data-progress="75"] .circle .mask.full,.radial-progress[data-progress="75"] .circle .fill{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.radial-progress[data-progress="75"] .circle .fill.fix{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.radial-progress[data-progress="76"] .circle .mask.full,.radial-progress[data-progress="76"] .circle .fill{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="76"] .circle .fill.fix{-webkit-transform:rotate(273.6deg);-ms-transform:rotate(273.6deg);transform:rotate(273.6deg)}.radial-progress[data-progress="77"] .circle .mask.full,.radial-progress[data-progress="77"] .circle .fill{-webkit-transform:rotate(138.6deg);-ms-transform:rotate(138.6deg);transform:rotate(138.6deg)}.radial-progress[data-progress="77"] .circle .fill.fix{-webkit-transform:rotate(277.2deg);-ms-transform:rotate(277.2deg);transform:rotate(277.2deg)}.radial-progress[data-progress="78"] .circle .mask.full,.radial-progress[data-progress="78"] .circle .fill{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="78"] .circle .fill.fix{-webkit-transform:rotate(280.8deg);-ms-transform:rotate(280.8deg);transform:rotate(280.8deg)}.radial-progress[data-progress="79"] .circle .mask.full,.radial-progress[data-progress="79"] .circle .fill{-webkit-transform:rotate(142.2deg);-ms-transform:rotate(142.2deg);transform:rotate(142.2deg)}.radial-progress[data-progress="79"] .circle .fill.fix{-webkit-transform:rotate(284.4deg);-ms-transform:rotate(284.4deg);transform:rotate(284.4deg)}.radial-progress[data-progress="80"] .circle .mask.full,.radial-progress[data-progress="80"] .circle .fill{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="80"] .circle .fill.fix{-webkit-transform:rotate(288deg);-ms-transform:rotate(288deg);transform:rotate(288deg)}.radial-progress[data-progress="81"] .circle .mask.full,.radial-progress[data-progress="81"] .circle .fill{-webkit-transform:rotate(145.8deg);-ms-transform:rotate(145.8deg);transform:rotate(145.8deg)}.radial-progress[data-progress="81"] .circle .fill.fix{-webkit-transform:rotate(291.6deg);-ms-transform:rotate(291.6deg);transform:rotate(291.6deg)}.radial-progress[data-progress="82"] .circle .mask.full,.radial-progress[data-progress="82"] .circle .fill{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="82"] .circle .fill.fix{-webkit-transform:rotate(295.2deg);-ms-transform:rotate(295.2deg);transform:rotate(295.2deg)}.radial-progress[data-progress="83"] .circle .mask.full,.radial-progress[data-progress="83"] .circle .fill{-webkit-transform:rotate(149.4deg);-ms-transform:rotate(149.4deg);transform:rotate(149.4deg)}.radial-progress[data-progress="83"] .circle .fill.fix{-webkit-transform:rotate(298.8deg);-ms-transform:rotate(298.8deg);transform:rotate(298.8deg)}.radial-progress[data-progress="84"] .circle .mask.full,.radial-progress[data-progress="84"] .circle .fill{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="84"] .circle .fill.fix{-webkit-transform:rotate(302.4deg);-ms-transform:rotate(302.4deg);transform:rotate(302.4deg)}.radial-progress[data-progress="85"] .circle .mask.full,.radial-progress[data-progress="85"] .circle .fill{-webkit-transform:rotate(153deg);-ms-transform:rotate(153deg);transform:rotate(153deg)}.radial-progress[data-progress="85"] .circle .fill.fix{-webkit-transform:rotate(306deg);-ms-transform:rotate(306deg);transform:rotate(306deg)}.radial-progress[data-progress="86"] .circle .mask.full,.radial-progress[data-progress="86"] .circle .fill{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="86"] .circle .fill.fix{-webkit-transform:rotate(309.6deg);-ms-transform:rotate(309.6deg);transform:rotate(309.6deg)}.radial-progress[data-progress="87"] .circle .mask.full,.radial-progress[data-progress="87"] .circle .fill{-webkit-transform:rotate(156.6deg);-ms-transform:rotate(156.6deg);transform:rotate(156.6deg)}.radial-progress[data-progress="87"] .circle .fill.fix{-webkit-transform:rotate(313.2deg);-ms-transform:rotate(313.2deg);transform:rotate(313.2deg)}.radial-progress[data-progress="88"] .circle .mask.full,.radial-progress[data-progress="88"] .circle .fill{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="88"] .circle .fill.fix{-webkit-transform:rotate(316.8deg);-ms-transform:rotate(316.8deg);transform:rotate(316.8deg)}.radial-progress[data-progress="89"] .circle .mask.full,.radial-progress[data-progress="89"] .circle .fill{-webkit-transform:rotate(160.2deg);-ms-transform:rotate(160.2deg);transform:rotate(160.2deg)}.radial-progress[data-progress="89"] .circle .fill.fix{-webkit-transform:rotate(320.4deg);-ms-transform:rotate(320.4deg);transform:rotate(320.4deg)}.radial-progress[data-progress="90"] .circle .mask.full,.radial-progress[data-progress="90"] .circle .fill{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="90"] .circle .fill.fix{-webkit-transform:rotate(324deg);-ms-transform:rotate(324deg);transform:rotate(324deg)}.radial-progress[data-progress="91"] .circle .mask.full,.radial-progress[data-progress="91"] .circle .fill{-webkit-transform:rotate(163.8deg);-ms-transform:rotate(163.8deg);transform:rotate(163.8deg)}.radial-progress[data-progress="91"] .circle .fill.fix{-webkit-transform:rotate(327.6deg);-ms-transform:rotate(327.6deg);transform:rotate(327.6deg)}.radial-progress[data-progress="92"] .circle .mask.full,.radial-progress[data-progress="92"] .circle .fill{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="92"] .circle .fill.fix{-webkit-transform:rotate(331.2deg);-ms-transform:rotate(331.2deg);transform:rotate(331.2deg)}.radial-progress[data-progress="93"] .circle .mask.full,.radial-progress[data-progress="93"] .circle .fill{-webkit-transform:rotate(167.4deg);-ms-transform:rotate(167.4deg);transform:rotate(167.4deg)}.radial-progress[data-progress="93"] .circle .fill.fix{-webkit-transform:rotate(334.8deg);-ms-transform:rotate(334.8deg);transform:rotate(334.8deg)}.radial-progress[data-progress="94"] .circle .mask.full,.radial-progress[data-progress="94"] .circle .fill{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="94"] .circle .fill.fix{-webkit-transform:rotate(338.4deg);-ms-transform:rotate(338.4deg);transform:rotate(338.4deg)}.radial-progress[data-progress="95"] .circle .mask.full,.radial-progress[data-progress="95"] .circle .fill{-webkit-transform:rotate(171deg);-ms-transform:rotate(171deg);transform:rotate(171deg)}.radial-progress[data-progress="95"] .circle .fill.fix{-webkit-transform:rotate(342deg);-ms-transform:rotate(342deg);transform:rotate(342deg)}.radial-progress[data-progress="96"] .circle .mask.full,.radial-progress[data-progress="96"] .circle .fill{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="96"] .circle .fill.fix{-webkit-transform:rotate(345.6deg);-ms-transform:rotate(345.6deg);transform:rotate(345.6deg)}.radial-progress[data-progress="97"] .circle .mask.full,.radial-progress[data-progress="97"] .circle .fill{-webkit-transform:rotate(174.6deg);-ms-transform:rotate(174.6deg);transform:rotate(174.6deg)}.radial-progress[data-progress="97"] .circle .fill.fix{-webkit-transform:rotate(349.2deg);-ms-transform:rotate(349.2deg);transform:rotate(349.2deg)}.radial-progress[data-progress="98"] .circle .mask.full,.radial-progress[data-progress="98"] .circle .fill{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="98"] .circle .fill.fix{-webkit-transform:rotate(352.8deg);-ms-transform:rotate(352.8deg);transform:rotate(352.8deg)}.radial-progress[data-progress="99"] .circle .mask.full,.radial-progress[data-progress="99"] .circle .fill{-webkit-transform:rotate(178.2deg);-ms-transform:rotate(178.2deg);transform:rotate(178.2deg)}.radial-progress[data-progress="99"] .circle .fill.fix{-webkit-transform:rotate(356.4deg);-ms-transform:rotate(356.4deg);transform:rotate(356.4deg)}.radial-progress[data-progress="100"] .circle .mask.full,.radial-progress[data-progress="100"] .circle .fill{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="100"] .circle .fill.fix{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.radial-progress:not([data-progress="0"]) .inset .bgIcon{opacity:1}.radial-progress.radial-progress-success .circle .mask .fill{background-color:#5cb85c}.radial-progress.radial-progress-success .inset .percentage .number span{color:#5cb85c}.radial-progress.radial-progress-info .circle .mask .fill{background-color:#5bc0de}.radial-progress.radial-progress-info .inset .percentage .number span{color:#5bc0de}.radial-progress.radial-progress-danger .circle .mask .fill{background-color:#d9534f}.radial-progress.radial-progress-danger .inset .percentage .number span{color:#d9534f}.radial-progress.radial-progress-warning .circle .mask .fill{background-color:#f0ad4e}.radial-progress.radial-progress-warning .inset .percentage .number span{color:#f0ad4e}.radial-progress.radial-progress-sm{width:80px;height:80px}.radial-progress.radial-progress-sm .circle .mask{clip:rect(0px, 80px, 80px, 40px)}.radial-progress.radial-progress-sm .circle .mask .fill{clip:rect(0px, 40px, 80px, 0px)}.radial-progress.radial-progress-sm .inset{width:60px;height:60px;margin-left:10px;margin-top:10px;font-size:14.4px}.radial-progress.radial-progress-sm .inset .bgIcon{position:absolute;font-size:50px;top:5px;left:-2px}.radial-progress.radial-progress-lg{width:180px;height:180px}.radial-progress.radial-progress-lg .circle .mask{clip:rect(0px, 180px, 180px, 90px)}.radial-progress.radial-progress-lg .circle .mask .fill{clip:rect(0px, 90px, 180px, 0px)}.radial-progress.radial-progress-lg .inset{width:135px;height:135px;margin-left:22.5px;margin-top:22.5px;font-size:32.4px}.radial-progress.radial-progress-lg .inset .bgIcon{position:absolute;font-size:115px;top:5px;left:-6px}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#337ab7}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #337ab7}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #337ab7 !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid #337ab7}.o_gap_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}div.hotspotInteraction{overflow-x:auto}#itemBody .extendedTextInteraction{margin:15px 0}#itemBody .extendedTextInteraction textarea{resize:vertical !important}#itemBody .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-color:#337ab7}.progress-striped #o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_questioninfo .progress-bar{background-color:#337ab7}.progress-striped #o_qti_run_infos #o_qti_questioninfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_results_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 0 1em 0}#o_qti_results_infos .progress{background-color:#eee}#o_qti_results_infos #o_qti_run_scoreinfo,#o_qti_results_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}.o_qti_hotspot_label{padding-left:48%}.o_info.o_assessmentsection_rubrics{margin:0 0 0.5em 0}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d9534f;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d9534f}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d9534f}.o_assessmentitem div.orderInteraction div.box{background-color:#eee}.o_assessmentitem div.orderInteraction div.box span.info{margin-left:1em;color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction div.box.horizontal{margin:0.5em 0;width:100%}.o_assessmentitem div.orderInteraction ul.horizontal{float:left;margin:0 1em;padding:1em 0;width:100%}.o_assessmentitem div.orderInteraction div.box.vertical{margin:1em 0;width:49%}.o_assessmentitem div.orderInteraction div.box.vertical.source{float:left}.o_assessmentitem div.orderInteraction div.box.vertical.target{float:right}.o_assessmentitem div.orderInteraction ul.vertical{margin:0 1em;padding:1em 0;width:auto}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0;width:60%}.o_assessmentitem div.orderInteraction ul li{margin:0 3px 3px 3px;padding:0.4em;padding-left:1.5em;font-size:1em}.o_assessmentitem div.orderInteraction ul li span.ui-icon{position:absolute;margin-left:-1.3em}.o_assessmentitem div.orderInteraction ul.horizontal li{float:left;width:auto}.o_assessmentitem div.orderInteraction br{clear:both}.o_assessmentitem .hottext{position:relative;margin:-2px 0.15em -2px 0.15em;white-space:nowrap}.o_assessmentitem .hottext input{margin:0 3px 0 2px;position:absolute;top:0.1em;left:0.05em}.o_assessmentitem .hottext input+label{display:inline;padding:0 0.1em 0 1.2em;background:#f8f8f8;border:1px solid #e7e7e7;border-radius:2px;color:#333;font-weight:normal;white-space:normal}.o_assessmentitem .hottext input:checked+label{color:#fff;background:#5bc0de;border:1px solid #31b0d5}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem .textEntryInteraction input{margin:-1px 2px;line-height:90%;vertical-align:middle;font-size:98%;border:0.5px solid #999;background:#fff;padding:0.5px 1px;color:#333}.o_assessmentitem .textEntryInteraction input:valid,.o_assessmentitem .textEntryInteraction input:disabled{color:#fff;-webkit-text-fill-color:#fff;background:#5bc0de;border:0.5px solid #31b0d5}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em}.o_assessmentitem_wrapper #itemBody{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;line-height:1.5em}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d9534f}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#5cb85c}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f0ad4e}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#5bc0de;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}#itemBody{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}.o_assessment_test_results .o_sel_assessment_item_hint{display:none}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction label{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#5cb85c}.matchInteraction div.bar_red{background-color:#d9534f}.source-left,.target-left,.source-right,.target-right{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_match_dnd_sources{padding:10px 10px 0 10px;min-height:60px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_match_dnd_sources.oo-accepted{border-color:#1f7e9a}.o_match_dnd_source{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;cursor:move;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.o_match_dnd_source:before,.o_match_dnd_source:after{content:" ";display:table}.o_match_dnd_source:after{clear:both}.o_match_dnd_source.oo-selected{border:2px dashed #f0ad4e;background:#fae3c4}.o_match_dnd_source.oo-drag{border:2px dashed #f0ad4e !important}.source-bottom .o_match_dnd_source,.source-top .o_match_dnd_source{margin:0 0 10px 0}.o_match_dnd_targets .oo-accepted{border:2px solid #1f7e9a;border-radius:4px}.o_match_dnd_target{padding:10px 10px 0 10px;margin:0 0 10px 10px;border:2px solid #5bc0de;border-radius:4px;background:#d9edf7}.o_match_dnd_target:before,.o_match_dnd_target:after{content:" ";display:table}.o_match_dnd_target:after{clear:both}.o_match_dnd_target .o_match_dnd_target_drop_zone{margin:0;padding:5px 0 0 15px;min-height:30px}.o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{border:2px dashed #777}.target-bottom .o_match_dnd_target,.target-top .o_match_dnd_target{margin:0 0 10px 0}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone{padding-left:0px}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{padding-left:15px}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#5cb85c}.o_assessmentitem div.failure{background-color:#f0ad4e}.o_assessmentitem div.error{background-color:#d9534f}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:10px;border-bottom:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#337ab7;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#23527c;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f0ad4e}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#5bc0de}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}.o_assessment_test_results .o_qti_assessment_title{border-bottom:1px solid #ddd}.o_assessment_test_results table th{width:40%}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section{text-align:center}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section .o_qti_section_sublisting{padding:0 10%;min-height:3em}.o_assessment_test_results .o_qti_sections .o_qti_section{margin-top:40px}.o_assessment_test_results .o_qti_sections .o_qti_section h3{margin-bottom:20px}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_id{display:none}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:0;padding:5px 10px 10px 5px;border-top:1px solid #ddd;broder-bottom:1px solid #ddd}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4{font-size:100%;font-weight:bold;color:inherit}.o_assessment_test_results .o_qti_to_overview{text-align:right}.o_page_margins{padding-top:25px;padding-bottom:25px;padding-left:25px;padding-right:25px}#o_main{margin-top:25px} \ No newline at end of file diff --git a/src/main/webapp/static/themes/light/_config.scss b/src/main/webapp/static/themes/light/_config.scss index c06706ebc22870101f5ae0cec979282ec4152c65..b5137adbf1fc7d09ceadf5c911d1b507731c6939 100644 --- a/src/main/webapp/static/themes/light/_config.scss +++ b/src/main/webapp/static/themes/light/_config.scss @@ -390,6 +390,8 @@ $o-qti-run-infos-bg : $o-qti-menu-bg !default; $o-qti-run-infos-border-color : $o-qti-menu-border-color !default; $o-qti-run-infos-border-radius : $o-qti-menu-border-radius !default; $o-qti-run-infos-progress-bg : #eee !default; +$o-qti-run-infos-question-progress-color : $brand-primary !default; +$o-qti-run-infos-score-progress-color : $brand-primary !default; $o-qti-badResponse-color : $brand-danger !default; $o-qti-highlight-color : $brand-danger !default; $o-qti-bar-green : $brand-success !default; @@ -400,10 +402,38 @@ $o-qti-error : $brand-danger !default; $o-qti-box-bg : #eee !default; $o-qti-box-color : #666 !default; $o-qti-choice-tablelayout-bg : #e7e7e7 !default; +$o-qti-userselection-color : #fff !default; +$o-qti-userselection-bg : $o-qti-status-review-color !default; +$o-qti-userselection-border-color : darken($o-qti-userselection-bg,10%) !default; $o-qti-gap-border-color : #999 !default; $o-qti-gap-drag-border-color : $brand-primary !default; $o-qti-gap-selected-border-color : $brand-primary !default; - +$o-qti-hottext-color : $text-color !default; +$o-qti-hottext-bg : $o-qti-menu-bg !default; +$o-qti-hottext-border-color : $o-qti-menu-border-color !default; +$o-qti-hottext-border-radius : 2px !default; +$o-qti-hottext-checked-color : $o-qti-userselection-color !default; +$o-qti-hottext-checked-bg : $o-qti-userselection-bg !default; +$o-qti-hottext-checked-border-color : $o-qti-userselection-border-color !default; +$o-qti-match-border-color : #999 !default; +$o-qti-match-choosed-border-color : #777 !default; +$o-qti-match-drag-border-color : $brand-warning !default; +$o-qti-match-sources-bg : $o-qti-run-infos-bg !default; +$o-qti-match-sources-border-color : $o-qti-run-infos-border-color !default; +$o-qti-match-source-bg : $state-warning-bg !default; +$o-qti-match-source-border-style : dashed !default; +$o-qti-match-selected-border-color : $brand-warning !default; +$o-qti-match-selected-bg : lighten($brand-warning, 25%) !default; +$o-qti-match-drop-accept-border-color : darken($brand-info, 25%) !default; +$o-qti-match-target-border-color : $brand-info !default; +$o-qti-match-target-bg : $state-info-bg !default; +$o-qti-match-border-radius : $panel-border-radius !default; +$o-qti-textEntryInteraction-color : $text-color !default; +$o-qti-textEntryInteraction-bg : #fff !default; +$o-qti-textEntryInteraction-border-color : $o-qti-gap-border-color !default; +$o-qti-textEntryInteraction-filled-color : $o-qti-userselection-color !default; +$o-qti-textEntryInteraction-filled-bg : $o-qti-userselection-bg !default; +$o-qti-textEntryInteraction-filled-border-color : $o-qti-userselection-border-color !default; /* Chat and other floating window */ $o-dialog-window-bg : #fefefe !default; @@ -558,6 +588,32 @@ $o-step-done-marker-color : $brand-success !default; $o-step-meta-color : $text-muted !default; $o-step-meta-size : $font-size-small !default; + +/* Radial progress component */ +/* more 3-style +$o-radial-progress-circle-bg : $progress-bg !default; +$o-radial-progress-shadow : 6px 6px 10px rgba(0,0,0,0.1) !default; +*/ +$o-radial-progress-circle-size : 120px !default; +$o-radial-progress-circle-size-sm : 80px !default; +$o-radial-progress-circle-size-lg : 180px !default; +$o-radial-progress-circle-bg : #eee !default; +$o-radial-progress-circle-color : $progress-bar-bg !default; +$o-radial-progress-inset-color : #fff !default; +$o-radial-progress-transition-length : 1s !default; +$o-radial-progress-shadow : none !default; +$o-radial-progress-number-color : $progress-bar-bg !default; +$o-radial-progress-addon-color : $text-muted !default; +$o-radial-progress-margin : 10px !default; +$o-radial-progress-circle-success-color : $progress-bar-success-bg !default; +$o-radial-progress-percentage-success-color : $progress-bar-success-bg !default; +$o-radial-progress-circle-warning-color : $progress-bar-warning-bg !default; +$o-radial-progress-percentage-warning-color : $progress-bar-warning-bg !default; +$o-radial-progress-circle-danger-color : $progress-bar-danger-bg !default; +$o-radial-progress-percentage-danger-color : $progress-bar-danger-bg !default; +$o-radial-progress-circle-info-color : $progress-bar-info-bg !default; +$o-radial-progress-percentage-info-color : $progress-bar-info-bg !default; + /* Drawing */ $o-drawing-border-color : $brand-primary; $o-drawing-border-width : 4px !default; @@ -584,3 +640,4 @@ $o-portrait-radius : 50% !default; $o-portrait-border : none !default; $o-bookmark-color : #bc2d0c !default; $o-imagebg-text-background : rgba(255, 255, 255, 0.8) !default; +$o-progress-marker-color : rgb(255, 0, 0) !default; /* danger color */ diff --git a/src/main/webapp/static/themes/light/_modules.scss b/src/main/webapp/static/themes/light/_modules.scss index 1225e354291178690dc7b142e7025b338eaeb79a..27cafef34eb1019d90f9adf89235857442b2a9b0 100644 --- a/src/main/webapp/static/themes/light/_modules.scss +++ b/src/main/webapp/static/themes/light/_modules.scss @@ -20,6 +20,8 @@ @import "modules/type"; @import "modules/content_embedded"; /* add all styles that are created by html editor but can also be rendered in main window, not in iframe (e.g. forum post, blog entry) */ +@import "modules/radial-progress"; + /* general layout */ @import "modules/layout"; @@ -71,6 +73,7 @@ @import "modules/user"; @import "modules/members"; @import "modules/grouptask"; +@import "modules/card2brain"; @import "modules/thirdparty"; diff --git a/src/main/webapp/static/themes/light/content.css b/src/main/webapp/static/themes/light/content.css index f6cc90a985bfe8196f3724b14c9a952e5c9d1d0f..23c1b7266aae7e00f4469ff534feb128ad1a0f21 100644 --- a/src/main/webapp/static/themes/light/content.css +++ b/src/main/webapp/static/themes/light/content.css @@ -22,5 +22,5 @@ * @author gnaegi, www.frentix.com * @date April. 2014 * ======================================================== -**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../../font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../../font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_block_bottom,.o_block,.o_button_group,.o_header_with_buttons{margin-bottom:1em}.o_block_top,.o_block,.o_button_group{margin-top:1em}.o_block_large_bottom,.o_block_large{margin-bottom:2em}.o_block_large_top,.o_block_large{margin-top:2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.66667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#78acd9;border-radius:10px}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-top:none;border-left:none;border-right:none;color:#337ab7;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:12px}.o_small,.b_small,p.b_small,div.b_small{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:18px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,.o_disabled:focus,.b_disabled:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_info,.b_info,p.b_info,div.b_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info h5,.b_info h2,.b_info h3,.b_info h4,.b_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note h5,.b_note h2,.b_note h3,.b_note h4,.b_note h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important h5,.b_important h2,.b_important h3,.b_important h4,.b_important h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success h5,.b_success h2,.b_success h3,.b_success h4,.b_success h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning h5,.b_warning h2,.b_warning h3,.b_warning h4,.b_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error h5,.b_error h2,.b_error h3,.b_error h4,.b_error h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}h1{color:#337ab7}h2{color:#337ab7}h3{color:#337ab7}h4{color:#337ab7}h5{color:#337ab7}h5{color:#337ab7}hr{border-top:1px solid #eee}.o_user_content_block a{color:#337ab7;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#23527c;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:1px 5px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:1px 5px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:1px 5px;border:0;font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:1px 5px;background:#eee;border:1px solid #fff}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:1px 5px;background:#d9edf7;border:1px solid #fff}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:1px 5px;background:#dff0d8;border:1px solid #fff}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:1px 5px;background:#fcf8e3;border:1px solid #fff}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:1px 5px;background:#f2dede;border:1px solid #fff}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#337ab7}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_mailto{color:#337ab7}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#337ab7}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0;font-size:85%;font-family:inherit}span.olatFlashMovieViewer{max-width:100% !important;border:none !important}.mejs-container,.mejs-mediaelement video,.mejs-layers div,.me-cannotplay{max-width:100%}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{background:#fff;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important}.progress{-webkit-print-color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}body{margin:0}} +**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../../font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../../font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_block_bottom,.o_block,.o_button_group,.o_header_with_buttons{margin-bottom:1em}.o_block_top,.o_block,.o_button_group{margin-top:1em}.o_block_large_bottom,.o_block_large{margin-bottom:2em}.o_block_large_top,.o_block_large{margin-top:2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_centered_wrapper{display:table;width:100%;height:100%}.o_block_centered_content{display:table-cell;vertical-align:middle;text-align:center}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.66667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#78acd9;border-radius:10px}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-top:none;border-left:none;border-right:none;color:#337ab7;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:12px}.o_small,.b_small,p.b_small,div.b_small{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:18px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:0.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,.o_disabled:focus,.b_disabled:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_info,.b_info,p.b_info,div.b_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info h5,.b_info h2,.b_info h3,.b_info h4,.b_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note h5,.b_note h2,.b_note h3,.b_note h4,.b_note h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important h5,.b_important h2,.b_important h3,.b_important h4,.b_important h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success h5,.b_success h2,.b_success h3,.b_success h4,.b_success h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning h5,.b_warning h2,.b_warning h3,.b_warning h4,.b_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error h5,.b_error h2,.b_error h3,.b_error h4,.b_error h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}h1{color:#337ab7}h2{color:#337ab7}h3{color:#337ab7}h4{color:#337ab7}h5{color:#337ab7}h5{color:#337ab7}hr{border-top:1px solid #eee}.o_user_content_block a{color:#337ab7;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#23527c;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:1px 5px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:1px 5px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:1px 5px;border:0;font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:1px 5px;background:#eee;border:1px solid #fff}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:1px 5px;background:#d9edf7;border:1px solid #fff}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:1px 5px;background:#dff0d8;border:1px solid #fff}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:1px 5px;background:#fcf8e3;border:1px solid #fff}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:1px 5px;background:#f2dede;border:1px solid #fff}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#337ab7}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_mailto{color:#337ab7}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#337ab7}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0;font-size:85%;font-family:inherit}span.olatFlashMovieViewer{max-width:100% !important;border:none !important}.mejs__container,.mejs__mediaelement video,.mejs__layers div,.me_cannotplay{max-width:100%}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fff !important;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important;-webkit-print-color-adjust:exact;color-adjust:exact}.modal-dialog{margin:0 !important;width:100% !important;height:100% !important;background:#fff !important;-webkit-print-color-adjust:exact;color-adjust:exact}.progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}.radial-progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#eee !important}.radial-progress .circle .mask .fill{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#000 !important}.radial-progress .inset{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#fff !important}body{margin:0}} /*# sourceMappingURL=content.css.map */ diff --git a/src/main/webapp/static/themes/light/content.css.map b/src/main/webapp/static/themes/light/content.css.map index 42f38e1df996304b2e768f9c1910f3470bee0a01..1f41acf4b93a12e0b360aa7268a759e6d7195c8c 100644 --- a/src/main/webapp/static/themes/light/content.css.map +++ b/src/main/webapp/static/themes/light/content.css.map @@ -1,7 +1,7 @@ { "version": 3, -"mappings": "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", -"sources": ["_license.scss","../../bootstrap/stylesheets/bootstrap/_normalize.scss","../../bootstrap/stylesheets/bootstrap/_print.scss","../../bootstrap/stylesheets/bootstrap/_scaffolding.scss","../../bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss","_config.scss","../../bootstrap/stylesheets/bootstrap/_variables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss","../../bootstrap/stylesheets/bootstrap/mixins/_image.scss","../../bootstrap/stylesheets/bootstrap/_type.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss","../../bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss","../../bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss","../../font-awesome/scss/_path.scss","../../font-awesome/scss/_core.scss","modules/_helpers.scss","../../bootstrap/stylesheets/bootstrap/mixins/_opacity.scss","modules/_dialog.scss","modules/_mixins.scss","modules/_emoticons.scss","modules/_content.scss","modules/_content_embedded.scss","../../bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss","../../font-awesome/scss/_variables.scss","modules/_print.scss"], +"mappings": "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", +"sources": ["../../bootstrap/stylesheets/bootstrap/_normalize.scss","../../bootstrap/stylesheets/bootstrap/_print.scss","../../bootstrap/stylesheets/bootstrap/_scaffolding.scss","../../bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss","_config.scss","../../bootstrap/stylesheets/bootstrap/_variables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss","../../bootstrap/stylesheets/bootstrap/mixins/_image.scss","../../bootstrap/stylesheets/bootstrap/_type.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss","../../bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss","../../bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss","../../font-awesome/scss/_path.scss","../../font-awesome/scss/_core.scss","modules/_helpers.scss","../../bootstrap/stylesheets/bootstrap/mixins/_opacity.scss","modules/_dialog.scss","modules/_mixins.scss","modules/_emoticons.scss","modules/_content.scss","modules/_content_embedded.scss","../../bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss","../../font-awesome/scss/_variables.scss","modules/_print.scss"], "names": [], "file": "content.css" } diff --git a/src/main/webapp/static/themes/light/modules/_card2brain.scss b/src/main/webapp/static/themes/light/modules/_card2brain.scss new file mode 100644 index 0000000000000000000000000000000000000000..81704663ed0182a2bd8e0a4d580778e4d5177dd9 --- /dev/null +++ b/src/main/webapp/static/themes/light/modules/_card2brain.scss @@ -0,0 +1,25 @@ +/* + The purpose of the three classes of the peek view is to disable clicking inside the iFrame. +*/ +.o_c2b_peekview { + height: 182px; + width: 302px; + border-style: solid; + border-width: 0.1px; +} + +.o_c2b_cover { + height: 180px; + width: 300px; + position: absolute; + z-index: 2; + background: transparent; + cursor:pointer; +} + +.o_c2b_iframe { + height: 180px; + width: 300px; + position: absolute; + z-index: 1; +} \ No newline at end of file diff --git a/src/main/webapp/static/themes/light/modules/_content_embedded.scss b/src/main/webapp/static/themes/light/modules/_content_embedded.scss index 9cb895b1287a9b96fdeaffc318ea7ebc7a7b59dd..892044d1839a63d4f0ca3d3e6e13785d232f2b35 100644 --- a/src/main/webapp/static/themes/light/modules/_content_embedded.scss +++ b/src/main/webapp/static/themes/light/modules/_content_embedded.scss @@ -282,7 +282,7 @@ span.olatFlashMovieViewer { max-width: 100% !important; border: none !important; } -.mejs-container, .mejs-mediaelement video, .mejs-layers div, .me-cannotplay { +.mejs__container, .mejs__mediaelement video, .mejs__layers div, .me_cannotplay { max-width: 100%; } diff --git a/src/main/webapp/static/themes/light/modules/_course.scss b/src/main/webapp/static/themes/light/modules/_course.scss index 26e56efe319b4e3bce537f15e41d3d43c4e1d8da..59cfaa2e42312d68345d6e2ea7cc789751e2d465 100644 --- a/src/main/webapp/static/themes/light/modules/_course.scss +++ b/src/main/webapp/static/themes/light/modules/_course.scss @@ -79,6 +79,10 @@ .o_statusinfo { @extend %o_note; } + .o_in_review { + font-style: italic; + position: relative; + } @if not $o-course-show-icon-title { // hide icons in title, too much fuzz diff --git a/src/main/webapp/static/themes/light/modules/_helpers.scss b/src/main/webapp/static/themes/light/modules/_helpers.scss index 93a259dd348fef9b22753773c85e03ccf3a26bbc..cf65c7bee3126675cd63ed215aeb84add27a86d8 100644 --- a/src/main/webapp/static/themes/light/modules/_helpers.scss +++ b/src/main/webapp/static/themes/light/modules/_helpers.scss @@ -40,6 +40,18 @@ @extend %o_block_inline_right; } +/* vertical and horizontal centered block: add wrappern and place content in wrapper */ +.o_block_centered_wrapper { + display: table; + width: 100%; + height: 100%; +} +.o_block_centered_content { + display: table-cell; + vertical-align: middle; + text-align: center; +} + /* content block with a full-scale background image (fat media style) */ .o_block_imagebg { background-repeat:no-repeat; diff --git a/src/main/webapp/static/themes/light/modules/_icons.scss b/src/main/webapp/static/themes/light/modules/_icons.scss index 2d156e641665d1dcd9dad93e6006117cb9abba06..b32337070eb0dff690318bb8af365aafc3ddeb37 100644 --- a/src/main/webapp/static/themes/light/modules/_icons.scss +++ b/src/main/webapp/static/themes/light/modules/_icons.scss @@ -193,6 +193,8 @@ $fa-css-prefix: "o_icon" !default; .o_icon_previous_toolbar:before { content: $fa-var-caret-left; } .o_icon_print:before { content: $fa-var-print;} .o_icon_private:before { content: $fa-var-print;} +.o_icon_progress_success:before { content: $fa-var-check; color: #e5efe5} +.o_icon_progress_danger:before { content: $fa-var-times; color: #efe5e5} .o_icon_provider_adfs:before { content: $fa-var-windows;} .o_icon_provider_facebook:before { content: $fa-var-facebook;} .o_icon_provider_google:before { content: $fa-var-google-plus;} @@ -364,6 +366,7 @@ $fa-css-prefix: "o_icon" !default; .o_vitero_icon:before { content: $fa-var-desktop;} .o_openmeetings_icon:before { content: $fa-var-desktop;} .o_gotomeeting_icon:before { content: $fa-var-desktop;} +.o_card2brain_icon:before { content: $fa-var-th;} /* portal icons */ @@ -439,6 +442,7 @@ $fa-css-prefix: "o_icon" !default; .o_mi_qtisection:before { content: $fa-var-cubes; } .o_mi_qtisc:before { content: $fa-var-dot-circle-o; } .o_mi_qtimatch:before { content: $fa-var-table; } +.o_mi_qtimatch_draganddrop:before { content: $fa-var-clone; } .o_mi_qtimc:before { content: $fa-var-check-square-o; } .o_mi_qtikprim:before { content: $fa-var-check-square; } .o_mi_qtifib:before { content: $fa-var-ellipsis-h; } @@ -470,6 +474,9 @@ $fa-css-prefix: "o_icon" !default; .o_icon_qti_suspend:before { content: $fa-var-pause; } .o_icon_qti_close_results:before { content: $fa-var-window-close; } .o_icon_qti_hint:before { content: $fa-var-question-circle; } +.o_icon_qti_summary_notAnswered:before { content: $fa-var-circle; color: $o-qti-status-notAnswered-color; } +.o_icon_qti_summary_ended:before { content: $fa-var-times-circle; color: $brand-danger; } +.o_icon_qti_summary_correct:before { content: $fa-var-check-circle; color: $brand-success; } /* coaching */ .o_black_led:before { content: $fa-var-circle; color: $brand-primary; } diff --git a/src/main/webapp/static/themes/light/modules/_portfolio_v2.scss b/src/main/webapp/static/themes/light/modules/_portfolio_v2.scss index 72f3d9d8eae70afd8b3f1fa751212520eb3122ed..14f9bc3f981d6cf5a981d24a40577922dbf23a8e 100644 --- a/src/main/webapp/static/themes/light/modules/_portfolio_v2.scss +++ b/src/main/webapp/static/themes/light/modules/_portfolio_v2.scss @@ -37,6 +37,14 @@ .o_page_lead { padding: $o-portfolio-lead-space-sm * 2; + h2 { + margin-bottom: 5px; + } + .o_portfolio_page_meta { + margin-bottom: 5px; + + } + .o_page_summary { font-size: $o-portfolio-page-summary-font-size; @@ -191,6 +199,18 @@ } } + +.o_portfolio_categories { + .tag { + font-size: 80%; + font-weight: normal; + } +} +.o_portfolio_last_modified + .o_portfolio_categories, +.o_portfolio_page_meta + .o_portfolio_categories { + margin-left: 1em; +} + .o_rendertype_classic { .o_pf_page, .o_pf_assignment { padding-left: 1em; diff --git a/src/main/webapp/static/themes/light/modules/_print.scss b/src/main/webapp/static/themes/light/modules/_print.scss index 4138abf6586140711e7b5d9b177b503944426a60..68498a17024aec1a2b78d0fc9624d8e219668196 100644 --- a/src/main/webapp/static/themes/light/modules/_print.scss +++ b/src/main/webapp/static/themes/light/modules/_print.scss @@ -51,7 +51,9 @@ /* textarea: can not blow up for now, browsers ignore the height */ textarea, .form-control.textarea_disabled { - background: #fff; + -webkit-print-color-adjust: exact; + color-adjust: exact; + background: #fff !important; height: auto !important; color: #000 !important; resize: none; @@ -72,11 +74,25 @@ /* Hide backgrounds */ body.o_dmz { background: white !important; + -webkit-print-color-adjust: exact; + color-adjust: exact; + } + + /* When printing dialogs, hide everything below */ + .modal-dialog { + margin: 0 !important; + width: 100% !important; + height: 100% !important; + background: #fff !important; + -webkit-print-color-adjust: exact; + color-adjust: exact; } /* Print background colors in progress bar */ .progress { + page-break-inside : avoid; -webkit-print-color-adjust: exact; + color-adjust: exact; background-color: rgba(0,0,0,.1) !important; border: 1px solid rgba(0,0,0,.5); } @@ -87,6 +103,24 @@ border: 10px solid #000; } + /* Print background colors in radial progress bar */ + .radial-progress { + page-break-inside : avoid; + -webkit-print-color-adjust: exact; + color-adjust: exact; + background-color: #eee !important; + .circle .mask .fill { + -webkit-print-color-adjust: exact; + color-adjust: exact; + background-color: #000 !important; + } + .inset { + -webkit-print-color-adjust: exact; + color-adjust: exact; + background-color: #fff !important; + } + } + body { margin: 0; } diff --git a/src/main/webapp/static/themes/light/modules/_qti21.scss b/src/main/webapp/static/themes/light/modules/_qti21.scss index 6c5aa27d6ea289de5ea16bb62ec39d5f81eaae7c..9a39ce43174cec760da770a8784b8a3765bd0250 100644 --- a/src/main/webapp/static/themes/light/modules/_qti21.scss +++ b/src/main/webapp/static/themes/light/modules/_qti21.scss @@ -9,6 +9,7 @@ ul.sessionControl { } } +/* Associations */ .association { margin: 20px 20px 20px 40px; background: transparent url('#{$o-images-path}association_bg.png') repeat-x center center; @@ -98,7 +99,7 @@ ul.sessionControl { } &.oo-selected { - border: 3px solid grey; + border: 3px solid $o-qti-gap-selected-border-color; } } @@ -130,7 +131,7 @@ div.hotspotInteraction { } -/* essay extended text */ +/* Essay extended text */ #itemBody .extendedTextInteraction { margin: 15px 0; @@ -160,6 +161,30 @@ div.hotspotInteraction { padding: $padding-large-vertical 0; margin: 0 15px 1em 15px; + .progress { + background-color: $o-qti-run-infos-progress-bg; + } + #o_qti_scoreinfo .progress-bar { + @include progress-bar-variant($o-qti-run-infos-score-progress-color); + } + + #o_qti_questioninfo .progress-bar { + @include progress-bar-variant($o-qti-run-infos-question-progress-color); + } + + #o_qti_run_scoreinfo, + #o_qti_run_scoreprogress { + white-space: nowrap; + } +} + +#o_qti_results_infos { + border: 1px solid $o-qti-run-infos-border-color; + border-radius: $o-qti-run-infos-border-radius; + background: $o-qti-run-infos-bg; + padding: $padding-large-vertical 0; + margin: 0 0 1em 0; + .progress { background-color: $o-qti-run-infos-progress-bg; } @@ -334,14 +359,61 @@ div.hotspotInteraction { } } - .hottext { - font-weight: bold; + .hottext { + position: relative; + margin: -2px 0.15em -2px 0.15em; + white-space: nowrap; + + input { + margin: 0 3px 0 2px; + position: absolute; + top: 0.1em; + left: 0.05em; + +label { + display: inline; + padding: 0 0.1em 0 1.2em; + background: $o-qti-hottext-bg; + border: 1px solid $o-qti-hottext-border-color; + border-radius: $o-qti-hottext-border-radius; + + color: $o-qti-hottext-color; + font-weight: normal; + white-space: normal; + } + &:checked+label { + color: $o-qti-hottext-checked-color; + background: $o-qti-hottext-checked-bg; + border: 1px solid $o-qti-hottext-checked-border-color; + } + } } + .gap { font-weight: bold; border: 1px dashed #000; } + + .textEntryInteraction { + input { + margin: -1px 2px; + line-height: 90%; + vertical-align: middle; + font-size: 98%; + border: 0.5px solid $o-qti-textEntryInteraction-border-color; + background: $o-qti-textEntryInteraction-bg; + padding: 0.5px 1px; + color: $o-qti-textEntryInteraction-color; + /* format fields with values in it in separate style */ + &:valid, + &:disabled { + color: $o-qti-textEntryInteraction-filled-color; + -webkit-text-fill-color: $o-qti-textEntryInteraction-filled-color; + background: $o-qti-textEntryInteraction-filled-bg; + border: 0.5px solid $o-qti-textEntryInteraction-filled-border-color; + } + } + } } /* item display wrapper to distinguish from the item tree */ @@ -361,6 +433,7 @@ div.hotspotInteraction { padding: $padding-small-vertical $padding-small-horizontal; border-left: 1px solid $o-qti-item-border-color; border-right: 1px solid $o-qti-item-border-color; + line-height: 1.5em; } .modalFeedback { h4:first-of-type { @@ -526,6 +599,10 @@ div.hotspotInteraction { margin-top: 1em; } +.o_assessment_test_results .o_sel_assessment_item_hint { + display:none; +} + /* Choice interaction */ tr.choiceinteraction { td.control { @@ -537,8 +614,10 @@ tr.choiceinteraction { } } -.choiceInteraction table { - +.choiceInteraction { + label { + font-weight: normal; + } } .choiceInteraction div.o_qti_item_choice_option_flow { @@ -577,6 +656,95 @@ tr.choiceinteraction { div.bar_red { background-color: $o-qti-bar-red; } } +/* Match interaction drag & drop */ +.source-left, .target-left, .source-right, .target-right { + width: 50%; + float: left; + position: relative; + padding: 0; + margin-top: 5px; +} + +.source-top, target-top, .source-bottom, .target-bottom { + +} + +.o_match_dnd_sources { + padding: 10px 10px 0 10px; + min-height: 60px; + border: 1px solid $o-qti-match-sources-border-color; + border-radius: $o-qti-match-border-radius; + background: $o-qti-match-sources-bg; + + &.oo-accepted { + border-color: $o-qti-match-drop-accept-border-color; + } +} + +.o_match_dnd_source { + padding: 10px; + margin-bottom: 10px; + border: 2px $o-qti-match-source-border-style $o-qti-gap-border-color; + border-radius: $o-qti-match-border-radius; + background-color: #ffffff; + background: $o-qti-match-source-bg; + @include clearfix; + + &.oo-selected { + border: 2px $o-qti-match-source-border-style $o-qti-match-selected-border-color; + background: $o-qti-match-selected-bg; + } + + &.oo-drag { + border: 2px $o-qti-match-source-border-style $o-qti-match-drag-border-color !important; + } + + cursor: move; /* fallback if grab cursor is unsupported */ + cursor: grab; + cursor: -moz-grab; + cursor: -webkit-grab; +} + +.source-bottom .o_match_dnd_source, .source-top .o_match_dnd_source { + margin: 0 0 10px 0; +} + +.o_match_dnd_targets .oo-accepted { + border: 2px solid $o-qti-match-drop-accept-border-color; + border-radius: $o-qti-match-border-radius; +} + +.o_match_dnd_target { + padding: 10px 10px 0 10px; + margin: 0 0 10px 10px; + border: 2px solid $o-qti-match-target-border-color; + border-radius: $o-qti-match-border-radius; + background: $o-qti-match-target-bg; + @include clearfix; + + .o_match_dnd_target_drop_zone { + margin: 0; + padding: 5px 0 0 15px; + min-height: 30px; + + .o_match_dnd_source { + border: 2px $o-qti-match-source-border-style $o-qti-match-choosed-border-color; + } + } +} + +.target-bottom .o_match_dnd_target, .target-top .o_match_dnd_target { + margin: 0 0 10px 0; + + .o_match_dnd_target_drop_zone { + padding-left: 0px; + + .o_match_dnd_source { + padding-left: 15px; + } + } +} + /* MathEntryInteraction styling for MathAssess */ .o_assessmentitem .mathEntryInteraction { border: 1px solid #ddedfc; @@ -901,4 +1069,75 @@ ul.testPartDrilldown { .testItemControl { margin-top: 0.5em; -} \ No newline at end of file +} + + + +/* Results reporting / detailed assessment results */ +.o_assessment_test_results { + .o_qti_assessment_title { + border-bottom: 1px solid $panel-default-border; + } + + /* align tables in assessment results to have same column width */ + table th { + width: 40%; + } + .o_qti_metainfo { + .o_qti_metainfo_listing{ + .o_qti_run_durationinfo {} + .o_qti_run_questioninfo {} + .o_qti_run_scoreinfo {} + .o_qti_cutinfo {} + .o_qti_stateinfo {} + .o_qti_signature {} + + } + .o_qti_metainfo_visual{} + } + .o_qti_sectionsummary { + .o_qti_section { + text-align: center; + .o_qti_section_visual{} + .o_qti_section_goto {} + .o_qti_section_sublisting { + padding: 0 10%; + min-height: 3em; + } + } + } + + .o_qti_sections { + .o_qti_section { + margin-top: 40px; + h3 { + margin-bottom: 20px; + } + .o_qti_items { + .o_qti_item { + .o_qti_item_id { + display: none; + } + .o_qti_item_comment { + @extend %o_note; + margin: 0; + padding: 5px 10px 10px 5px; + border-top: 1px solid $panel-default-border; + broder-bottom: 1px solid $panel-default-border; + h4 { + font-size: 100%; + font-weight: bold; + color: inherit; + } + } + } + + } + } + } + .o_qti_to_overview { + text-align: right; + @extend %o_small; + } +} + diff --git a/src/main/webapp/static/themes/light/modules/_radial-progress.scss b/src/main/webapp/static/themes/light/modules/_radial-progress.scss new file mode 100644 index 0000000000000000000000000000000000000000..58dfce16647198c010b943c99ca7fc1175ccbaf9 --- /dev/null +++ b/src/main/webapp/static/themes/light/modules/_radial-progress.scss @@ -0,0 +1,284 @@ +/* based on code found here: +https://medium.com/@andsens/radial-progress-indicator-using-css-a917b80c43f9 +http://jsfiddle.net/andsens/mLA7X/ +https://gist.github.com/digitalbreed/84a19db69244b22519e03550ba010a25 +*/ + +.radial-progress { + /* derived variables */ + $o-radial-progress-inset-size : $o-radial-progress-circle-size * 0.75 !default; // 90px + $o-radial-progress-percentage-font-size : $o-radial-progress-circle-size * 0.18 !default; // 22px + $o-radial-progress-percentage-text-width: $o-radial-progress-circle-size * 0.48 !default; // 57px + + margin: $o-radial-progress-margin; + width: $o-radial-progress-circle-size; + height: $o-radial-progress-circle-size; + background-color: $o-radial-progress-circle-bg; + border-radius: 50%; + + /* fix display issues in print and behave like an image tag*/ + display: inline-block; + position: relative; + + .circle { + .mask, .fill, .shadow { + width: 100%; + height: 100%; + position: absolute; + border-radius: 50%; + } + .shadow { + box-shadow: $o-radial-progress-shadow inset; + } + .mask, .fill { + -webkit-backface-visibility: hidden; + transition: -webkit-transform $o-radial-progress-transition-length; + transition: -ms-transform $o-radial-progress-transition-length; + transition: transform $o-radial-progress-transition-length; + border-radius: 50%; + } + .mask { + clip: rect(0px, $o-radial-progress-circle-size, $o-radial-progress-circle-size, $o-radial-progress-circle-size/2); + .fill { + clip: rect(0px, $o-radial-progress-circle-size/2, $o-radial-progress-circle-size, 0px); + background-color: $o-radial-progress-circle-color; + } + } + } + .inset { + width: $o-radial-progress-inset-size; + height: $o-radial-progress-inset-size; + position: absolute; + border-radius: 50%; + margin-left: ($o-radial-progress-circle-size - $o-radial-progress-inset-size)/2; + margin-top: ($o-radial-progress-circle-size - $o-radial-progress-inset-size)/2; + overflow: hidden; + background-color: $o-radial-progress-inset-color; + box-shadow: $o-radial-progress-shadow; + font-size: $o-radial-progress-percentage-font-size; + + .bgIcon { + position: absolute; + font-size: $o-radial-progress-inset-size - 10px; + top: 5px; + left: -5px; + opacity: 0; + transition: opacity 0; + transition-delay: $o-radial-progress-transition-length; + } + + .percentage { + height: 80%; + width: 80%; + position: absolute; + top: 10%; + left: 10%; + display: table; /* for vertical alignment */ + line-height: 1; + + .centeredWrapper { + display: table-cell; + vertical-align: middle; + text-align: center; + .number { + font-weight: 800; + color: $o-radial-progress-number-color; + } + .addon { + color: $o-radial-progress-addon-color; + margin-top: 5px; + div:nth-of-type(1) { + font-size: 0.55em; + font-weight: bold; + } + div:nth-of-type(2) { + margin-top: 2px; + font-size:0.45em; + } + } + } + } + } + + $increment: 180deg / 100; + @for $i from 0 through 100 { + &[data-progress="#{$i}"] { + .circle { + .mask.full, .fill { + -webkit-transform: rotate($increment * $i); + -ms-transform: rotate($increment * $i); + transform: rotate($increment * $i); + } + .fill.fix { + -webkit-transform: rotate($increment * $i * 2); + -ms-transform: rotate($increment * $i * 2); + transform: rotate($increment * $i * 2); + } + } + } + } + &:not([data-progress="0"]) { + .inset .bgIcon { + opacity: 1; + } + } + + /* color variants */ + &.radial-progress-success { + .circle .mask .fill { + background-color: $o-radial-progress-circle-success-color; + } + .inset .percentage .number span { + color: $o-radial-progress-percentage-success-color; + } + } + &.radial-progress-info { + .circle .mask .fill { + background-color: $o-radial-progress-circle-info-color; + } + .inset .percentage .number span { + color: $o-radial-progress-percentage-info-color; + } + } + &.radial-progress-danger { + .circle .mask .fill { + background-color: $o-radial-progress-circle-danger-color; + } + .inset .percentage .number span { + color: $o-radial-progress-percentage-danger-color; + } + } + &.radial-progress-warning { + .circle .mask .fill { + background-color: $o-radial-progress-circle-warning-color; + } + .inset .percentage .number span { + color: $o-radial-progress-percentage-warning-color; + } + } + + + /* small variant */ + &.radial-progress-sm { + /* derived variables */ + $o-radial-progress-inset-size-sm : $o-radial-progress-circle-size-sm * 0.75 !default; + $o-radial-progress-percentage-font-size-sm : $o-radial-progress-circle-size-sm * 0.18 !default; + $o-radial-progress-percentage-text-width-sm : $o-radial-progress-circle-size-sm * 0.48 !default; + + width: $o-radial-progress-circle-size-sm; + height: $o-radial-progress-circle-size-sm; + .circle { + .mask { + clip: rect(0px, $o-radial-progress-circle-size-sm, $o-radial-progress-circle-size-sm, $o-radial-progress-circle-size-sm/2); + .fill { + clip: rect(0px, $o-radial-progress-circle-size-sm/2, $o-radial-progress-circle-size-sm, 0px); + } + } + } + .inset { + width: $o-radial-progress-inset-size-sm; + height: $o-radial-progress-inset-size-sm; + margin-left: ($o-radial-progress-circle-size-sm - $o-radial-progress-inset-size-sm)/2; + margin-top: ($o-radial-progress-circle-size-sm - $o-radial-progress-inset-size-sm)/2; + font-size: $o-radial-progress-percentage-font-size-sm; + .bgIcon { + position: absolute; + font-size: $o-radial-progress-inset-size-sm - 10px; + top: 5px; + left: -2px; + } + } + } + + /* large variant */ + &.radial-progress-lg { + /* derived variables */ + $o-radial-progress-inset-size-lg : $o-radial-progress-circle-size-lg * 0.75 !default; + $o-radial-progress-percentage-font-size-lg : $o-radial-progress-circle-size-lg * 0.18 !default; + $o-radial-progress-percentage-text-width-lg : $o-radial-progress-circle-size-lg * 0.48 !default; + + width: $o-radial-progress-circle-size-lg; + height: $o-radial-progress-circle-size-lg; + .circle { + .mask { + clip: rect(0px, $o-radial-progress-circle-size-lg, $o-radial-progress-circle-size-lg, $o-radial-progress-circle-size-lg/2); + .fill { + clip: rect(0px, $o-radial-progress-circle-size-lg/2, $o-radial-progress-circle-size-lg, 0px); + } + } + } + .inset { + width: $o-radial-progress-inset-size-lg; + height: $o-radial-progress-inset-size-lg; + margin-left: ($o-radial-progress-circle-size-lg - $o-radial-progress-inset-size-lg)/2; + margin-top: ($o-radial-progress-circle-size-lg - $o-radial-progress-inset-size-lg)/2; + font-size: $o-radial-progress-percentage-font-size-lg; + .bgIcon { + position: absolute; + font-size: $o-radial-progress-inset-size-lg - 20px; + top: 5px; + left: -6px; + } + } + } + + + +} + + + +/* Markup example + +<div class="radial-progress radial-progress #if(${itemResult.hasPass()}) #if(${itemResult.getPass().booleanValue()}) radial-progress-success #elseif(!${itemResult.getPass().booleanValue()}) radial-progress-danger #end #end " id="$velocityCount" data-progress="0"> + <div class="circle"> + <div class="mask full"> + <div class="fill"></div> + </div> + <div class="mask half"> + <div class="fill"></div> + <div class="fill fix"></div> + </div> + <div class="shadow"></div> + </div> + <div class="inset"> + #if(${itemResult.hasPass()}) + #if(${itemResult.getPass().booleanValue()}) + <i class="bgIcon o_icon o_icon-fw o_icon_progress_success" title="$r.translateInAttribute("passed.yourpassed") $r.translateInAttribute("passed.yes")" > </i> + #elseif(!${itemResult.getPass().booleanValue()}) + <i class="bgIcon o_icon o_icon-fw o_icon_progress_danger" title="$r.translateInAttribute("passed.yourpassed") $r.translateInAttribute("passed.no")" > </i> + #end + #end + + <div class="percentage"> + <div class="centeredWrapper"> + <div class="number"> + <span>${itemResult.scorePercent}%</span> + </div> + + <div class="text-muted" style="text-align:center"> + <div class="o_score" style="margin-top: 5px; font-size: 0.6em; font-weight: bold"> + $r.translate("table.header.score"): + <span title="$r.translateInAttribute("results.score.yourscore")" class="o_sel_assessmentitem_score text-muted xsmall">$itemResult.score</span> + </div> + #if(${itemResult.hasMaxScore()}) + <div class="o_score_max o_small" style="margin-top: 2px; font-size:0.5em;"> + von <span title="$r.translateInAttribute("score.max")" class="o_sel_assessmentitem_maxscore text-muted xsmall">$itemResult.maxScore</span> + </div> + #end + </div> + + </div> + </div> + </div> +</div> + +<script type="text/javascript"> + <![CDATA[ +setTimeout(function() { + jQuery("#myid").attr("data-progress","35"); +},100); + ]]> +</script> + +*/ diff --git a/src/main/webapp/static/themes/light/modules/_various_modules.scss b/src/main/webapp/static/themes/light/modules/_various_modules.scss index 724e23d1f5fbf3ce16f6e4d30e9e27460c9bb5e7..12346e508a1ad965c51426f173d7b9a7176bf234 100644 --- a/src/main/webapp/static/themes/light/modules/_various_modules.scss +++ b/src/main/webapp/static/themes/light/modules/_various_modules.scss @@ -590,6 +590,17 @@ div.o_assessment_user_type_filter { } } +/* list */ +ul.o_assessment_docs { + margin-bottom: 0; +} +ul.o_assessment_docs>li { + margin-bottom: 0.33em; +} +ul.o_assessment_docs>li:last-child { + margin-bottom: 0em; +} + /* personal mail box tool */ .o_mail_message { .o_mail_meta { @@ -638,3 +649,17 @@ div.o_assessment_user_type_filter { font-size: 80%; } } + +/* indicator on progress bar */ +.progress .o_progress_marker { + position: absolute; + height: 100%; + top: 0; + width: 3px; + background: $o-progress-marker-color; +} + +/* web documents */ +.o_web_content { + padding-bottom: floor($grid-gutter-width / 2); +} diff --git a/src/main/webapp/static/themes/light/modules/_video.scss b/src/main/webapp/static/themes/light/modules/_video.scss index 698033eab7639793cf8cc2d6d1ee1c0333c3e409..4b046fba1f90df0a1d6adecba99ef4b5b0591b53 100644 --- a/src/main/webapp/static/themes/light/modules/_video.scss +++ b/src/main/webapp/static/themes/light/modules/_video.scss @@ -117,12 +117,31 @@ } /* beautify source chooser plugin, remove radio button */ -.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector { +.mejs__controls .mejs__sourcechooser-button > button { + background: transparent; + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/1 FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); // ensures no half-pixel rendering in firefox +} +.mejs__controls .mejs__sourcechooser-button > button:before { + content: $fa-var-gear; + color: white; + font-size: 18px; +} +.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector { visibility: visible !important; - width: 160px; + width: 170px; + padding-left: 10px; + ul li { label { font-weight: normal; + font-size: 10px; + width: 140px; &:hover { color: #eee; @@ -144,11 +163,13 @@ } /* beautify track plugin, remove radio button */ -.mejs-controls .mejs-captions-button .mejs-captions-selector { +.mejs__controls .mejs__captions-button .mejs__captions-selector { right: -26px; ul li { label { font-weight: normal; + font-size: 10px; + &:hover { color: #eee; } @@ -167,8 +188,25 @@ } } } + /* beautify speed plugin */ -.mejs-controls .mejs-speed-button .mejs-speed-selector { +.mejs__button.mejs__speed-button { + width: 36px; +} +.mejs__controls .mejs__speed-button > button { + background: transparent; + width: 36px; + margin: 11px 0 0 0; + font-size: 11px; + line-height: normal; + color: #ffffff; +} + +.mejs__controls .mejs__speed-button .mejs__speed-selector { + height: 150px; + top: auto; + bottom: 40px; + ul li { label { font-weight: normal; @@ -178,7 +216,7 @@ } /* fix overflow of chapters when not enough space */ -.mejs-chapters .mejs-chapter .mejs-chapter-block { +.mejs__chapters .mejs__chapter .mejs__chapter-block { .ch-title, .ch-time { overflow: hidden; diff --git a/src/main/webapp/static/themes/light/modules/radial-progress.css b/src/main/webapp/static/themes/light/modules/radial-progress.css new file mode 100644 index 0000000000000000000000000000000000000000..79840240c7dc79ca236fdb25db8fa7be5b38d00b --- /dev/null +++ b/src/main/webapp/static/themes/light/modules/radial-progress.css @@ -0,0 +1,2 @@ +.radial-progress{margin:50px;width:120px;height:120px;background-color:#d6dadc;border-radius:50%}.radial-progress .circle .mask,.radial-progress .circle .fill,.radial-progress .circle .shadow{width:120px;height:120px;position:absolute;border-radius:50%}.radial-progress .circle .shadow{box-shadow:6px 6px 10px rgba(0,0,0,0.2) inset}.radial-progress .circle .mask,.radial-progress .circle .fill{-webkit-backface-visibility:hidden;transition:-webkit-transform 1s;transition:-ms-transform 1s;transition:transform 1s;border-radius:50%}.radial-progress .circle .mask{clip:rect(0px, 120px, 120px, 60px)}.radial-progress .circle .mask .fill{clip:rect(0px, 60px, 120px, 0px);background-color:#97a71d}.radial-progress .inset{width:90px;height:90px;position:absolute;margin-left:15px;margin-top:15px;background-color:#fbfbfb;border-radius:50%;box-shadow:6px 6px 10px rgba(0,0,0,0.2)}.radial-progress .inset .percentage{height:22px;width:57px;overflow:hidden;position:absolute;top:34px;left:16.5px;line-height:1}.radial-progress .inset .percentage .numbers{margin-top:-22px;transition:width 1s}.radial-progress .inset .percentage .numbers span{width:57px;display:inline-block;vertical-align:top;text-align:center;font-weight:800;font-size:22px;color:#97a71d}.radial-progress[data-progress="0"] .circle .mask.full,.radial-progress[data-progress="0"] .circle .fill{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="0"] .circle .fill.fix{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="0"] .inset .percentage .numbers{width:57px}.radial-progress[data-progress="1"] .circle .mask.full,.radial-progress[data-progress="1"] .circle .fill{-webkit-transform:rotate(1.8deg);-ms-transform:rotate(1.8deg);transform:rotate(1.8deg)}.radial-progress[data-progress="1"] .circle .fill.fix{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="1"] .inset .percentage .numbers{width:114px}.radial-progress[data-progress="2"] .circle .mask.full,.radial-progress[data-progress="2"] .circle .fill{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .fill.fix{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="2"] .inset .percentage .numbers{width:171px}.radial-progress[data-progress="3"] .circle .mask.full,.radial-progress[data-progress="3"] .circle .fill{-webkit-transform:rotate(5.4deg);-ms-transform:rotate(5.4deg);transform:rotate(5.4deg)}.radial-progress[data-progress="3"] .circle .fill.fix{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="3"] .inset .percentage .numbers{width:228px}.radial-progress[data-progress="4"] .circle .mask.full,.radial-progress[data-progress="4"] .circle .fill{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="4"] .circle .fill.fix{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="4"] .inset .percentage .numbers{width:285px}.radial-progress[data-progress="5"] .circle .mask.full,.radial-progress[data-progress="5"] .circle .fill{-webkit-transform:rotate(9deg);-ms-transform:rotate(9deg);transform:rotate(9deg)}.radial-progress[data-progress="5"] .circle .fill.fix{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="5"] .inset .percentage .numbers{width:342px}.radial-progress[data-progress="6"] .circle .mask.full,.radial-progress[data-progress="6"] .circle .fill{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="6"] .circle .fill.fix{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="6"] .inset .percentage .numbers{width:399px}.radial-progress[data-progress="7"] .circle .mask.full,.radial-progress[data-progress="7"] .circle .fill{-webkit-transform:rotate(12.6deg);-ms-transform:rotate(12.6deg);transform:rotate(12.6deg)}.radial-progress[data-progress="7"] .circle .fill.fix{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="7"] .inset .percentage .numbers{width:456px}.radial-progress[data-progress="8"] .circle .mask.full,.radial-progress[data-progress="8"] .circle .fill{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="8"] .circle .fill.fix{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="8"] .inset .percentage .numbers{width:513px}.radial-progress[data-progress="9"] .circle .mask.full,.radial-progress[data-progress="9"] .circle .fill{-webkit-transform:rotate(16.2deg);-ms-transform:rotate(16.2deg);transform:rotate(16.2deg)}.radial-progress[data-progress="9"] .circle .fill.fix{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="9"] .inset .percentage .numbers{width:570px}.radial-progress[data-progress="10"] .circle .mask.full,.radial-progress[data-progress="10"] .circle .fill{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="10"] .circle .fill.fix{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="10"] .inset .percentage .numbers{width:627px}.radial-progress[data-progress="11"] .circle .mask.full,.radial-progress[data-progress="11"] .circle .fill{-webkit-transform:rotate(19.8deg);-ms-transform:rotate(19.8deg);transform:rotate(19.8deg)}.radial-progress[data-progress="11"] .circle .fill.fix{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="11"] .inset .percentage .numbers{width:684px}.radial-progress[data-progress="12"] .circle .mask.full,.radial-progress[data-progress="12"] .circle .fill{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="12"] .circle .fill.fix{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="12"] .inset .percentage .numbers{width:741px}.radial-progress[data-progress="13"] .circle .mask.full,.radial-progress[data-progress="13"] .circle .fill{-webkit-transform:rotate(23.4deg);-ms-transform:rotate(23.4deg);transform:rotate(23.4deg)}.radial-progress[data-progress="13"] .circle .fill.fix{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="13"] .inset .percentage .numbers{width:798px}.radial-progress[data-progress="14"] .circle .mask.full,.radial-progress[data-progress="14"] .circle .fill{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="14"] .circle .fill.fix{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="14"] .inset .percentage .numbers{width:855px}.radial-progress[data-progress="15"] .circle .mask.full,.radial-progress[data-progress="15"] .circle .fill{-webkit-transform:rotate(27deg);-ms-transform:rotate(27deg);transform:rotate(27deg)}.radial-progress[data-progress="15"] .circle .fill.fix{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="15"] .inset .percentage .numbers{width:912px}.radial-progress[data-progress="16"] .circle .mask.full,.radial-progress[data-progress="16"] .circle .fill{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="16"] .circle .fill.fix{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="16"] .inset .percentage .numbers{width:969px}.radial-progress[data-progress="17"] .circle .mask.full,.radial-progress[data-progress="17"] .circle .fill{-webkit-transform:rotate(30.6deg);-ms-transform:rotate(30.6deg);transform:rotate(30.6deg)}.radial-progress[data-progress="17"] .circle .fill.fix{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="17"] .inset .percentage .numbers{width:1026px}.radial-progress[data-progress="18"] .circle .mask.full,.radial-progress[data-progress="18"] .circle .fill{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="18"] .circle .fill.fix{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="18"] .inset .percentage .numbers{width:1083px}.radial-progress[data-progress="19"] .circle .mask.full,.radial-progress[data-progress="19"] .circle .fill{-webkit-transform:rotate(34.2deg);-ms-transform:rotate(34.2deg);transform:rotate(34.2deg)}.radial-progress[data-progress="19"] .circle .fill.fix{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="19"] .inset .percentage .numbers{width:1140px}.radial-progress[data-progress="20"] .circle .mask.full,.radial-progress[data-progress="20"] .circle .fill{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="20"] .circle .fill.fix{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="20"] .inset .percentage .numbers{width:1197px}.radial-progress[data-progress="21"] .circle .mask.full,.radial-progress[data-progress="21"] .circle .fill{-webkit-transform:rotate(37.8deg);-ms-transform:rotate(37.8deg);transform:rotate(37.8deg)}.radial-progress[data-progress="21"] .circle .fill.fix{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="21"] .inset .percentage .numbers{width:1254px}.radial-progress[data-progress="22"] .circle .mask.full,.radial-progress[data-progress="22"] .circle .fill{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="22"] .circle .fill.fix{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="22"] .inset .percentage .numbers{width:1311px}.radial-progress[data-progress="23"] .circle .mask.full,.radial-progress[data-progress="23"] .circle .fill{-webkit-transform:rotate(41.4deg);-ms-transform:rotate(41.4deg);transform:rotate(41.4deg)}.radial-progress[data-progress="23"] .circle .fill.fix{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="23"] .inset .percentage .numbers{width:1368px}.radial-progress[data-progress="24"] .circle .mask.full,.radial-progress[data-progress="24"] .circle .fill{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="24"] .circle .fill.fix{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="24"] .inset .percentage .numbers{width:1425px}.radial-progress[data-progress="25"] .circle .mask.full,.radial-progress[data-progress="25"] .circle .fill{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.radial-progress[data-progress="25"] .circle .fill.fix{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="25"] .inset .percentage .numbers{width:1482px}.radial-progress[data-progress="26"] .circle .mask.full,.radial-progress[data-progress="26"] .circle .fill{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="26"] .circle .fill.fix{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="26"] .inset .percentage .numbers{width:1539px}.radial-progress[data-progress="27"] .circle .mask.full,.radial-progress[data-progress="27"] .circle .fill{-webkit-transform:rotate(48.6deg);-ms-transform:rotate(48.6deg);transform:rotate(48.6deg)}.radial-progress[data-progress="27"] .circle .fill.fix{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="27"] .inset .percentage .numbers{width:1596px}.radial-progress[data-progress="28"] .circle .mask.full,.radial-progress[data-progress="28"] .circle .fill{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="28"] .circle .fill.fix{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="28"] .inset .percentage .numbers{width:1653px}.radial-progress[data-progress="29"] .circle .mask.full,.radial-progress[data-progress="29"] .circle .fill{-webkit-transform:rotate(52.2deg);-ms-transform:rotate(52.2deg);transform:rotate(52.2deg)}.radial-progress[data-progress="29"] .circle .fill.fix{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="29"] .inset .percentage .numbers{width:1710px}.radial-progress[data-progress="30"] .circle .mask.full,.radial-progress[data-progress="30"] .circle .fill{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="30"] .circle .fill.fix{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="30"] .inset .percentage .numbers{width:1767px}.radial-progress[data-progress="31"] .circle .mask.full,.radial-progress[data-progress="31"] .circle .fill{-webkit-transform:rotate(55.8deg);-ms-transform:rotate(55.8deg);transform:rotate(55.8deg)}.radial-progress[data-progress="31"] .circle .fill.fix{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="31"] .inset .percentage .numbers{width:1824px}.radial-progress[data-progress="32"] .circle .mask.full,.radial-progress[data-progress="32"] .circle .fill{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="32"] .circle .fill.fix{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="32"] .inset .percentage .numbers{width:1881px}.radial-progress[data-progress="33"] .circle .mask.full,.radial-progress[data-progress="33"] .circle .fill{-webkit-transform:rotate(59.4deg);-ms-transform:rotate(59.4deg);transform:rotate(59.4deg)}.radial-progress[data-progress="33"] .circle .fill.fix{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="33"] .inset .percentage .numbers{width:1938px}.radial-progress[data-progress="34"] .circle .mask.full,.radial-progress[data-progress="34"] .circle .fill{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="34"] .circle .fill.fix{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="34"] .inset .percentage .numbers{width:1995px}.radial-progress[data-progress="35"] .circle .mask.full,.radial-progress[data-progress="35"] .circle .fill{-webkit-transform:rotate(63deg);-ms-transform:rotate(63deg);transform:rotate(63deg)}.radial-progress[data-progress="35"] .circle .fill.fix{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="35"] .inset .percentage .numbers{width:2052px}.radial-progress[data-progress="36"] .circle .mask.full,.radial-progress[data-progress="36"] .circle .fill{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="36"] .circle .fill.fix{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="36"] .inset .percentage .numbers{width:2109px}.radial-progress[data-progress="37"] .circle .mask.full,.radial-progress[data-progress="37"] .circle .fill{-webkit-transform:rotate(66.6deg);-ms-transform:rotate(66.6deg);transform:rotate(66.6deg)}.radial-progress[data-progress="37"] .circle .fill.fix{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="37"] .inset .percentage .numbers{width:2166px}.radial-progress[data-progress="38"] .circle .mask.full,.radial-progress[data-progress="38"] .circle .fill{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="38"] .circle .fill.fix{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="38"] .inset .percentage .numbers{width:2223px}.radial-progress[data-progress="39"] .circle .mask.full,.radial-progress[data-progress="39"] .circle .fill{-webkit-transform:rotate(70.2deg);-ms-transform:rotate(70.2deg);transform:rotate(70.2deg)}.radial-progress[data-progress="39"] .circle .fill.fix{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="39"] .inset .percentage .numbers{width:2280px}.radial-progress[data-progress="40"] .circle .mask.full,.radial-progress[data-progress="40"] .circle .fill{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="40"] .circle .fill.fix{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="40"] .inset .percentage .numbers{width:2337px}.radial-progress[data-progress="41"] .circle .mask.full,.radial-progress[data-progress="41"] .circle .fill{-webkit-transform:rotate(73.8deg);-ms-transform:rotate(73.8deg);transform:rotate(73.8deg)}.radial-progress[data-progress="41"] .circle .fill.fix{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="41"] .inset .percentage .numbers{width:2394px}.radial-progress[data-progress="42"] .circle .mask.full,.radial-progress[data-progress="42"] .circle .fill{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="42"] .circle .fill.fix{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="42"] .inset .percentage .numbers{width:2451px}.radial-progress[data-progress="43"] .circle .mask.full,.radial-progress[data-progress="43"] .circle .fill{-webkit-transform:rotate(77.4deg);-ms-transform:rotate(77.4deg);transform:rotate(77.4deg)}.radial-progress[data-progress="43"] .circle .fill.fix{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="43"] .inset .percentage .numbers{width:2508px}.radial-progress[data-progress="44"] .circle .mask.full,.radial-progress[data-progress="44"] .circle .fill{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="44"] .circle .fill.fix{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="44"] .inset .percentage .numbers{width:2565px}.radial-progress[data-progress="45"] .circle .mask.full,.radial-progress[data-progress="45"] .circle .fill{-webkit-transform:rotate(81deg);-ms-transform:rotate(81deg);transform:rotate(81deg)}.radial-progress[data-progress="45"] .circle .fill.fix{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="45"] .inset .percentage .numbers{width:2622px}.radial-progress[data-progress="46"] .circle .mask.full,.radial-progress[data-progress="46"] .circle .fill{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="46"] .circle .fill.fix{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="46"] .inset .percentage .numbers{width:2679px}.radial-progress[data-progress="47"] .circle .mask.full,.radial-progress[data-progress="47"] .circle .fill{-webkit-transform:rotate(84.6deg);-ms-transform:rotate(84.6deg);transform:rotate(84.6deg)}.radial-progress[data-progress="47"] .circle .fill.fix{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="47"] .inset .percentage .numbers{width:2736px}.radial-progress[data-progress="48"] .circle .mask.full,.radial-progress[data-progress="48"] .circle .fill{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="48"] .circle .fill.fix{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="48"] .inset .percentage .numbers{width:2793px}.radial-progress[data-progress="49"] .circle .mask.full,.radial-progress[data-progress="49"] .circle .fill{-webkit-transform:rotate(88.2deg);-ms-transform:rotate(88.2deg);transform:rotate(88.2deg)}.radial-progress[data-progress="49"] .circle .fill.fix{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="49"] .inset .percentage .numbers{width:2850px}.radial-progress[data-progress="50"] .circle .mask.full,.radial-progress[data-progress="50"] .circle .fill{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="50"] .circle .fill.fix{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="50"] .inset .percentage .numbers{width:2907px}.radial-progress[data-progress="51"] .circle .mask.full,.radial-progress[data-progress="51"] .circle .fill{-webkit-transform:rotate(91.8deg);-ms-transform:rotate(91.8deg);transform:rotate(91.8deg)}.radial-progress[data-progress="51"] .circle .fill.fix{-webkit-transform:rotate(183.6deg);-ms-transform:rotate(183.6deg);transform:rotate(183.6deg)}.radial-progress[data-progress="51"] .inset .percentage .numbers{width:2964px}.radial-progress[data-progress="52"] .circle .mask.full,.radial-progress[data-progress="52"] .circle .fill{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="52"] .circle .fill.fix{-webkit-transform:rotate(187.2deg);-ms-transform:rotate(187.2deg);transform:rotate(187.2deg)}.radial-progress[data-progress="52"] .inset .percentage .numbers{width:3021px}.radial-progress[data-progress="53"] .circle .mask.full,.radial-progress[data-progress="53"] .circle .fill{-webkit-transform:rotate(95.4deg);-ms-transform:rotate(95.4deg);transform:rotate(95.4deg)}.radial-progress[data-progress="53"] .circle .fill.fix{-webkit-transform:rotate(190.8deg);-ms-transform:rotate(190.8deg);transform:rotate(190.8deg)}.radial-progress[data-progress="53"] .inset .percentage .numbers{width:3078px}.radial-progress[data-progress="54"] .circle .mask.full,.radial-progress[data-progress="54"] .circle .fill{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="54"] .circle .fill.fix{-webkit-transform:rotate(194.4deg);-ms-transform:rotate(194.4deg);transform:rotate(194.4deg)}.radial-progress[data-progress="54"] .inset .percentage .numbers{width:3135px}.radial-progress[data-progress="55"] .circle .mask.full,.radial-progress[data-progress="55"] .circle .fill{-webkit-transform:rotate(99deg);-ms-transform:rotate(99deg);transform:rotate(99deg)}.radial-progress[data-progress="55"] .circle .fill.fix{-webkit-transform:rotate(198deg);-ms-transform:rotate(198deg);transform:rotate(198deg)}.radial-progress[data-progress="55"] .inset .percentage .numbers{width:3192px}.radial-progress[data-progress="56"] .circle .mask.full,.radial-progress[data-progress="56"] .circle .fill{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="56"] .circle .fill.fix{-webkit-transform:rotate(201.6deg);-ms-transform:rotate(201.6deg);transform:rotate(201.6deg)}.radial-progress[data-progress="56"] .inset .percentage .numbers{width:3249px}.radial-progress[data-progress="57"] .circle .mask.full,.radial-progress[data-progress="57"] .circle .fill{-webkit-transform:rotate(102.6deg);-ms-transform:rotate(102.6deg);transform:rotate(102.6deg)}.radial-progress[data-progress="57"] .circle .fill.fix{-webkit-transform:rotate(205.2deg);-ms-transform:rotate(205.2deg);transform:rotate(205.2deg)}.radial-progress[data-progress="57"] .inset .percentage .numbers{width:3306px}.radial-progress[data-progress="58"] .circle .mask.full,.radial-progress[data-progress="58"] .circle .fill{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="58"] .circle .fill.fix{-webkit-transform:rotate(208.8deg);-ms-transform:rotate(208.8deg);transform:rotate(208.8deg)}.radial-progress[data-progress="58"] .inset .percentage .numbers{width:3363px}.radial-progress[data-progress="59"] .circle .mask.full,.radial-progress[data-progress="59"] .circle .fill{-webkit-transform:rotate(106.2deg);-ms-transform:rotate(106.2deg);transform:rotate(106.2deg)}.radial-progress[data-progress="59"] .circle .fill.fix{-webkit-transform:rotate(212.4deg);-ms-transform:rotate(212.4deg);transform:rotate(212.4deg)}.radial-progress[data-progress="59"] .inset .percentage .numbers{width:3420px}.radial-progress[data-progress="60"] .circle .mask.full,.radial-progress[data-progress="60"] .circle .fill{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="60"] .circle .fill.fix{-webkit-transform:rotate(216deg);-ms-transform:rotate(216deg);transform:rotate(216deg)}.radial-progress[data-progress="60"] .inset .percentage .numbers{width:3477px}.radial-progress[data-progress="61"] .circle .mask.full,.radial-progress[data-progress="61"] .circle .fill{-webkit-transform:rotate(109.8deg);-ms-transform:rotate(109.8deg);transform:rotate(109.8deg)}.radial-progress[data-progress="61"] .circle .fill.fix{-webkit-transform:rotate(219.6deg);-ms-transform:rotate(219.6deg);transform:rotate(219.6deg)}.radial-progress[data-progress="61"] .inset .percentage .numbers{width:3534px}.radial-progress[data-progress="62"] .circle .mask.full,.radial-progress[data-progress="62"] .circle .fill{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="62"] .circle .fill.fix{-webkit-transform:rotate(223.2deg);-ms-transform:rotate(223.2deg);transform:rotate(223.2deg)}.radial-progress[data-progress="62"] .inset .percentage .numbers{width:3591px}.radial-progress[data-progress="63"] .circle .mask.full,.radial-progress[data-progress="63"] .circle .fill{-webkit-transform:rotate(113.4deg);-ms-transform:rotate(113.4deg);transform:rotate(113.4deg)}.radial-progress[data-progress="63"] .circle .fill.fix{-webkit-transform:rotate(226.8deg);-ms-transform:rotate(226.8deg);transform:rotate(226.8deg)}.radial-progress[data-progress="63"] .inset .percentage .numbers{width:3648px}.radial-progress[data-progress="64"] .circle .mask.full,.radial-progress[data-progress="64"] .circle .fill{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="64"] .circle .fill.fix{-webkit-transform:rotate(230.4deg);-ms-transform:rotate(230.4deg);transform:rotate(230.4deg)}.radial-progress[data-progress="64"] .inset .percentage .numbers{width:3705px}.radial-progress[data-progress="65"] .circle .mask.full,.radial-progress[data-progress="65"] .circle .fill{-webkit-transform:rotate(117deg);-ms-transform:rotate(117deg);transform:rotate(117deg)}.radial-progress[data-progress="65"] .circle .fill.fix{-webkit-transform:rotate(234deg);-ms-transform:rotate(234deg);transform:rotate(234deg)}.radial-progress[data-progress="65"] .inset .percentage .numbers{width:3762px}.radial-progress[data-progress="66"] .circle .mask.full,.radial-progress[data-progress="66"] .circle .fill{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="66"] .circle .fill.fix{-webkit-transform:rotate(237.6deg);-ms-transform:rotate(237.6deg);transform:rotate(237.6deg)}.radial-progress[data-progress="66"] .inset .percentage .numbers{width:3819px}.radial-progress[data-progress="67"] .circle .mask.full,.radial-progress[data-progress="67"] .circle .fill{-webkit-transform:rotate(120.6deg);-ms-transform:rotate(120.6deg);transform:rotate(120.6deg)}.radial-progress[data-progress="67"] .circle .fill.fix{-webkit-transform:rotate(241.2deg);-ms-transform:rotate(241.2deg);transform:rotate(241.2deg)}.radial-progress[data-progress="67"] .inset .percentage .numbers{width:3876px}.radial-progress[data-progress="68"] .circle .mask.full,.radial-progress[data-progress="68"] .circle .fill{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="68"] .circle .fill.fix{-webkit-transform:rotate(244.8deg);-ms-transform:rotate(244.8deg);transform:rotate(244.8deg)}.radial-progress[data-progress="68"] .inset .percentage .numbers{width:3933px}.radial-progress[data-progress="69"] .circle .mask.full,.radial-progress[data-progress="69"] .circle .fill{-webkit-transform:rotate(124.2deg);-ms-transform:rotate(124.2deg);transform:rotate(124.2deg)}.radial-progress[data-progress="69"] .circle .fill.fix{-webkit-transform:rotate(248.4deg);-ms-transform:rotate(248.4deg);transform:rotate(248.4deg)}.radial-progress[data-progress="69"] .inset .percentage .numbers{width:3990px}.radial-progress[data-progress="70"] .circle .mask.full,.radial-progress[data-progress="70"] .circle .fill{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="70"] .circle .fill.fix{-webkit-transform:rotate(252deg);-ms-transform:rotate(252deg);transform:rotate(252deg)}.radial-progress[data-progress="70"] .inset .percentage .numbers{width:4047px}.radial-progress[data-progress="71"] .circle .mask.full,.radial-progress[data-progress="71"] .circle .fill{-webkit-transform:rotate(127.8deg);-ms-transform:rotate(127.8deg);transform:rotate(127.8deg)}.radial-progress[data-progress="71"] .circle .fill.fix{-webkit-transform:rotate(255.6deg);-ms-transform:rotate(255.6deg);transform:rotate(255.6deg)}.radial-progress[data-progress="71"] .inset .percentage .numbers{width:4104px}.radial-progress[data-progress="72"] .circle .mask.full,.radial-progress[data-progress="72"] .circle .fill{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="72"] .circle .fill.fix{-webkit-transform:rotate(259.2deg);-ms-transform:rotate(259.2deg);transform:rotate(259.2deg)}.radial-progress[data-progress="72"] .inset .percentage .numbers{width:4161px}.radial-progress[data-progress="73"] .circle .mask.full,.radial-progress[data-progress="73"] .circle .fill{-webkit-transform:rotate(131.4deg);-ms-transform:rotate(131.4deg);transform:rotate(131.4deg)}.radial-progress[data-progress="73"] .circle .fill.fix{-webkit-transform:rotate(262.8deg);-ms-transform:rotate(262.8deg);transform:rotate(262.8deg)}.radial-progress[data-progress="73"] .inset .percentage .numbers{width:4218px}.radial-progress[data-progress="74"] .circle .mask.full,.radial-progress[data-progress="74"] .circle .fill{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="74"] .circle .fill.fix{-webkit-transform:rotate(266.4deg);-ms-transform:rotate(266.4deg);transform:rotate(266.4deg)}.radial-progress[data-progress="74"] .inset .percentage .numbers{width:4275px}.radial-progress[data-progress="75"] .circle .mask.full,.radial-progress[data-progress="75"] .circle .fill{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.radial-progress[data-progress="75"] .circle .fill.fix{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.radial-progress[data-progress="75"] .inset .percentage .numbers{width:4332px}.radial-progress[data-progress="76"] .circle .mask.full,.radial-progress[data-progress="76"] .circle .fill{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="76"] .circle .fill.fix{-webkit-transform:rotate(273.6deg);-ms-transform:rotate(273.6deg);transform:rotate(273.6deg)}.radial-progress[data-progress="76"] .inset .percentage .numbers{width:4389px}.radial-progress[data-progress="77"] .circle .mask.full,.radial-progress[data-progress="77"] .circle .fill{-webkit-transform:rotate(138.6deg);-ms-transform:rotate(138.6deg);transform:rotate(138.6deg)}.radial-progress[data-progress="77"] .circle .fill.fix{-webkit-transform:rotate(277.2deg);-ms-transform:rotate(277.2deg);transform:rotate(277.2deg)}.radial-progress[data-progress="77"] .inset .percentage .numbers{width:4446px}.radial-progress[data-progress="78"] .circle .mask.full,.radial-progress[data-progress="78"] .circle .fill{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="78"] .circle .fill.fix{-webkit-transform:rotate(280.8deg);-ms-transform:rotate(280.8deg);transform:rotate(280.8deg)}.radial-progress[data-progress="78"] .inset .percentage .numbers{width:4503px}.radial-progress[data-progress="79"] .circle .mask.full,.radial-progress[data-progress="79"] .circle .fill{-webkit-transform:rotate(142.2deg);-ms-transform:rotate(142.2deg);transform:rotate(142.2deg)}.radial-progress[data-progress="79"] .circle .fill.fix{-webkit-transform:rotate(284.4deg);-ms-transform:rotate(284.4deg);transform:rotate(284.4deg)}.radial-progress[data-progress="79"] .inset .percentage .numbers{width:4560px}.radial-progress[data-progress="80"] .circle .mask.full,.radial-progress[data-progress="80"] .circle .fill{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="80"] .circle .fill.fix{-webkit-transform:rotate(288deg);-ms-transform:rotate(288deg);transform:rotate(288deg)}.radial-progress[data-progress="80"] .inset .percentage .numbers{width:4617px}.radial-progress[data-progress="81"] .circle .mask.full,.radial-progress[data-progress="81"] .circle .fill{-webkit-transform:rotate(145.8deg);-ms-transform:rotate(145.8deg);transform:rotate(145.8deg)}.radial-progress[data-progress="81"] .circle .fill.fix{-webkit-transform:rotate(291.6deg);-ms-transform:rotate(291.6deg);transform:rotate(291.6deg)}.radial-progress[data-progress="81"] .inset .percentage .numbers{width:4674px}.radial-progress[data-progress="82"] .circle .mask.full,.radial-progress[data-progress="82"] .circle .fill{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="82"] .circle .fill.fix{-webkit-transform:rotate(295.2deg);-ms-transform:rotate(295.2deg);transform:rotate(295.2deg)}.radial-progress[data-progress="82"] .inset .percentage .numbers{width:4731px}.radial-progress[data-progress="83"] .circle .mask.full,.radial-progress[data-progress="83"] .circle .fill{-webkit-transform:rotate(149.4deg);-ms-transform:rotate(149.4deg);transform:rotate(149.4deg)}.radial-progress[data-progress="83"] .circle .fill.fix{-webkit-transform:rotate(298.8deg);-ms-transform:rotate(298.8deg);transform:rotate(298.8deg)}.radial-progress[data-progress="83"] .inset .percentage .numbers{width:4788px}.radial-progress[data-progress="84"] .circle .mask.full,.radial-progress[data-progress="84"] .circle .fill{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="84"] .circle .fill.fix{-webkit-transform:rotate(302.4deg);-ms-transform:rotate(302.4deg);transform:rotate(302.4deg)}.radial-progress[data-progress="84"] .inset .percentage .numbers{width:4845px}.radial-progress[data-progress="85"] .circle .mask.full,.radial-progress[data-progress="85"] .circle .fill{-webkit-transform:rotate(153deg);-ms-transform:rotate(153deg);transform:rotate(153deg)}.radial-progress[data-progress="85"] .circle .fill.fix{-webkit-transform:rotate(306deg);-ms-transform:rotate(306deg);transform:rotate(306deg)}.radial-progress[data-progress="85"] .inset .percentage .numbers{width:4902px}.radial-progress[data-progress="86"] .circle .mask.full,.radial-progress[data-progress="86"] .circle .fill{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="86"] .circle .fill.fix{-webkit-transform:rotate(309.6deg);-ms-transform:rotate(309.6deg);transform:rotate(309.6deg)}.radial-progress[data-progress="86"] .inset .percentage .numbers{width:4959px}.radial-progress[data-progress="87"] .circle .mask.full,.radial-progress[data-progress="87"] .circle .fill{-webkit-transform:rotate(156.6deg);-ms-transform:rotate(156.6deg);transform:rotate(156.6deg)}.radial-progress[data-progress="87"] .circle .fill.fix{-webkit-transform:rotate(313.2deg);-ms-transform:rotate(313.2deg);transform:rotate(313.2deg)}.radial-progress[data-progress="87"] .inset .percentage .numbers{width:5016px}.radial-progress[data-progress="88"] .circle .mask.full,.radial-progress[data-progress="88"] .circle .fill{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="88"] .circle .fill.fix{-webkit-transform:rotate(316.8deg);-ms-transform:rotate(316.8deg);transform:rotate(316.8deg)}.radial-progress[data-progress="88"] .inset .percentage .numbers{width:5073px}.radial-progress[data-progress="89"] .circle .mask.full,.radial-progress[data-progress="89"] .circle .fill{-webkit-transform:rotate(160.2deg);-ms-transform:rotate(160.2deg);transform:rotate(160.2deg)}.radial-progress[data-progress="89"] .circle .fill.fix{-webkit-transform:rotate(320.4deg);-ms-transform:rotate(320.4deg);transform:rotate(320.4deg)}.radial-progress[data-progress="89"] .inset .percentage .numbers{width:5130px}.radial-progress[data-progress="90"] .circle .mask.full,.radial-progress[data-progress="90"] .circle .fill{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="90"] .circle .fill.fix{-webkit-transform:rotate(324deg);-ms-transform:rotate(324deg);transform:rotate(324deg)}.radial-progress[data-progress="90"] .inset .percentage .numbers{width:5187px}.radial-progress[data-progress="91"] .circle .mask.full,.radial-progress[data-progress="91"] .circle .fill{-webkit-transform:rotate(163.8deg);-ms-transform:rotate(163.8deg);transform:rotate(163.8deg)}.radial-progress[data-progress="91"] .circle .fill.fix{-webkit-transform:rotate(327.6deg);-ms-transform:rotate(327.6deg);transform:rotate(327.6deg)}.radial-progress[data-progress="91"] .inset .percentage .numbers{width:5244px}.radial-progress[data-progress="92"] .circle .mask.full,.radial-progress[data-progress="92"] .circle .fill{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="92"] .circle .fill.fix{-webkit-transform:rotate(331.2deg);-ms-transform:rotate(331.2deg);transform:rotate(331.2deg)}.radial-progress[data-progress="92"] .inset .percentage .numbers{width:5301px}.radial-progress[data-progress="93"] .circle .mask.full,.radial-progress[data-progress="93"] .circle .fill{-webkit-transform:rotate(167.4deg);-ms-transform:rotate(167.4deg);transform:rotate(167.4deg)}.radial-progress[data-progress="93"] .circle .fill.fix{-webkit-transform:rotate(334.8deg);-ms-transform:rotate(334.8deg);transform:rotate(334.8deg)}.radial-progress[data-progress="93"] .inset .percentage .numbers{width:5358px}.radial-progress[data-progress="94"] .circle .mask.full,.radial-progress[data-progress="94"] .circle .fill{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="94"] .circle .fill.fix{-webkit-transform:rotate(338.4deg);-ms-transform:rotate(338.4deg);transform:rotate(338.4deg)}.radial-progress[data-progress="94"] .inset .percentage .numbers{width:5415px}.radial-progress[data-progress="95"] .circle .mask.full,.radial-progress[data-progress="95"] .circle .fill{-webkit-transform:rotate(171deg);-ms-transform:rotate(171deg);transform:rotate(171deg)}.radial-progress[data-progress="95"] .circle .fill.fix{-webkit-transform:rotate(342deg);-ms-transform:rotate(342deg);transform:rotate(342deg)}.radial-progress[data-progress="95"] .inset .percentage .numbers{width:5472px}.radial-progress[data-progress="96"] .circle .mask.full,.radial-progress[data-progress="96"] .circle .fill{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="96"] .circle .fill.fix{-webkit-transform:rotate(345.6deg);-ms-transform:rotate(345.6deg);transform:rotate(345.6deg)}.radial-progress[data-progress="96"] .inset .percentage .numbers{width:5529px}.radial-progress[data-progress="97"] .circle .mask.full,.radial-progress[data-progress="97"] .circle .fill{-webkit-transform:rotate(174.6deg);-ms-transform:rotate(174.6deg);transform:rotate(174.6deg)}.radial-progress[data-progress="97"] .circle .fill.fix{-webkit-transform:rotate(349.2deg);-ms-transform:rotate(349.2deg);transform:rotate(349.2deg)}.radial-progress[data-progress="97"] .inset .percentage .numbers{width:5586px}.radial-progress[data-progress="98"] .circle .mask.full,.radial-progress[data-progress="98"] .circle .fill{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="98"] .circle .fill.fix{-webkit-transform:rotate(352.8deg);-ms-transform:rotate(352.8deg);transform:rotate(352.8deg)}.radial-progress[data-progress="98"] .inset .percentage .numbers{width:5643px}.radial-progress[data-progress="99"] .circle .mask.full,.radial-progress[data-progress="99"] .circle .fill{-webkit-transform:rotate(178.2deg);-ms-transform:rotate(178.2deg);transform:rotate(178.2deg)}.radial-progress[data-progress="99"] .circle .fill.fix{-webkit-transform:rotate(356.4deg);-ms-transform:rotate(356.4deg);transform:rotate(356.4deg)}.radial-progress[data-progress="99"] .inset .percentage .numbers{width:5700px}.radial-progress[data-progress="100"] .circle .mask.full,.radial-progress[data-progress="100"] .circle .fill{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="100"] .circle .fill.fix{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.radial-progress[data-progress="100"] .inset .percentage .numbers{width:5757px} +/*# sourceMappingURL=radial-progress.css.map */ diff --git a/src/main/webapp/static/themes/light/modules/radial-progress.css.map b/src/main/webapp/static/themes/light/modules/radial-progress.css.map new file mode 100644 index 0000000000000000000000000000000000000000..44a340328ee3e92df7df8003be81d83879cc77be --- /dev/null +++ b/src/main/webapp/static/themes/light/modules/radial-progress.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["radial-progress.scss"], +"names": [], +"file": "radial-progress.css" +} \ No newline at end of file diff --git a/src/main/webapp/static/themes/light/theme.css b/src/main/webapp/static/themes/light/theme.css index 508bc27674de02358300483635e58f2de7a6a867..c3765483d85a097b03821842cab831c60d243f4e 100644 --- a/src/main/webapp/static/themes/light/theme.css +++ b/src/main/webapp/static/themes/light/theme.css @@ -22,5 +22,5 @@ * @author gnaegi, www.frentix.com * @date April. 2014 * ======================================================== -**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail,.o_form .o_filepreview img,.o_feed .o_media{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,.o_cal .fc-header-title h2,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.o_cal .fc-header-title h2,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.o_cal .fc-header-title h2,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#fafafa;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn,.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,.form-group-sm .form-control,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn,.form-group-sm .form-control{height:auto}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn,.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,.form-group-lg .form-control,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn,.form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group,.o_navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control,.o_navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static,.o_navbar-form .form-control-static{display:inline-block}.form-inline .input-group,.o_navbar-form .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.o_navbar-form .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.o_navbar-form .input-group .input-group-btn,.form-inline .input-group .form-control,.o_navbar-form .input-group .form-control{width:auto}.form-inline .input-group>.form-control,.o_navbar-form .input-group>.form-control{width:100%}.form-inline .control-label,.o_navbar-form .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.o_navbar-form .radio,.form-inline .checkbox,.o_navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.o_navbar-form .radio label,.form-inline .checkbox label,.o_navbar-form .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.o_navbar-form .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"],.o_navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback,.o_navbar-form .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron,.o_repo_details .o_lead{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{color:inherit}.jumbotron p,.o_repo_details .o_lead p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr,.o_repo_details .o_lead>hr{border-top-color:#d5d5d5}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{border-radius:6px}.jumbotron .container,.o_repo_details .o_lead .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron,.o_repo_details .o_lead{padding:48px 0}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{padding-left:60px;padding-right:60px}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4,.alert .o_cal .fc-header-title h2,.o_cal .fc-header-title .alert h2{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table,.panel-collapse>.table,.panel-collapse>.table-responsive>.table,.panel-collapse>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption,.panel-collapse>.table caption,.panel-collapse>.table-responsive>.table caption,.panel-collapse>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel-collapse>.table:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child,.panel-collapse>.table:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,.panel-collapse>.panel-body+.table,.panel-collapse>.panel-body+.table-responsive,.panel-collapse>.table+.panel-body,.panel-collapse>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.panel-collapse>.table>tbody:first-child>tr:first-child th,.panel-collapse>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,.panel-collapse>.table-bordered,.panel-collapse>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.panel-collapse>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:1.42857;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.panel .panel-heading[data-toggle="collapse"]{cursor:pointer}#o_ajax_busy_backdrop{bottom:0;z-index:1020}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}.btn.btn-primary.o_disabled{color:#fff !important}body .progress-bar[aria-valuenow="1"],body .progress-bar[aria-valuenow="2"]{min-width:1px}td.text-left>div.form-inline>label.checkbox-inline>input[type='checkbox'],td.text-left>div.o_navbar-form>label.checkbox-inline>input[type='checkbox']{position:relative}@-moz-document url-prefix(){fieldset{display:table-cell}}@font-face{font-family:'openolat';src:url("../light/fonts/openolat/openolat.eot?4yacgg");src:url("../light/fonts/openolat/openolat.eot?#iefix4yacgg") format("embedded-opentype"),url("../light/fonts/openolat/openolat.woff?4yacgg") format("woff"),url("../light/fonts/openolat/openolat.ttf?4yacgg") format("truetype"),url("../light/fonts/openolat/openolat.svg?4yacgg#openolat") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../../font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../../font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.28571em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.o_icon-li.o_icon-lg{left:-1.85714em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.o_icon-pull-left{float:left}.o_icon-pull-right{float:right}.o_icon.o_icon-pull-left{margin-right:.3em}.o_icon.o_icon-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.o_icon-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .o_icon-rotate-90,:root .o_icon-rotate-180,:root .o_icon-rotate-270,:root .o_icon-flip-horizontal,:root .o_icon-flip-vertical{filter:none}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_accepted:before{content:"ï…¤"}.o_icon_accessibility:before{content:""}.o_icon_actions:before{content:"ï‚…"}.o_icon_add_html:before{content:"ï„¡"}.o_icon_archive_tool:before{content:""}.o_icon_assessment_mode:before{content:"ï„"}.o_icon_assessment_tool:before{content:"ï‚‘"}.o_icon_assignment:before{content:"";color:#d9534f}.o_icon_attempt_limit:before{content:""}.o_icon_accept:before{content:"";color:#5cb85c}.o_icon_add:before{content:"ï•"}.o_icon_add_member:before{content:""}.o_icon_add_search:before{content:""}.o_icon_audio:before{content:""}.o_icon_back:before{content:"ï“"}.o_icon_back_history:before{content:""}.o_icon_banned:before{content:"";color:#d9534f}.o_icon_bold:before{content:""}.o_icon_booking:before{content:"ïº"}.o_icon_bookmark:before{content:"";color:#bc2d0c}.o_icon_bookmark_add:before{content:"ï‚—"}.o_icon_bookmark_header:before{content:""}.o_icon_browse:before{content:""}.o_icon_brush:before{content:""}.o_icon_browsercheck:before{content:"ï…¤"}.o_icon_busy:before{content:"ï„"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_enabled:before{content:"ï†"}.o_icon_calendar_disabled:before{content:"ï‚–"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_sync:before{content:""}.o_icon_caret:before{content:""}.o_icon_caret_right:before{content:""}.o_icon_catalog:before{content:""}.o_icon_catalog_sub:before{content:"ï»"}.o_icon_certificate:before{content:"ï‚£"}.o_icon_chat:before{content:""}.o_icon_check:before{content:""}.o_icon_check_off:before{content:"ï‚–"}.o_icon_check_on:before{content:"ï†"}.o_icon_checkbox:before{content:"ï‚–"}.o_icon_checkbox_checked:before{content:"ï…Š"}.o_icon_circle:before{content:""}.o_icon_circle_color:before{content:"ï„‘"}.o_icon_citation:before{content:"ï„"}.o_icon_cleanup:before{content:""}.o_icon_clear_all:before{content:""}.o_icon_close:before{content:"ï€"}.o_icon_close_resource:before{content:""}.o_icon_close_tab:before{content:"ï€"}.o_icon_close_tool:before{content:"ï€"}.o_icon_close_tree:before{content:""}.o_icon_close_togglebox:before,.o_togglebox_wrapper .o_opener.o_in i:before{content:""}.o_icon_code:before{content:"ï„¡"}.o_icon_color_picker:before{content:"ïƒ"}.o_icon_copy:before{content:""}.o_icon_courseareas:before{content:""}.o_icon_coursedb:before{content:""}.o_icon_courseeditor:before{content:"ï„"}.o_icon_coursefolder:before{content:"ï„”"}.o_icon_courserun:before{content:""}.o_icon_comments:before{content:""}.o_icon_comments_none:before{content:""}.o_icon_compress:before{content:"ï¦"}.o_icon_content_popup:before{content:""}.o_icon_correct_answer:before{content:"";color:#5cb85c}.o_icon_correction:before{content:"ï€"}.o_icon_customize:before{content:""}.o_icon_delete_item:before{content:""}.o_icon_delete:before{content:"ï–";color:#A87E7E}.o_icon_deleted:before{content:""}.o_icon_details:before{content:""}.o_icon_description:before{content:"ïš"}.o_icon_dev:before{content:""}.o_icon_disabled:before{content:""}.o_icon_download:before{content:""}.o_icon_edit:before{content:"ï„"}.o_icon_edit_file:before{content:"ï„"}.o_icon_edit_metadata:before{content:""}.o_icon_element_after:before{content:"ï£"}.o_icon_element_before:before{content:"ï¢"}.o_icon_enabled:before{content:"ï„‘"}.o_icon_enlarge:before{content:""}.o_icon_eportfolio_add:before{content:"ï„®"}.o_icon_eportfolio_link:before{content:"ï„®"}.o_icon_eraser:before{content:"ï„"}.o_icon_error:before{content:"ïª";color:#d9534f}.o_icon_expand:before{content:"ï¥"}.o_icon_expenditure:before{content:""}.o_icon_export:before{content:"ï…"}.o_icon_external_link:before{content:""}.o_icon_failed:before{content:"ï—"}.o_icon_files:before{content:""}.o_icon_filter:before{content:"ï‚°"}.o_icon_graduate:before{content:"ï†"}.o_icon_group:before,.o_BusinessGroup_icon:before{content:""}.o_icon_header:before{content:""}.o_icon_help:before{content:"ï™";cursor:help}.o_icon_home:before{content:""}.o_icon_image:before{content:""}.o_icon_impress:before{content:"ïš"}.o_icon_important:before{content:"ï±";color:#f0ad4e}.o_icon_import:before{content:"ï‚“"}.o_icon_info:before{content:"ïš";color:#5bc0de}.o_icon_info_msg:before{content:"ïª";color:#d9534f}.o_icon_info_resource:before{content:"ïš"}.o_icon_inline_editable:before{content:"ï„"}.o_icon_institution:before{content:""}.o_icon_italic:before{content:""}.o_icon_landingpage:before{content:"ï…€"}.o_icon_language:before{content:""}.o_icon_layout:before{content:""}.o_icon_line:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_link_extern:before{content:""}.o_icon_list:before{content:""}.o_icon_list_num:before{content:""}.o_icon_lifecycle:before{content:""}.o_icon_lifecycle_date:before{content:"ï³"}.o_icon_locked:before{content:""}.o_icon_login:before{content:"ï‚"}.o_icon_logout:before{content:"ï‚‹"}.o_icon_mandatory:before{content:"ï©";color:#f0ad4e}.o_icon_managed:before{content:"ï¹";color:#777}.o_icon_manual:before{content:"ï€";cursor:help}.o_icon_mail:before{content:""}.o_icon_math:before{content:"\03a3"}.o_icon_media:before{content:""}.o_icon_mediacenter:before{content:"ï¼"}.o_icon_membersmanagement:before{content:""}.o_icon_menuhandel:before{content:""}.o_icon_message:before{content:"ïƒ "}.o_icon_mobile:before{content:"ï„‹"}.o_icon_move:before{content:"ï‡"}.o_icon_move_down:before{content:""}.o_icon_move_left:before{content:"ï„€"}.o_icon_move_right:before{content:"ï„"}.o_icon_move_up:before{content:"ï„‚"}.o_icon_new:before{content:"ï©";color:#5cb85c}.o_icon_new_document:before{content:"ï…œ"}.o_icon_new_folder:before{content:"ï»"}.o_icon_new_portfolio:before{content:"ï€"}.o_icon_news:before{content:"ïš"}.o_icon_next:before{content:""}.o_icon_next_step:before{content:"ï„"}.o_icon_next_page:before{content:"ï„"}.o_icon_next_toolbar:before{content:""}.o_icon_node_after:before{content:"ï…µ"}.o_icon_node_before:before{content:"ï…¶"}.o_icon_node_under:before{content:"ï„’"}.o_icon_notes:before{content:""}.o_icon_notification:before{content:""}.o_icon_ok:before{content:"";color:#5cb85c}.o_icon_open_tree:before{content:""}.o_icon_open_togglebox:before,.o_togglebox_wrapper .o_opener i:before{content:""}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\E600";font-family:openolat;font-size:10px}.o_icon_options:before{content:""}.o_icon_others:before{content:""}.o_icon_pageing:before{content:"ï…"}.o_icon_paragraph:before{content:"ï‡"}.o_icon_passed:before{content:"ï˜"}.o_icon_password:before{content:""}.o_icon_pending:before{content:"ï„"}.o_icon_phone:before{content:"ï‚•"}.o_icon_post:before{content:""}.o_icon_preview:before{content:"ï®"}.o_icon_previous:before{content:"ï„·"}.o_icon_previous_page:before{content:"ï„€"}.o_icon_previous_step:before{content:"ï„€"}.o_icon_previous_toolbar:before{content:""}.o_icon_print:before{content:""}.o_icon_private:before{content:""}.o_icon_provider_adfs:before{content:"ï…º"}.o_icon_provider_facebook:before{content:""}.o_icon_provider_google:before{content:""}.o_icon_provider_guest:before{content:""}.o_icon_provider_ldap:before{content:""}.o_icon_provider_linkedin:before{content:""}.o_icon_provider_oauth:before{content:""}.o_icon_provider_openid:before{content:""}.o_icon_provider_performx:before{content:""}.o_icon_provider_shibboleth:before{content:""}.o_icon_provider_twitter:before{content:"ï‚™"}.o_icon_publish:before{content:"ï¤"}.o_icon_qrcode:before{content:""}.o_icon_quickview:before{content:"ï®"}.o_icon_radio_off:before{content:""}.o_icon_radio_on:before{content:"ï"}.o_icon_rating_on:before,.o_rating .o_rating_items.o_enabled .o_icon:hover:before{content:""}.o_icon_rating_off:before{content:""}.o_icon_read:before{content:""}.o_icon_readonly:before{content:"ï„";color:red}.o_icon_readwrite:before{content:"ï„"}.o_icon_recycle:before{content:""}.o_icon_rectangle:before{content:"ï‚–"}.o_icon_redo:before{content:""}.o_icon_refresh:before{content:""}.o_icon_reject:before{content:"ï€";color:#d9534f}.o_icon_rejected:before{content:"ï…¥"}.o_icon_reminder:before{content:""}.o_icon_remove:before{content:"ï€"}.o_icon_remove_filters:before{content:"ï—"}.o_icon_replace:before{content:""}.o_icon_reply:before{content:"ï„’"}.o_icon_reply_with_quote:before{content:"ï„¢"}.o_icon_response_feedback:before{content:""}.o_icon_restore:before{content:"ï…¤"}.o_icon_results_visible:before{content:"ï®"}.o_icon_results_hidden:before{content:"ï°"}.o_icon_review:before{content:"ï®"}.o_icon_reviewer:before{content:""}.o_icon_rss:before{content:""}.o_icon_rss_unsubscribe:before{content:"";color:#996633}.o_icon_rubric:before{content:""}.o_icon_save:before{content:""}.o_icon_search:before{content:""}.o_icon_select:before{content:""}.o_icon_send:before{content:"ïƒ "}.o_icon_settings:before{content:"ï‚…"}.o_icon_share:before{content:"ï¤"}.o_icon_show_more:before{content:"ï…"}.o_icon_show_less:before{content:"ï…‘"}.o_icon_show_send:before{content:""}.o_icon_sign_out:before{content:"ï‚‹"}.o_icon_slide_down:before{content:"ï¸"}.o_icon_slide_up:before{content:"ï·"}.o_icon_spacer:before{content:"ï¾"}.o_icon_split:before{content:"ï„§"}.o_icon_sort:before{content:""}.o_icon_sort_asc:before{content:""}.o_icon_sort_desc:before{content:"ïƒ"}.o_icon_sort_amount_asc:before{content:"ï… "}.o_icon_sort_amount_desc:before{content:"ï…¡"}.o_icon_sort_menu:before{content:"ï… "}.o_icon_start:before{content:"ï”"}.o_icon_status_available:before{content:"ï„‘";color:#063}.o_icon_status_chat:before{content:"ïµ"}.o_icon_status_dnd:before{content:"";color:#cc3}.o_icon_status_unavailable:before{content:"ïœ";color:#963}.o_icon_status_not_started:before{content:""}.o_icon_status_in_progress:before{content:"ï‹"}.o_icon_status_in_review:before{content:""}.o_icon_status_done:before{content:"ï˜"}.o_icon_statistics_tool:before{content:"ï‚€"}.o_icon_submit:before{content:""}.o_icon_table:before{content:""}.o_icon_table_custom:before{content:""}.o_icon_table_large:before{content:""}.o_icon_tags:before{content:""}.o_icon_textinput:before{content:""}.o_icon_timelimit:before{content:""}.o_icon_timelimit_start:before{content:""}.o_icon_timelimit_half:before{content:""}.o_icon_timelimit_end:before{content:""}.o_icon_toggle:before{content:"ï„‘"}.o_icon_toggle_on:before{content:""}.o_icon_toggle_off:before{content:""}.o_icon_to_read:before{content:"ï„‘"}.o_icon_tool:before{content:""}.o_icon_tools:before{content:"ï‚"}.o_icon_top:before{content:"ï·"}.o_icon_translation_item:before{content:""}.o_icon_translation_package:before{content:"ï„•"}.o_icon_undo:before{content:""}.o_icon_user:before{content:""}.o_icon_user_vip:before{content:"ï†"}.o_icon_user_anonymous:before{content:""}.o_icon_upload:before{content:"ï‚“"}.o_icon_version:before{content:""}.o_icon_video:before{content:""}.o_icon_visitingcard.o_icon_waiting:before{content:""}.o_icon_warn:before{content:"ï±";color:#f0ad4e}.o_icon_wizard:before{content:"ïƒ"}.o_icon_xing:before{content:"ï…¨";color:#cfdc00}.o_BinderTemplate_icon:before{content:""}.o_CourseModule_icon:before,.o_course_icon:before{content:""}.o_EPStructuredMapTemplate_icon:before{content:"ï„®"}.o_FileResource-BLOG_icon:before{content:"ï‚¡"}.o_FileResource-IMSCP_icon:before{content:""}.o_FileResource-FORM_icon:before{content:""}.o_FileResource-PODCAST_icon:before{content:""}.o_FileResource-SHAREDFOLDER:before{content:""}.o_FileResource-SCORMCP_icon:before{content:""}.o_FileResource-SURVEY_icon:before{content:""}.o_FileResource-TEST_icon:before{content:"ï„"}.o_FileResource-IMSQTI21_icon:before{content:"ï…‹"}.o_FileResource-WIKI_icon:before{content:""}.o_FileResource-SHAREDFOLDER_icon:before{content:"ï„•"}.o_FileResource-GLOSSARY_icon:before{content:"ï†"}.o_FileResource-PDF_icon:before{content:"ï‡"}.o_FileResource-XLS_icon:before{content:""}.o_FileResource-PPT_icon:before{content:""}.o_FileResource-DOC_icon:before{content:""}.o_FileResource-ANIM_icon:before{content:""}.o_FileResource-IMAGE_icon:before{content:""}.o_FileResource-SOUND_icon:before{content:""}.o_FileResource-MOVIE_icon:before{content:""}.o_FileResource-FILE_icon:before{content:""}.o_FileResource-VIDEO_icon:before{content:""}.o_CourseModule_icon_closed:before{content:"ïž"}.o_sp_icon:before{content:""}.o_st_icon:before{content:""}.o_tu_icon:before{content:""}.o_bc_icon:before{content:"ï„•"}.o_lti_icon:before{content:""}.o_cp_icon:before{content:""}.o_cp_item:before{content:""}.o_scorm_icon:before{content:""}.o_en_icon:before{content:"ï‚"}.o_fo_icon:before{content:""}.o_co_icon:before{content:""}.o_infomsg_icon:before{content:"ïš"}.o_cal_icon:before{content:"ï³"}.o_wiki_icon:before{content:""}.o_podcast_icon:before{content:""}.o_pf_icon:before{content:""}.o_blog_icon:before{content:"ï‚¡"}.o_ep_icon:before{content:""}.o_ep_icon_v1:before{content:"ï„®"}.o_iqtest_icon:before{content:"ï„"}.o_iqself_icon:before{content:"ï„"}.o_iqsurv_icon:before{content:""}.o_qtiassessment_icon:before{content:"ï…‹"}.o_ta_icon:before{content:"ï‚®"}.o_gta_icon:before{content:"ï‚®"}.o_ms_icon:before{content:""}.o_dialog_icon:before{content:""}.o_projectbroker_icon:before{content:""}.o_ll_icon:before{content:"ïƒ"}.o_den_icon:before{content:""}.o_cmembers_icon:before{content:""}.o_cl_icon:before{content:"ï†"}.o_vc_icon:before{content:""}.o_video_icon:before{content:""}.o_vitero_icon:before{content:""}.o_openmeetings_icon:before{content:""}.o_gotomeeting_icon:before{content:""}.o_portlet_infomsg_icon:before{content:"ïš"}.o_portlet_quickstart_icon:before{content:""}.o_portlet_bookmark_icon:before{content:""}.o_portlet_groups_icon:before{content:""}.o_portlet_notes_icon:before{content:""}.o_portlet_noti_icon:before{content:""}.o_portlet_eff_icon:before{content:"ï‚£"}.o_portlet_repository_student_icon:before{content:""}.o_portlet_repository_teacher_icon:before{content:"ï†"}.o_portlet_iframe_icon:before{content:""}.o_portlet_sysinfo_icon:before{content:""}.o_portlet_dyk_icon:before{content:""}.o_portlet_infomessages_icon:before{content:""}.o_portlet_cal_icon:before{content:"ï³"}.o_portlet_institutions_icon:before{content:""}.o_portlet_links_icon:before{content:"ïƒ"}.o_portlet_shibboleth_icon:before{content:"ï‚"}.o_icon_qpool:before{content:""}.o_icon_pool_private:before{content:"ï‚–"}.o_icon_pool_public:before{content:"ï†"}.o_icon_pool_my_items:before{content:""}.o_icon_pool_favorits:before{content:""}.o_icon_pool_collection:before{content:""}.o_icon_pool_pool:before{content:""}.o_icon_pool_share:before{content:""}.o_forum_message_icon:before{content:""}.o_calendar_icon:before{content:"ï³"}.o_icon_pf_section_draft:before{content:"ï°";color:#f0ad4e}.o_icon_pf_section_progress:before{content:"";color:#f0ad4e}.o_icon_pf_section_submitted:before{content:"";color:#337ab7}.o_icon_pf_section_closed:before{content:"";color:#5cb85c}.o_icon_pf_binder:before{content:""}.o_icon_pf_entry:before{content:"ï…›"}.o_icon_pf_entry_draft:before{content:"ï„‘";color:#f0ad4e}.o_icon_pf_entry_published:before{content:"ï„‘";color:#337ab7}.o_icon_pf_entry_revision:before{content:"ï„‘";color:#d9534f}.o_icon_pf_entry_closed:before{content:"ï„‘";color:#5cb85c}.o_icon_pf_entry_deleted:before{content:"";color:#000}.o_icon_pf_history:before{content:""}.o_icon_pf_my_shares:before{content:"ï‡ "}.o_icon_pf_quick_links:before{content:"ï¤"}.o_icon_pf_page:before{content:""}.o_icon_pf_section:before{content:""}.o_icon_pf_shared_with_me:before{content:""}.o_forum_status_thread_icon:before{content:""}.o_forum_status_sticky_closed_icon:before{content:"ïž"}.o_forum_status_sticky_icon:before{content:""}.o_forum_status_closed_icon:before{content:"ïž";color:#a94442}.o_forum_status_opened_icon:before{content:"ïž";color:#3c763d}.o_forum_status_hidden_icon:before{content:"ï°";color:#a94442}.o_forum_status_visible_icon:before{content:"ï®";color:#3c763d}.o_forum_all_icon:before{content:""}.o_forum_all_flat_icon:before{content:""}.o_forum_one_icon:before{content:"ï®"}.o_forum_marked_icon:before{content:""}.o_forum_new_icon:before{content:"ï©"}.o_mi_qpool_import:before{content:""}.o_mi_qtidrawing:before{content:""}.o_mi_qtisection:before{content:""}.o_mi_qtisc:before{content:""}.o_mi_qtimatch:before{content:""}.o_mi_qtimc:before{content:"ï†"}.o_mi_qtikprim:before{content:"ï…Š"}.o_mi_qtifib:before{content:"ï…"}.o_mi_qtinumerical:before{content:""}.o_mi_qtihotspot:before{content:""}.o_mi_qtihottext:before{content:"ï"}.o_mi_qtiessay:before{content:""}.o_mi_qtiunkown:before{content:""}.o_mi_qtiupload:before{content:"ï‚“"}.o_as_mode_leadtime:before{content:""}.o_as_mode_assessment:before{content:"ï‹"}.o_as_mode_followup:before{content:"ïž"}.o_as_mode_closed:before{content:'-'}.o_icon_qti_notPresented:before{content:"";color:#ddd}.o_icon_qti_notAnswered:before{content:"ï…„";color:#f0ad4e}.o_icon_qti_answered:before{content:"ï˜";color:#5cb85c}.o_icon_qti_ended:before{content:"ïž";color:#5bc0de}.o_icon_qti_invalid:before{content:"ïª";color:#d9534f}.o_icon_qti_review:before{content:"ï®";color:#5bc0de}.o_icon_qti_reviewNotSeen:before,.o_icon_qti_reviewNotAnswered:before,.o_icon_qti_reviewInvalid:before{content:"ï°";color:#5bc0de}.o_icon_qti_end_testpart:before{content:""}.o_icon_qti_close_test:before{content:"ï‹“"}.o_icon_qti_cancel:before{content:"ï"}.o_icon_qti_suspend:before{content:"ïŒ"}.o_icon_qti_close_results:before{content:"ï‹“"}.o_icon_qti_hint:before{content:"ï™"}.o_black_led:before{content:"ï„‘";color:#337ab7}.o_green_led:before{content:"ï„‘";color:#5cb85c}.o_yellow_led:before{content:"ï„‘";color:#f0ad4e}.o_red_led:before{content:"ï„‘";color:#d9534f}.o_ac_token_icon:before{content:"ï‚„"}.o_ac_free_icon:before{content:"ï«"}.o_ac_group_icon:before{content:""}.o_ac_membersonly_icon:before{content:""}.o_ac_paypal_icon:before{content:""}.o_ac_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_status_success_icon:before{content:"";color:#5cb85c}.o_ac_status_waiting_icon:before{content:"";color:#337ab7}.o_ac_order_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_order_status_prepayment_icon:before{content:"";color:#5bc0de}.o_ac_order_status_payed_icon:before{content:"";color:#5cb85c}.o_ac_order_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_order_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_order_status_warning_icon:before{content:"";color:#f0ad4e}.o_scorm_org:before{content:""}.o_scorm_item:before{content:""}.o_scorm_completed:before,.o_scorm_passed:before{content:"ï˜"}.o_scorm_failed:before{content:"ï±"}.o_scorm_incomplete:before{content:"ï±"}.o_scorm_not_attempted:before{background:none}.o_midpub:before{content:"ï˜"}.o_midwarn:before{content:"ï±"}.o_midlock:before{content:""}.o_miderr:before{content:"ïª"}.o_middel:before{content:"ï„"}.o_filetype_file:before,.o_filetype_ico:before{content:""}.o_filetype_folder:before{content:"ï„”"}.o_filetype_folder_open:before{content:"ï„•"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:""}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:""}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:""}.o_filetype_xls:before,.o_filetype_xlsx:before{content:""}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:""}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:""}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:""}.o_filetype_ps:before,.o_filetype_pdf:before{content:"ï‡"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:""}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:""}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:""}.o_icon_share_social:before{content:"ï…"}.o_icon_apple:before{content:"ï…¹"}.o_icon_facebook:before{content:"ï‚‚"}.o_icon_twitter:before{content:"ï‚"}.o_icon_google:before{content:""}.o_icon_delicious:before{content:""}.o_icon_digg:before{content:""}.o_icon_mailto:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_yahoo:before{content:""}a.o_icon:hover,a.o_icon:focus{text-decoration:none}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}.o_block_bottom,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_pf_content .o_cit,.o_pf_content .o_file,.o_pf_content .o_forum,.o_pf_content .o_image,.o_pf_content .o_video,.o_header_with_buttons,.o_search_result{margin-bottom:1em}.o_block_top,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_pf_content .o_cit,.o_pf_content .o_file,.o_pf_content .o_forum,.o_pf_content .o_image,.o_pf_content .o_video{margin-top:1em}.o_block_large_bottom,.o_block_large,.o_block_with_datecomp,.o_login .o_login_footer_wrapper,.o_portlet{margin-bottom:2em}.o_block_large_top,.o_block_large,.o_block_with_datecomp,.o_login .o_login_footer_wrapper,.o_portlet{margin-top:2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_block_imagebg h2,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg .o_cal .fc-header-title h2:after,.o_cal .fc-header-title .o_block_imagebg h2:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_header_with_buttons h2,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group,.o_header_with_buttons .o_cal .fc-header-title h2+.o_button_group,.o_cal .fc-header-title .o_header_with_buttons h2+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.66667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#78acd9;border-radius:10px}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body .o_cal .fc-header-title h2:nth-child(1),.o_cal .fc-header-title .panel-placeholder .panel-body h2:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-top:none;border-left:none;border-right:none;color:#337ab7;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:12px}.o_small,.b_small,p.b_small,div.b_small,.o_comments .o_comment_wrapper h5,.o_comments .o_comment_wrapper .o_comment,.o_bc_meta,.tooltip,.o_htmleditor .o_metadata .o_lastmodified,.o_noti,.o_block_with_datecomp .o_meta,.o_togglebox_wrapper div.o_togglebox_content .o_hide,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label,.o_course_run .o_toc .o_entry{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:18px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,#o_main_wrapper #o_toplink:hover,#o_footer_powered a:hover,#o_share a:hover,#o_share_social_container a:hover,.o_toolbar .o_tools_container a:hover,.o_button_toggle:hover,.o_im_message_group .o_im_from:hover,.o_noti .o_label:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover,.o_catalog .o_level .o_meta .o_title a:hover,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover,.o_repo_details .o_social .o_comments:hover,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover,.o_login .o_login_register:hover,.o_disabled:focus,.b_disabled:focus,#o_main_wrapper #o_toplink:focus,#o_footer_powered a:focus,#o_share a:focus,#o_share_social_container a:focus,.o_toolbar .o_tools_container a:focus,.o_button_toggle:focus,.o_im_message_group .o_im_from:focus,.o_noti .o_label:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:focus,.o_catalog .o_level .o_meta .o_title a:focus,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:focus,.o_repo_details .o_social .o_comments:focus,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:focus,.o_login .o_login_register:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}h1{color:#337ab7}h2{color:#337ab7}h3{color:#337ab7}h4,.o_cal .fc-header-title h2{color:#337ab7}h5{color:#337ab7}h5{color:#337ab7}fieldset legend{color:#333}.o_user_content_block a{color:#337ab7;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#23527c;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:1px 5px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:1px 5px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:1px 5px;border:0;font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:1px 5px;background:#eee;border:1px solid #fff}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:1px 5px;background:#d9edf7;border:1px solid #fff}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:1px 5px;background:#dff0d8;border:1px solid #fff}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:1px 5px;background:#fcf8e3;border:1px solid #fff}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:1px 5px;background:#f2dede;border:1px solid #fff}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#337ab7}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_mailto{color:#337ab7}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#337ab7}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0;font-size:85%;font-family:inherit}span.olatFlashMovieViewer{max-width:100% !important;border:none !important}.mejs-container,.mejs-mediaelement video,.mejs-layers div,.me-cannotplay{max-width:100%}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}html{position:relative;min-height:100%}body{min-height:100%;margin-bottom:80px}#o_main_wrapper{background:#fff;z-index:3}#o_main_wrapper #o_main_container{background:#fff}#o_main_wrapper #o_main_container #o_main_left{float:left;z-index:2;position:relative;background:#fff}#o_main_wrapper #o_main_container #o_main_left #o_main_left_content{padding:0 0 0 15px}#o_main_wrapper #o_main_container #o_main_left #o_main_left_toggle{position:absolute;display:none;right:0;top:70px;margin-right:-30px;font-size:25px;line-height:35px;text-align:center;width:30px;height:35px;z-index:3;border:1px solid #ddd;border-left:none;border-bottom-right-radius:4px;border-top-right-radius:4px;background-color:#fbfbfb;-webkit-box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);color:#337ab7}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas{background:#fbfbfb;-webkit-box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);min-width:250px}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas #o_main_left_content{padding:0 0 0 0}#o_main_wrapper #o_main_container #o_main_right{float:right;z-index:2;position:relative;background:inherit}#o_main_wrapper #o_main_container #o_main_right #o_main_right_content{padding:0 15px 0 0}#o_main_wrapper #o_main_container #o_main_center{position:relative;z-index:1;background:inherit}#o_main_wrapper #o_main_container #o_main_center h2:first-child{margin-top:0}@media screen and (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center{margin-left:0 !important}}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:0 15px}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content #o_main_center_content_inner{padding-bottom:15px}#o_main_wrapper #o_toplink{position:absolute;bottom:0;right:15px;text-align:center;z-index:3}@media (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:15px}}#o_back_wrapper,#o_preview_wrapper{margin-top:10px}#o_back_wrapper.o_toolbar .o_breadcrumb .breadcrumb,#o_preview_wrapper.o_toolbar .o_breadcrumb .breadcrumb{font-size:14px}body.o_message #o_main_center_content_inner{min-height:150px;max-width:500px;padding:15px;margin:60px auto}#o_footer_wrapper{position:absolute;bottom:0;width:100%;height:70px;overflow:hidden;background-color:#f5f5f5;color:#999;line-height:16px;font-size:12px}#o_footer_wrapper a{color:#999}#o_footer_wrapper a:hover{color:#000}#o_footer_container{position:relative;padding-top:10px;min-height:70px;background:#f5f5f5;z-index:1}#o_footer_user{position:absolute;left:15px;top:10px;z-index:1}#o_footer_user #o_counter{white-space:nowrap}#o_footer_user #o_username{white-space:nowrap;margin-right:1em}#o_footer_version{position:absolute;right:15px;top:10px;text-align:right;z-index:1}@media (max-width: 767px){#o_footer_version{padding-top:10px;text-align:left}}#o_footer_powered{position:absolute;top:30px;right:15px;z-index:1}#o_footer_powered img{opacity:.6;filter:alpha(opacity=60)}#o_footer_powered img:hover{opacity:1;filter:alpha(opacity=100)}#o_footer_impressum{position:absolute;top:10px;width:100%;text-align:center;z-index:-1}#o_footer_impressum i{display:none}#o_footer_textline{position:absolute;top:30px;width:100%;text-align:center;z-index:-1}#o_share{margin-top:10px}#o_share a{opacity:.6;filter:alpha(opacity=60)}#o_share a:hover{opacity:1;filter:alpha(opacity=100)}#o_share a,#o_share_social_container a{color:#999;margin:0 0.25em 0 0}#o_share a:hover,#o_share_social_container a:hover{color:#000}@media (max-width: 767px){#o_counter,#o_footer_version,#o_share{display:none}#o_footer_impressum{top:30px;text-align:left}#o_footer_textline{top:50px;text-align:left}#o_footer_powered{top:10px}#o_footer_powered a:after{content:"\221E";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;font-size:14px}#o_footer_powered img{display:none}}#o_navbar_wrapper{z-index:4;border-top:1px solid #e7e7e7;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}#o_navbar_wrapper #o_navbar_container{position:relative}a.o_disabled.navbar-text{margin:0}.o_navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid #e7e7e7;background-color:#f8f8f8}.o_navbar:before,.o_navbar:after{content:" ";display:table}.o_navbar:after{clear:both}.o_navbar .o_navbar_tabs li{max-width:150px}.o_navbar .o_navbar_tabs li a{padding-right:30px}.o_navbar .o_navbar_tabs li a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_navbar .o_navbar_tabs .o_icon-fw{position:absolute;top:15px;left:0.5em;padding-top:3px;width:1em;height:1em;display:none}.o_navbar .o_navbar_tabs .o_navbar_tab_close{position:absolute;top:15px;right:0.5em;padding:0;width:1em;height:1em}.o_navbar .o_navbar_tabs .o_navbar_tab_close i:before{color:#d9534f}.o_navbar .o_navbar_tabs .o_navbar_tab_close:hover i:before{color:#c9302c}.o_navbar .o_custom_navbar-brand{background-position:5px 0;background-repeat:no-repeat;height:50px;width:120px}.o_navbar #o_navbar_langchooser{color:#777;padding:7px 15px}.o_navbar #o_navbar_langchooser form span+div{display:inline}.o_navbar #o_navbar_tools_permanent #o_navbar_print a,.o_navbar #o_navbar_tools_permanent #o_navbar_impress a,.o_navbar #o_navbar_tools_permanent #o_navbar_help a{color:#777;padding-right:0}.o_navbar #o_navbar_tools_permanent #o_navbar_login a{color:#f0ad4e}.o_navbar .o_navbar_tools>#o_navbar_tools_permanent>li>a>span{display:none}@media (min-width: 768px){.o_navbar .o_navbar_tools li.o_portrait>a>span{display:inline}}.o_navbar #o_navbar_tools_personal .o_navbar_tool a,.o_navbar #o_navbar_tools_permanent .o_navbar_tool a{padding-right:5px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu a{padding-left:45px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .dropdown-menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .dropdown-menu a{padding-left:15px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .o_portrait,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .o_portrait{position:absolute;left:7px;top:10px}.o_navbar #o_navbar_tools_personal .o_logout,.o_navbar #o_navbar_tools_permanent .o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar_tab_close{top:10px;right:10px}.o_navbar.o_navbar-offcanvas .o_navbar-right a{padding:3px 20px;color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-right a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a:focus{color:#fff;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:focus{color:#c9302c}.o_navbar.o_navbar-offcanvas .o_navbar-right a .o_icon-lg{font-size:1.0em;vertical-align:baseline}.o_navbar.o_navbar-offcanvas .o_navbar-right .divider{height:1px;margin:9px 0;overflow:hidden;background-color:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-header{padding-left:15px}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-toggle{display:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu{box-shadow:none;position:relative;top:0;left:0;display:block;float:none;background-color:#222;color:#9d9d9d;font-size:14px;border:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu .divider{background:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a{color:#9d9d9d;text-shadow:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav a:focus{background-color:transparent;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:focus{background-color:#090909;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link{color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link:hover{color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a{color:#777}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}#o_navbar_impress a span,#o_navbar_search_opener a span{display:none}body.o_dmz #o_navbar_print a span,body.o_dmz #o_navbar_impress a span,body.o_dmz #o_navbar_help a span,body.o_dmz #o_navbar_search_opener a span{display:inline}.o_navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;-webkit-overflow-scrolling:touch}.o_navbar-collapse:before,.o_navbar-collapse:after{content:" ";display:table}.o_navbar-collapse:after{clear:both}.o_navbar-collapse.o_collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.o_navbar-offcanvas .o_navbar-collapse{width:auto;box-shadow:none;margin-top:10px;margin-right:-15px;margin-left:-15px}.o_navbar-brand{float:left;font-size:18px;line-height:20px;height:50px;color:#777}.o_navbar-brand:hover,.o_navbar-brand:focus{text-decoration:none;color:#5e5e5e;background-color:transparent}.o_navbar-toggle{position:relative;margin-right:15px;margin-left:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;border:1px solid #ddd;border-radius:4px;background-color:transparent;background-image:none}.o_navbar-toggle:hover,.o_navbar-toggle:focus{outline:none;background-color:#ddd}.o_navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;background-color:#888}.o_navbar-toggle .icon-bar+.icon-bar{margin-top:4px}#o_navbar_left-toggle{float:left}#o_navbar_right-toggle{float:right}.o_navbar-link{color:#777}.o_navbar-link:hover{color:#333}.o_navbar-nav{margin:7.5px -15px}.o_navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px;color:#777}.o_navbar-nav>li>a:hover,.o_navbar-nav>li>a:focus{color:#333;background-color:transparent}.o_navbar-nav>.active>a,.o_navbar-nav>.active>a:hover,.o_navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar-nav>.disabled>a,.o_navbar-nav>.disabled>a:hover,.o_navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.o_navbar-nav>.open>a,.o_navbar-nav>.open>a:hover,.o_navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}.o_collapse .o_navbar-nav{float:left;margin:0}.o_collapse .o_navbar-nav>li{float:left}.o_collapse .o_navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.o_collapse .o_navbar-nav.o_navbar-right:last-child{margin-right:-15px}.o_collapse.o_navbar-collapse .o_navbar-left{float:left !important}.o_collapse.o_navbar-collapse .o_navbar-right{float:right !important}.o_navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (max-width: 767px){.o_navbar-form .form-group{margin-bottom:5px}}.o_collapse .o_navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.o_collapse .o_navbar-form.o_navbar-right:last-child{margin-right:-15px}.o_navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.o_navbar-fixed-bottom .o_navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.o_navbar-btn{margin-top:8px;margin-bottom:8px}.o_navbar-btn.btn-sm,.btn-group-sm>.o_navbar-btn.btn{margin-top:10px;margin-bottom:10px}.o_navbar-btn.btn-xs,.btn-group-xs>.o_navbar-btn.btn{margin-top:14px;margin-bottom:14px}.o_navbar-text{margin-top:15px;margin-bottom:15px;color:#777}.o_collapse .o_navbar-text{float:left;margin-left:15px;margin-right:15px}.o_collapse .o_navbar-text.o_navbar-right:last-child{margin-right:0}.o_dropdown_tab{position:relative}.o_dropdown_tab>a:first-child{padding-right:30px}.o_dropdown_tab>a:first-child .o_icon-fw{display:none;position:absolute;top:0;left:10px;padding-top:3px;line-height:20px}.o_dropdown_tab>a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_dropdown_tab .o_navbar_tab_close{position:absolute;top:0px;right:10px;padding-left:0px;padding-right:0px;color:#d9534f;background-color:inherit}.o_dropdown_tab .o_navbar_tab_close:focus,.o_dropdown_tab .o_navbar_tab_close:hover{color:#c9302c;background-color:inherit}#o_navbar_more .dropdown-menu .divider:last-child{display:none}@media (min-width: 768px){#o_navbar_more .dropdown-menu{max-width:300px}}@media (max-width: 767px){#o_navbar_more>li{position:inherit}#o_navbar_more .dropdown-menu{left:0px;right:0px}#o_navbar_more .dropdown-menu a,#o_navbar_more .dropdown-menu i{line-height:30px}#o_navbar_more .dropdown-menu .o_navbar_tab_close{line-height:inherit}}.o_body_popup #o_topnav_printview{display:inline-block}.o_body_popup #o_topnav_close{float:right}.o_body_popup #o_topnav_close span{display:block}.o_body_popup #o_navbar_tools_permanent li>a{background-color:transparent}.o_toolbar{position:relative;margin-bottom:20px;margin-top:-10px;border:1px solid #e7e7e7}.o_toolbar:before,.o_toolbar:after{content:" ";display:table}.o_toolbar:after{clear:both}@media (min-width: 768px){.o_toolbar{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}}.o_toolbar .o_breadcrumb:before,.o_toolbar .o_breadcrumb:after{content:" ";display:table}.o_toolbar .o_breadcrumb:after{clear:both}.o_toolbar .o_breadcrumb .breadcrumb{margin-bottom:0;padding:5px 9px;font-size:11px;line-height:15px;border-radius:0;background:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a span{display:none}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close:before{content:none}.o_toolbar .o_tools_container{text-align:center;min-height:37px;position:relative;background-color:#f8f8f8;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:1px solid #e7e7e7}.o_toolbar .o_tools_container:before,.o_toolbar .o_tools_container:after{content:" ";display:table}.o_toolbar .o_tools_container:after{clear:both}@media (max-width: 991px){.o_toolbar .o_tools_container{min-height:35px}}@media (max-width: 767px){.o_toolbar .o_tools_container{min-height:22px;text-align:left}}.o_toolbar .o_tools_container span.o_tool_text{color:#777;display:inline-block}.o_toolbar .o_tools_container a{color:#777;display:inline-block}.o_toolbar .o_tools_container a:hover{color:#333}.o_toolbar .o_tools_container a.o_disabled{color:#aaa !important}.o_toolbar .o_tools_container a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tools_container a.active{color:#337ab7;background-color:transparent}.o_toolbar .o_tools_container a.btn-primary{color:#fff}.o_toolbar .o_tools_container .dropdown-menu a{display:block}.o_toolbar .o_tools_container .dropdown-menu a.active{color:#337ab7;background-color:transparent}.o_toolbar .o_tools{margin-top:8px;margin-bottom:5px}.o_toolbar .o_tool,.o_toolbar .o_text{position:relative;margin:0 10px}.o_toolbar .o_tool:first-child,.o_toolbar .o_text:first-child{margin-left:0}.o_toolbar .o_tool:last-child,.o_toolbar .o_text:last-child{margin-right:0}.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:18px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:block;font-size:12px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{position:absolute;right:50%;top:-18px;margin-right:-12px;font-size:13px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:16px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{font-size:11px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{top:-16.5px;margin-right:-11px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:20px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:none}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{display:block;position:relative;top:0;left:0;margin-right:0}}.o_toolbar .o_tool .o_chelp,.o_toolbar .o_text .o_chelp{position:relative;top:-1em;vertical-align:top;color:#fff}.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{padding:0;margin-top:5px;border:1px solid #ccc;background-color:#eee}.o_toolbar .o_tool_next a,.o_toolbar .o_tool_previous a{color:#777}.o_toolbar .o_tool_next a:hover,.o_toolbar .o_tool_previous a:hover{color:#333}.o_toolbar .o_tool_next a.o_disabled,.o_toolbar .o_tool_previous a.o_disabled{color:#aaa !important}.o_toolbar .o_tool_next a.o_disabled:hover,.o_toolbar .o_tool_previous a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:21px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:4px}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:18px}}@media (max-width: 767px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:0}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:20px}}.o_toolbar .o_tool_previous{margin-left:10px;border-bottom-left-radius:4px;border-top-left-radius:4px;border-right:0}.o_toolbar .o_tool_next{border-bottom-right-radius:4px;border-top-right-radius:4px}.o_toolbar .o_tool_dropdown{margin:0 10px}.o_toolbar .o_tool_dropdown:first-child{margin-left:0}.o_toolbar .o_tool_dropdown:last-child{margin-right:0}.o_toolbar .o_tool_dropdown a.dropdown-toggle{position:relative}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:18px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span{display:block;font-size:12px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{position:absolute;right:50%;top:4px;margin-right:-20px;font-size:14px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:16px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span,.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{font-size:11px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{top:4px;margin-right:-18px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown a.dropdown-toggle{padding:0 10px 0 5px}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:20px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span{display:none}}.o_toolbar .o_tool_dropdown .dropdown-menu{text-align:left}.o_toolbar .o_tools_left{float:left}.o_toolbar .o_tools_right{float:right}.o_toolbar .o_tools_right_edge{float:right}.o_toolbar .o_tools_center{float:both;width:50%;margin-left:auto;margin-right:auto}.o_toolbar .o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}@media (max-width: 991px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tool span{max-width:10em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_toolbar .o_tools_segments .o_tool span{display:block}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 5px}}@media (max-width: 767px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools .o_chelp{top:0;vertical-align:top}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_center{float:left}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 0;position:static}.o_toolbar .o_tool_dropdown .dropdown-menu{left:0px;right:0px}.o_toolbar .o_tool_dropdown .dropdown-menu a,.o_toolbar .o_tool_dropdown .dropdown-menu i{line-height:30px}.o_toolbar .o_tool_dropdown .dropdown-menu .o_navbar_tab_close{line-height:inherit}}#o_main_container .o_toolbar_message{display:table;margin:0 auto 20px auto}#o_main_container .o_toolbar_message.o_warning{padding-top:5px;padding-bottom:5px;border:1px solid #8a6d3b;border-radius:3px}.o_edit_mode .o_toolbar .o_tools_container{background:repeating-linear-gradient(300deg, #fff0d9, #fff0d9 10px, #fcfcfc 10px, #fcfcfc 20px)}.o_edit_mode .o_toolbar .o_edit_mode .o_tools_container{background:#f8f8f8}body{overflow-x:hidden}.o_container_offcanvas{position:relative;max-width:1324px;-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;-m-transition:all .25s ease-in-out;transition:all .25s ease-in-out}#o_offcanvas_right{position:absolute;top:0;right:-250px;width:250px;padding:15px 15px;background-color:#222;color:#9d9d9d;border:1px solid #090909;-webkit-box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);min-height:100%;z-index:10;display:none}#o_offcanvas_right:before,#o_offcanvas_right:after{content:" ";display:table}#o_offcanvas_right:after{clear:both}@media screen and (max-width: 767px){.row-offcanvas{position:relative;-webkit-transition:all .25s ease-out;-moz-transition:all .25s ease-out;transition:all .25s ease-out}.row-offcanvas-right{right:0}.row-offcanvas-right .sidebar-offcanvas{right:-50%}.row-offcanvas-right.active{right:50%}.row-offcanvas-left{left:0}.row-offcanvas-left .sidebar-offcanvas{left:-50%}.row-offcanvas-left.active{left:50%}.sidebar-offcanvas{position:absolute;top:0;width:50%}}.o_info,.b_info,p.b_info,div.b_info,.o_form .o_info,.o_togglebox_wrapper div.o_togglebox_content,div.o_qti_item_itemfeedback,.o_assessmentitem_wrapper .modalFeedback .o_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_info h2,.o_info h5,.b_info h2,.o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h3,.o_form .o_info h3,.o_togglebox_wrapper div.o_togglebox_content h3,div.o_qti_item_itemfeedback h3,.o_assessmentitem_wrapper .modalFeedback .o_info h3,.b_info h4,.o_form .o_info h4,.o_togglebox_wrapper div.o_togglebox_content h4,div.o_qti_item_itemfeedback h4,.o_assessmentitem_wrapper .modalFeedback .o_info h4,.b_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_info h2,.o_form .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback .o_cal .fc-header-title h2,.o_cal .fc-header-title div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h5,.o_form .o_info h5,.o_togglebox_wrapper div.o_togglebox_content h5,div.o_qti_item_itemfeedback h5,.o_assessmentitem_wrapper .modalFeedback .o_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note,.o_form .o_desc,.o_course_run .o_statusinfo,.o_course_stats .o_desc,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_note h2,.o_note h5,.b_note h2,.o_form .o_desc h2,.o_course_run .o_statusinfo h2,.o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.b_note h3,.o_form .o_desc h3,.o_course_run .o_statusinfo h3,.o_course_stats .o_desc h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h3,.b_note h4,.o_form .o_desc h4,.o_course_run .o_statusinfo h4,.o_course_stats .o_desc h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h4,.b_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_note h2,.o_form .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_desc h2,.o_course_run .o_statusinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_statusinfo h2,.o_course_stats .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.b_note h5,.o_form .o_desc h5,.o_course_run .o_statusinfo h5,.o_course_stats .o_desc h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important,.o_bc_empty,.o_course_run .o_no_scoreinfo{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_important h2,.o_important h5,.b_important h2,.o_bc_empty h2,.o_course_run .o_no_scoreinfo h2,.b_important h3,.o_bc_empty h3,.o_course_run .o_no_scoreinfo h3,.b_important h4,.o_bc_empty h4,.o_course_run .o_no_scoreinfo h4,.b_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_important h2,.o_bc_empty .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_bc_empty h2,.o_course_run .o_no_scoreinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_no_scoreinfo h2,.b_important h5,.o_bc_empty h5,.o_course_run .o_no_scoreinfo h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_success h2,.o_success h5,.b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h3,.b_success h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h4,.b_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning,.o_form .o_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_warning h2,.o_warning h5,.b_warning h2,.o_form .o_warning h2,.b_warning h3,.o_form .o_warning h3,.b_warning h4,.o_form .o_warning h4,.b_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_warning h2,.o_form .o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_warning h2,.b_warning h5,.o_form .o_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_error h2,.o_error h5,.b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h3,.b_error h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h4,.b_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4,.modal .modal-header .o_cal .fc-header-title h2,.o_cal .fc-header-title .modal .modal-header h2{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.o_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_tree a{color:#777;background-color:none}.o_tree a:hover,.o_tree a:focus{color:#333}.o_tree .o_tree_link{background-color:none}.o_tree .o_tree_link:hover,.o_tree .o_tree_link:focus{background-color:#f8f8f8}.o_tree .o_tree_link:first-child{background-color:transparent}.o_tree .o_tree_link:last-child:hover,.o_tree .o_tree_link:last-child:focus{background-color:#f8f8f8}.o_tree .o_insertion_point>a>span{padding:5px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_insertion_source>a>span.o_tree_item,.o_tree .o_insertion_source>a>span.o_dnd_item{border-bottom:solid #f90 4px;background-color:#fefbf6}.o_tree ul{margin:0;padding:0;list-style-type:none}.o_tree ul li{margin:0;padding:0;white-space:nowrap}.o_tree ul li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_tree ul li div.popover{position:absolute;left:auto;right:0}.o_tree ul li div a.o_tree_oc_l0{position:absolute;top:10px;left:-4px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l0,.o_tree ul .o_tree_level_close.b_tree_oc_l0{z-index:10}.o_tree ul li div a.o_tree_oc_l1{position:absolute;top:10px;left:11px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l1,.o_tree ul .o_tree_level_close.b_tree_oc_l1{z-index:10}.o_tree ul li div a.o_tree_oc_l2{position:absolute;top:10px;left:26px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l2,.o_tree ul .o_tree_level_close.b_tree_oc_l2{z-index:10}.o_tree ul li div a.o_tree_oc_l3{position:absolute;top:10px;left:41px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l3,.o_tree ul .o_tree_level_close.b_tree_oc_l3{z-index:10}.o_tree ul li div a.o_tree_oc_l4{position:absolute;top:10px;left:56px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l4,.o_tree ul .o_tree_level_close.b_tree_oc_l4{z-index:10}.o_tree ul li div a.o_tree_oc_l5{position:absolute;top:10px;left:71px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l5,.o_tree ul .o_tree_level_close.b_tree_oc_l5{z-index:10}.o_tree ul li div a.o_tree_oc_l6{position:absolute;top:10px;left:86px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l6,.o_tree ul .o_tree_level_close.b_tree_oc_l6{z-index:10}.o_tree ul li div a.o_tree_oc_l7{position:absolute;top:10px;left:101px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l7,.o_tree ul .o_tree_level_close.b_tree_oc_l7{z-index:10}.o_tree ul li div a.o_tree_oc_l8{position:absolute;top:10px;left:116px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l8,.o_tree ul .o_tree_level_close.b_tree_oc_l8{z-index:10}.o_tree ul li div a.o_tree_oc_l9{position:absolute;top:10px;left:131px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l9,.o_tree ul .o_tree_level_close.b_tree_oc_l9{z-index:10}.o_tree ul li div a.o_tree_oc_l10{position:absolute;top:10px;left:146px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l10,.o_tree ul .o_tree_level_close.b_tree_oc_l10{z-index:10}.o_tree ul li div a.o_tree_oc_l11{position:absolute;top:10px;left:161px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l11,.o_tree ul .o_tree_level_close.b_tree_oc_l11{z-index:10}.o_tree ul li div span.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_tree ul li div span.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_tree ul li div span.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_tree ul li div span.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_tree ul li div span.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_tree ul li div span.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_tree ul li div span.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_tree ul li div span.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_tree ul li div span.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_tree ul li div span.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_tree ul li div span.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_tree ul li div span.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_tree ul span.o_tree_leaf{display:none}.o_tree ul span.o_tree_link>input[type=checkbox]{margin-right:5px}.o_tree ul li .badge{position:absolute;font-size:70%}.o_tree ul li .badge:before{content:none}.o_tree ul li .badge.o_badge_1{top:3px;right:1px}.o_tree ul li .badge.o_badge_2{bottom:3px;right:1px}.o_tree ul li .badge.o_badge_3{top:3px;right:25px}.o_tree ul li .badge.o_badge_4{bottom:3px;right:25px}.o_tree ul li div.o_dnd_sibling{margin:0;padding:0;border-bottom:none}.o_tree ul li .active.o_tree_link{background-color:none;font-weight:bold}.o_tree ul li .active.o_tree_link a{color:#337ab7}.o_tree ul li .active.o_tree_link:hover,.o_tree ul li .active.o_tree_link:focus{background-color:#eee}.o_tree ul li .active.o_tree_link:hover a,.o_tree ul li .active.o_tree_link:focus a{color:#23527c}.o_tree ul li .active_parent.o_tree_link{font-weight:bold}.o_tree ul li .active_parent.o_tree_link a{color:#777}.o_tree ul li .active_parent.o_tree_link a:hover,.o_tree ul li .active_parent.o_tree_link a:focus{color:#333}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l0{left:6px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l1{left:21px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l2{left:36px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l3{left:51px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l4{left:66px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l5{left:81px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l6{left:96px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l7{left:111px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l8{left:126px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l9{left:141px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l10{left:156px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l11{left:171px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l0{padding:10px 2px 10px 20px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l1{padding:10px 2px 10px 35px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l2{padding:10px 2px 10px 50px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l3{padding:10px 2px 10px 65px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l4{padding:10px 2px 10px 80px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l5{padding:10px 2px 10px 95px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l6{padding:10px 2px 10px 110px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l7{padding:10px 2px 10px 125px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l8{padding:10px 2px 10px 140px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l9{padding:10px 2px 10px 155px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l10{padding:10px 2px 10px 170px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l11{padding:10px 2px 10px 185px}.o_tree .o_dnd_item{cursor:move;z-index:100}.o_tree .o_dnd_proxy{opacity:.4;filter:alpha(opacity=40);background-color:#f0ad4e;padding:5px 10px 5px 10px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_dnd_item.o_dnd_over{background-color:#ffff60}.o_tree .o_dnd_sibling{height:7px;width:100%}.o_tree .o_dnd_sibling.o_dnd_over{background:transparent url(../light/images/arrow_dd.png) top left no-repeat}.o_tree .o_dnd_l1{margin-left:0 !important}.o_tree .o_dnd_l2{margin-left:1em !important}.o_tree .o_dnd_l3{margin-left:2em !important}.o_tree .o_dnd_l4{margin-left:3em !important}.o_tree .o_dnd_l5{margin-left:4em !important}.o_tree .o_dnd_l6{margin-left:5em !important}.o_tree .o_dnd_l7{margin-left:6em !important}.o_tree .o_dnd_l8{margin-left:7em !important}.o_tree .o_dnd_l9{margin-left:8em !important}.o_tree .o_dnd_l10{margin-left:9em !important}.o_tree .o_dnd_l11{margin-left:10em !important}.o_tree.o_tree_insert_tool span.o_tree_link a{display:block}.o_offcanvas .o_tree{border:0}.o_selection_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_selection_tree ul{margin:0;padding:0;list-style-type:none}.o_selection_tree li{margin:0;padding:0;white-space:nowrap}.o_selection_tree li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_selection_tree li>div>span.o_tree_l0,.o_selection_tree li>div>div.checkbox.o_tree_l0,.o_selection_tree li>div>div.radio.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_selection_tree li>div>span.o_tree_l1,.o_selection_tree li>div>div.checkbox.o_tree_l1,.o_selection_tree li>div>div.radio.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_selection_tree li>div>span.o_tree_l2,.o_selection_tree li>div>div.checkbox.o_tree_l2,.o_selection_tree li>div>div.radio.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_selection_tree li>div>span.o_tree_l3,.o_selection_tree li>div>div.checkbox.o_tree_l3,.o_selection_tree li>div>div.radio.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_selection_tree li>div>span.o_tree_l4,.o_selection_tree li>div>div.checkbox.o_tree_l4,.o_selection_tree li>div>div.radio.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_selection_tree li>div>span.o_tree_l5,.o_selection_tree li>div>div.checkbox.o_tree_l5,.o_selection_tree li>div>div.radio.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_selection_tree li>div>span.o_tree_l6,.o_selection_tree li>div>div.checkbox.o_tree_l6,.o_selection_tree li>div>div.radio.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_selection_tree li>div>span.o_tree_l7,.o_selection_tree li>div>div.checkbox.o_tree_l7,.o_selection_tree li>div>div.radio.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_selection_tree li>div>span.o_tree_l8,.o_selection_tree li>div>div.checkbox.o_tree_l8,.o_selection_tree li>div>div.radio.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_selection_tree li>div>span.o_tree_l9,.o_selection_tree li>div>div.checkbox.o_tree_l9,.o_selection_tree li>div>div.radio.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_selection_tree li>div>span.o_tree_l10,.o_selection_tree li>div>div.checkbox.o_tree_l10,.o_selection_tree li>div>div.radio.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_selection_tree li>div>span.o_tree_l11,.o_selection_tree li>div>div.checkbox.o_tree_l11,.o_selection_tree li>div>div.radio.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_breadcrumb{position:relative}.o_breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_breadcrumb .o_breadcrumb_close a span{display:none}.o_breadcrumb .o_breadcrumb_close:before{content:none}.o_form .o_icon_mandatory{margin-right:0.25em}.o_form .o_form_chelp{padding-left:0.25em;margin-right:-1.25em}.o_form .o_form_example{font-size:90%}.o_form .o_error{margin-top:1px;margin-bottom:0;padding:10px}.o_form hr.o_spacer_noline{border-top:1px solid transparent}.o_form hr.o_spacer.form,.o_form hr.o_spacer_noline.form{margin-top:0px;margin-bottom:0px}.o_form .form-group.o_omit_margin{margin-bottom:0}.o_form .o_date{position:relative;padding-right:34px}.o_form .o_date.form-inline .form-group,.o_form .o_date.o_navbar-form .form-group{margin-left:0}.o_form input.o_date_ms{width:3em}.o_form .o_date.form-inline .o_date_ms.form-group,.o_form .o_date.o_navbar-form .o_date_ms.form-group{margin-left:25px}.o_form .has-feedback .o_date.form-inline .form-control.o_date_ms,.o_form .has-feedback .o_date.o_navbar-form .form-control.o_date_ms{padding-right:0}.o_form .o_form_element.form-inline .o_form_element.form-group,.o_form .o_form_element.o_navbar-form .o_form_element.form-group{margin-left:25px}.o_form .input-group.o_date_picker{width:16em}.o_form .o_filepreview{margin-bottom:10px}.o_form .o_fileinput{cursor:pointer;position:relative}.o_form .o_fileinput .o_fakechooser{position:relative;z-index:1}.o_form .o_fileinput .o_realchooser{position:absolute;top:0;right:0;z-index:2;opacity:0;filter:alpha(opacity=0)}.o_form .o_fileinput .o_realchooser.o_chooser_with_delete{right:38px}.o_form .has-feedback.has-error .o_fileinput .o_fakechooser{margin-right:30px}.o_form .form-control.textarea_disabled{resize:both;overflow:auto;white-space:pre-wrap;background:#fafafa}.o_centered_form{text-align:center}.o_centered_form fieldset.o_form{display:inline-block;text-align:left}.o_choice_checkrow,.o_choice_textrow{vertical-align:text-top;padding-bottom:2px}.o_choice_textrow{padding-left:1em}.o_togglecheck a{white-space:nowrap}.o_catalog .o_catalog_delete_img{position:relative;top:-0.5em}.o_button_dirty{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_button_dirty:hover,.o_button_dirty:focus,.o_button_dirty.focus,.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{background-image:none}.o_button_dirty.disabled,.o_button_dirty.disabled:hover,.o_button_dirty.disabled:focus,.o_button_dirty.disabled.focus,.o_button_dirty.disabled:active,.o_button_dirty.disabled.active,.o_button_dirty[disabled],.o_button_dirty[disabled]:hover,.o_button_dirty[disabled]:focus,.o_button_dirty[disabled].focus,.o_button_dirty[disabled]:active,.o_button_dirty[disabled].active,fieldset[disabled] .o_button_dirty,fieldset[disabled] .o_button_dirty:hover,fieldset[disabled] .o_button_dirty:focus,fieldset[disabled] .o_button_dirty.focus,fieldset[disabled] .o_button_dirty:active,fieldset[disabled] .o_button_dirty.active{background-color:#f0ad4e;border-color:#eea236}.o_button_dirty .badge{color:#f0ad4e;background-color:#fff}.o_button_toggle{border:1px solid #777;border-top-right-radius:9px;border-top-left-radius:9px;border-bottom-right-radius:9px;border-bottom-left-radius:9px;background:#eee;display:inline-block;height:18px;line-height:16px;font-size:16px;text-align:left;padding:0 0.5em 0 0;margin:0}.o_button_toggle i{color:#777;text-shadow:1px 0 2px rgba(0,0,0,0.25)}.o_button_toggle span{line-height:16px;vertical-align:top;font-size:60%;color:#777;text-transform:uppercase}.o_button_toggle.o_on{text-align:right;padding:0 0 0 0.5em}.o_button_toggle.o_on i{color:#337ab7;text-shadow:-1px 0 2px rgba(0,0,0,0.25)}.o_table_wrapper{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_table_wrapper.o_table_flexi .o_table_body{margin-top:20px}.o_table_wrapper.o_table_flexi .table{margin-top:20px}.o_table_wrapper.o_table_flexi .table td ul{margin:0}.o_table_wrapper.o_table_flexi.o_table_no_margin .table{margin:0}.o_table_wrapper.o_table_edit table tbody{border-top:solid #f90 4px;background-color:#fefbf6}.o_table_wrapper .o_table_search{max-width:50em}.o_table_wrapper .o_table_footer .o_table_pagination{text-align:center}.o_table_wrapper .o_table_rows_infos{float:left;padding-left:0;padding-right:20px;margin:20px 0}.o_table_wrapper .o_row_selected td{background-color:#dff0d8 !important}.o_table_wrapper .o_table{margin-bottom:0}.o_table_wrapper .o_marked{font-weight:bold}.o_table_wrapper .table{margin-bottom:0}.o_table_wrapper th a,.o_table_wrapper th a:hover{color:#333;text-decoration:none}.o_table_search a.btn.o_reset_quick_search{width:38px;margin-left:-38px;z-index:5;color:grey}@media (max-width: 767px){.o_table_wrapper .o_table_rows_infos{clear:both}}a.o_orderby,a.o_orderby:hover{color:#333;text-decoration:none}a.o_orderby.o_orderby_asc,a.o_orderby.o_orderby_desc,a.o_orderby:hover.o_orderby_asc,a.o_orderby:hover.o_orderby_desc{border-bottom:1px solid #ddd}.o_table_row_count{padding-top:6px;padding-bottom:6px;vertical-align:middle}.o_table_row_details td{background-color:white !important}.o_table_config{font-size:12px}.o_table_buttons{text-align:center}.o_table_buttons input{margin-right:1em}.o_table_buttons input:last-child{margin-right:0}.o_table_tools{margin-left:6px}.o_table_tools_indications{margin-left:10px;padding-top:3px;font-size:80%}.o_table_tools_indications a{color:#d9534f}.o_table_toolbar_left .o_table_tools_indications{text-align:right}.o_table_count{max-width:20em;float:left;padding:0 15px}.o_info .table-bordered td,o_note .table-bordered td,o_important .table-bordered td,o_warning .table-bordered td,o_error .table-bordered td{border-color:#333}.panel .o_table_layout{border-top:1px solid #ddd;padding-top:6px}.panel .o_table_count{padding:0 15px}#o_navbar_imclient .o_im_messages{float:left}#o_navbar_imclient #o_im_message,#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_summary{float:left;position:relative;padding:15px 3px}#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_message{padding-left:15px}#o_navbar_imclient #o_im_summary .badge{color:#fff;background-color:#777}#o_navbar_imclient #o_im_status li>a>span{display:inline}#o_navbar_imclient #o_im_status div.o_chelp_wrapper{right:0.5em}#o_navbar_imclient #o_im_message a:hover,#o_navbar_imclient #o_im_message a:focus{text-decoration:none}#o_navbar_imclient #o_im_message .o_icon_message{color:#d9534f}#o_navbar_imclient #o_im_message .o_icon_message:hover{color:#f4c37d}.o_im_load_history{margin-bottom:6px}.o_im_load_history .o_label{font-size:12px;padding-right:0.5em;line-height:1.5em;color:#777}.o_im_chat_history{height:170px;font-size:90%;border:1px solid #eee;margin:0 0 1em 0;overflow:scroll;overflow-x:auto}.o_im_message_group{padding:3px 3px 3px 40px;min-height:40px;position:relative;border-top:1px solid #eee;background:#fff}.o_im_message_group.o_odd{background:#F4F4F4}.o_im_message_group .o_portrait{position:absolute;top:3px;left:3px}.o_im_message_group .o_im_from{color:#777;font-size:12px;font-weight:bold}.o_im_message_group .o_im_from:hover{color:#5e5e5e}.o_im_message_group div.o_im_body{padding:3px 0 3px 0;font-size:12px}.o_im_message_group div.o_im_body .o_date{float:right;color:#777;font-size:9px}.o_groupchat_roster{font-size:12px}.o_groupchat_roster li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.o_groupchat_roster li.o_vip{color:#3c763d}.o_groupchat_roster li.o_anonymous{color:#31708f}.o_im_buddieslist .o_im_buddieslist_toggler .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_im_buddieslist ul{font-size:12px}.o_im_buddieslist ul ul{padding-left:1em}.o_im_buddieslist ul a{color:#337ab7}.o_im_buddieslist ul a:hover{color:#23527c}.o_flag{position:relative;top:1px;display:inline-block;line-height:1;width:16px;height:16px;background-repeat:no-repeat;background-position:0 100%}option.o_with_flag{padding-left:23px;min-height:16px;background-repeat:no-repeat;background-position:2px 50%}.o_flag_en{background-image:url("../light/images/flags/gb.png")}.o_flag_de{background-image:url("../light/images/flags/de.png")}.o_flag_fr{background-image:url("../light/images/flags/fr.png")}.o_flag_it{background-image:url("../light/images/flags/it.png")}.o_flag_es{background-image:url("../light/images/flags/es.png")}.o_flag_da{background-image:url("../light/images/flags/dk.png")}.o_flag_cs{background-image:url("../light/images/flags/cz.png")}.o_flag_el{background-image:url("../light/images/flags/gr.png")}.o_flag_ee{background-image:url("../light/images/flags/ee.png")}.o_flag_ru{background-image:url("../light/images/flags/ru.png")}.o_flag_pl{background-image:url("../light/images/flags/pl.png")}.o_flag_zh_CN{background-image:url("../light/images/flags/cn.png")}.o_flag_zh_TW{background-image:url("../light/images/flags/tw.png")}.o_flag_lt{background-image:url("../light/images/flags/lt.png")}.o_flag_fa{background-image:url("../light/images/flags/ir.png")}.o_flag_pt_PT{background-image:url("../light/images/flags/pt.png")}.o_flag_pt_BR{background-image:url("../light/images/flags/br.png")}.o_flag_tr{background-image:url("../light/images/flags/tr.png")}.o_flag_hu{background-image:url("../light/images/flags/hu.png")}.o_flag_sq{background-image:url("../light/images/flags/al.png")}.o_flag_in{background-image:url("../light/images/flags/id.png")}.o_flag_ar{background-image:url("../light/images/flags/eg.png")}.o_flag_rm{background-image:url("../light/images/flags/rm.png")}.o_flag_af{background-image:url("../light/images/flags/za.png")}.o_flag_vi{background-image:url("../light/images/flags/vn.png")}.o_flag_mn{background-image:url("../light/images/flags/mn.png")}.o_flag_iw{background-image:url("../light/images/flags/il.png")}.o_flag_ko{background-image:url("../light/images/flags/kr.png")}.o_flag_nl_NL{background-image:url("../light/images/flags/nl.png")}.o_flag_jp{background-image:url("../light/images/flags/jp.png")}.o_flag_nb_NO{background-image:url("../light/images/flags/no.png")}.o_flag_et_EE{background-image:url("../light/images/flags/ee.png")}.o_flag_bg{background-image:url("../light/images/flags/bg.png")}.o_flag_hi_IN_ASIA{background-image:url("../light/images/flags/in.png")}.o_flag_ar_LB{background-image:url("../light/images/flags/lb.png")}.o_flag_gl_ES{background-image:url("../light/images/flags/galicia.png")}.o_flag_sk{background-image:url("../light/images/flags/sk.png")}.o_rating .o_rating_title{font-size:12px}.o_rating .o_rating_items{white-space:nowrap}.o_rating .o_rating_items .o_icon{color:#f0ad4e}.o_rating .o_rating_items .o_icon:hover{color:#337ab7}.o_rating .o_rating_items .o_legend{margin-left:1em;font-size:12px;line-height:normal}.o_rating .o_rating_explanation{font-size:12px;color:#777}@media (max-width: 991px){.o_rating .o_rating_title,.o_rating .o_rating_explanation{display:none}}.o_comments .o_comment_wrapper .o_avatar{float:left;margin:0 1em 0 0}.o_comments .o_comment_wrapper .o_reply,.o_comments .o_comment_wrapper .o_delete{float:right}.o_comments .o_comment_wrapper .o_comment_wrapper{margin-left:16px}.o_ratings_and_comments .o_rating_wrapper{vertical-align:middle;display:inline-block}.o_ratings_and_comments a.o_comments{margin-left:10px;position:relative;top:0.1em}.d3chart .bar{shape-rendering:crispEdges}.d3chart .bar_default_light{fill:#64a0d3}.d3chart .bar_default,.d3chart .bubble_default{fill:#337ab7}.d3chart .bar_default_dark{fill:#23527c}.d3chart .axis{font:12px sans-serif}.d3chart .axis path,.d3chart .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_forum_peekview .o_quote_wrapper,.o_forum_peekview .b_quote_wrapper{display:none}.o_forum_thread_sticky{font-weight:bold}.o_forum_switch{font-size:12px}.o_forum_toolbar{margin-bottom:6px;float:left}.o_forum_fulltextsearch{float:right}@media (max-width: 767px){.o_forum_fulltextsearch{float:left}.o_forum_toolbar .o_forum_tool span{display:none}}.o_forum{padding-bottom:50px}.o_forum .o_mark,.o_forum .o_ep_collect{float:right;position:relative;width:2em;margin-left:12px}.o_forum .o_portrait{float:left;margin-right:16px}.o_forum .o_portrait_avatar{width:70px;height:70px}.o_forum .o_newindicator{font-size:10px;color:#5cb85c;text-transform:uppercase;padding-left:1em;vertical-align:text-top;white-space:nowrap}.o_forum .o_author,.o_forum .o_date{display:inline-block;color:#777}.o_forum .o_date{font-size:12px}.o_forum .o_modified{color:#8a6d3b;font-size:12px;font-style:italic}.o_forum .o_forum_message{margin-bottom:20px;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_forum .o_forum_message_new{-webkit-box-shadow:0 1px 10px rgba(92,184,92,0.3);box-shadow:0 1px 10px rgba(92,184,92,0.3)}.o_forum .o_forum_message_highlight{-webkit-box-shadow:0 1px 10px rgba(240,173,78,0.5);box-shadow:0 1px 10px rgba(240,173,78,0.5)}.o_forum .o_forum_message_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:3px;border-top-left-radius:3px}.o_forum .o_forum_message_title{margin-top:0}.o_forum .o_forum_message_body{padding:10px 15px}.o_forum .o_forum_message_attachments{border-top:1px solid #ddd;padding:10px 15px;font-size:12px;background-color:#f7f7f9}.o_forum .o_attachment{position:relative;max-width:250px;vertical-align:top;margin:6px 12px 10px 0}.o_forum .o_attachment img{margin-top:6px}.o_forum .o_filename{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_forum .o_icon_enlarge{position:absolute;left:1em;bottom:1em;text-shadow:1px 1px 2px #fff, -1px 1px 2px #fff, 1px -1px 2px #fff, -1px -1px 2px #fff}@media (min-width: 768px) and (max-width: 991px){.o_forum .o_attachments{font-size:10px}.o_forum .o_attachment{max-width:200px}.o_forum .o_attachment img{max-width:150px}.o_forum .o_filename{max-width:200px}}@media (max-width: 767px){.o_forum .o_attachments{font-size:9px}.o_forum .o_attachment{max-width:150px}.o_forum .o_attachment img{max-width:100px}.o_forum .o_filename{max-width:150px}}.o_quote_wrapper,.b_quote_wrapper{position:relative;margin:10px 0}.o_quote_author,.b_quote_author{color:#777;font-size:12px}.o_quote_author:before,.b_quote_author:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";font-size:21px;padding-right:0.5em}blockquote.o_quote,blockquote.b_quote{color:#555;font-size:12px;margin-top:6px;padding:0 12px}a.o_chelp{display:inline-block;padding:1px 3px;text-align:center;vertical-align:middle;white-space:nowrap;font-size:10px;font-weight:normal;line-height:15px;color:#fff;background-color:#337ab7;border:1px solid #2e6da4;border-radius:2px;cursor:help;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}a.o_chelp:active,a.o_chelp:hover,a.o_chelp:focus{text-decoration:none;color:#fff;background-color:#2a6598;border-color:#204d74}a.o_chelp i{font-size:10px !important}.o_chelp_wrapper{position:relative;float:right;display:inline-block;line-height:normal;margin-bottom:10px;margin-left:10px}.o_form_chelp,.o_chelp_tooltip{color:#737373}.o_draw_circle{border:4px solid #337ab7;border-radius:50%;position:absolute !important}.o_draw_rectangle{border:4px solid #337ab7;position:absolute !important}.o_iframedisplay iframe{width:100%}.o_singlepage .o_edit{position:absolute;top:10px;right:37px}.o_content_popup{position:absolute;top:10px;right:12px}.o_module_cp_wrapper .o_tools{position:absolute;top:10px;right:12px;text-align:right;vertical-align:middle}.o_module_cp_wrapper .o_tools .o_search_wrapper{display:inline-block;position:relative;top:-2px}ul.o_dropdown{margin:-5px -14px}ul.o_dropdown .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}ul.o_dropdown>li>a{display:block;padding:5px 14px;clear:both;font-weight:normal;line-height:1.42857;color:#333;background:#fff;white-space:nowrap}ul.o_dropdown>li>a:hover,ul.o_dropdown>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.badge.o_scorm_completed{background-color:#3c763d}.badge.o_scorm_failed{background-color:#a94442}.badge.o_scorm_incomplete{background-color:#8a6d3b}.badge.o_scorm_not_attempted{background:none}.o_bc_meta h5,.o_bc_meta .o_author,.o_bc_meta .o_comment,.tooltip h5,.tooltip .o_author,.tooltip .o_comment{color:#fff;margin:5px 0}.o_bc_meta .o_thumbnail,.tooltip .o_thumbnail{width:200px;height:200px;display:inline-block;background-color:#fff;margin:0 -5px}.o_htmleditor .o_metadata{border:1px solid #999;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:0;background:#eee;position:relative;top:1px;padding:5px}.o_htmleditor .o_metadata #o_filename{float:left}.o_htmleditor .o_metadata .o_lastmodified{float:right;color:#777;line-height:1.42857}.o_htmleditor #o_save{margin-top:10px;text-align:center}.o_htmleditor #o_save input{margin-right:1em}.o_htmleditor #o_save input:last-child{margin-right:0}.o_notifications_news_wrapper .o_notifications_news_subscription{margin:10px 0}.o_notifications_news_wrapper .o_notifications_news_subscription h4 i,.o_notifications_news_wrapper .o_notifications_news_subscription .o_cal .fc-header-title h2 i,.o_cal .fc-header-title .o_notifications_news_wrapper .o_notifications_news_subscription h2 i{display:none}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_context{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content{margin-left:1.5em;position:relative}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_icon{position:absolute;left:-1.5em;line-height:1.5em;top:0}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_date{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_url{margin-left:1.5em}.o_noti{margin:6px 0 6px 12px;float:right;color:#777}.o_noti .o_label{color:#777;cursor:help}@media (max-width: 767px){.o_noti .o_label span{display:none}}.panel-body .o_noti{margin:0}.o_portrait{display:inline-block}.o_portrait img{border-radius:50%;border:none;background-color:#eee;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.o_portrait_name{margin-top:6px}.o_block_inline .o_portait,.o_block_inline .o_portrait_name,.o_block_inline .o_portrait_image,.o_block_inline_right .o_portait,.o_block_inline_right .o_portrait_name,.o_block_inline_right .o_portrait_image,.o_block_inline_left .o_portait,.o_block_inline_left .o_portrait_name,.o_block_inline_left .o_portrait_image,.o_block_inline_both .o_portait,.o_block_inline_both .o_portrait_name,.o_block_inline_both .o_portrait_image{display:inline-block}.o_portrait_avatar,.o_portrait_dummy,.o_portrait_dummy_female_big,.o_portrait_dummy_male_big,.o_portrait_anonymous{width:100px;height:100px}.o_portrait_dummy{background-image:url("../light/images/portrait/dummy.png")}.o_portrait_dummy_female_big{background-image:url("../light/images/portrait/dummy_female_big.png")}.o_portrait_dummy_male_big{background-image:url("../light/images/portrait/dummy_male_big.png")}.o_portrait_anonymous{background-image:url("../light/images/portrait/anonymous.png")}.o_portrait_avatar_small,.o_portrait_dummy_small,.o_portrait_dummy_female_small,.o_portrait_dummy_male_small,.o_portrait_anonymous_small{width:30px;height:30px}.o_portrait_dummy_small{background-image:url("../light/images/portrait/dummy_small.png")}.o_portrait_dummy_female_small{background-image:url("../light/images/portrait/dummy_female_small.png")}.o_portrait_dummy_male_small{background-image:url("../light/images/portrait/dummy_male_small.png")}.o_portrait_anonymous_small{background-image:url("../light/images/portrait/anonymous_small.png")}.o_datecomp{position:relative;width:40px;height:52px;border:1px solid #555;margin-right:12px;text-align:center;vertical-align:middle}.o_datecomp div.o_year{position:absolute;left:0;width:100%;top:-20px;height:20px;line-height:20px;font-size:10px}.o_datecomp div.o_month{height:20px;line-height:20px;font-size:12px;background-color:#337ab7;color:#fff}.o_datecomp div.o_day{height:30px;line-height:30px;font-size:18px;border-top:1px solid #555;background-color:#fff;color:#333}.o_block_with_datecomp .o_head{position:relative;padding-left:52px}.o_block_with_datecomp .o_datecomp{position:absolute;top:0.2em;left:0}.o_block_with_datecomp .o_title{margin-top:0}.o_block_with_datecomp .o_meta{color:#777}.o_block_with_datecomp .o_content{border-left:5px solid #eee;padding:0 20px}.o_block_with_datecomp .o_block_footer{padding-left:25px}ul.o_certificates li{padding:5px 0}ul.o_certificates li a.o_sel_certificate_delete{padding-left:2em}.o_cal_toptoolbar{margin-bottom:6px}.o_cal_toptoolbar .o_cal_toptoolbar_help{float:left;margin-right:12px}.o_cal_toptoolbar .o_noti{margin-top:0}.o_feed .o_date,.o_feed .o_author{color:#777}.o_feed .o_subscription a{margin-right:1.5em}.o_feed .o_subscription .form-group{margin-bottom:5px}.o_feed .o_subscription .form-control{border:0;background:none;padding:0;height:auto;-webkit-box-shadow:none;box-shadow:none}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper{float:left}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_title,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_explanation,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_legend{display:none}.o_feed .o_blog_posts .o_ratings_and_comments a.o_comments span{display:none}.o_feed .o_content:before,.o_feed .o_content:after{content:" ";display:table}.o_feed .o_content:after{clear:both}.o_glossary .o_register{text-align:center}.o_glossary .o_meta{font-size:90%;color:#777;font-style:italic}.o_glossary dl dt:first-letter{font-size:21px}.o_glossary dl dt small{color:#777}.o_tm_glossary{border-bottom:1px dotted #666699 !important}.o_tm_yellow{background-color:#FFFF66}.o_tm_blue{background-color:#33FFFF}.o_tm_red{background-color:#FF3333}.o_tm_green{background-color:#99FF00}.o_coaching div#o_main_toolbar.o_toolbar{margin-top:0px}.o_eff_statement_details .o_user_infos{margin-top:20px}div.o_assessment_user_type_filter{display:inline-block;padding:0.5em;border:1px solid #eee;border-radius:4px}div.o_assessment_user_type_filter div.form-inline,div.o_assessment_user_type_filter div.o_navbar-form{margin-left:5px;display:inline-block}.vitero_iframe{width:100%;height:100%;border:none;min-height:60em}.o_reminder_rule{padding:5px 0}.o_segments.btn-group a span{overflow:hidden;display:block;text-overflow:ellipsis}.o_segments_content{margin-top:20px}.o_tabbed_pane .o_tabbed_pane_content{padding:20px 0 6px 0}.o_togglebox_wrapper .o_opener{position:relative;left:-0.5em}.o_togglebox_wrapper div.o_togglebox_content{position:relative;margin:0}.o_togglebox_wrapper div.o_togglebox_content .o_hide{position:absolute;bottom:0.5em;right:1em}.o_toolboxes ul{margin:0 0 1.5em 0;padding:0 0 0 1.5em}.o_qrcode{width:256px;height:256px}#o_ajax_busy{position:absolute;left:50%;top:20em;margin-left:-2.5em;height:5em;width:5em;color:#fff;z-index:1201;display:none}#o_body.o_ajax_busy{cursor:busy}.o_exception .o_visual{position:relative;background-image:url("../light/images/lion-500x333.jpg");filter:grayscale(50%);-webkit-filter:grayscale(50%);-moz-filter:grayscale(50%);-ms-filter:grayscale(50%);-o-filter:grayscale(50%);width:500px;height:333px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;margin:0 0 10px 16px}@media (min-width: 768px) and (max-width: 991px){.o_exception .o_visual{width:375px;height:249px}}@media (min-width: 500px) and (max-width: 767px){.o_exception .o_visual{width:250px;height:166px}}@media (max-width: 500px){.o_exception .o_visual{background-size:cover}}.o_exception .jumbotron h1,.o_exception .o_repo_details .o_lead h1,.o_repo_details .o_exception .o_lead h1{color:#d9534f}.o_mail_message .o_mail_meta{background:#fafafa;border:1px solid #eee;padding:5px 10px}.o_mail_message .o_mail_meta h3{margin-top:0}.o_mail_message .o_mail_date,.o_mail_message .o_mail_from,.o_mail_message .o_mail_recipients{color:#777;font-size:90%}.o_mail_message .o_mail_date .o_label,.o_mail_message .o_mail_from .o_label,.o_mail_message .o_mail_recipients .o_label{font-weight:bold;margin-right:1em}.o_mail_message .o_mail_date .o_group span,.o_mail_message .o_mail_from .o_group span,.o_mail_message .o_mail_recipients .o_group span{font-weight:bold}.o_mail_message .o_mail_date .o_group span:after,.o_mail_message .o_mail_from .o_group span:after,.o_mail_message .o_mail_recipients .o_group span:after{content:':';margin-right:0.5em}.o_mail_message .o_mail_date i,.o_mail_message .o_mail_from i,.o_mail_message .o_mail_recipients i{margin-left:1em}.o_mail_message .o_mail_date ul.list-inline,.o_mail_message .o_mail_from ul.list-inline,.o_mail_message .o_mail_recipients ul.list-inline{display:inline}.o_mail_message .o_mail_date ul.list-inline li,.o_mail_message .o_mail_from ul.list-inline li,.o_mail_message .o_mail_recipients ul.list-inline li{padding-right:0;padding-left:0}.o_mail_message .o_more{margin-left:1em}.o_mail_message .o_showAllLink{float:right;font-size:80%}.tt-input{width:400px}.tt-menu{width:400px;margin-top:6px;padding:0 0 0;color:#555;background-color:#fff;border:1px solid #66afe9;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 0 8px rgba(102,175,233,0.6);box-shadow:0 0 8px rgba(102,175,233,0.6)}.tt-suggestion{padding:6px 12px;font-size:14px;line-height:1.42857}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;background-color:#337ab7}.tt-suggestion p{margin:0}.tt-menu div.o_icon_error:before{content:''}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_highlight{font-weight:bold;background-color:#fcf8e3}.o_search_result_context{color:#3c763d}.o_search_result_excerpt{color:#555}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}@media (max-width: 767px){.o_search_result_details{display:none}}.wizard{border:1px solid #d4d4d4;border-radius:2px;background-color:#f9f9f9;position:relative;overflow:hidden;margin-bottom:15px}.wizard ul{list-style:none outside none;padding:0;margin:0;width:4000px}.wizard ul li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#333;font-size:16px;cursor:default}.wizard ul li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.wizard ul li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.wizard ul li.active{background:#f1f6fc;color:#333}.wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.wizard ul li .badge{margin-right:8px}.wizard ul li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.o_process{position:relative;padding-left:25px}.o_process .o_step{position:relative;height:auto;padding-top:10px;padding-left:30px;padding-bottom:10px}.o_process .o_bar{position:absolute;top:10px;left:8px;height:100%;border-left:4px solid #777}.o_process .o_bar:after{position:absolute;top:0;left:-10px;height:16px;width:16px;border:4px solid #777;border-radius:16px;background:#fff;content:" "}.o_process .o_title{margin-top:-1px;color:#777 !important}.o_process .o_title:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:-24px}.o_process .o_title a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";width:1em}.o_process .o_title a.collapsed:before{content:""}.o_process .o_step.o_active .o_bar,.o_process .o_step.o_active .o_bar:after{border-color:#337ab7}.o_process .o_step.o_active .o_title{color:#337ab7 !important}.o_process .o_step.o_active .o_title:before{content:"";color:#337ab7}.o_process .o_step.o_done .o_bar,.o_process .o_step.o_done .o_bar:after{border-color:#5094ce}.o_process .o_step.o_done .o_title{color:#5094ce !important}.o_process .o_step.o_done .o_title:before{content:"";color:#5cb85c}.o_process .o_meta{color:#777;font-size:12px;margin-top:-0.5em}.o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5D5D5D !important}.o_cal_class.o_cal_orange{border-left:20px solid #ffc266}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#FFF !important}.o_cal_class.o_cal_green{border-left:20px solid #66c266}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#FFF !important}.o_cal_class.o_cal_blue{border-left:20px solid #4d6e9f}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5D5D5D !important}.o_cal_class.o_cal_yellow{border-left:20px solid #ffe066}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#FFF !important}.o_cal_class.o_cal_red{border-left:20px solid #c26666}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#FFF !important}.o_cal_class.o_cal_rebeccapurple{border-left:20px solid #639}.o_cal_fuchsia{background:#FF00FF;border-color:#dd00dd;color:#FFF}.o_cal_fuchsia .o_cal_wv_event_header{background:#FF00FF}.o_cal_fuchsia a{color:#FFF !important}.o_cal_class.o_cal_fuchsia{border-left:20px solid #f0f}.o_cal_olive{background:#808000;border-color:#636300;color:#FFF}.o_cal_olive .o_cal_wv_event_header{background:#808000}.o_cal_olive a{color:#FFF !important}.o_cal_class.o_cal_olive{border-left:20px solid olive}.o_cal_navy{background:#000080;border-color:#000057;color:#FFF}.o_cal_navy .o_cal_wv_event_header{background:#000080}.o_cal_navy a{color:#FFF !important}.o_cal_class.o_cal_navy{border-left:20px solid navy}.o_cal_maroon{background:#800000;border-color:#740000;color:#FFF}.o_cal_maroon .o_cal_wv_event_header{background:#800000}.o_cal_maroon a{color:#FFF !important}.o_cal_class.o_cal_maroon{border-left:20px solid maroon}.o_cal_lime{background:#00FF00;border-color:#00e200;color:#004d00}.o_cal_lime .o_cal_wv_event_header{background:#00FF00}.o_cal_lime a{color:#004d00 !important}.o_cal_class.o_cal_lime{border-left:20px solid lime}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#FFF !important}.o_cal_class.o_cal_grey{border-left:20px solid #DDDAAA}.o_sel_calendar_print_chooser{padding-right:4em}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_config_color{display:block;width:16px;height:16px;border-radius:8px}.o_cal_colorchooser_selected:before{content:""}#o_cal_colorchooser div{border:1px solid #337ab7;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_cal_embedded_course_container .o_content_popup{top:0}.fc-button{color:#333;background-color:#fff;border-color:#ccc}.fc-button:hover,.fc-button:focus,.fc-button.focus,.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{background-image:none}.fc-button.disabled,.fc-button.disabled:hover,.fc-button.disabled:focus,.fc-button.disabled.focus,.fc-button.disabled:active,.fc-button.disabled.active,.fc-button[disabled],.fc-button[disabled]:hover,.fc-button[disabled]:focus,.fc-button[disabled].focus,.fc-button[disabled]:active,.fc-button[disabled].active,fieldset[disabled] .fc-button,fieldset[disabled] .fc-button:hover,fieldset[disabled] .fc-button:focus,fieldset[disabled] .fc-button.focus,fieldset[disabled] .fc-button:active,fieldset[disabled] .fc-button.active{background-color:#fff;border-color:#ccc}.fc-button .badge{color:#fff;background-color:#333}.fc-button.fc-state-default{text-shadow:none}.fc-button.fc-state-active{color:#fff;background-color:#337ab7;border-color:#2e6da4}.fc-button.fc-state-active:hover,.fc-button.fc-state-active:focus,.fc-button.fc-state-active.focus,.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{background-image:none}.fc-button.fc-state-active.disabled,.fc-button.fc-state-active.disabled:hover,.fc-button.fc-state-active.disabled:focus,.fc-button.fc-state-active.disabled.focus,.fc-button.fc-state-active.disabled:active,.fc-button.fc-state-active.disabled.active,.fc-button.fc-state-active[disabled],.fc-button.fc-state-active[disabled]:hover,.fc-button.fc-state-active[disabled]:focus,.fc-button.fc-state-active[disabled].focus,.fc-button.fc-state-active[disabled]:active,.fc-button.fc-state-active[disabled].active,fieldset[disabled] .fc-button.fc-state-active,fieldset[disabled] .fc-button.fc-state-active:hover,fieldset[disabled] .fc-button.fc-state-active:focus,fieldset[disabled] .fc-button.fc-state-active.focus,fieldset[disabled] .fc-button.fc-state-active:active,fieldset[disabled] .fc-button.fc-state-active.active{background-color:#337ab7;border-color:#2e6da4}.fc-button.fc-state-active .badge{color:#337ab7;background-color:#fff}body.o_cal_print fieldset{border:none;margin-bottom:2em}body.o_cal_print legend{font-size:2em;font-weight:bold}body.o_cal_print legend span{display:block;font-size:14px;font-weight:normal}body.o_cal_print ul.o_cal_wv_list{list-style-type:none;padding:0}body.o_cal_print ul.o_cal_wv_list>li{page-break-inside:avoid;margin-bottom:2em}body.o_cal_print ul.o_cal_wv_list .o_cal_date{font-size:1.25em;font-weight:bold;padding:0.5em 0 0.5em 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events{list-style-type:none;padding:0.5em 0 0 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event{position:relative;left:30px;page-break-inside:avoid;clear:both;margin-bottom:1.5em;padding-right:30px}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_time{float:left;font-weight:bold;margin-right:1em}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject{font-weight:bold}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject p{margin:0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_location,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_description,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{clear:both}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{font-style:italic}body.o_cal_print .o_cal_class{position:absolute;left:-30px;width:20px}body.o_cal_print #o_cal_config legend{font-size:1.25em}body.o_cal_print #o_cal_config .o_cal_config_calendar{margin:0;padding:0}body.o_cal_print #o_cal_config .o_cal_config_calendar{position:relative;left:30px;float:none;padding-right:30px}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #337ab7;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{box-sizing:content-box;border-right:1px solid #337ab7}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #337ab7;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#5bc0de}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#337ab7;border-color:#2e6da4}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#337ab7;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#f0ad4e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#337ab7}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#286090}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:normal;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;font-size:90%;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{border-right:37px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;width:37px;line-height:50px;color:#fff;background-color:#337ab7}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #337ab7;border-bottom:1px solid #337ab7}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#337ab7}.o_catalog .o_level .o_meta .o_title a:hover{color:#286090}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels_list .o_sublevel{position:relative;border:1px solid #337ab7;margin-bottom:10px}.o_catalog .o_sublevels_list .o_sublevel .o_visual{height:75px;width:75px}.o_catalog .o_sublevels_list .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels_list .o_sublevel .o_title{margin:0}.o_catalog .o_sublevels_list .o_sublevel .o_meta{border-left:1px solid #337ab7;min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em;overflow:hidden}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_title{line-height:75px}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_desc{display:none}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a{font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a>i,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a>i,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a>i{display:none}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels{border:1px solid transparent}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels .o_meta{border-left:1px solid transparent}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #337ab7;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #337ab7;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#337ab7;font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#286090}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (min-width: 768px){.o_catalog .o_sublevels_list,.o_catalog .o_sublevels_compact{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2;columns:2}}.o_repo_details{position:relative}.o_repo_details .o_lead{margin-bottom:10px}.o_repo_details .o_lead .o_author{margin-top:0.5em;margin-bottom:1em;font-size:120%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead .o_media.o_desc_empty{float:none;margin-left:0;margin-bottom:0}.o_repo_details .o_lead h1{font-size:37px}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start_wrapper{clear:both;margin:2em 0 -10px 0;text-align:right}.o_repo_details .o_start_wrapper .o_start_inner{display:inline-block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:400px;display:inline-block}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-left:0;float:none;text-align:center}.o_repo_details .o_start_wrapper{text-align:center}.o_repo_details .o_start_wrapper .o_start_inner{display:block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:100%;display:block}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}}.o_meta .o_closed{padding:2px 5px;margin:5px 0}.o_overview .o_closed{padding:12px 15px;margin:15px 0}.o_ac_configuration span.o_ac_infos{font-weight:normal;color:grey}tr.o_entry_closed,tr.o_entry_closed td,tr.o_entry_closed td span,tr.o_entry_unpublished,tr.o_entry_unpublished td,tr.o_entry_unpublished td span{text-decoration:line-through}.badge.o_midpub{background-color:#3c763d}.badge.o_midwarn{background-color:#8a6d3b}.badge.o_midlock{background-color:#31708f}.badge.o_miderr{background-color:#a94442}.badge.o_middel{background-color:#777}.o_course_editor_legend .badge{font-size:80%}.o_course_editor_legend .badge:before{content:none}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#333}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#66512c}.o_failed th{color:#333}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#333}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_course_run.o_titled_wrapper>h2 i{display:none}.o_course_run .o_cal_toptoolbar{margin-right:26px}.o_course_run .o_titled_wrapper .o_cal_toptoolbar{margin-right:0px}.o_tree.o_course_menu div.o_tree_l0>a:first-child{background-color:none}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_ll_container h5{margin-bottom:5px}.o_ll_container h5 a.o_desc{color:#337ab7}.o_ll_container h5 a.o_desc small{display:none}.o_ll_container h5 a.o_desc:hover{color:#286090;text-decoration:none}.o_ll_container h5 a.o_desc:hover small{color:#5e5e5e;display:inline}.o_ll_container div.o_comment{color:#777}.o_cmembers .o_cmember{margin:12px 0}.o_cmembers .o_cmember .o_portrait{margin-right:10px}.o_cmembers .o_cmember .o_portrait img{width:50px;height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper{line-height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_cmembers .o_cmember a.o_mail{display:none}.o_cmembers .o_cmember:hover a.o_mail{display:inline}.o_cmembers_print{color:#000}.o_cmembers_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_cmembers_print #o_print_brand img{width:100%}.o_cmembers_print .o_portrait{width:100px;height:100px;position:relative}.o_cmembers_print .o_portrait img{border-radius:0px;margin:auto;display:block;max-width:100px;max-height:100px}.o_cmembers_print .o_cmember{padding-left:0px;padding-right:15px;margin-bottom:20px}.o_cmembers_print .o_cmember .o_cmember_info_wrapper{word-wrap:break-word}.o_cmembers_print .o_cmember .o_prop.o_zipCode{float:left;padding-right:0.5em}.o_cmembers_print h1{font-size:18pt;color:#000}.o_cmembers_print h3{font-size:14pt;margin-top:5px;font-weight:normal;color:#000}.o_cmembers_print h4,.o_cmembers_print .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_cmembers_print h2{font-size:11pt;font-weight:strong;color:#000;padding-bottom:10px;border-bottom:1px solid #eee}.o_cmembers_print .o_cmember_info_wrapper{font-size:7pt;color:#000}.o_cmembers_print .o_cmember_info_wrapper strong{font-size:8pt}.tag.label.label-info{margin-right:3px}.input-group.o_tag_inputgroup .form-control{height:auto}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#337ab7}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #337ab7}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #337ab7 !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid grey}.o_gap_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}div.hotspotInteraction{overflow-x:auto}#itemBody .extendedTextInteraction{margin:15px 0}#itemBody .extendedTextInteraction textarea{resize:vertical !important}#itemBody .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}.o_qti_hotspot_label{padding-left:48%}.o_info.o_assessmentsection_rubrics{margin:0 0 0.5em 0}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d9534f;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d9534f}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d9534f}.o_assessmentitem div.orderInteraction div.box{background-color:#eee}.o_assessmentitem div.orderInteraction div.box span.info{margin-left:1em;color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction div.box.horizontal{margin:0.5em 0;width:100%}.o_assessmentitem div.orderInteraction ul.horizontal{float:left;margin:0 1em;padding:1em 0;width:100%}.o_assessmentitem div.orderInteraction div.box.vertical{margin:1em 0;width:49%}.o_assessmentitem div.orderInteraction div.box.vertical.source{float:left}.o_assessmentitem div.orderInteraction div.box.vertical.target{float:right}.o_assessmentitem div.orderInteraction ul.vertical{margin:0 1em;padding:1em 0;width:auto}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0;width:60%}.o_assessmentitem div.orderInteraction ul li{margin:0 3px 3px 3px;padding:0.4em;padding-left:1.5em;font-size:1em}.o_assessmentitem div.orderInteraction ul li span.ui-icon{position:absolute;margin-left:-1.3em}.o_assessmentitem div.orderInteraction ul.horizontal li{float:left;width:auto}.o_assessmentitem div.orderInteraction br{clear:both}.o_assessmentitem .hottext{font-weight:bold}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em}.o_assessmentitem_wrapper #itemBody{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type,.o_assessmentitem_wrapper .modalFeedback .o_cal .fc-header-title h2:first-of-type,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback h2:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4,.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h2{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d9534f}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#5cb85c}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f0ad4e}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#5bc0de;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}#itemBody{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#5cb85c}.matchInteraction div.bar_red{background-color:#d9534f}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#5cb85c}.o_assessmentitem div.failure{background-color:#f0ad4e}.o_assessmentitem div.error{background-color:#d9534f}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:10px;border-bottom:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#337ab7;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#23527c;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f0ad4e}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#5bc0de}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}div.o_wiki_wrapper a.wikiimg{text-decoration:none;color:inherit;font-weight:inherit}div.o_wiki_wrapper div.imgcaption{padding:0.3em 0em 0.2em 0.3em}div.o_wiki_wrapper div.imgleft{clear:left;float:left;margin:0.3em 0.3em 0.3em 0em}div.o_wiki_wrapper div.imgright{clear:right;float:right;margin:0.3em 0em 0.3em 0.3em}div.o_wiki_wrapper div.imgcenter{clear:both;overflow:hidden;text-align:center;margin:0.3em 0em 0.3em 0em}div.o_wiki_wrapper div.imgthumb{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper table.gallery{border:1px solid #ccc;margin:2px;padding:2px;background-color:white}div.o_wiki_wrapper table.gallery tr{vertical-align:middle}div.o_wiki_wrapper table.gallery td{background-color:#f9f9f9;border:solid 2px white;text-align:center;vertical-align:middle;width:150px}div.o_wiki_wrapper img.gallery{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper a.edit{font-style:italic;color:red}div.o_wiki_wrapper a.externallink:before{padding-right:2px}div.o_wiki_wrapper a.externallink:before:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}.o_ep_icon_map:before{content:""}.o_ep_icon_collection:before{content:""}.o_ep_icon_page:before{content:""}.o_ep_icon_struct:before{content:""}.o_ep_icon_liveblog:before{content:"ï‚¡"}.o_artefact_closed:before{content:""}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.o_eportfolio_page .o_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.panel-footer .o_ep_options{display:inline-block}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ECF69A;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99E44D;background:#99E44D -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99E44D), to(#CBF1A5));background:#99E44D -moz-linear-gradient(43% 71% 101deg, #CBF1A5, #99E44D);background:#99E44D -o-linear-gradient(#99E44D, #CBF1A5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99E44D', EndColorStr='#CBF1A5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#DFF0C1;background:#DFF0C1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DFF0C1), to(#A0D346));background:#DFF0C1 -moz-linear-gradient(43% 71% 101deg, #A0D346, #DFF0C1);background:#DFF0C1 -o-linear-gradient(#DFF0C1, #A0D346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DFF0C1', EndColorStr='#A0D346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#D7DBB5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#FFBA71;background:#FFBA71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFBA71), to(#FFBA99));background:#FFBA71 -moz-linear-gradient(43% 71% 101deg, #FFBA99, #FFBA71);background:#FFBA71 -o-linear-gradient(#FFBA71, #FFBA99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFBA71', EndColorStr='#FFBA99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#FF9772;background:#FF9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FF9772), to(#FF9780));background:#FF9772 -moz-linear-gradient(43% 71% 101deg, #FF9780, #FF9772);background:#FF9772 -o-linear-gradient(#FF9772, #FF9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF9772', EndColorStr='#FF9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#E8AFBB;background:#E8AFBB -webkit-gradient(linear, 37% 20%, 53% 100%, from(#E8AFBB), to(#E8AFA0));background:#E8AFBB -moz-linear-gradient(43% 71% 101deg, #E8AFA0, #E8AFBB);background:#E8AFBB -o-linear-gradient(#E8AFBB, #E8AFA0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#E8AFBB', EndColorStr='#E8AFA0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#FFA800;background:#FFA800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFA800), to(#FFAF00));background:#FFA800 -moz-linear-gradient(43% 71% 101deg, #FFAF00, #FFA800);background:#FFA800 -o-linear-gradient(#FFA800, #FFAF00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFA800', EndColorStr='#FFAF00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00D2F8;background:#00D2F8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00D2F8), to(#4A9EAD));background:#00D2F8 -moz-linear-gradient(43% 71% 101deg, #4A9EAD, #00D2F8);background:#00D2F8 -o-linear-gradient(#00D2F8, #4A9EAD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00D2F8', EndColorStr='#4A9EAD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#C4F6FF;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#B3E2F7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#DEE7F7;background:#DEE7F7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DEE7F7), to(#C1E9FD));background:#DEE7F7 -moz-linear-gradient(43% 71% 101deg, #C1E9FD, #DEE7F7);background:#DEE7F7 -o-linear-gradient(#DEE7F7, #C1E9FD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DEE7F7', EndColorStr='#C1E9FD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_portfolio div#o_main_toolbar.o_toolbar{margin-top:0px}.o_section_lead,.o_page_lead,.o_assignment_lead{padding:10px 10px;margin-bottom:10px;background-color:#f2f2f2;border-radius:3px;border:1px #d9d9d9 solid}.o_section_lead.o_assignment_2_instantiate{border-radius:3px 3px 0px 0px;border-bottom:none;padding-bottom:1px;margin-bottom:0px}.o_assignment_2_instantiate{padding:10px 10px 0px 10px;background-color:#f2f2f2;border-left:1px #d9d9d9 solid;border-right:1px #d9d9d9 solid}.o_assignment_2_instantiate.last{padding-bottom:10px;border-bottom:1px #d9d9d9 solid;border-radius:0px 0px 3px 3px}.o_page_lead{padding:20px}.o_page_lead .o_page_summary{font-size:18px}.o_page_lead .o_media.o_media_right,.o_page_lead .o_media.o_media_right_large{float:right;margin-left:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_left_large{float:left;margin-right:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_right{max-height:200px;max-width:50%}.o_page_lead .o_media.o_media_left img,.o_page_lead .o_media.o_media_right img{max-height:200px}.o_page_lead .o_media.o_media_right_large,.o_page_lead .o_media.o_media_left_large{max-height:300px;max-width:75%}.o_page_lead .o_media.o_media_right_large img,.o_page_lead .o_media.o_media_left_large img{max-height:300px}.o_page_lead .o_media.o_desc_empty{max-height:300px;text-align:center}.o_page_lead .o_media.o_desc_empty img{max-height:300px}.o_page_lead .o_media img{border-radius:3px;border:1px #d9d9d9 solid;background:#fff}.o_page_lead .o_portfolio_status_block{border-top:1px solid #d9d9d9;padding-top:1em;margin-bottom:-1em}.o_page_lead .o_portfolio_status{display:inline-block;padding-right:2em}.o_page_lead.o_block_imagebg .o_portfolio_status{padding:2px;background-color:rgba(255,255,255,0.8)}.o_page_assignment{font-size:12px}.o_page_assignment.o_togglebox_wrapper div.o_togglebox_content{margin:10px 0 20px 0;padding:20px;border-left:3px solid #d9534f;background-color:#f2dede}.o_page_assignment .o_page_assignement_info{position:relative;left:-1em}.o_portfolio_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry{position:relative;display:inline-block;height:230px;width:400px;vertical-align:top;margin-right:10px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry ul{padding-left:2em}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul{margin:0;padding:0;list-style-type:none}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul li{padding:2px}.o_binder.o_portfolio_assignments .panel-heading,.o_binder.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.panel-default.o_portfolio_assignments .panel-heading,.panel-default.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_meta_wrapper,.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_summary{padding-left:10px}.o_portfolio_page_summary .o_media.o_media_right,.o_portfolio_page_summary .o_media.o_media_right_large{float:right;margin-left:0.5em;margin-bottom:0.5em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_left_large{float:left;margin-right:0.5em;margin-bottom:0.5em}.o_rendertype_classic .o_pf_page,.o_rendertype_classic .o_pf_assignment{padding-left:1em}.o_portfolio_timeline .o_timeline_up{text-align:center}.o_portfolio_timeline .o_timeline_down{text-align:center}.o_portfolio_timeline .axis path,.o_portfolio_timeline .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_portfolio_timeline .x.axis line,.o_portfolio_timeline .x.axis path{display:none}.o_portfolio_timeline path.o_timeline_curve{fill:none;stroke:#ccc;shape-rendering:crispEdges}.o_portfolio_timeline .y.axis .tick line,.o_portfolio_timeline .y.axis path.domain{stroke:#ddd}.o_portfolio_timeline text{fill:#888;stroke:none;font-size:10px}.o_portfolio_timeline .dot.o_pf_status_draft{fill:#f0ad4e}.o_portfolio_timeline .dot.o_pf_status_published{fill:#337ab7}.o_portfolio_timeline .dot.o_pf_status_inrevision{fill:#d9534f}.o_portfolio_timeline .dot.o_pf_status_closed{fill:#5cb85c}.o_portfolio_timeline .dot.o_pf_status_deleted{fill:#000}.o_portfolio_title_help_helper{display:inline-block;float:right;position:relative;top:1em;right:1em}.o_pf_comments{margin-top:2em}.o_pf_content .o_cit,.o_pf_content .o_file{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_forum{border:1px #f8f8f8 solid;padding:10px;border-radius:10px}.o_pf_content .o_image,.o_pf_content .o_video{padding:10px;text-align:center;width:100%}.o_pf_content .o_image img,.o_pf_content .o_video img{border:1px #f8f8f8 solid;border-radius:10px}.o_pf_content_editor .o_toolbar{border:none}.o_pf_content_editor .o_page_part{border:2px solid transparent}.o_pf_content_editor .o_page_part:hover{border:2px dotted #78acd9}.o_pf_content_editor .o_page_fragment_edit{position:relative}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above{height:25px;width:100%;background:#78acd9;position:absolute;z-index:3;left:0;top:-25px;box-shadow:3px -8px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_add_above{position:absolute;left:0;top:-25px;height:25px;border-left:2px dashed #78acd9;border-top:2px dashed #78acd9;border-right:2px dashed #78acd9;border-radius:10px 10px 0 0;box-shadow:0 -5px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_sel_add_element_above{display:inline-block;padding:5px 5px 0 5px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above{padding-right:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above .o_page_type{display:none}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a{float:right;color:#fff;padding-right:1em}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd{position:absolute;z-index:4;top:0;right:0;width:25px;height:100%;background:#78acd9}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a{position:absolute;display:inline-block;width:25px;height:25px;line-height:25px;text-align:center;vertical-align:middle;color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_up_element{z-index:4;top:-25px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_down_element{bottom:0}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit{padding-right:25px;border:2px solid #78acd9;box-shadow:5px 5px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit:hover{border:2px solid #78acd9}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar{position:absolute;z-index:5;left:5px;top:-25px;display:inline-block;height:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a{color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_title .o_page_edit_toolbar li{font-weight:bold}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_richtext_mce textarea{border:0}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below{position:absolute;z-index:3;left:0;bottom:-25px;height:25px;border-left:2px dashed #78acd9;border-bottom:2px dashed #78acd9;border-right:2px dashed #78acd9;border-radius:0 0 10px 10px;box-shadow:3px 8px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below .o_sel_add_element_below{display:inline-block;padding:0 5px 5px 5px}.o_pf_content_editor .o_pf_add_contents{margin-top:30px}.o_portfolio_add_callout a span{display:none}.o_portfolio_add_callout ul.list-inline{margin-bottom:0}.o_portfolio_image_options{clear:both;width:300px;padding:5px}.o_binder_page_listing .o_portfolio_page_links{background-color:#f8f8f8;border-radius:4px}.o_binder_page_listing .o_portfolio_page_links .o_portfolio_comment{float:right}.o_portfolio_toc{padding-bottom:6em}.o_portfolio_toc .o_portfolio_section_meta{font-size:80%;color:#777;position:relative;top:-15px}.o_portfolio_toc .o_section{position:relative}.o_portfolio_toc .o_section .o_header_with_buttons h4,.o_portfolio_toc .o_section .o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_portfolio_toc .o_section .o_header_with_buttons h2{padding-right:0.5em}.o_portfolio_toc .o_section_actions{position:absolute;top:0;right:0}.o_portfolio_toc .o_section_actions .o_section_move_up_and_down{display:inline-block}.o_portfolio_toc .o_section_actions .o_section_dropdown{display:inline-block;position:relative;top:-0.5em;padding-left:0.5em}.o_portfolio_toc ul>li>ul{padding-left:1.5em}.o_portfolio_content .o_portfolio_toc.o_portfolio_toc_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_page_meta_wrapper{background-position:left top;background-repeat:no-repeat}.o_portfolio_rights table .o_portfolio_section td:first-child{padding-left:1.5em}.o_portfolio_rights table .o_portfolio_page td:first-child{padding-left:2.5em}.o_portfolio_publication table{padding-bottom:10px}.o_portfolio_publication table td{padding:5px 5px 5px 0}.o_portfolio_publication .o_portfolio_ac{font-size:90%}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(2){width:200px;white-space:nowrap}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(3){width:40px;white-space:nowrap}.o_portfolio_publication ul ul{margin-left:2em;margin-bottom:5px}.o_portfolio_publication ul li{background:#fbfbfb;padding:3px;margin-bottom:2px}.o_portfolio_publication ul li li{background:#f2f2f2}.o_portfolio_publication ul li li li{background:#eee}.o_portfolio_publication ul li li .table{margin-bottom:0px}@media (max-width: 767px){.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:100%;float:none}.o_portfolio_content .o_sel_timeline_off,.o_portfolio_content .o_sel_timeline_on,.o_portfolio_content .o_portfolio_timeline{display:none}.o_portfolio_content .o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline{width:100%;float:none}}.o_portfolio_media_browser .o_portfolio_medias{position:relative;margin-bottom:20px;margin-top:20px}.o_portfolio_media_browser .o_portfolio_medias:before,.o_portfolio_media_browser .o_portfolio_medias:after{content:" ";display:table}.o_portfolio_media_browser .o_portfolio_medias:after{clear:both}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media:last-child{margin-right:0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{border:1px solid #337ab7;position:relative;height:180px;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon span.o_visual_not_available{background-image:none}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:6em;text-align:center;color:#eee;line-height:140px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #337ab7;border-top:0;background-color:rgba(255,255,255,0.8)}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a{display:block;color:#337ab7;font-family:inherit;font-weight:inherit}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover{color:#286090}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 10px 10px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}@media (max-width: 767px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 1px 1px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}.o_evaluation_form .o_evaluation_step_labels{margin-bottom:8px}.o_evaluation_form .o_evaluation_step_labels div,.o_evaluation_form .o_evaluation_step_labels span{display:inline-block;text-align:center}.o_evaluation_form .o_slider{margin-bottom:8px}.o_evaluation_form .o_slider.hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels{position:relative}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:first-child{position:absolute;left:0px;text-align:left}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div{display:inline-block;text-align:center}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:last-child{position:absolute;right:0px;text-align:right}.o_evaluation_form .o_evaluation_discrete_radio .o_slider input[type='radio']{padding:0;margin:0;position:relative}.o_evaluation_form .o_evaluation_discrete_radio .o_slider label{padding:0;margin:0;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps div.radio{display:inline-block;text-align:center}.o_evaluation_form .o_slider .ui-slider.ui-slider-horizontal.ui-widget-content{margin-top:0.3em}.o_evaluation_form .o_evaluation_left_label{text-align:right}.o_evaluation_form .o_evaluation_right_label{text-align:left}.o_evaluation_form .o_evaluation_textinput .o_evaluation_legend{padding-left:0.5em;margin-bottom:0.5em}@media (max-width: 768px){.o_evaluation_form .o_evaluation_left_label{text-align:left}.o_evaluation_form .o_evaluation_right_label{text-align:right}}.o_slider_overview{width:100%;height:20px;position:relative}.o_slider_overview .o_slider_overview_line{top:5px;left:0px;position:absolute;width:100%;height:11px;border:1px solid #999;border-radius:4px}.o_slider_overview .o_slider_overview_point{position:absolute;width:10px;height:10px;background-color:#337ab7}.o_evaluation_editor_form{margin:10px 10px 0 10px}.o_evaluation_editor_form .o_slider_editor{margin-top:10px;position:relative}.o_evaluation_editor_form .o_evaluation_step_labels{display:inline-block}.o_evaluation_editor_form .o_evaluation_step_labels input{width:100%}.o_evaluation_editor_form .o_slider_editor_delete{padding-right:48px}.o_evaluation_editor_form .o_slider_editor_delete .o_slider_editor_delete_button{position:absolute;right:15px}.o_cit{position:relative;margin:10px 0}.o_cit blockquote.o_quote{color:#555;font-size:18px;margin-top:6px;padding:0 12px}.o_cit blockquote.o_quote p:last-child:after{content:'1)';top:-0.5em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}.o_cit .o_cit_bibinfo{font-size:90%;margin-left:1em;position:relative}.o_cit .o_cit_bibinfo>div:first-child:before{content:'1)';position:absolute;top:0.5em;left:-1em;font-size:75%;line-height:0;vertical-align:baseline}.o_cit .title,.o_cit .url,.o_cit .authors,.o_cit .pages,.o_cit .date,.o_cit .dateAdded,.o_cit .place,.o_cit .institution,.o_cit .issue,.o_cit .publisher,.o_cit .publicationTitle,.o_cit .edition,.o_cit .series,.o_cit .volume{margin-right:0.5em}.o_cit .title{font-style:italic}.o_cit .publicationTitle{color:black}.o_cit .links{padding-left:2em}.o_cit .notes{padding-left:2em;color:grey}.o_cit .note{font-style:italic}.o_cit .note p:first-child{margin-top:0}.o_cit .note p:first-child{margin-bottom:0}.o_cit .listing.web .item{padding-left:0;text-indent:0}.o_cit .listing.web .title{display:block;font-weight:bold;font-style:normal}.o_cit .listing.web .publicationTitle{display:block;font-style:italic}.o_cit .listing.web .url{display:block}.o_cit .listing.web .links{padding-left:0}.o_cit .listing.web .notes{padding-left:0}.o_cit .general-info{border-top:1px solid #eee;padding-top:30px;margin-top:30px}.o_cit .copyright{display:none}@media print{.cit{background-image:none;padding-top:0;max-width:100%}.cit #styles,.cit #refreshContainer{display:none}.cit #general-info a:after{content:" (" attr(href) ") ";font-size:0.8em;font-weight:normal}.cit #copyright{display:block;margin-top:30px}}.o_video_poster{position:relative;display:inline-block;width:400px;max-width:100%;height:225px;background-size:cover;background-repeat:no-repeat;border:1px solid #eee}.o_video_poster_select{text-align:center}.o_video_poster_select .o_video_poster{margin:5px}.o_video_poster_select .o_video_poster a{position:absolute;left:0;top:0;width:100%;height:100%}.o_video_poster_select .o_video_poster a span{position:absolute;bottom:0;width:100%;display:block;line-height:3em;background:#f8f8f8;opacity:0.8}.o_video_poster_select .o_video_poster a:hover{border:1px solid #bbb}.o_video_poster_select .o_video_poster a:hover span{opacity:0.9}.o_video_peekview{text-align:center}.o_video_listing .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_video_listing .o_video_entry{position:relative;display:inline-block;height:230px;width:250px;vertical-align:top;margin-right:10px}.o_video_listing .o_video_poster{width:250px;max-width:100%;height:140px;border:1px solid #eee}.o_video_listing .o_timecode{position:absolute;bottom:2px;right:3px;padding:3px 4px;background:#333;color:#fff;font-size:12px;line-height:12px}.o_video_listing .o_meta{padding:2px;font-size:11px}.o_video_listing .o_meta h5{font-size:14px;margin-top:0;margin-bottom:5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_video_listing .o_date{margin-left:10px;display:inline-block}.o_video_listing .o_date:before{content:'\002022';margin-right:10px;display:inline-block}.o_video_run .o_author{margin-top:0.5em;margin-bottom:1em;line-height:normal;font-size:90%;color:#3c763d}.o_video_run .o_ratings_and_comments{margin-top:2em;border-top:1px solid #eee;padding-top:1em}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector{visibility:visible !important;width:160px}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label{font-weight:normal;width:140px}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label:hover{color:#eee}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label .type{display:none}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input{visibility:hidden;margin:0;width:0}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input:checked+label{color:#d9534f}.mejs-controls .mejs-captions-button .mejs-captions-selector{right:-26px}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label{font-weight:normal}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label:hover{color:#eee}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label .type{display:none}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input{visibility:hidden;margin:0;width:0}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input:checked+label{color:#d9534f}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label{font-weight:normal;font-size:10px}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title,.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.o_userbulk_changedcell{font-style:italic;font-weight:bold}body.o_dmz{background:transparent}body.o_dmz #o_bg{position:absolute;top:0;left:0;width:100%;height:100%;border-top:50px solid transparent;border-bottom:70px solid transparent;background:url("../light/images/learn-bg.jpg");background-size:cover;background-position:center center;background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=1 )}body.o_dmz #o_bg:after{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to right, rgba(255,255,255,0.1) 0.2%, rgba(255,255,255,0.6) 60%, rgba(255,255,255,0.8) 100%);background-size:cover;background-position:center center;background-repeat:no-repeat}body.o_dmz #o_toplink{display:none}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-bottom:20px;padding-left:10%;padding-right:10%;text-align:right}.o_login .o_login_intro{padding-left:10%}.o_login .o_login_intro h1{margin-bottom:40px;color:#337ab7}.o_login .o_login_intro .lead{color:#333}.o_login .o_login_intro .lead h1,.o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h3,.o_login .o_login_intro .lead h4,.o_login .o_login_intro .lead .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h5{margin-bottom:20px;color:#337ab7}.o_login .o_login_messages,.o_login .o_login_box{display:inline-block;width:400px;text-align:left}.o_login .o_login_messages .o_infomessage_wrapper{background:rgba(255,255,255,0.5);border:1px solid transparent;border-radius:4px;padding:6px 12px}.o_login .o_login_messages .o_infomessage_wrapper .o_info,.o_login .o_login_messages .o_infomessage_wrapper .o_warning,.o_login .o_login_messages .o_infomessage_wrapper .o_note{margin:0}.o_login .o_login_box{padding-top:10px}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_providers .o_icon_provider_olat{font-size:1em}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_form .o_form .o_desc{margin:0 0 30px 0;padding:0;border-left:0;background-color:transparent}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#5bc0de;border-color:#46b8da;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register.focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled.focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled].focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register.focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#5bc0de;border-color:#46b8da}.o_login .o_login_register .badge{color:#5bc0de;background-color:#fff}.o_login .o_login_register small{font-size:14px}.o_login .o_login_social{position:relative;padding:10px 12px}.o_login .o_login_social li{padding:10px 12px}.o_login .o_login_social li>a{display:block;line-height:2em;text-align:center;font-size:18px;border-radius:4px;padding:10px 12px}.o_login .o_login_social .btn-default.o_sel_auth_facebook{color:#fff;background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{color:#fff;background-color:#37538d;border-color:#2d4374}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled],.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook .badge{color:#4568b2;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_twitter{color:#fff;background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{color:#fff;background-color:#00b4f8;border-color:#009ad4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled],.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter .badge{color:#2cc5ff;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_google{color:#fff;background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.focus,.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{color:#fff;background-color:#d83825;border-color:#ba3120}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google.disabled,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled],.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google .badge{color:#e15f4f;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{color:#fff;background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{color:#fff;background-color:#015e8a;border-color:#014667}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled],.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin .badge{color:#0181bd;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_adfs{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled],.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_adfs .badge{color:#337ab7;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled],.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active{background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect .badge{color:#337ab7;background-color:#fff}@media (max-width: 767px){body.o_dmz #o_bg{background:none;display:none}.o_login{padding:0}.o_login .o_login_intro{padding:0;text-align:left}.o_login .o_login_box_wrapper{text-align:center;padding:0}.o_login .o_login_box{padding-left:0;padding-right:0}.o_login .o_login_box .o_login_providers,.o_login .o_login_box .o_login_provider{-webkit-box-shadow:none;box-shadow:none}.o_login .o_login_messages,.o_login .o_login_box{width:100%;display:block}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px;margin-top:10px}.o_portlet{position:relative;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library_icon:before{content:""}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.o_library_overview .o_library_newest_files ul li{float:left;margin-right:15px}.o_library_item{margin-bottom:10px;position:relative}.o_library_item .o_library_visual,.o_library_item .o_library_extra,.o_library_item .o_library_meta{margin-top:15px}.o_library_item .o_library_visual{float:left;background-color:#fff;border-radius:4px;border:1px solid #ddd}.o_library_item .o_library_visual .o_thumbnail_available,.o_library_item .o_library_visual .o_thumbnail_unavailable{background-size:146px auto;width:150px !important;height:150px !important;background-repeat:no-repeat;background-position:50% 50%}.o_library_item .o_library_visual .o_thumbnail_available:before,.o_library_item .o_library_visual .o_thumbnail_unavailable:before{content:none}.o_library_item .o_library_visual .o_thumbnail_available{background-size:146px auto}.o_library_item .o_library_visual .o_thumbnail_unavailable{display:none}.o_library_item .o_library_extra{float:right;width:200px}.o_library_item .o_library_meta{clear:both}.o_library_item .o_library_meta .o_library_desc{padding-bottom:10px}.o_library_item .o_library_meta small{display:block;word-wrap:break-word}.o_library_item h4,.o_library_item .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal}.o_library_item .btn{display:block;margin-bottom:0.5em}.o_library_item .o_comments{display:inline-block}.o_library_item .table{table-layout:fixed;word-wrap:break-word;margin-bottom:0}.o_library_item p.o_library_show_more{text-align:right;margin:0;padding-top:20px}.o_library_item .o_library_more{padding-top:20px;display:none}.o_library_folder{margin-top:-20px}.o_library .o_ratings_and_comments .o_rating_title,.o_library .o_ratings_and_comments .o_rating_explanation{display:none}@media (min-width: 768px){.o_library_item .o_library_meta{clear:none;margin-left:150px;margin-right:200px;padding:0 10px}.o_library_item .o_library_more{display:none}.o_library_item .o_library_more table tbody{vertical-align:top}.o_library_item .o_library_more table tr,.o_library_item .o_library_more table th,.o_library_item .o_library_more table td{display:inline-block}.o_library_item .o_library_more table tr{width:49%}.o_library_item .o_library_more table th{width:30%}.o_library_item .o_library_more table td{width:70%}}.o_library_item_compact .o_library_extra{width:auto}.o_library_item_compact .o_library_meta{padding:0 10px 0 0;margin:0;overflow:hidden}.o_library_item_compact .btn{display:inline-block}.o_library_item_compact h4,.o_library_item_compact .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item_compact h2{overflow:hidden;margin-right:70px}.o_library_item_compact h4 a,.o_library_item_compact .o_cal .fc-header-title h2 a,.o_cal .fc-header-title .o_library_item_compact h2 a{text-overflow:ellipsis;white-space:nowrap}.o_library_item_compact p.o_library_show_more{padding:20px;position:absolute;top:0;right:0}span.o_translation_i18nitem{position:relative !important}span.o_translation_i18nitem a.o_translation_i18nitem_launcher{position:absolute !important;z-index:100 !important;width:18px !important;height:20px !important;top:0 !important;left:5px !important;background:#fff;border:1px solid #337ab7 !important;border-radius:3px;text-align:center;padding:0 !important}.o_user_infos{position:relative}.o_user_infos .o_user_portrait{position:absolute;top:0;left:15px;width:100px;height:100px}.o_user_infos .o_user_infos_inner{margin:0 30px 0 100px}.o_user_infos .o_user_infos_inner table{margin:0 30px 15px 30px}div.o_skype_button{display:inline-block}div.o_skype_button p{margin:0 0 0 0}div.o_skype_button p a img{margin:0 !important;vertical-align:middle !important}.o_members_pagination{text-align:center}.o_bcard_logo{margin-left:10px;height:66px}.o_bcard_title_with_logo{clear:both;padding:20px 0 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:66px}.o_visitingcard .o_icon_visitingcard{display:none}.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:66px;height:66px;margin-right:10px}@media (max-width: 767px){.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:50px;height:50px;margin:5px 5px 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:50px}.o_visitingcard_logo,.o_bcard_logo{height:50px;margin:5px 0 0 5px}.o_visitingcard_logo img,.o_bcard_logo img{position:relative;transform:scale(.75758);top:-8px}}@media (max-width: 414px){.o_visitingcard_logo img{max-width:260px}}@media (max-width: 375px){.o_visitingcard_logo img{max-width:220px}}@media (max-width: 320px){.o_visitingcard_logo img{max-width:180px}.o_bcard_logo img{max-width:150px}}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-title{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"ï€" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close span{display:none}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important;float:right}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px;overflow:auto;background:white !important}.ui-dialog .ui-dialog-titlebar{padding:4px 7px 4px 7px;background-color:#eee !important}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}.ui-slider.ui-slider-horizontal.ui-widget-content{border-color:#999}.ui-slider.ui-slider-horizontal.ui-widget-content.ui-state-disabled{opacity:0.65}.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:1px solid #337ab7;background-image:none;background-color:#337ab7}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"ï¡";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"ï ";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #2e6da4;background:#337ab7;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal}.o_richtext_mce_without_path .mce-statusbar{border:none}.o_richtext_mce_without_path .mce-path{display:none !important}.o_richtext_mce_without_path .mce-menubtn.mce-fixed-width span{width:auto}i.mce-ico.mce-i-media,i.mce-ico.mce-i-movie,i.mce-ico.mce-i-help,i.mce-ico.mce-i-gaptext,i.mce-ico.mce-i-gapnumerical,i.mce-ico.mce-i-hottext,i.mce-ico.mce-i-edit{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}i.mce-ico.mce-i-media:before{content:""}i.mce-ico.mce-i-movie:before{content:""}i.mce-ico.mce-i-gaptext:before{content:"ï…"}i.mce-ico.mce-i-gapnumerical:before{content:""}i.mce-ico.mce-i-hottext:before{content:"ï"}i.mce-ico.mce-i-math:before{content:'\03A3'}i.mce-ico.mce-i-edit:before{content:"ï„"}i.mce-ico.mce-i-help{width:9px;height:9px;padding-top:1px}i.mce-ico.mce-i-help:before{content:"ï™";color:white}.mce-tabs span.o_chelp_wrapper{float:right;margin:5px}div.o_table_search span.twitter-typeahead{display:table-cell;padding-top:3px}.tag.label.label-info{margin-right:3px}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{background:#fff;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important}.progress{-webkit-print-color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}body{margin:0}}.o_highscore .o_position{text-align:center;font-size:1.2em;font-weight:bold}.o_highscore .o_position h2{font-size:3em;font-weight:700;line-height:1.2em}@media screen and (-webkit-min-device-pixel-ratio: 0){.o_highscore .o_position h2{background:linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline}.o_highscore .o_position h2:after{content:"\A";white-space:pre}}.o_highscore .o_position_relative{font-size:1em;font-weight:normal}.o_highscore .o_podium{position:relative;vertical-align:bottom;height:300px;margin-bottom:50px}.o_highscore .o_rank{width:30%;position:absolute;bottom:0;text-shadow:rgba(102,102,102,0.5) 0 -1px 0,rgba(255,255,255,0.6) 0 2px 1px}.o_highscore .o_rank:before{position:absolute;bottom:0;left:0;width:100%;text-align:center}.o_highscore .o_rank .o_name{position:absolute;top:100%;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1em;text-shadow:none}.o_highscore .o_rank .o_score{color:#777;font-size:90%;width:100%;text-align:center;position:absolute;top:-20px;text-shadow:none}.o_highscore .o_rank .o_singleportrait{position:absolute;width:100%;text-align:center;top:-125px}.o_highscore .o_rank .o_rank_portraits{position:relative;left:0;top:-210px;height:180px;width:200px;text-align:center;vertical-align:bottom;display:table-cell}.o_highscore .o_rank .o_rank_portraits ul{display:inline-block}.o_highscore .o_rank .o_rank_portraits .o_portrait{margin:5px}.o_highscore .o_first{height:150px;left:30%;border:1px solid #d9d9d9;border-top-left-radius:4px;border-top-right-radius:4px;background:gold;background:-moz-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:-webkit-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 )}.o_highscore .o_first:before{content:"1";font-size:700%;line-height:150px;color:#666}.o_highscore .o_second{height:100px;left:0;background:silver;background:-moz-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-left-radius:4px}.o_highscore .o_second:before{content:"2";font-size:500%;line-height:100px;color:#666}.o_highscore .o_third{height:80px;left:60%;background:#cd7f32;background:-moz-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:-webkit-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-right:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-right-radius:4px}.o_highscore .o_third:before{content:"3";font-size:300%;line-height:80px;color:#666}.o_highscore .o_histogram{position:relative;bottom:-40px;margin-bottom:40px}.o_highscore .o_histogram .d3chart{width:100%;padding-top:50px;height:300px}.o_highscore .o_histogram .d3chart text{fill:#888}.o_highscore .o_histogram .d3chart .axis path,.o_highscore .o_histogram .d3chart .axis line{stroke:#888}.o_highscore .o_histogram .d3chart .o_myself{fill:#337ab7}.o_highscore .o_histogram .d3chart .o_myself:hover{fill:#5094ce}.o_highscore .o_histogram .d3chart .o_other{fill:#777}.o_highscore .o_histogram .d3chart .o_other:hover{fill:#919191}.o_highscore .o_histogram .d3chart .o_empty{fill:#000}.o_listing .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_listing table th:nth-of-type(1),.o_listing table th :nth-of-type(2){width:5em}body.o_browser_ie7 #o_offcanvas_right,body.o_browser_ie8 #o_offcanvas_right{right:0px} +**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail,.o_form .o_filepreview img,.o_feed .o_media{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,.o_cal .fc-header-title h2,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.o_cal .fc-header-title h2,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.o_cal .fc-header-title h2,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#fafafa;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn,.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,.form-group-sm .form-control,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn,.form-group-sm .form-control{height:auto}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn,.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,.form-group-lg .form-control,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn,.form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group,.o_navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control,.o_navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static,.o_navbar-form .form-control-static{display:inline-block}.form-inline .input-group,.o_navbar-form .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.o_navbar-form .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.o_navbar-form .input-group .input-group-btn,.form-inline .input-group .form-control,.o_navbar-form .input-group .form-control{width:auto}.form-inline .input-group>.form-control,.o_navbar-form .input-group>.form-control{width:100%}.form-inline .control-label,.o_navbar-form .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.o_navbar-form .radio,.form-inline .checkbox,.o_navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.o_navbar-form .radio label,.form-inline .checkbox label,.o_navbar-form .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.o_navbar-form .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"],.o_navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback,.o_navbar-form .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron,.o_repo_details .o_lead{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{color:inherit}.jumbotron p,.o_repo_details .o_lead p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr,.o_repo_details .o_lead>hr{border-top-color:#d5d5d5}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{border-radius:6px}.jumbotron .container,.o_repo_details .o_lead .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron,.o_repo_details .o_lead{padding:48px 0}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{padding-left:60px;padding-right:60px}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4,.alert .o_cal .fc-header-title h2,.o_cal .fc-header-title .alert h2{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table,.panel-collapse>.table,.panel-collapse>.table-responsive>.table,.panel-collapse>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption,.panel-collapse>.table caption,.panel-collapse>.table-responsive>.table caption,.panel-collapse>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel-collapse>.table:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child,.panel-collapse>.table:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,.panel-collapse>.panel-body+.table,.panel-collapse>.panel-body+.table-responsive,.panel-collapse>.table+.panel-body,.panel-collapse>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.panel-collapse>.table>tbody:first-child>tr:first-child th,.panel-collapse>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,.panel-collapse>.table-bordered,.panel-collapse>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.panel-collapse>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:1.42857;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.panel .panel-heading[data-toggle="collapse"]{cursor:pointer}#o_ajax_busy_backdrop{bottom:0;z-index:1020}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}.btn.btn-primary.o_disabled{color:#fff !important}body .progress-bar[aria-valuenow="1"],body .progress-bar[aria-valuenow="2"]{min-width:1px}td.text-left>div.form-inline>label.checkbox-inline>input[type='checkbox'],td.text-left>div.o_navbar-form>label.checkbox-inline>input[type='checkbox']{position:relative}@-moz-document url-prefix(){fieldset{display:table-cell}}@font-face{font-family:'openolat';src:url("../light/fonts/openolat/openolat.eot?4yacgg");src:url("../light/fonts/openolat/openolat.eot?#iefix4yacgg") format("embedded-opentype"),url("../light/fonts/openolat/openolat.woff?4yacgg") format("woff"),url("../light/fonts/openolat/openolat.ttf?4yacgg") format("truetype"),url("../light/fonts/openolat/openolat.svg?4yacgg#openolat") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../../font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../../font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.28571em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.o_icon-li.o_icon-lg{left:-1.85714em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.o_icon-pull-left{float:left}.o_icon-pull-right{float:right}.o_icon.o_icon-pull-left{margin-right:.3em}.o_icon.o_icon-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.o_icon-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .o_icon-rotate-90,:root .o_icon-rotate-180,:root .o_icon-rotate-270,:root .o_icon-flip-horizontal,:root .o_icon-flip-vertical{filter:none}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_accepted:before{content:"ï…¤"}.o_icon_accessibility:before{content:""}.o_icon_actions:before{content:"ï‚…"}.o_icon_add_html:before{content:"ï„¡"}.o_icon_archive_tool:before{content:""}.o_icon_assessment_mode:before{content:"ï„"}.o_icon_assessment_tool:before{content:"ï‚‘"}.o_icon_assignment:before{content:"";color:#d9534f}.o_icon_attempt_limit:before{content:""}.o_icon_accept:before{content:"";color:#5cb85c}.o_icon_add:before{content:"ï•"}.o_icon_add_member:before{content:""}.o_icon_add_search:before{content:""}.o_icon_audio:before{content:""}.o_icon_back:before{content:"ï“"}.o_icon_back_history:before{content:""}.o_icon_banned:before{content:"";color:#d9534f}.o_icon_bold:before{content:""}.o_icon_booking:before{content:"ïº"}.o_icon_bookmark:before{content:"";color:#bc2d0c}.o_icon_bookmark_add:before{content:"ï‚—"}.o_icon_bookmark_header:before{content:""}.o_icon_browse:before{content:""}.o_icon_brush:before{content:""}.o_icon_browsercheck:before{content:"ï…¤"}.o_icon_busy:before{content:"ï„"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_enabled:before{content:"ï†"}.o_icon_calendar_disabled:before{content:"ï‚–"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_sync:before{content:""}.o_icon_caret:before{content:""}.o_icon_caret_right:before{content:""}.o_icon_catalog:before{content:""}.o_icon_catalog_sub:before{content:"ï»"}.o_icon_certificate:before{content:"ï‚£"}.o_icon_chat:before{content:""}.o_icon_check:before{content:""}.o_icon_check_off:before{content:"ï‚–"}.o_icon_check_on:before{content:"ï†"}.o_icon_checkbox:before{content:"ï‚–"}.o_icon_checkbox_checked:before{content:"ï…Š"}.o_icon_circle:before{content:""}.o_icon_circle_color:before{content:"ï„‘"}.o_icon_citation:before{content:"ï„"}.o_icon_cleanup:before{content:""}.o_icon_clear_all:before{content:""}.o_icon_close:before{content:"ï€"}.o_icon_close_resource:before{content:""}.o_icon_close_tab:before{content:"ï€"}.o_icon_close_tool:before{content:"ï€"}.o_icon_close_tree:before{content:""}.o_icon_close_togglebox:before,.o_togglebox_wrapper .o_opener.o_in i:before{content:""}.o_icon_code:before{content:"ï„¡"}.o_icon_color_picker:before{content:"ïƒ"}.o_icon_copy:before{content:""}.o_icon_courseareas:before{content:""}.o_icon_coursedb:before{content:""}.o_icon_courseeditor:before{content:"ï„"}.o_icon_coursefolder:before{content:"ï„”"}.o_icon_courserun:before{content:""}.o_icon_comments:before{content:""}.o_icon_comments_none:before{content:""}.o_icon_compress:before{content:"ï¦"}.o_icon_content_popup:before{content:""}.o_icon_correct_answer:before{content:"";color:#5cb85c}.o_icon_correction:before{content:"ï€"}.o_icon_customize:before{content:""}.o_icon_delete_item:before{content:""}.o_icon_delete:before{content:"ï–";color:#A87E7E}.o_icon_deleted:before{content:""}.o_icon_details:before{content:""}.o_icon_description:before{content:"ïš"}.o_icon_dev:before{content:""}.o_icon_disabled:before{content:""}.o_icon_download:before{content:""}.o_icon_edit:before{content:"ï„"}.o_icon_edit_file:before{content:"ï„"}.o_icon_edit_metadata:before{content:""}.o_icon_element_after:before{content:"ï£"}.o_icon_element_before:before{content:"ï¢"}.o_icon_enabled:before{content:"ï„‘"}.o_icon_enlarge:before{content:""}.o_icon_eportfolio_add:before{content:"ï„®"}.o_icon_eportfolio_link:before{content:"ï„®"}.o_icon_eraser:before{content:"ï„"}.o_icon_error:before{content:"ïª";color:#d9534f}.o_icon_expand:before{content:"ï¥"}.o_icon_expenditure:before{content:""}.o_icon_export:before{content:"ï…"}.o_icon_external_link:before{content:""}.o_icon_failed:before{content:"ï—"}.o_icon_files:before{content:""}.o_icon_filter:before{content:"ï‚°"}.o_icon_graduate:before{content:"ï†"}.o_icon_group:before,.o_BusinessGroup_icon:before{content:""}.o_icon_header:before{content:""}.o_icon_help:before{content:"ï™";cursor:help}.o_icon_home:before{content:""}.o_icon_image:before{content:""}.o_icon_impress:before{content:"ïš"}.o_icon_important:before{content:"ï±";color:#f0ad4e}.o_icon_import:before{content:"ï‚“"}.o_icon_info:before{content:"ïš";color:#5bc0de}.o_icon_info_msg:before{content:"ïª";color:#d9534f}.o_icon_info_resource:before{content:"ïš"}.o_icon_inline_editable:before{content:"ï„"}.o_icon_institution:before{content:""}.o_icon_italic:before{content:""}.o_icon_landingpage:before{content:"ï…€"}.o_icon_language:before{content:""}.o_icon_layout:before{content:""}.o_icon_line:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_link_extern:before{content:""}.o_icon_list:before{content:""}.o_icon_list_num:before{content:""}.o_icon_lifecycle:before{content:""}.o_icon_lifecycle_date:before{content:"ï³"}.o_icon_locked:before{content:""}.o_icon_login:before{content:"ï‚"}.o_icon_logout:before{content:"ï‚‹"}.o_icon_mandatory:before{content:"ï©";color:#f0ad4e}.o_icon_managed:before{content:"ï¹";color:#777}.o_icon_manual:before{content:"ï€";cursor:help}.o_icon_mail:before{content:""}.o_icon_math:before{content:"\03a3"}.o_icon_media:before{content:""}.o_icon_mediacenter:before{content:"ï¼"}.o_icon_membersmanagement:before{content:""}.o_icon_menuhandel:before{content:""}.o_icon_message:before{content:"ïƒ "}.o_icon_mobile:before{content:"ï„‹"}.o_icon_move:before{content:"ï‡"}.o_icon_move_down:before{content:""}.o_icon_move_left:before{content:"ï„€"}.o_icon_move_right:before{content:"ï„"}.o_icon_move_up:before{content:"ï„‚"}.o_icon_new:before{content:"ï©";color:#5cb85c}.o_icon_new_document:before{content:"ï…œ"}.o_icon_new_folder:before{content:"ï»"}.o_icon_new_portfolio:before{content:"ï€"}.o_icon_news:before{content:"ïš"}.o_icon_next:before{content:""}.o_icon_next_step:before{content:"ï„"}.o_icon_next_page:before{content:"ï„"}.o_icon_next_toolbar:before{content:""}.o_icon_node_after:before{content:"ï…µ"}.o_icon_node_before:before{content:"ï…¶"}.o_icon_node_under:before{content:"ï„’"}.o_icon_notes:before{content:""}.o_icon_notification:before{content:""}.o_icon_ok:before{content:"";color:#5cb85c}.o_icon_open_tree:before{content:""}.o_icon_open_togglebox:before,.o_togglebox_wrapper .o_opener i:before{content:""}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\E600";font-family:openolat;font-size:10px}.o_icon_options:before{content:""}.o_icon_others:before{content:""}.o_icon_pageing:before{content:"ï…"}.o_icon_paragraph:before{content:"ï‡"}.o_icon_passed:before{content:"ï˜"}.o_icon_password:before{content:""}.o_icon_pending:before{content:"ï„"}.o_icon_phone:before{content:"ï‚•"}.o_icon_post:before{content:""}.o_icon_preview:before{content:"ï®"}.o_icon_previous:before{content:"ï„·"}.o_icon_previous_page:before{content:"ï„€"}.o_icon_previous_step:before{content:"ï„€"}.o_icon_previous_toolbar:before{content:""}.o_icon_print:before{content:""}.o_icon_private:before{content:""}.o_icon_progress_success:before{content:"";color:#e5efe5}.o_icon_progress_danger:before{content:"ï€";color:#efe5e5}.o_icon_provider_adfs:before{content:"ï…º"}.o_icon_provider_facebook:before{content:""}.o_icon_provider_google:before{content:""}.o_icon_provider_guest:before{content:""}.o_icon_provider_ldap:before{content:""}.o_icon_provider_linkedin:before{content:""}.o_icon_provider_oauth:before{content:""}.o_icon_provider_openid:before{content:""}.o_icon_provider_performx:before{content:""}.o_icon_provider_shibboleth:before{content:""}.o_icon_provider_twitter:before{content:"ï‚™"}.o_icon_publish:before{content:"ï¤"}.o_icon_qrcode:before{content:""}.o_icon_quickview:before{content:"ï®"}.o_icon_radio_off:before{content:""}.o_icon_radio_on:before{content:"ï"}.o_icon_rating_on:before,.o_rating .o_rating_items.o_enabled .o_icon:hover:before{content:""}.o_icon_rating_off:before{content:""}.o_icon_read:before{content:""}.o_icon_readonly:before{content:"ï„";color:red}.o_icon_readwrite:before{content:"ï„"}.o_icon_recycle:before{content:""}.o_icon_rectangle:before{content:"ï‚–"}.o_icon_redo:before{content:""}.o_icon_refresh:before{content:""}.o_icon_reject:before{content:"ï€";color:#d9534f}.o_icon_rejected:before{content:"ï…¥"}.o_icon_reminder:before{content:""}.o_icon_remove:before{content:"ï€"}.o_icon_remove_filters:before{content:"ï—"}.o_icon_replace:before{content:""}.o_icon_reply:before{content:"ï„’"}.o_icon_reply_with_quote:before{content:"ï„¢"}.o_icon_response_feedback:before{content:""}.o_icon_restore:before{content:"ï…¤"}.o_icon_results_visible:before{content:"ï®"}.o_icon_results_hidden:before{content:"ï°"}.o_icon_review:before{content:"ï®"}.o_icon_reviewer:before{content:""}.o_icon_rss:before{content:""}.o_icon_rss_unsubscribe:before{content:"";color:#996633}.o_icon_rubric:before{content:""}.o_icon_save:before{content:""}.o_icon_search:before{content:""}.o_icon_select:before{content:""}.o_icon_send:before{content:"ïƒ "}.o_icon_settings:before{content:"ï‚…"}.o_icon_share:before{content:"ï¤"}.o_icon_show_more:before{content:"ï…"}.o_icon_show_less:before{content:"ï…‘"}.o_icon_show_send:before{content:""}.o_icon_sign_out:before{content:"ï‚‹"}.o_icon_slide_down:before{content:"ï¸"}.o_icon_slide_up:before{content:"ï·"}.o_icon_spacer:before{content:"ï¾"}.o_icon_split:before{content:"ï„§"}.o_icon_sort:before{content:""}.o_icon_sort_asc:before{content:""}.o_icon_sort_desc:before{content:"ïƒ"}.o_icon_sort_amount_asc:before{content:"ï… "}.o_icon_sort_amount_desc:before{content:"ï…¡"}.o_icon_sort_menu:before{content:"ï… "}.o_icon_start:before{content:"ï”"}.o_icon_status_available:before{content:"ï„‘";color:#063}.o_icon_status_chat:before{content:"ïµ"}.o_icon_status_dnd:before{content:"";color:#cc3}.o_icon_status_unavailable:before{content:"ïœ";color:#963}.o_icon_status_not_started:before{content:""}.o_icon_status_in_progress:before{content:"ï‹"}.o_icon_status_in_review:before{content:""}.o_icon_status_done:before{content:"ï˜"}.o_icon_statistics_tool:before{content:"ï‚€"}.o_icon_submit:before{content:""}.o_icon_table:before{content:""}.o_icon_table_custom:before{content:""}.o_icon_table_large:before{content:""}.o_icon_tags:before{content:""}.o_icon_textinput:before{content:""}.o_icon_timelimit:before{content:""}.o_icon_timelimit_start:before{content:""}.o_icon_timelimit_half:before{content:""}.o_icon_timelimit_end:before{content:""}.o_icon_toggle:before{content:"ï„‘"}.o_icon_toggle_on:before{content:""}.o_icon_toggle_off:before{content:""}.o_icon_to_read:before{content:"ï„‘"}.o_icon_tool:before{content:""}.o_icon_tools:before{content:"ï‚"}.o_icon_top:before{content:"ï·"}.o_icon_translation_item:before{content:""}.o_icon_translation_package:before{content:"ï„•"}.o_icon_undo:before{content:""}.o_icon_user:before{content:""}.o_icon_user_vip:before{content:"ï†"}.o_icon_user_anonymous:before{content:""}.o_icon_upload:before{content:"ï‚“"}.o_icon_version:before{content:""}.o_icon_video:before{content:""}.o_icon_visitingcard.o_icon_waiting:before{content:""}.o_icon_warn:before{content:"ï±";color:#f0ad4e}.o_icon_wizard:before{content:"ïƒ"}.o_icon_xing:before{content:"ï…¨";color:#cfdc00}.o_BinderTemplate_icon:before{content:""}.o_CourseModule_icon:before,.o_course_icon:before{content:""}.o_EPStructuredMapTemplate_icon:before{content:"ï„®"}.o_FileResource-BLOG_icon:before{content:"ï‚¡"}.o_FileResource-IMSCP_icon:before{content:""}.o_FileResource-FORM_icon:before{content:""}.o_FileResource-PODCAST_icon:before{content:""}.o_FileResource-SHAREDFOLDER:before{content:""}.o_FileResource-SCORMCP_icon:before{content:""}.o_FileResource-SURVEY_icon:before{content:""}.o_FileResource-TEST_icon:before{content:"ï„"}.o_FileResource-IMSQTI21_icon:before{content:"ï…‹"}.o_FileResource-WIKI_icon:before{content:""}.o_FileResource-SHAREDFOLDER_icon:before{content:"ï„•"}.o_FileResource-GLOSSARY_icon:before{content:"ï†"}.o_FileResource-PDF_icon:before{content:"ï‡"}.o_FileResource-XLS_icon:before{content:""}.o_FileResource-PPT_icon:before{content:""}.o_FileResource-DOC_icon:before{content:""}.o_FileResource-ANIM_icon:before{content:""}.o_FileResource-IMAGE_icon:before{content:""}.o_FileResource-SOUND_icon:before{content:""}.o_FileResource-MOVIE_icon:before{content:""}.o_FileResource-FILE_icon:before{content:""}.o_FileResource-VIDEO_icon:before{content:""}.o_CourseModule_icon_closed:before{content:"ïž"}.o_sp_icon:before{content:""}.o_st_icon:before{content:""}.o_tu_icon:before{content:""}.o_bc_icon:before{content:"ï„•"}.o_lti_icon:before{content:""}.o_cp_icon:before{content:""}.o_cp_item:before{content:""}.o_scorm_icon:before{content:""}.o_en_icon:before{content:"ï‚"}.o_fo_icon:before{content:""}.o_co_icon:before{content:""}.o_infomsg_icon:before{content:"ïš"}.o_cal_icon:before{content:"ï³"}.o_wiki_icon:before{content:""}.o_podcast_icon:before{content:""}.o_pf_icon:before{content:""}.o_blog_icon:before{content:"ï‚¡"}.o_ep_icon:before{content:""}.o_ep_icon_v1:before{content:"ï„®"}.o_iqtest_icon:before{content:"ï„"}.o_iqself_icon:before{content:"ï„"}.o_iqsurv_icon:before{content:""}.o_qtiassessment_icon:before{content:"ï…‹"}.o_ta_icon:before{content:"ï‚®"}.o_gta_icon:before{content:"ï‚®"}.o_ms_icon:before{content:""}.o_dialog_icon:before{content:""}.o_projectbroker_icon:before{content:""}.o_ll_icon:before{content:"ïƒ"}.o_den_icon:before{content:""}.o_cmembers_icon:before{content:""}.o_cl_icon:before{content:"ï†"}.o_vc_icon:before{content:""}.o_video_icon:before{content:""}.o_vitero_icon:before{content:""}.o_openmeetings_icon:before{content:""}.o_gotomeeting_icon:before{content:""}.o_card2brain_icon:before{content:""}.o_portlet_infomsg_icon:before{content:"ïš"}.o_portlet_quickstart_icon:before{content:""}.o_portlet_bookmark_icon:before{content:""}.o_portlet_groups_icon:before{content:""}.o_portlet_notes_icon:before{content:""}.o_portlet_noti_icon:before{content:""}.o_portlet_eff_icon:before{content:"ï‚£"}.o_portlet_repository_student_icon:before{content:""}.o_portlet_repository_teacher_icon:before{content:"ï†"}.o_portlet_iframe_icon:before{content:""}.o_portlet_sysinfo_icon:before{content:""}.o_portlet_dyk_icon:before{content:""}.o_portlet_infomessages_icon:before{content:""}.o_portlet_cal_icon:before{content:"ï³"}.o_portlet_institutions_icon:before{content:""}.o_portlet_links_icon:before{content:"ïƒ"}.o_portlet_shibboleth_icon:before{content:"ï‚"}.o_icon_qpool:before{content:""}.o_icon_pool_private:before{content:"ï‚–"}.o_icon_pool_public:before{content:"ï†"}.o_icon_pool_my_items:before{content:""}.o_icon_pool_favorits:before{content:""}.o_icon_pool_collection:before{content:""}.o_icon_pool_pool:before{content:""}.o_icon_pool_share:before{content:""}.o_forum_message_icon:before{content:""}.o_calendar_icon:before{content:"ï³"}.o_icon_pf_section_draft:before{content:"ï°";color:#f0ad4e}.o_icon_pf_section_progress:before{content:"";color:#f0ad4e}.o_icon_pf_section_submitted:before{content:"";color:#337ab7}.o_icon_pf_section_closed:before{content:"";color:#5cb85c}.o_icon_pf_binder:before{content:""}.o_icon_pf_entry:before{content:"ï…›"}.o_icon_pf_entry_draft:before{content:"ï„‘";color:#f0ad4e}.o_icon_pf_entry_published:before{content:"ï„‘";color:#337ab7}.o_icon_pf_entry_revision:before{content:"ï„‘";color:#d9534f}.o_icon_pf_entry_closed:before{content:"ï„‘";color:#5cb85c}.o_icon_pf_entry_deleted:before{content:"";color:#000}.o_icon_pf_history:before{content:""}.o_icon_pf_my_shares:before{content:"ï‡ "}.o_icon_pf_quick_links:before{content:"ï¤"}.o_icon_pf_page:before{content:""}.o_icon_pf_section:before{content:""}.o_icon_pf_shared_with_me:before{content:""}.o_forum_status_thread_icon:before{content:""}.o_forum_status_sticky_closed_icon:before{content:"ïž"}.o_forum_status_sticky_icon:before{content:""}.o_forum_status_closed_icon:before{content:"ïž";color:#a94442}.o_forum_status_opened_icon:before{content:"ïž";color:#3c763d}.o_forum_status_hidden_icon:before{content:"ï°";color:#a94442}.o_forum_status_visible_icon:before{content:"ï®";color:#3c763d}.o_forum_all_icon:before{content:""}.o_forum_all_flat_icon:before{content:""}.o_forum_one_icon:before{content:"ï®"}.o_forum_marked_icon:before{content:""}.o_forum_new_icon:before{content:"ï©"}.o_mi_qpool_import:before{content:""}.o_mi_qtidrawing:before{content:""}.o_mi_qtisection:before{content:""}.o_mi_qtisc:before{content:""}.o_mi_qtimatch:before{content:""}.o_mi_qtimatch_draganddrop:before{content:"ï‰"}.o_mi_qtimc:before{content:"ï†"}.o_mi_qtikprim:before{content:"ï…Š"}.o_mi_qtifib:before{content:"ï…"}.o_mi_qtinumerical:before{content:""}.o_mi_qtihotspot:before{content:""}.o_mi_qtihottext:before{content:"ï"}.o_mi_qtiessay:before{content:""}.o_mi_qtiunkown:before{content:""}.o_mi_qtiupload:before{content:"ï‚“"}.o_as_mode_leadtime:before{content:""}.o_as_mode_assessment:before{content:"ï‹"}.o_as_mode_followup:before{content:"ïž"}.o_as_mode_closed:before{content:'-'}.o_icon_qti_notPresented:before{content:"";color:#ddd}.o_icon_qti_notAnswered:before{content:"ï…„";color:#f0ad4e}.o_icon_qti_answered:before{content:"ï˜";color:#5cb85c}.o_icon_qti_ended:before{content:"ïž";color:#5bc0de}.o_icon_qti_invalid:before{content:"ïª";color:#d9534f}.o_icon_qti_review:before{content:"ï®";color:#5bc0de}.o_icon_qti_reviewNotSeen:before,.o_icon_qti_reviewNotAnswered:before,.o_icon_qti_reviewInvalid:before{content:"ï°";color:#5bc0de}.o_icon_qti_end_testpart:before{content:""}.o_icon_qti_close_test:before{content:"ï‹“"}.o_icon_qti_cancel:before{content:"ï"}.o_icon_qti_suspend:before{content:"ïŒ"}.o_icon_qti_close_results:before{content:"ï‹“"}.o_icon_qti_hint:before{content:"ï™"}.o_icon_qti_summary_notAnswered:before{content:"ï„‘";color:#f0ad4e}.o_icon_qti_summary_ended:before{content:"ï—";color:#d9534f}.o_icon_qti_summary_correct:before{content:"ï˜";color:#5cb85c}.o_black_led:before{content:"ï„‘";color:#337ab7}.o_green_led:before{content:"ï„‘";color:#5cb85c}.o_yellow_led:before{content:"ï„‘";color:#f0ad4e}.o_red_led:before{content:"ï„‘";color:#d9534f}.o_ac_token_icon:before{content:"ï‚„"}.o_ac_free_icon:before{content:"ï«"}.o_ac_group_icon:before{content:""}.o_ac_membersonly_icon:before{content:""}.o_ac_paypal_icon:before{content:""}.o_ac_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_status_success_icon:before{content:"";color:#5cb85c}.o_ac_status_waiting_icon:before{content:"";color:#337ab7}.o_ac_order_status_new_icon:before{content:"ï©";color:#337ab7}.o_ac_order_status_prepayment_icon:before{content:"";color:#5bc0de}.o_ac_order_status_payed_icon:before{content:"";color:#5cb85c}.o_ac_order_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_order_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_order_status_warning_icon:before{content:"";color:#f0ad4e}.o_scorm_org:before{content:""}.o_scorm_item:before{content:""}.o_scorm_completed:before,.o_scorm_passed:before{content:"ï˜"}.o_scorm_failed:before{content:"ï±"}.o_scorm_incomplete:before{content:"ï±"}.o_scorm_not_attempted:before{background:none}.o_midpub:before{content:"ï˜"}.o_midwarn:before{content:"ï±"}.o_midlock:before{content:""}.o_miderr:before{content:"ïª"}.o_middel:before{content:"ï„"}.o_filetype_file:before,.o_filetype_ico:before{content:""}.o_filetype_folder:before{content:"ï„”"}.o_filetype_folder_open:before{content:"ï„•"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:""}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:""}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:""}.o_filetype_xls:before,.o_filetype_xlsx:before{content:""}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:""}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:""}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:""}.o_filetype_ps:before,.o_filetype_pdf:before{content:"ï‡"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:""}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:""}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:""}.o_icon_share_social:before{content:"ï…"}.o_icon_apple:before{content:"ï…¹"}.o_icon_facebook:before{content:"ï‚‚"}.o_icon_twitter:before{content:"ï‚"}.o_icon_google:before{content:""}.o_icon_delicious:before{content:""}.o_icon_digg:before{content:""}.o_icon_mailto:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_yahoo:before{content:""}a.o_icon:hover,a.o_icon:focus{text-decoration:none}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}.o_block_bottom,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_pf_content .o_cit,.o_pf_content .o_file,.o_pf_content .o_forum,.o_pf_content .o_image,.o_pf_content .o_video,.o_header_with_buttons,.o_search_result{margin-bottom:1em}.o_block_top,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_pf_content .o_cit,.o_pf_content .o_file,.o_pf_content .o_forum,.o_pf_content .o_image,.o_pf_content .o_video{margin-top:1em}.o_block_large_bottom,.o_block_large,.o_block_with_datecomp,.o_login .o_login_footer_wrapper,.o_portlet{margin-bottom:2em}.o_block_large_top,.o_block_large,.o_block_with_datecomp,.o_login .o_login_footer_wrapper,.o_portlet{margin-top:2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_centered_wrapper{display:table;width:100%;height:100%}.o_block_centered_content{display:table-cell;vertical-align:middle;text-align:center}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_block_imagebg h2,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg .o_cal .fc-header-title h2:after,.o_cal .fc-header-title .o_block_imagebg h2:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_header_with_buttons h2,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group,.o_header_with_buttons .o_cal .fc-header-title h2+.o_button_group,.o_cal .fc-header-title .o_header_with_buttons h2+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.66667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#78acd9;border-radius:10px}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body .o_cal .fc-header-title h2:nth-child(1),.o_cal .fc-header-title .panel-placeholder .panel-body h2:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-top:none;border-left:none;border-right:none;color:#337ab7;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#78acd9;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:12px}.o_small,.b_small,p.b_small,div.b_small,.o_comments .o_comment_wrapper h5,.o_comments .o_comment_wrapper .o_comment,.o_bc_meta,.tooltip,.o_htmleditor .o_metadata .o_lastmodified,.o_noti,.o_block_with_datecomp .o_meta,.o_togglebox_wrapper div.o_togglebox_content .o_hide,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label,.o_course_run .o_toc .o_entry,.o_assessment_test_results .o_qti_to_overview{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:18px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,#o_main_wrapper #o_toplink:hover,#o_footer_powered a:hover,#o_share a:hover,#o_share_social_container a:hover,.o_toolbar .o_tools_container a:hover,.o_button_toggle:hover,.o_im_message_group .o_im_from:hover,.o_noti .o_label:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover,.o_catalog .o_level .o_meta .o_title a:hover,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover,.o_repo_details .o_social .o_comments:hover,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover,.o_login .o_login_register:hover,.o_disabled:focus,.b_disabled:focus,#o_main_wrapper #o_toplink:focus,#o_footer_powered a:focus,#o_share a:focus,#o_share_social_container a:focus,.o_toolbar .o_tools_container a:focus,.o_button_toggle:focus,.o_im_message_group .o_im_from:focus,.o_noti .o_label:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:focus,.o_catalog .o_level .o_meta .o_title a:focus,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:focus,.o_repo_details .o_social .o_comments:focus,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:focus,.o_login .o_login_register:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}h1{color:#337ab7}h2{color:#337ab7}h3{color:#337ab7}h4,.o_cal .fc-header-title h2{color:#337ab7}h5{color:#337ab7}h5{color:#337ab7}fieldset legend{color:#333}.o_user_content_block a{color:#337ab7;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#23527c;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:1px 5px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:1px 5px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:1px 5px;border:0;font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:1px 5px;background:#eee;border:1px solid #fff}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:1px 5px;background:#d9edf7;border:1px solid #fff}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:1px 5px;background:#dff0d8;border:1px solid #fff}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:1px 5px;background:#fcf8e3;border:1px solid #fff}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:1px 5px;background:#f2dede;border:1px solid #fff}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#337ab7}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_mailto{color:#337ab7}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#337ab7}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0;font-size:85%;font-family:inherit}span.olatFlashMovieViewer{max-width:100% !important;border:none !important}.mejs__container,.mejs__mediaelement video,.mejs__layers div,.me_cannotplay{max-width:100%}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}.radial-progress{margin:10px;width:120px;height:120px;background-color:#eee;border-radius:50%;display:inline-block;position:relative}.radial-progress .circle .mask,.radial-progress .circle .fill,.radial-progress .circle .shadow{width:100%;height:100%;position:absolute;border-radius:50%}.radial-progress .circle .shadow{box-shadow:none inset}.radial-progress .circle .mask,.radial-progress .circle .fill{-webkit-backface-visibility:hidden;transition:-webkit-transform 1s;transition:-ms-transform 1s;transition:transform 1s;border-radius:50%}.radial-progress .circle .mask{clip:rect(0px, 120px, 120px, 60px)}.radial-progress .circle .mask .fill{clip:rect(0px, 60px, 120px, 0px);background-color:#337ab7}.radial-progress .inset{width:90px;height:90px;position:absolute;border-radius:50%;margin-left:15px;margin-top:15px;overflow:hidden;background-color:#fff;box-shadow:none;font-size:21.6px}.radial-progress .inset .bgIcon{position:absolute;font-size:80px;top:5px;left:-5px;opacity:0;transition:opacity 0;transition-delay:1s}.radial-progress .inset .percentage{height:80%;width:80%;position:absolute;top:10%;left:10%;display:table;line-height:1}.radial-progress .inset .percentage .centeredWrapper{display:table-cell;vertical-align:middle;text-align:center}.radial-progress .inset .percentage .centeredWrapper .number{font-weight:800;color:#337ab7}.radial-progress .inset .percentage .centeredWrapper .addon{color:#777;margin-top:5px}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(1){font-size:0.55em;font-weight:bold}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(2){margin-top:2px;font-size:0.45em}.radial-progress[data-progress="0"] .circle .mask.full,.radial-progress[data-progress="0"] .circle .fill{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="0"] .circle .fill.fix{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="1"] .circle .mask.full,.radial-progress[data-progress="1"] .circle .fill{-webkit-transform:rotate(1.8deg);-ms-transform:rotate(1.8deg);transform:rotate(1.8deg)}.radial-progress[data-progress="1"] .circle .fill.fix{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .mask.full,.radial-progress[data-progress="2"] .circle .fill{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .fill.fix{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="3"] .circle .mask.full,.radial-progress[data-progress="3"] .circle .fill{-webkit-transform:rotate(5.4deg);-ms-transform:rotate(5.4deg);transform:rotate(5.4deg)}.radial-progress[data-progress="3"] .circle .fill.fix{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="4"] .circle .mask.full,.radial-progress[data-progress="4"] .circle .fill{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="4"] .circle .fill.fix{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="5"] .circle .mask.full,.radial-progress[data-progress="5"] .circle .fill{-webkit-transform:rotate(9deg);-ms-transform:rotate(9deg);transform:rotate(9deg)}.radial-progress[data-progress="5"] .circle .fill.fix{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="6"] .circle .mask.full,.radial-progress[data-progress="6"] .circle .fill{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="6"] .circle .fill.fix{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="7"] .circle .mask.full,.radial-progress[data-progress="7"] .circle .fill{-webkit-transform:rotate(12.6deg);-ms-transform:rotate(12.6deg);transform:rotate(12.6deg)}.radial-progress[data-progress="7"] .circle .fill.fix{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="8"] .circle .mask.full,.radial-progress[data-progress="8"] .circle .fill{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="8"] .circle .fill.fix{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="9"] .circle .mask.full,.radial-progress[data-progress="9"] .circle .fill{-webkit-transform:rotate(16.2deg);-ms-transform:rotate(16.2deg);transform:rotate(16.2deg)}.radial-progress[data-progress="9"] .circle .fill.fix{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="10"] .circle .mask.full,.radial-progress[data-progress="10"] .circle .fill{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="10"] .circle .fill.fix{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="11"] .circle .mask.full,.radial-progress[data-progress="11"] .circle .fill{-webkit-transform:rotate(19.8deg);-ms-transform:rotate(19.8deg);transform:rotate(19.8deg)}.radial-progress[data-progress="11"] .circle .fill.fix{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="12"] .circle .mask.full,.radial-progress[data-progress="12"] .circle .fill{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="12"] .circle .fill.fix{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="13"] .circle .mask.full,.radial-progress[data-progress="13"] .circle .fill{-webkit-transform:rotate(23.4deg);-ms-transform:rotate(23.4deg);transform:rotate(23.4deg)}.radial-progress[data-progress="13"] .circle .fill.fix{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="14"] .circle .mask.full,.radial-progress[data-progress="14"] .circle .fill{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="14"] .circle .fill.fix{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="15"] .circle .mask.full,.radial-progress[data-progress="15"] .circle .fill{-webkit-transform:rotate(27deg);-ms-transform:rotate(27deg);transform:rotate(27deg)}.radial-progress[data-progress="15"] .circle .fill.fix{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="16"] .circle .mask.full,.radial-progress[data-progress="16"] .circle .fill{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="16"] .circle .fill.fix{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="17"] .circle .mask.full,.radial-progress[data-progress="17"] .circle .fill{-webkit-transform:rotate(30.6deg);-ms-transform:rotate(30.6deg);transform:rotate(30.6deg)}.radial-progress[data-progress="17"] .circle .fill.fix{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="18"] .circle .mask.full,.radial-progress[data-progress="18"] .circle .fill{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="18"] .circle .fill.fix{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="19"] .circle .mask.full,.radial-progress[data-progress="19"] .circle .fill{-webkit-transform:rotate(34.2deg);-ms-transform:rotate(34.2deg);transform:rotate(34.2deg)}.radial-progress[data-progress="19"] .circle .fill.fix{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="20"] .circle .mask.full,.radial-progress[data-progress="20"] .circle .fill{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="20"] .circle .fill.fix{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="21"] .circle .mask.full,.radial-progress[data-progress="21"] .circle .fill{-webkit-transform:rotate(37.8deg);-ms-transform:rotate(37.8deg);transform:rotate(37.8deg)}.radial-progress[data-progress="21"] .circle .fill.fix{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="22"] .circle .mask.full,.radial-progress[data-progress="22"] .circle .fill{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="22"] .circle .fill.fix{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="23"] .circle .mask.full,.radial-progress[data-progress="23"] .circle .fill{-webkit-transform:rotate(41.4deg);-ms-transform:rotate(41.4deg);transform:rotate(41.4deg)}.radial-progress[data-progress="23"] .circle .fill.fix{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="24"] .circle .mask.full,.radial-progress[data-progress="24"] .circle .fill{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="24"] .circle .fill.fix{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="25"] .circle .mask.full,.radial-progress[data-progress="25"] .circle .fill{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.radial-progress[data-progress="25"] .circle .fill.fix{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="26"] .circle .mask.full,.radial-progress[data-progress="26"] .circle .fill{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="26"] .circle .fill.fix{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="27"] .circle .mask.full,.radial-progress[data-progress="27"] .circle .fill{-webkit-transform:rotate(48.6deg);-ms-transform:rotate(48.6deg);transform:rotate(48.6deg)}.radial-progress[data-progress="27"] .circle .fill.fix{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="28"] .circle .mask.full,.radial-progress[data-progress="28"] .circle .fill{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="28"] .circle .fill.fix{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="29"] .circle .mask.full,.radial-progress[data-progress="29"] .circle .fill{-webkit-transform:rotate(52.2deg);-ms-transform:rotate(52.2deg);transform:rotate(52.2deg)}.radial-progress[data-progress="29"] .circle .fill.fix{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="30"] .circle .mask.full,.radial-progress[data-progress="30"] .circle .fill{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="30"] .circle .fill.fix{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="31"] .circle .mask.full,.radial-progress[data-progress="31"] .circle .fill{-webkit-transform:rotate(55.8deg);-ms-transform:rotate(55.8deg);transform:rotate(55.8deg)}.radial-progress[data-progress="31"] .circle .fill.fix{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="32"] .circle .mask.full,.radial-progress[data-progress="32"] .circle .fill{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="32"] .circle .fill.fix{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="33"] .circle .mask.full,.radial-progress[data-progress="33"] .circle .fill{-webkit-transform:rotate(59.4deg);-ms-transform:rotate(59.4deg);transform:rotate(59.4deg)}.radial-progress[data-progress="33"] .circle .fill.fix{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="34"] .circle .mask.full,.radial-progress[data-progress="34"] .circle .fill{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="34"] .circle .fill.fix{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="35"] .circle .mask.full,.radial-progress[data-progress="35"] .circle .fill{-webkit-transform:rotate(63deg);-ms-transform:rotate(63deg);transform:rotate(63deg)}.radial-progress[data-progress="35"] .circle .fill.fix{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="36"] .circle .mask.full,.radial-progress[data-progress="36"] .circle .fill{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="36"] .circle .fill.fix{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="37"] .circle .mask.full,.radial-progress[data-progress="37"] .circle .fill{-webkit-transform:rotate(66.6deg);-ms-transform:rotate(66.6deg);transform:rotate(66.6deg)}.radial-progress[data-progress="37"] .circle .fill.fix{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="38"] .circle .mask.full,.radial-progress[data-progress="38"] .circle .fill{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="38"] .circle .fill.fix{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="39"] .circle .mask.full,.radial-progress[data-progress="39"] .circle .fill{-webkit-transform:rotate(70.2deg);-ms-transform:rotate(70.2deg);transform:rotate(70.2deg)}.radial-progress[data-progress="39"] .circle .fill.fix{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="40"] .circle .mask.full,.radial-progress[data-progress="40"] .circle .fill{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="40"] .circle .fill.fix{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="41"] .circle .mask.full,.radial-progress[data-progress="41"] .circle .fill{-webkit-transform:rotate(73.8deg);-ms-transform:rotate(73.8deg);transform:rotate(73.8deg)}.radial-progress[data-progress="41"] .circle .fill.fix{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="42"] .circle .mask.full,.radial-progress[data-progress="42"] .circle .fill{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="42"] .circle .fill.fix{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="43"] .circle .mask.full,.radial-progress[data-progress="43"] .circle .fill{-webkit-transform:rotate(77.4deg);-ms-transform:rotate(77.4deg);transform:rotate(77.4deg)}.radial-progress[data-progress="43"] .circle .fill.fix{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="44"] .circle .mask.full,.radial-progress[data-progress="44"] .circle .fill{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="44"] .circle .fill.fix{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="45"] .circle .mask.full,.radial-progress[data-progress="45"] .circle .fill{-webkit-transform:rotate(81deg);-ms-transform:rotate(81deg);transform:rotate(81deg)}.radial-progress[data-progress="45"] .circle .fill.fix{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="46"] .circle .mask.full,.radial-progress[data-progress="46"] .circle .fill{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="46"] .circle .fill.fix{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="47"] .circle .mask.full,.radial-progress[data-progress="47"] .circle .fill{-webkit-transform:rotate(84.6deg);-ms-transform:rotate(84.6deg);transform:rotate(84.6deg)}.radial-progress[data-progress="47"] .circle .fill.fix{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="48"] .circle .mask.full,.radial-progress[data-progress="48"] .circle .fill{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="48"] .circle .fill.fix{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="49"] .circle .mask.full,.radial-progress[data-progress="49"] .circle .fill{-webkit-transform:rotate(88.2deg);-ms-transform:rotate(88.2deg);transform:rotate(88.2deg)}.radial-progress[data-progress="49"] .circle .fill.fix{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="50"] .circle .mask.full,.radial-progress[data-progress="50"] .circle .fill{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="50"] .circle .fill.fix{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="51"] .circle .mask.full,.radial-progress[data-progress="51"] .circle .fill{-webkit-transform:rotate(91.8deg);-ms-transform:rotate(91.8deg);transform:rotate(91.8deg)}.radial-progress[data-progress="51"] .circle .fill.fix{-webkit-transform:rotate(183.6deg);-ms-transform:rotate(183.6deg);transform:rotate(183.6deg)}.radial-progress[data-progress="52"] .circle .mask.full,.radial-progress[data-progress="52"] .circle .fill{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="52"] .circle .fill.fix{-webkit-transform:rotate(187.2deg);-ms-transform:rotate(187.2deg);transform:rotate(187.2deg)}.radial-progress[data-progress="53"] .circle .mask.full,.radial-progress[data-progress="53"] .circle .fill{-webkit-transform:rotate(95.4deg);-ms-transform:rotate(95.4deg);transform:rotate(95.4deg)}.radial-progress[data-progress="53"] .circle .fill.fix{-webkit-transform:rotate(190.8deg);-ms-transform:rotate(190.8deg);transform:rotate(190.8deg)}.radial-progress[data-progress="54"] .circle .mask.full,.radial-progress[data-progress="54"] .circle .fill{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="54"] .circle .fill.fix{-webkit-transform:rotate(194.4deg);-ms-transform:rotate(194.4deg);transform:rotate(194.4deg)}.radial-progress[data-progress="55"] .circle .mask.full,.radial-progress[data-progress="55"] .circle .fill{-webkit-transform:rotate(99deg);-ms-transform:rotate(99deg);transform:rotate(99deg)}.radial-progress[data-progress="55"] .circle .fill.fix{-webkit-transform:rotate(198deg);-ms-transform:rotate(198deg);transform:rotate(198deg)}.radial-progress[data-progress="56"] .circle .mask.full,.radial-progress[data-progress="56"] .circle .fill{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="56"] .circle .fill.fix{-webkit-transform:rotate(201.6deg);-ms-transform:rotate(201.6deg);transform:rotate(201.6deg)}.radial-progress[data-progress="57"] .circle .mask.full,.radial-progress[data-progress="57"] .circle .fill{-webkit-transform:rotate(102.6deg);-ms-transform:rotate(102.6deg);transform:rotate(102.6deg)}.radial-progress[data-progress="57"] .circle .fill.fix{-webkit-transform:rotate(205.2deg);-ms-transform:rotate(205.2deg);transform:rotate(205.2deg)}.radial-progress[data-progress="58"] .circle .mask.full,.radial-progress[data-progress="58"] .circle .fill{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="58"] .circle .fill.fix{-webkit-transform:rotate(208.8deg);-ms-transform:rotate(208.8deg);transform:rotate(208.8deg)}.radial-progress[data-progress="59"] .circle .mask.full,.radial-progress[data-progress="59"] .circle .fill{-webkit-transform:rotate(106.2deg);-ms-transform:rotate(106.2deg);transform:rotate(106.2deg)}.radial-progress[data-progress="59"] .circle .fill.fix{-webkit-transform:rotate(212.4deg);-ms-transform:rotate(212.4deg);transform:rotate(212.4deg)}.radial-progress[data-progress="60"] .circle .mask.full,.radial-progress[data-progress="60"] .circle .fill{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="60"] .circle .fill.fix{-webkit-transform:rotate(216deg);-ms-transform:rotate(216deg);transform:rotate(216deg)}.radial-progress[data-progress="61"] .circle .mask.full,.radial-progress[data-progress="61"] .circle .fill{-webkit-transform:rotate(109.8deg);-ms-transform:rotate(109.8deg);transform:rotate(109.8deg)}.radial-progress[data-progress="61"] .circle .fill.fix{-webkit-transform:rotate(219.6deg);-ms-transform:rotate(219.6deg);transform:rotate(219.6deg)}.radial-progress[data-progress="62"] .circle .mask.full,.radial-progress[data-progress="62"] .circle .fill{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="62"] .circle .fill.fix{-webkit-transform:rotate(223.2deg);-ms-transform:rotate(223.2deg);transform:rotate(223.2deg)}.radial-progress[data-progress="63"] .circle .mask.full,.radial-progress[data-progress="63"] .circle .fill{-webkit-transform:rotate(113.4deg);-ms-transform:rotate(113.4deg);transform:rotate(113.4deg)}.radial-progress[data-progress="63"] .circle .fill.fix{-webkit-transform:rotate(226.8deg);-ms-transform:rotate(226.8deg);transform:rotate(226.8deg)}.radial-progress[data-progress="64"] .circle .mask.full,.radial-progress[data-progress="64"] .circle .fill{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="64"] .circle .fill.fix{-webkit-transform:rotate(230.4deg);-ms-transform:rotate(230.4deg);transform:rotate(230.4deg)}.radial-progress[data-progress="65"] .circle .mask.full,.radial-progress[data-progress="65"] .circle .fill{-webkit-transform:rotate(117deg);-ms-transform:rotate(117deg);transform:rotate(117deg)}.radial-progress[data-progress="65"] .circle .fill.fix{-webkit-transform:rotate(234deg);-ms-transform:rotate(234deg);transform:rotate(234deg)}.radial-progress[data-progress="66"] .circle .mask.full,.radial-progress[data-progress="66"] .circle .fill{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="66"] .circle .fill.fix{-webkit-transform:rotate(237.6deg);-ms-transform:rotate(237.6deg);transform:rotate(237.6deg)}.radial-progress[data-progress="67"] .circle .mask.full,.radial-progress[data-progress="67"] .circle .fill{-webkit-transform:rotate(120.6deg);-ms-transform:rotate(120.6deg);transform:rotate(120.6deg)}.radial-progress[data-progress="67"] .circle .fill.fix{-webkit-transform:rotate(241.2deg);-ms-transform:rotate(241.2deg);transform:rotate(241.2deg)}.radial-progress[data-progress="68"] .circle .mask.full,.radial-progress[data-progress="68"] .circle .fill{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="68"] .circle .fill.fix{-webkit-transform:rotate(244.8deg);-ms-transform:rotate(244.8deg);transform:rotate(244.8deg)}.radial-progress[data-progress="69"] .circle .mask.full,.radial-progress[data-progress="69"] .circle .fill{-webkit-transform:rotate(124.2deg);-ms-transform:rotate(124.2deg);transform:rotate(124.2deg)}.radial-progress[data-progress="69"] .circle .fill.fix{-webkit-transform:rotate(248.4deg);-ms-transform:rotate(248.4deg);transform:rotate(248.4deg)}.radial-progress[data-progress="70"] .circle .mask.full,.radial-progress[data-progress="70"] .circle .fill{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="70"] .circle .fill.fix{-webkit-transform:rotate(252deg);-ms-transform:rotate(252deg);transform:rotate(252deg)}.radial-progress[data-progress="71"] .circle .mask.full,.radial-progress[data-progress="71"] .circle .fill{-webkit-transform:rotate(127.8deg);-ms-transform:rotate(127.8deg);transform:rotate(127.8deg)}.radial-progress[data-progress="71"] .circle .fill.fix{-webkit-transform:rotate(255.6deg);-ms-transform:rotate(255.6deg);transform:rotate(255.6deg)}.radial-progress[data-progress="72"] .circle .mask.full,.radial-progress[data-progress="72"] .circle .fill{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="72"] .circle .fill.fix{-webkit-transform:rotate(259.2deg);-ms-transform:rotate(259.2deg);transform:rotate(259.2deg)}.radial-progress[data-progress="73"] .circle .mask.full,.radial-progress[data-progress="73"] .circle .fill{-webkit-transform:rotate(131.4deg);-ms-transform:rotate(131.4deg);transform:rotate(131.4deg)}.radial-progress[data-progress="73"] .circle .fill.fix{-webkit-transform:rotate(262.8deg);-ms-transform:rotate(262.8deg);transform:rotate(262.8deg)}.radial-progress[data-progress="74"] .circle .mask.full,.radial-progress[data-progress="74"] .circle .fill{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="74"] .circle .fill.fix{-webkit-transform:rotate(266.4deg);-ms-transform:rotate(266.4deg);transform:rotate(266.4deg)}.radial-progress[data-progress="75"] .circle .mask.full,.radial-progress[data-progress="75"] .circle .fill{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.radial-progress[data-progress="75"] .circle .fill.fix{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.radial-progress[data-progress="76"] .circle .mask.full,.radial-progress[data-progress="76"] .circle .fill{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="76"] .circle .fill.fix{-webkit-transform:rotate(273.6deg);-ms-transform:rotate(273.6deg);transform:rotate(273.6deg)}.radial-progress[data-progress="77"] .circle .mask.full,.radial-progress[data-progress="77"] .circle .fill{-webkit-transform:rotate(138.6deg);-ms-transform:rotate(138.6deg);transform:rotate(138.6deg)}.radial-progress[data-progress="77"] .circle .fill.fix{-webkit-transform:rotate(277.2deg);-ms-transform:rotate(277.2deg);transform:rotate(277.2deg)}.radial-progress[data-progress="78"] .circle .mask.full,.radial-progress[data-progress="78"] .circle .fill{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="78"] .circle .fill.fix{-webkit-transform:rotate(280.8deg);-ms-transform:rotate(280.8deg);transform:rotate(280.8deg)}.radial-progress[data-progress="79"] .circle .mask.full,.radial-progress[data-progress="79"] .circle .fill{-webkit-transform:rotate(142.2deg);-ms-transform:rotate(142.2deg);transform:rotate(142.2deg)}.radial-progress[data-progress="79"] .circle .fill.fix{-webkit-transform:rotate(284.4deg);-ms-transform:rotate(284.4deg);transform:rotate(284.4deg)}.radial-progress[data-progress="80"] .circle .mask.full,.radial-progress[data-progress="80"] .circle .fill{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="80"] .circle .fill.fix{-webkit-transform:rotate(288deg);-ms-transform:rotate(288deg);transform:rotate(288deg)}.radial-progress[data-progress="81"] .circle .mask.full,.radial-progress[data-progress="81"] .circle .fill{-webkit-transform:rotate(145.8deg);-ms-transform:rotate(145.8deg);transform:rotate(145.8deg)}.radial-progress[data-progress="81"] .circle .fill.fix{-webkit-transform:rotate(291.6deg);-ms-transform:rotate(291.6deg);transform:rotate(291.6deg)}.radial-progress[data-progress="82"] .circle .mask.full,.radial-progress[data-progress="82"] .circle .fill{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="82"] .circle .fill.fix{-webkit-transform:rotate(295.2deg);-ms-transform:rotate(295.2deg);transform:rotate(295.2deg)}.radial-progress[data-progress="83"] .circle .mask.full,.radial-progress[data-progress="83"] .circle .fill{-webkit-transform:rotate(149.4deg);-ms-transform:rotate(149.4deg);transform:rotate(149.4deg)}.radial-progress[data-progress="83"] .circle .fill.fix{-webkit-transform:rotate(298.8deg);-ms-transform:rotate(298.8deg);transform:rotate(298.8deg)}.radial-progress[data-progress="84"] .circle .mask.full,.radial-progress[data-progress="84"] .circle .fill{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="84"] .circle .fill.fix{-webkit-transform:rotate(302.4deg);-ms-transform:rotate(302.4deg);transform:rotate(302.4deg)}.radial-progress[data-progress="85"] .circle .mask.full,.radial-progress[data-progress="85"] .circle .fill{-webkit-transform:rotate(153deg);-ms-transform:rotate(153deg);transform:rotate(153deg)}.radial-progress[data-progress="85"] .circle .fill.fix{-webkit-transform:rotate(306deg);-ms-transform:rotate(306deg);transform:rotate(306deg)}.radial-progress[data-progress="86"] .circle .mask.full,.radial-progress[data-progress="86"] .circle .fill{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="86"] .circle .fill.fix{-webkit-transform:rotate(309.6deg);-ms-transform:rotate(309.6deg);transform:rotate(309.6deg)}.radial-progress[data-progress="87"] .circle .mask.full,.radial-progress[data-progress="87"] .circle .fill{-webkit-transform:rotate(156.6deg);-ms-transform:rotate(156.6deg);transform:rotate(156.6deg)}.radial-progress[data-progress="87"] .circle .fill.fix{-webkit-transform:rotate(313.2deg);-ms-transform:rotate(313.2deg);transform:rotate(313.2deg)}.radial-progress[data-progress="88"] .circle .mask.full,.radial-progress[data-progress="88"] .circle .fill{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="88"] .circle .fill.fix{-webkit-transform:rotate(316.8deg);-ms-transform:rotate(316.8deg);transform:rotate(316.8deg)}.radial-progress[data-progress="89"] .circle .mask.full,.radial-progress[data-progress="89"] .circle .fill{-webkit-transform:rotate(160.2deg);-ms-transform:rotate(160.2deg);transform:rotate(160.2deg)}.radial-progress[data-progress="89"] .circle .fill.fix{-webkit-transform:rotate(320.4deg);-ms-transform:rotate(320.4deg);transform:rotate(320.4deg)}.radial-progress[data-progress="90"] .circle .mask.full,.radial-progress[data-progress="90"] .circle .fill{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="90"] .circle .fill.fix{-webkit-transform:rotate(324deg);-ms-transform:rotate(324deg);transform:rotate(324deg)}.radial-progress[data-progress="91"] .circle .mask.full,.radial-progress[data-progress="91"] .circle .fill{-webkit-transform:rotate(163.8deg);-ms-transform:rotate(163.8deg);transform:rotate(163.8deg)}.radial-progress[data-progress="91"] .circle .fill.fix{-webkit-transform:rotate(327.6deg);-ms-transform:rotate(327.6deg);transform:rotate(327.6deg)}.radial-progress[data-progress="92"] .circle .mask.full,.radial-progress[data-progress="92"] .circle .fill{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="92"] .circle .fill.fix{-webkit-transform:rotate(331.2deg);-ms-transform:rotate(331.2deg);transform:rotate(331.2deg)}.radial-progress[data-progress="93"] .circle .mask.full,.radial-progress[data-progress="93"] .circle .fill{-webkit-transform:rotate(167.4deg);-ms-transform:rotate(167.4deg);transform:rotate(167.4deg)}.radial-progress[data-progress="93"] .circle .fill.fix{-webkit-transform:rotate(334.8deg);-ms-transform:rotate(334.8deg);transform:rotate(334.8deg)}.radial-progress[data-progress="94"] .circle .mask.full,.radial-progress[data-progress="94"] .circle .fill{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="94"] .circle .fill.fix{-webkit-transform:rotate(338.4deg);-ms-transform:rotate(338.4deg);transform:rotate(338.4deg)}.radial-progress[data-progress="95"] .circle .mask.full,.radial-progress[data-progress="95"] .circle .fill{-webkit-transform:rotate(171deg);-ms-transform:rotate(171deg);transform:rotate(171deg)}.radial-progress[data-progress="95"] .circle .fill.fix{-webkit-transform:rotate(342deg);-ms-transform:rotate(342deg);transform:rotate(342deg)}.radial-progress[data-progress="96"] .circle .mask.full,.radial-progress[data-progress="96"] .circle .fill{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="96"] .circle .fill.fix{-webkit-transform:rotate(345.6deg);-ms-transform:rotate(345.6deg);transform:rotate(345.6deg)}.radial-progress[data-progress="97"] .circle .mask.full,.radial-progress[data-progress="97"] .circle .fill{-webkit-transform:rotate(174.6deg);-ms-transform:rotate(174.6deg);transform:rotate(174.6deg)}.radial-progress[data-progress="97"] .circle .fill.fix{-webkit-transform:rotate(349.2deg);-ms-transform:rotate(349.2deg);transform:rotate(349.2deg)}.radial-progress[data-progress="98"] .circle .mask.full,.radial-progress[data-progress="98"] .circle .fill{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="98"] .circle .fill.fix{-webkit-transform:rotate(352.8deg);-ms-transform:rotate(352.8deg);transform:rotate(352.8deg)}.radial-progress[data-progress="99"] .circle .mask.full,.radial-progress[data-progress="99"] .circle .fill{-webkit-transform:rotate(178.2deg);-ms-transform:rotate(178.2deg);transform:rotate(178.2deg)}.radial-progress[data-progress="99"] .circle .fill.fix{-webkit-transform:rotate(356.4deg);-ms-transform:rotate(356.4deg);transform:rotate(356.4deg)}.radial-progress[data-progress="100"] .circle .mask.full,.radial-progress[data-progress="100"] .circle .fill{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="100"] .circle .fill.fix{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.radial-progress:not([data-progress="0"]) .inset .bgIcon{opacity:1}.radial-progress.radial-progress-success .circle .mask .fill{background-color:#5cb85c}.radial-progress.radial-progress-success .inset .percentage .number span{color:#5cb85c}.radial-progress.radial-progress-info .circle .mask .fill{background-color:#5bc0de}.radial-progress.radial-progress-info .inset .percentage .number span{color:#5bc0de}.radial-progress.radial-progress-danger .circle .mask .fill{background-color:#d9534f}.radial-progress.radial-progress-danger .inset .percentage .number span{color:#d9534f}.radial-progress.radial-progress-warning .circle .mask .fill{background-color:#f0ad4e}.radial-progress.radial-progress-warning .inset .percentage .number span{color:#f0ad4e}.radial-progress.radial-progress-sm{width:80px;height:80px}.radial-progress.radial-progress-sm .circle .mask{clip:rect(0px, 80px, 80px, 40px)}.radial-progress.radial-progress-sm .circle .mask .fill{clip:rect(0px, 40px, 80px, 0px)}.radial-progress.radial-progress-sm .inset{width:60px;height:60px;margin-left:10px;margin-top:10px;font-size:14.4px}.radial-progress.radial-progress-sm .inset .bgIcon{position:absolute;font-size:50px;top:5px;left:-2px}.radial-progress.radial-progress-lg{width:180px;height:180px}.radial-progress.radial-progress-lg .circle .mask{clip:rect(0px, 180px, 180px, 90px)}.radial-progress.radial-progress-lg .circle .mask .fill{clip:rect(0px, 90px, 180px, 0px)}.radial-progress.radial-progress-lg .inset{width:135px;height:135px;margin-left:22.5px;margin-top:22.5px;font-size:32.4px}.radial-progress.radial-progress-lg .inset .bgIcon{position:absolute;font-size:115px;top:5px;left:-6px}html{position:relative;min-height:100%}body{min-height:100%;margin-bottom:80px}#o_main_wrapper{background:#fff;z-index:3}#o_main_wrapper #o_main_container{background:#fff}#o_main_wrapper #o_main_container #o_main_left{float:left;z-index:2;position:relative;background:#fff}#o_main_wrapper #o_main_container #o_main_left #o_main_left_content{padding:0 0 0 15px}#o_main_wrapper #o_main_container #o_main_left #o_main_left_toggle{position:absolute;display:none;right:0;top:70px;margin-right:-30px;font-size:25px;line-height:35px;text-align:center;width:30px;height:35px;z-index:3;border:1px solid #ddd;border-left:none;border-bottom-right-radius:4px;border-top-right-radius:4px;background-color:#fbfbfb;-webkit-box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);color:#337ab7}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas{background:#fbfbfb;-webkit-box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);min-width:250px}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas #o_main_left_content{padding:0 0 0 0}#o_main_wrapper #o_main_container #o_main_right{float:right;z-index:2;position:relative;background:inherit}#o_main_wrapper #o_main_container #o_main_right #o_main_right_content{padding:0 15px 0 0}#o_main_wrapper #o_main_container #o_main_center{position:relative;z-index:1;background:inherit}#o_main_wrapper #o_main_container #o_main_center h2:first-child{margin-top:0}@media screen and (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center{margin-left:0 !important}}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:0 15px}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content #o_main_center_content_inner{padding-bottom:15px}#o_main_wrapper #o_toplink{position:absolute;bottom:0;right:15px;text-align:center;z-index:3}@media (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:15px}}#o_back_wrapper,#o_preview_wrapper{margin-top:10px}#o_back_wrapper.o_toolbar .o_breadcrumb .breadcrumb,#o_preview_wrapper.o_toolbar .o_breadcrumb .breadcrumb{font-size:14px}body.o_message #o_main_center_content_inner{min-height:150px;max-width:500px;padding:15px;margin:60px auto}#o_footer_wrapper{position:absolute;bottom:0;width:100%;height:70px;overflow:hidden;background-color:#f5f5f5;color:#999;line-height:16px;font-size:12px}#o_footer_wrapper a{color:#999}#o_footer_wrapper a:hover{color:#000}#o_footer_container{position:relative;padding-top:10px;min-height:70px;background:#f5f5f5;z-index:1}#o_footer_user{position:absolute;left:15px;top:10px;z-index:1}#o_footer_user #o_counter{white-space:nowrap}#o_footer_user #o_username{white-space:nowrap;margin-right:1em}#o_footer_version{position:absolute;right:15px;top:10px;text-align:right;z-index:1}@media (max-width: 767px){#o_footer_version{padding-top:10px;text-align:left}}#o_footer_powered{position:absolute;top:30px;right:15px;z-index:1}#o_footer_powered img{opacity:.6;filter:alpha(opacity=60)}#o_footer_powered img:hover{opacity:1;filter:alpha(opacity=100)}#o_footer_impressum{position:absolute;top:10px;width:100%;text-align:center;z-index:-1}#o_footer_impressum i{display:none}#o_footer_textline{position:absolute;top:30px;width:100%;text-align:center;z-index:-1}#o_share{margin-top:10px}#o_share a{opacity:.6;filter:alpha(opacity=60)}#o_share a:hover{opacity:1;filter:alpha(opacity=100)}#o_share a,#o_share_social_container a{color:#999;margin:0 0.25em 0 0}#o_share a:hover,#o_share_social_container a:hover{color:#000}@media (max-width: 767px){#o_counter,#o_footer_version,#o_share{display:none}#o_footer_impressum{top:30px;text-align:left}#o_footer_textline{top:50px;text-align:left}#o_footer_powered{top:10px}#o_footer_powered a:after{content:"\221E";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;font-size:14px}#o_footer_powered img{display:none}}#o_navbar_wrapper{z-index:4;border-top:1px solid #e7e7e7;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}#o_navbar_wrapper #o_navbar_container{position:relative}a.o_disabled.navbar-text{margin:0}.o_navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid #e7e7e7;background-color:#f8f8f8}.o_navbar:before,.o_navbar:after{content:" ";display:table}.o_navbar:after{clear:both}.o_navbar .o_navbar_tabs li{max-width:150px}.o_navbar .o_navbar_tabs li a{padding-right:30px}.o_navbar .o_navbar_tabs li a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_navbar .o_navbar_tabs .o_icon-fw{position:absolute;top:15px;left:0.5em;padding-top:3px;width:1em;height:1em;display:none}.o_navbar .o_navbar_tabs .o_navbar_tab_close{position:absolute;top:15px;right:0.5em;padding:0;width:1em;height:1em}.o_navbar .o_navbar_tabs .o_navbar_tab_close i:before{color:#d9534f}.o_navbar .o_navbar_tabs .o_navbar_tab_close:hover i:before{color:#c9302c}.o_navbar .o_custom_navbar-brand{background-position:5px 0;background-repeat:no-repeat;height:50px;width:120px}.o_navbar #o_navbar_langchooser{color:#777;padding:7px 15px}.o_navbar #o_navbar_langchooser form span+div{display:inline}.o_navbar #o_navbar_tools_permanent #o_navbar_print a,.o_navbar #o_navbar_tools_permanent #o_navbar_impress a,.o_navbar #o_navbar_tools_permanent #o_navbar_help a{color:#777;padding-right:0}.o_navbar #o_navbar_tools_permanent #o_navbar_login a{color:#f0ad4e}.o_navbar .o_navbar_tools>#o_navbar_tools_permanent>li>a>span{display:none}@media (min-width: 768px){.o_navbar .o_navbar_tools li.o_portrait>a>span{display:inline}}.o_navbar #o_navbar_tools_personal .o_navbar_tool a,.o_navbar #o_navbar_tools_permanent .o_navbar_tool a{padding-right:5px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu a{padding-left:45px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .dropdown-menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .dropdown-menu a{padding-left:15px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .o_portrait,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .o_portrait{position:absolute;left:7px;top:10px}.o_navbar #o_navbar_tools_personal .o_logout,.o_navbar #o_navbar_tools_permanent .o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar_tab_close{top:10px;right:10px}.o_navbar.o_navbar-offcanvas .o_navbar-right a{padding:3px 20px;color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-right a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a:focus{color:#fff;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:focus{color:#c9302c}.o_navbar.o_navbar-offcanvas .o_navbar-right a .o_icon-lg{font-size:1.0em;vertical-align:baseline}.o_navbar.o_navbar-offcanvas .o_navbar-right .divider{height:1px;margin:9px 0;overflow:hidden;background-color:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-header{padding-left:15px}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-toggle{display:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu{box-shadow:none;position:relative;top:0;left:0;display:block;float:none;background-color:#222;color:#9d9d9d;font-size:14px;border:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu .divider{background:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a{color:#9d9d9d;text-shadow:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav a:focus{background-color:transparent;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:focus{background-color:#090909;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link{color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link:hover{color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a{color:#777}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}#o_navbar_impress a span,#o_navbar_search_opener a span{display:none}body.o_dmz #o_navbar_print a span,body.o_dmz #o_navbar_impress a span,body.o_dmz #o_navbar_help a span,body.o_dmz #o_navbar_search_opener a span{display:inline}.o_navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;-webkit-overflow-scrolling:touch}.o_navbar-collapse:before,.o_navbar-collapse:after{content:" ";display:table}.o_navbar-collapse:after{clear:both}.o_navbar-collapse.o_collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.o_navbar-offcanvas .o_navbar-collapse{width:auto;box-shadow:none;margin-top:10px;margin-right:-15px;margin-left:-15px}.o_navbar-brand{float:left;font-size:18px;line-height:20px;height:50px;color:#777}.o_navbar-brand:hover,.o_navbar-brand:focus{text-decoration:none;color:#5e5e5e;background-color:transparent}.o_navbar-toggle{position:relative;margin-right:15px;margin-left:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;border:1px solid #ddd;border-radius:4px;background-color:transparent;background-image:none}.o_navbar-toggle:hover,.o_navbar-toggle:focus{outline:none;background-color:#ddd}.o_navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;background-color:#888}.o_navbar-toggle .icon-bar+.icon-bar{margin-top:4px}#o_navbar_left-toggle{float:left}#o_navbar_right-toggle{float:right}.o_navbar-link{color:#777}.o_navbar-link:hover{color:#333}.o_navbar-nav{margin:7.5px -15px}.o_navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px;color:#777}.o_navbar-nav>li>a:hover,.o_navbar-nav>li>a:focus{color:#333;background-color:transparent}.o_navbar-nav>.active>a,.o_navbar-nav>.active>a:hover,.o_navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar-nav>.disabled>a,.o_navbar-nav>.disabled>a:hover,.o_navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.o_navbar-nav>.open>a,.o_navbar-nav>.open>a:hover,.o_navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}.o_collapse .o_navbar-nav{float:left;margin:0}.o_collapse .o_navbar-nav>li{float:left}.o_collapse .o_navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.o_collapse .o_navbar-nav.o_navbar-right:last-child{margin-right:-15px}.o_collapse.o_navbar-collapse .o_navbar-left{float:left !important}.o_collapse.o_navbar-collapse .o_navbar-right{float:right !important}.o_navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (max-width: 767px){.o_navbar-form .form-group{margin-bottom:5px}}.o_collapse .o_navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.o_collapse .o_navbar-form.o_navbar-right:last-child{margin-right:-15px}.o_navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.o_navbar-fixed-bottom .o_navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.o_navbar-btn{margin-top:8px;margin-bottom:8px}.o_navbar-btn.btn-sm,.btn-group-sm>.o_navbar-btn.btn{margin-top:10px;margin-bottom:10px}.o_navbar-btn.btn-xs,.btn-group-xs>.o_navbar-btn.btn{margin-top:14px;margin-bottom:14px}.o_navbar-text{margin-top:15px;margin-bottom:15px;color:#777}.o_collapse .o_navbar-text{float:left;margin-left:15px;margin-right:15px}.o_collapse .o_navbar-text.o_navbar-right:last-child{margin-right:0}.o_dropdown_tab{position:relative}.o_dropdown_tab>a:first-child{padding-right:30px}.o_dropdown_tab>a:first-child .o_icon-fw{display:none;position:absolute;top:0;left:10px;padding-top:3px;line-height:20px}.o_dropdown_tab>a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_dropdown_tab .o_navbar_tab_close{position:absolute;top:0px;right:10px;padding-left:0px;padding-right:0px;color:#d9534f;background-color:inherit}.o_dropdown_tab .o_navbar_tab_close:focus,.o_dropdown_tab .o_navbar_tab_close:hover{color:#c9302c;background-color:inherit}#o_navbar_more .dropdown-menu .divider:last-child{display:none}@media (min-width: 768px){#o_navbar_more .dropdown-menu{max-width:300px}}@media (max-width: 767px){#o_navbar_more>li{position:inherit}#o_navbar_more .dropdown-menu{left:0px;right:0px}#o_navbar_more .dropdown-menu a,#o_navbar_more .dropdown-menu i{line-height:30px}#o_navbar_more .dropdown-menu .o_navbar_tab_close{line-height:inherit}}.o_body_popup #o_topnav_printview{display:inline-block}.o_body_popup #o_topnav_close{float:right}.o_body_popup #o_topnav_close span{display:block}.o_body_popup #o_navbar_tools_permanent li>a{background-color:transparent}.o_toolbar{position:relative;margin-bottom:20px;margin-top:-10px;border:1px solid #e7e7e7}.o_toolbar:before,.o_toolbar:after{content:" ";display:table}.o_toolbar:after{clear:both}@media (min-width: 768px){.o_toolbar{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}}.o_toolbar .o_breadcrumb:before,.o_toolbar .o_breadcrumb:after{content:" ";display:table}.o_toolbar .o_breadcrumb:after{clear:both}.o_toolbar .o_breadcrumb .breadcrumb{margin-bottom:0;padding:5px 9px;font-size:11px;line-height:15px;border-radius:0;background:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a span{display:none}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close:before{content:none}.o_toolbar .o_tools_container{text-align:center;min-height:37px;position:relative;background-color:#f8f8f8;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:1px solid #e7e7e7}.o_toolbar .o_tools_container:before,.o_toolbar .o_tools_container:after{content:" ";display:table}.o_toolbar .o_tools_container:after{clear:both}@media (max-width: 991px){.o_toolbar .o_tools_container{min-height:35px}}@media (max-width: 767px){.o_toolbar .o_tools_container{min-height:22px;text-align:left}}.o_toolbar .o_tools_container span.o_tool_text{color:#777;display:inline-block}.o_toolbar .o_tools_container a{color:#777;display:inline-block}.o_toolbar .o_tools_container a:hover{color:#333}.o_toolbar .o_tools_container a.o_disabled{color:#aaa !important}.o_toolbar .o_tools_container a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tools_container a.active{color:#337ab7;background-color:transparent}.o_toolbar .o_tools_container a.btn-primary{color:#fff}.o_toolbar .o_tools_container .dropdown-menu a{display:block}.o_toolbar .o_tools_container .dropdown-menu a.active{color:#337ab7;background-color:transparent}.o_toolbar .o_tools{margin-top:8px;margin-bottom:5px}.o_toolbar .o_tool,.o_toolbar .o_text{position:relative;margin:0 10px}.o_toolbar .o_tool:first-child,.o_toolbar .o_text:first-child{margin-left:0}.o_toolbar .o_tool:last-child,.o_toolbar .o_text:last-child{margin-right:0}.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:18px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:block;font-size:12px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{position:absolute;right:50%;top:-18px;margin-right:-12px;font-size:13px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:16px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{font-size:11px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{top:-16.5px;margin-right:-11px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:20px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:none}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{display:block;position:relative;top:0;left:0;margin-right:0}}.o_toolbar .o_tool .o_chelp,.o_toolbar .o_text .o_chelp{position:relative;top:-1em;vertical-align:top;color:#fff}.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{padding:0;margin-top:5px;border:1px solid #ccc;background-color:#eee}.o_toolbar .o_tool_next a,.o_toolbar .o_tool_previous a{color:#777}.o_toolbar .o_tool_next a:hover,.o_toolbar .o_tool_previous a:hover{color:#333}.o_toolbar .o_tool_next a.o_disabled,.o_toolbar .o_tool_previous a.o_disabled{color:#aaa !important}.o_toolbar .o_tool_next a.o_disabled:hover,.o_toolbar .o_tool_previous a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:21px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:4px}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:18px}}@media (max-width: 767px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:0}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:20px}}.o_toolbar .o_tool_previous{margin-left:10px;border-bottom-left-radius:4px;border-top-left-radius:4px;border-right:0}.o_toolbar .o_tool_next{border-bottom-right-radius:4px;border-top-right-radius:4px}.o_toolbar .o_tool_dropdown{margin:0 10px}.o_toolbar .o_tool_dropdown:first-child{margin-left:0}.o_toolbar .o_tool_dropdown:last-child{margin-right:0}.o_toolbar .o_tool_dropdown a.dropdown-toggle{position:relative}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:18px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span{display:block;font-size:12px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{position:absolute;right:50%;top:4px;margin-right:-20px;font-size:14px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:16px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span,.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{font-size:11px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{top:4px;margin-right:-18px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown a.dropdown-toggle{padding:0 10px 0 5px}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:20px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span{display:none}}.o_toolbar .o_tool_dropdown .dropdown-menu{text-align:left}.o_toolbar .o_tools_left{float:left}.o_toolbar .o_tools_right{float:right}.o_toolbar .o_tools_right_edge{float:right}.o_toolbar .o_tools_center{float:both;width:50%;margin-left:auto;margin-right:auto}.o_toolbar .o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}@media (max-width: 991px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tool span{max-width:10em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_toolbar .o_tools_segments .o_tool span{display:block}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 5px}}@media (max-width: 767px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools .o_chelp{top:0;vertical-align:top}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_center{float:left}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 0;position:static}.o_toolbar .o_tool_dropdown .dropdown-menu{left:0px;right:0px}.o_toolbar .o_tool_dropdown .dropdown-menu a,.o_toolbar .o_tool_dropdown .dropdown-menu i{line-height:30px}.o_toolbar .o_tool_dropdown .dropdown-menu .o_navbar_tab_close{line-height:inherit}}#o_main_container .o_toolbar_message{display:table;margin:0 auto 20px auto}#o_main_container .o_toolbar_message.o_warning{padding-top:5px;padding-bottom:5px;border:1px solid #8a6d3b;border-radius:3px}.o_edit_mode .o_toolbar .o_tools_container{background:repeating-linear-gradient(300deg, #fff0d9, #fff0d9 10px, #fcfcfc 10px, #fcfcfc 20px)}.o_edit_mode .o_toolbar .o_edit_mode .o_tools_container{background:#f8f8f8}body{overflow-x:hidden}.o_container_offcanvas{position:relative;max-width:1324px;-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;-m-transition:all .25s ease-in-out;transition:all .25s ease-in-out}#o_offcanvas_right{position:absolute;top:0;right:-250px;width:250px;padding:15px 15px;background-color:#222;color:#9d9d9d;border:1px solid #090909;-webkit-box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);min-height:100%;z-index:10;display:none}#o_offcanvas_right:before,#o_offcanvas_right:after{content:" ";display:table}#o_offcanvas_right:after{clear:both}@media screen and (max-width: 767px){.row-offcanvas{position:relative;-webkit-transition:all .25s ease-out;-moz-transition:all .25s ease-out;transition:all .25s ease-out}.row-offcanvas-right{right:0}.row-offcanvas-right .sidebar-offcanvas{right:-50%}.row-offcanvas-right.active{right:50%}.row-offcanvas-left{left:0}.row-offcanvas-left .sidebar-offcanvas{left:-50%}.row-offcanvas-left.active{left:50%}.sidebar-offcanvas{position:absolute;top:0;width:50%}}.o_info,.b_info,p.b_info,div.b_info,.o_form .o_info,.o_togglebox_wrapper div.o_togglebox_content,div.o_qti_item_itemfeedback,.o_assessmentitem_wrapper .modalFeedback .o_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_info h2,.o_info h5,.b_info h2,.o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h3,.o_form .o_info h3,.o_togglebox_wrapper div.o_togglebox_content h3,div.o_qti_item_itemfeedback h3,.o_assessmentitem_wrapper .modalFeedback .o_info h3,.b_info h4,.o_form .o_info h4,.o_togglebox_wrapper div.o_togglebox_content h4,div.o_qti_item_itemfeedback h4,.o_assessmentitem_wrapper .modalFeedback .o_info h4,.b_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_info h2,.o_form .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback .o_cal .fc-header-title h2,.o_cal .fc-header-title div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h5,.o_form .o_info h5,.o_togglebox_wrapper div.o_togglebox_content h5,div.o_qti_item_itemfeedback h5,.o_assessmentitem_wrapper .modalFeedback .o_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note,.o_form .o_desc,.o_course_run .o_statusinfo,.o_course_stats .o_desc,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_note h2,.o_note h5,.b_note h2,.o_form .o_desc h2,.o_course_run .o_statusinfo h2,.o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h3,.o_form .o_desc h3,.o_course_run .o_statusinfo h3,.o_course_stats .o_desc h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h3,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h3,.b_note h4,.o_form .o_desc h4,.o_course_run .o_statusinfo h4,.o_course_stats .o_desc h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.b_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_note h2,.o_form .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_desc h2,.o_course_run .o_statusinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_statusinfo h2,.o_course_stats .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h5,.o_form .o_desc h5,.o_course_run .o_statusinfo h5,.o_course_stats .o_desc h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h5,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important,.o_bc_empty,.o_course_run .o_no_scoreinfo{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_important h2,.o_important h5,.b_important h2,.o_bc_empty h2,.o_course_run .o_no_scoreinfo h2,.b_important h3,.o_bc_empty h3,.o_course_run .o_no_scoreinfo h3,.b_important h4,.o_bc_empty h4,.o_course_run .o_no_scoreinfo h4,.b_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_important h2,.o_bc_empty .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_bc_empty h2,.o_course_run .o_no_scoreinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_no_scoreinfo h2,.b_important h5,.o_bc_empty h5,.o_course_run .o_no_scoreinfo h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_success h2,.o_success h5,.b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h3,.b_success h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h4,.b_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning,.o_form .o_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_warning h2,.o_warning h5,.b_warning h2,.o_form .o_warning h2,.b_warning h3,.o_form .o_warning h3,.b_warning h4,.o_form .o_warning h4,.b_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_warning h2,.o_form .o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_warning h2,.b_warning h5,.o_form .o_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_error h2,.o_error h5,.b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h3,.b_error h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h4,.b_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4,.modal .modal-header .o_cal .fc-header-title h2,.o_cal .fc-header-title .modal .modal-header h2{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.o_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_tree a{color:#777;background-color:none}.o_tree a:hover,.o_tree a:focus{color:#333}.o_tree .o_tree_link{background-color:none}.o_tree .o_tree_link:hover,.o_tree .o_tree_link:focus{background-color:#f8f8f8}.o_tree .o_tree_link:first-child{background-color:transparent}.o_tree .o_tree_link:last-child:hover,.o_tree .o_tree_link:last-child:focus{background-color:#f8f8f8}.o_tree .o_insertion_point>a>span{padding:5px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_insertion_source>a>span.o_tree_item,.o_tree .o_insertion_source>a>span.o_dnd_item{border-bottom:solid #f90 4px;background-color:#fefbf6}.o_tree ul{margin:0;padding:0;list-style-type:none}.o_tree ul li{margin:0;padding:0;white-space:nowrap}.o_tree ul li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_tree ul li div.popover{position:absolute;left:auto;right:0}.o_tree ul li div a.o_tree_oc_l0{position:absolute;top:10px;left:-4px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l0,.o_tree ul .o_tree_level_close.b_tree_oc_l0{z-index:10}.o_tree ul li div a.o_tree_oc_l1{position:absolute;top:10px;left:11px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l1,.o_tree ul .o_tree_level_close.b_tree_oc_l1{z-index:10}.o_tree ul li div a.o_tree_oc_l2{position:absolute;top:10px;left:26px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l2,.o_tree ul .o_tree_level_close.b_tree_oc_l2{z-index:10}.o_tree ul li div a.o_tree_oc_l3{position:absolute;top:10px;left:41px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l3,.o_tree ul .o_tree_level_close.b_tree_oc_l3{z-index:10}.o_tree ul li div a.o_tree_oc_l4{position:absolute;top:10px;left:56px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l4,.o_tree ul .o_tree_level_close.b_tree_oc_l4{z-index:10}.o_tree ul li div a.o_tree_oc_l5{position:absolute;top:10px;left:71px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l5,.o_tree ul .o_tree_level_close.b_tree_oc_l5{z-index:10}.o_tree ul li div a.o_tree_oc_l6{position:absolute;top:10px;left:86px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l6,.o_tree ul .o_tree_level_close.b_tree_oc_l6{z-index:10}.o_tree ul li div a.o_tree_oc_l7{position:absolute;top:10px;left:101px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l7,.o_tree ul .o_tree_level_close.b_tree_oc_l7{z-index:10}.o_tree ul li div a.o_tree_oc_l8{position:absolute;top:10px;left:116px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l8,.o_tree ul .o_tree_level_close.b_tree_oc_l8{z-index:10}.o_tree ul li div a.o_tree_oc_l9{position:absolute;top:10px;left:131px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l9,.o_tree ul .o_tree_level_close.b_tree_oc_l9{z-index:10}.o_tree ul li div a.o_tree_oc_l10{position:absolute;top:10px;left:146px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l10,.o_tree ul .o_tree_level_close.b_tree_oc_l10{z-index:10}.o_tree ul li div a.o_tree_oc_l11{position:absolute;top:10px;left:161px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l11,.o_tree ul .o_tree_level_close.b_tree_oc_l11{z-index:10}.o_tree ul li div span.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_tree ul li div span.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_tree ul li div span.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_tree ul li div span.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_tree ul li div span.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_tree ul li div span.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_tree ul li div span.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_tree ul li div span.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_tree ul li div span.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_tree ul li div span.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_tree ul li div span.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_tree ul li div span.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_tree ul span.o_tree_leaf{display:none}.o_tree ul span.o_tree_link>input[type=checkbox]{margin-right:5px}.o_tree ul li .badge{position:absolute;font-size:70%}.o_tree ul li .badge:before{content:none}.o_tree ul li .badge.o_badge_1{top:3px;right:1px}.o_tree ul li .badge.o_badge_2{bottom:3px;right:1px}.o_tree ul li .badge.o_badge_3{top:3px;right:25px}.o_tree ul li .badge.o_badge_4{bottom:3px;right:25px}.o_tree ul li div.o_dnd_sibling{margin:0;padding:0;border-bottom:none}.o_tree ul li .active.o_tree_link{background-color:none;font-weight:bold}.o_tree ul li .active.o_tree_link a{color:#337ab7}.o_tree ul li .active.o_tree_link:hover,.o_tree ul li .active.o_tree_link:focus{background-color:#eee}.o_tree ul li .active.o_tree_link:hover a,.o_tree ul li .active.o_tree_link:focus a{color:#23527c}.o_tree ul li .active_parent.o_tree_link{font-weight:bold}.o_tree ul li .active_parent.o_tree_link a{color:#777}.o_tree ul li .active_parent.o_tree_link a:hover,.o_tree ul li .active_parent.o_tree_link a:focus{color:#333}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l0{left:6px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l1{left:21px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l2{left:36px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l3{left:51px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l4{left:66px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l5{left:81px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l6{left:96px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l7{left:111px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l8{left:126px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l9{left:141px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l10{left:156px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l11{left:171px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l0{padding:10px 2px 10px 20px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l1{padding:10px 2px 10px 35px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l2{padding:10px 2px 10px 50px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l3{padding:10px 2px 10px 65px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l4{padding:10px 2px 10px 80px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l5{padding:10px 2px 10px 95px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l6{padding:10px 2px 10px 110px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l7{padding:10px 2px 10px 125px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l8{padding:10px 2px 10px 140px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l9{padding:10px 2px 10px 155px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l10{padding:10px 2px 10px 170px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l11{padding:10px 2px 10px 185px}.o_tree .o_dnd_item{cursor:move;z-index:100}.o_tree .o_dnd_proxy{opacity:.4;filter:alpha(opacity=40);background-color:#f0ad4e;padding:5px 10px 5px 10px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_dnd_item.o_dnd_over{background-color:#ffff60}.o_tree .o_dnd_sibling{height:7px;width:100%}.o_tree .o_dnd_sibling.o_dnd_over{background:transparent url(../light/images/arrow_dd.png) top left no-repeat}.o_tree .o_dnd_l1{margin-left:0 !important}.o_tree .o_dnd_l2{margin-left:1em !important}.o_tree .o_dnd_l3{margin-left:2em !important}.o_tree .o_dnd_l4{margin-left:3em !important}.o_tree .o_dnd_l5{margin-left:4em !important}.o_tree .o_dnd_l6{margin-left:5em !important}.o_tree .o_dnd_l7{margin-left:6em !important}.o_tree .o_dnd_l8{margin-left:7em !important}.o_tree .o_dnd_l9{margin-left:8em !important}.o_tree .o_dnd_l10{margin-left:9em !important}.o_tree .o_dnd_l11{margin-left:10em !important}.o_tree.o_tree_insert_tool span.o_tree_link a{display:block}.o_offcanvas .o_tree{border:0}.o_selection_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_selection_tree ul{margin:0;padding:0;list-style-type:none}.o_selection_tree li{margin:0;padding:0;white-space:nowrap}.o_selection_tree li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_selection_tree li>div>span.o_tree_l0,.o_selection_tree li>div>div.checkbox.o_tree_l0,.o_selection_tree li>div>div.radio.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_selection_tree li>div>span.o_tree_l1,.o_selection_tree li>div>div.checkbox.o_tree_l1,.o_selection_tree li>div>div.radio.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_selection_tree li>div>span.o_tree_l2,.o_selection_tree li>div>div.checkbox.o_tree_l2,.o_selection_tree li>div>div.radio.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_selection_tree li>div>span.o_tree_l3,.o_selection_tree li>div>div.checkbox.o_tree_l3,.o_selection_tree li>div>div.radio.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_selection_tree li>div>span.o_tree_l4,.o_selection_tree li>div>div.checkbox.o_tree_l4,.o_selection_tree li>div>div.radio.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_selection_tree li>div>span.o_tree_l5,.o_selection_tree li>div>div.checkbox.o_tree_l5,.o_selection_tree li>div>div.radio.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_selection_tree li>div>span.o_tree_l6,.o_selection_tree li>div>div.checkbox.o_tree_l6,.o_selection_tree li>div>div.radio.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_selection_tree li>div>span.o_tree_l7,.o_selection_tree li>div>div.checkbox.o_tree_l7,.o_selection_tree li>div>div.radio.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_selection_tree li>div>span.o_tree_l8,.o_selection_tree li>div>div.checkbox.o_tree_l8,.o_selection_tree li>div>div.radio.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_selection_tree li>div>span.o_tree_l9,.o_selection_tree li>div>div.checkbox.o_tree_l9,.o_selection_tree li>div>div.radio.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_selection_tree li>div>span.o_tree_l10,.o_selection_tree li>div>div.checkbox.o_tree_l10,.o_selection_tree li>div>div.radio.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_selection_tree li>div>span.o_tree_l11,.o_selection_tree li>div>div.checkbox.o_tree_l11,.o_selection_tree li>div>div.radio.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_breadcrumb{position:relative}.o_breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_breadcrumb .o_breadcrumb_close a span{display:none}.o_breadcrumb .o_breadcrumb_close:before{content:none}.o_form .o_icon_mandatory{margin-right:0.25em}.o_form .o_form_chelp{padding-left:0.25em;margin-right:-1.25em}.o_form .o_form_example{font-size:90%}.o_form .o_error{margin-top:1px;margin-bottom:0;padding:10px}.o_form hr.o_spacer_noline{border-top:1px solid transparent}.o_form hr.o_spacer.form,.o_form hr.o_spacer_noline.form{margin-top:0px;margin-bottom:0px}.o_form .form-group.o_omit_margin{margin-bottom:0}.o_form .o_date{position:relative;padding-right:34px}.o_form .o_date.form-inline .form-group,.o_form .o_date.o_navbar-form .form-group{margin-left:0}.o_form input.o_date_ms{width:3em}.o_form .o_date.form-inline .o_date_ms.form-group,.o_form .o_date.o_navbar-form .o_date_ms.form-group{margin-left:25px}.o_form .has-feedback .o_date.form-inline .form-control.o_date_ms,.o_form .has-feedback .o_date.o_navbar-form .form-control.o_date_ms{padding-right:0}.o_form .o_form_element.form-inline .o_form_element.form-group,.o_form .o_form_element.o_navbar-form .o_form_element.form-group{margin-left:25px}.o_form .input-group.o_date_picker{width:16em}.o_form .o_filepreview{margin-bottom:10px}.o_form .o_fileinput{cursor:pointer;position:relative}.o_form .o_fileinput .o_fakechooser{position:relative;z-index:1}.o_form .o_fileinput .o_realchooser{position:absolute;top:0;right:0;z-index:2;opacity:0;filter:alpha(opacity=0)}.o_form .o_fileinput .o_realchooser.o_chooser_with_delete{right:38px}.o_form .has-feedback.has-error .o_fileinput .o_fakechooser{margin-right:30px}.o_form .form-control.textarea_disabled{resize:both;overflow:auto;white-space:pre-wrap;background:#fafafa}.o_centered_form{text-align:center}.o_centered_form fieldset.o_form{display:inline-block;text-align:left}.o_choice_checkrow,.o_choice_textrow{vertical-align:text-top;padding-bottom:2px}.o_choice_textrow{padding-left:1em}.o_togglecheck a{white-space:nowrap}.o_catalog .o_catalog_delete_img{position:relative;top:-0.5em}.o_button_dirty{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_button_dirty:hover,.o_button_dirty:focus,.o_button_dirty.focus,.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{background-image:none}.o_button_dirty.disabled,.o_button_dirty.disabled:hover,.o_button_dirty.disabled:focus,.o_button_dirty.disabled.focus,.o_button_dirty.disabled:active,.o_button_dirty.disabled.active,.o_button_dirty[disabled],.o_button_dirty[disabled]:hover,.o_button_dirty[disabled]:focus,.o_button_dirty[disabled].focus,.o_button_dirty[disabled]:active,.o_button_dirty[disabled].active,fieldset[disabled] .o_button_dirty,fieldset[disabled] .o_button_dirty:hover,fieldset[disabled] .o_button_dirty:focus,fieldset[disabled] .o_button_dirty.focus,fieldset[disabled] .o_button_dirty:active,fieldset[disabled] .o_button_dirty.active{background-color:#f0ad4e;border-color:#eea236}.o_button_dirty .badge{color:#f0ad4e;background-color:#fff}.o_button_toggle{border:1px solid #777;border-top-right-radius:9px;border-top-left-radius:9px;border-bottom-right-radius:9px;border-bottom-left-radius:9px;background:#eee;display:inline-block;height:18px;line-height:16px;font-size:16px;text-align:left;padding:0 0.5em 0 0;margin:0}.o_button_toggle i{color:#777;text-shadow:1px 0 2px rgba(0,0,0,0.25)}.o_button_toggle span{line-height:16px;vertical-align:top;font-size:60%;color:#777;text-transform:uppercase}.o_button_toggle.o_on{text-align:right;padding:0 0 0 0.5em}.o_button_toggle.o_on i{color:#337ab7;text-shadow:-1px 0 2px rgba(0,0,0,0.25)}.o_table_wrapper{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_table_wrapper.o_table_flexi .o_table_body{margin-top:20px}.o_table_wrapper.o_table_flexi .table{margin-top:20px}.o_table_wrapper.o_table_flexi .table td ul{margin:0}.o_table_wrapper.o_table_flexi.o_table_no_margin .table{margin:0}.o_table_wrapper.o_table_edit table tbody{border-top:solid #f90 4px;background-color:#fefbf6}.o_table_wrapper .o_table_search{max-width:50em}.o_table_wrapper .o_table_footer .o_table_pagination{text-align:center}.o_table_wrapper .o_table_rows_infos{float:left;padding-left:0;padding-right:20px;margin:20px 0}.o_table_wrapper .o_row_selected td{background-color:#dff0d8 !important}.o_table_wrapper .o_table{margin-bottom:0}.o_table_wrapper .o_marked{font-weight:bold}.o_table_wrapper .table{margin-bottom:0}.o_table_wrapper th a,.o_table_wrapper th a:hover{color:#333;text-decoration:none}.o_table_search a.btn.o_reset_quick_search{width:38px;margin-left:-38px;z-index:5;color:grey}@media (max-width: 767px){.o_table_wrapper .o_table_rows_infos{clear:both}}a.o_orderby,a.o_orderby:hover{color:#333;text-decoration:none}a.o_orderby.o_orderby_asc,a.o_orderby.o_orderby_desc,a.o_orderby:hover.o_orderby_asc,a.o_orderby:hover.o_orderby_desc{border-bottom:1px solid #ddd}.o_table_row_count{padding-top:6px;padding-bottom:6px;vertical-align:middle}.o_table_row_details td{background-color:white !important}.o_table_config{font-size:12px}.o_table_buttons{text-align:center}.o_table_buttons input{margin-right:1em}.o_table_buttons input:last-child{margin-right:0}.o_table_tools{margin-left:6px}.o_table_tools_indications{margin-left:10px;padding-top:3px;font-size:80%}.o_table_tools_indications a{color:#d9534f}.o_table_toolbar_left .o_table_tools_indications{text-align:right}.o_table_count{max-width:20em;float:left;padding:0 15px}.o_info .table-bordered td,o_note .table-bordered td,o_important .table-bordered td,o_warning .table-bordered td,o_error .table-bordered td{border-color:#333}.panel .o_table_layout{border-top:1px solid #ddd;padding-top:6px}.panel .o_table_count{padding:0 15px}#o_navbar_imclient .o_im_messages{float:left}#o_navbar_imclient #o_im_message,#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_summary{float:left;position:relative;padding:15px 3px}#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_message{padding-left:15px}#o_navbar_imclient #o_im_summary .badge{color:#fff;background-color:#777}#o_navbar_imclient #o_im_status li>a>span{display:inline}#o_navbar_imclient #o_im_status div.o_chelp_wrapper{right:0.5em}#o_navbar_imclient #o_im_message a:hover,#o_navbar_imclient #o_im_message a:focus{text-decoration:none}#o_navbar_imclient #o_im_message .o_icon_message{color:#d9534f}#o_navbar_imclient #o_im_message .o_icon_message:hover{color:#f4c37d}.o_im_load_history{margin-bottom:6px}.o_im_load_history .o_label{font-size:12px;padding-right:0.5em;line-height:1.5em;color:#777}.o_im_chat_history{height:170px;font-size:90%;border:1px solid #eee;margin:0 0 1em 0;overflow:scroll;overflow-x:auto}.o_im_message_group{padding:3px 3px 3px 40px;min-height:40px;position:relative;border-top:1px solid #eee;background:#fff}.o_im_message_group.o_odd{background:#F4F4F4}.o_im_message_group .o_portrait{position:absolute;top:3px;left:3px}.o_im_message_group .o_im_from{color:#777;font-size:12px;font-weight:bold}.o_im_message_group .o_im_from:hover{color:#5e5e5e}.o_im_message_group div.o_im_body{padding:3px 0 3px 0;font-size:12px}.o_im_message_group div.o_im_body .o_date{float:right;color:#777;font-size:9px}.o_groupchat_roster{font-size:12px}.o_groupchat_roster li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.o_groupchat_roster li.o_vip{color:#3c763d}.o_groupchat_roster li.o_anonymous{color:#31708f}.o_im_buddieslist .o_im_buddieslist_toggler .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_im_buddieslist ul{font-size:12px}.o_im_buddieslist ul ul{padding-left:1em}.o_im_buddieslist ul a{color:#337ab7}.o_im_buddieslist ul a:hover{color:#23527c}.o_flag{position:relative;top:1px;display:inline-block;line-height:1;width:16px;height:16px;background-repeat:no-repeat;background-position:0 100%}option.o_with_flag{padding-left:23px;min-height:16px;background-repeat:no-repeat;background-position:2px 50%}.o_flag_en{background-image:url("../light/images/flags/gb.png")}.o_flag_de{background-image:url("../light/images/flags/de.png")}.o_flag_fr{background-image:url("../light/images/flags/fr.png")}.o_flag_it{background-image:url("../light/images/flags/it.png")}.o_flag_es{background-image:url("../light/images/flags/es.png")}.o_flag_da{background-image:url("../light/images/flags/dk.png")}.o_flag_cs{background-image:url("../light/images/flags/cz.png")}.o_flag_el{background-image:url("../light/images/flags/gr.png")}.o_flag_ee{background-image:url("../light/images/flags/ee.png")}.o_flag_ru{background-image:url("../light/images/flags/ru.png")}.o_flag_pl{background-image:url("../light/images/flags/pl.png")}.o_flag_zh_CN{background-image:url("../light/images/flags/cn.png")}.o_flag_zh_TW{background-image:url("../light/images/flags/tw.png")}.o_flag_lt{background-image:url("../light/images/flags/lt.png")}.o_flag_fa{background-image:url("../light/images/flags/ir.png")}.o_flag_pt_PT{background-image:url("../light/images/flags/pt.png")}.o_flag_pt_BR{background-image:url("../light/images/flags/br.png")}.o_flag_tr{background-image:url("../light/images/flags/tr.png")}.o_flag_hu{background-image:url("../light/images/flags/hu.png")}.o_flag_sq{background-image:url("../light/images/flags/al.png")}.o_flag_in{background-image:url("../light/images/flags/id.png")}.o_flag_ar{background-image:url("../light/images/flags/eg.png")}.o_flag_rm{background-image:url("../light/images/flags/rm.png")}.o_flag_af{background-image:url("../light/images/flags/za.png")}.o_flag_vi{background-image:url("../light/images/flags/vn.png")}.o_flag_mn{background-image:url("../light/images/flags/mn.png")}.o_flag_iw{background-image:url("../light/images/flags/il.png")}.o_flag_ko{background-image:url("../light/images/flags/kr.png")}.o_flag_nl_NL{background-image:url("../light/images/flags/nl.png")}.o_flag_jp{background-image:url("../light/images/flags/jp.png")}.o_flag_nb_NO{background-image:url("../light/images/flags/no.png")}.o_flag_et_EE{background-image:url("../light/images/flags/ee.png")}.o_flag_bg{background-image:url("../light/images/flags/bg.png")}.o_flag_hi_IN_ASIA{background-image:url("../light/images/flags/in.png")}.o_flag_ar_LB{background-image:url("../light/images/flags/lb.png")}.o_flag_gl_ES{background-image:url("../light/images/flags/galicia.png")}.o_flag_sk{background-image:url("../light/images/flags/sk.png")}.o_rating .o_rating_title{font-size:12px}.o_rating .o_rating_items{white-space:nowrap}.o_rating .o_rating_items .o_icon{color:#f0ad4e}.o_rating .o_rating_items .o_icon:hover{color:#337ab7}.o_rating .o_rating_items .o_legend{margin-left:1em;font-size:12px;line-height:normal}.o_rating .o_rating_explanation{font-size:12px;color:#777}@media (max-width: 991px){.o_rating .o_rating_title,.o_rating .o_rating_explanation{display:none}}.o_comments .o_comment_wrapper .o_avatar{float:left;margin:0 1em 0 0}.o_comments .o_comment_wrapper .o_reply,.o_comments .o_comment_wrapper .o_delete{float:right}.o_comments .o_comment_wrapper .o_comment_wrapper{margin-left:16px}.o_ratings_and_comments .o_rating_wrapper{vertical-align:middle;display:inline-block}.o_ratings_and_comments a.o_comments{margin-left:10px;position:relative;top:0.1em}.d3chart .bar{shape-rendering:crispEdges}.d3chart .bar_default_light{fill:#64a0d3}.d3chart .bar_default,.d3chart .bubble_default{fill:#337ab7}.d3chart .bar_default_dark{fill:#23527c}.d3chart .axis{font:12px sans-serif}.d3chart .axis path,.d3chart .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_forum_peekview .o_quote_wrapper,.o_forum_peekview .b_quote_wrapper{display:none}.o_forum_thread_sticky{font-weight:bold}.o_forum_switch{font-size:12px}.o_forum_toolbar{margin-bottom:6px;float:left}.o_forum_fulltextsearch{float:right}@media (max-width: 767px){.o_forum_fulltextsearch{float:left}.o_forum_toolbar .o_forum_tool span{display:none}}.o_forum{padding-bottom:50px}.o_forum .o_mark,.o_forum .o_ep_collect{float:right;position:relative;width:2em;margin-left:12px}.o_forum .o_portrait{float:left;margin-right:16px}.o_forum .o_portrait_avatar{width:70px;height:70px}.o_forum .o_newindicator{font-size:10px;color:#5cb85c;text-transform:uppercase;padding-left:1em;vertical-align:text-top;white-space:nowrap}.o_forum .o_author,.o_forum .o_date{display:inline-block;color:#777}.o_forum .o_date{font-size:12px}.o_forum .o_modified{color:#8a6d3b;font-size:12px;font-style:italic}.o_forum .o_forum_message{margin-bottom:20px;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_forum .o_forum_message_new{-webkit-box-shadow:0 1px 10px rgba(92,184,92,0.3);box-shadow:0 1px 10px rgba(92,184,92,0.3)}.o_forum .o_forum_message_highlight{-webkit-box-shadow:0 1px 10px rgba(240,173,78,0.5);box-shadow:0 1px 10px rgba(240,173,78,0.5)}.o_forum .o_forum_message_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:3px;border-top-left-radius:3px}.o_forum .o_forum_message_title{margin-top:0}.o_forum .o_forum_message_body{padding:10px 15px}.o_forum .o_forum_message_attachments{border-top:1px solid #ddd;padding:10px 15px;font-size:12px;background-color:#f7f7f9}.o_forum .o_attachment{position:relative;max-width:250px;vertical-align:top;margin:6px 12px 10px 0}.o_forum .o_attachment img{margin-top:6px}.o_forum .o_filename{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_forum .o_icon_enlarge{position:absolute;left:1em;bottom:1em;text-shadow:1px 1px 2px #fff, -1px 1px 2px #fff, 1px -1px 2px #fff, -1px -1px 2px #fff}@media (min-width: 768px) and (max-width: 991px){.o_forum .o_attachments{font-size:10px}.o_forum .o_attachment{max-width:200px}.o_forum .o_attachment img{max-width:150px}.o_forum .o_filename{max-width:200px}}@media (max-width: 767px){.o_forum .o_attachments{font-size:9px}.o_forum .o_attachment{max-width:150px}.o_forum .o_attachment img{max-width:100px}.o_forum .o_filename{max-width:150px}}.o_quote_wrapper,.b_quote_wrapper{position:relative;margin:10px 0}.o_quote_author,.b_quote_author{color:#777;font-size:12px}.o_quote_author:before,.b_quote_author:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";font-size:21px;padding-right:0.5em}blockquote.o_quote,blockquote.b_quote{color:#555;font-size:12px;margin-top:6px;padding:0 12px}a.o_chelp{display:inline-block;padding:1px 3px;text-align:center;vertical-align:middle;white-space:nowrap;font-size:10px;font-weight:normal;line-height:15px;color:#fff;background-color:#337ab7;border:1px solid #2e6da4;border-radius:2px;cursor:help;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}a.o_chelp:active,a.o_chelp:hover,a.o_chelp:focus{text-decoration:none;color:#fff;background-color:#2a6598;border-color:#204d74}a.o_chelp i{font-size:10px !important}.o_chelp_wrapper{position:relative;float:right;display:inline-block;line-height:normal;margin-bottom:10px;margin-left:10px}.o_form_chelp,.o_chelp_tooltip{color:#737373}.o_draw_circle{border:4px solid #337ab7;border-radius:50%;position:absolute !important}.o_draw_rectangle{border:4px solid #337ab7;position:absolute !important}.o_iframedisplay iframe{width:100%}.o_singlepage .o_edit{position:absolute;top:10px;right:37px}.o_content_popup{position:absolute;top:10px;right:12px}.o_module_cp_wrapper .o_tools{position:absolute;top:10px;right:12px;text-align:right;vertical-align:middle}.o_module_cp_wrapper .o_tools .o_search_wrapper{display:inline-block;position:relative;top:-2px}ul.o_dropdown{margin:-5px -14px}ul.o_dropdown .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}ul.o_dropdown>li>a{display:block;padding:5px 14px;clear:both;font-weight:normal;line-height:1.42857;color:#333;background:#fff;white-space:nowrap}ul.o_dropdown>li>a:hover,ul.o_dropdown>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.badge.o_scorm_completed{background-color:#3c763d}.badge.o_scorm_failed{background-color:#a94442}.badge.o_scorm_incomplete{background-color:#8a6d3b}.badge.o_scorm_not_attempted{background:none}.o_bc_meta h5,.o_bc_meta .o_author,.o_bc_meta .o_comment,.tooltip h5,.tooltip .o_author,.tooltip .o_comment{color:#fff;margin:5px 0}.o_bc_meta .o_thumbnail,.tooltip .o_thumbnail{width:200px;height:200px;display:inline-block;background-color:#fff;margin:0 -5px}.o_htmleditor .o_metadata{border:1px solid #999;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:0;background:#eee;position:relative;top:1px;padding:5px}.o_htmleditor .o_metadata #o_filename{float:left}.o_htmleditor .o_metadata .o_lastmodified{float:right;color:#777;line-height:1.42857}.o_htmleditor #o_save{margin-top:10px;text-align:center}.o_htmleditor #o_save input{margin-right:1em}.o_htmleditor #o_save input:last-child{margin-right:0}.o_notifications_news_wrapper .o_notifications_news_subscription{margin:10px 0}.o_notifications_news_wrapper .o_notifications_news_subscription h4 i,.o_notifications_news_wrapper .o_notifications_news_subscription .o_cal .fc-header-title h2 i,.o_cal .fc-header-title .o_notifications_news_wrapper .o_notifications_news_subscription h2 i{display:none}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_context{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content{margin-left:1.5em;position:relative}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_icon{position:absolute;left:-1.5em;line-height:1.5em;top:0}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_date{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_url{margin-left:1.5em}.o_noti{margin:6px 0 6px 12px;float:right;color:#777}.o_noti .o_label{color:#777;cursor:help}@media (max-width: 767px){.o_noti .o_label span{display:none}}.panel-body .o_noti{margin:0}.o_portrait{display:inline-block}.o_portrait img{border-radius:50%;border:none;background-color:#eee;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.o_portrait_name{margin-top:6px}.o_block_inline .o_portait,.o_block_inline .o_portrait_name,.o_block_inline .o_portrait_image,.o_block_inline_right .o_portait,.o_block_inline_right .o_portrait_name,.o_block_inline_right .o_portrait_image,.o_block_inline_left .o_portait,.o_block_inline_left .o_portrait_name,.o_block_inline_left .o_portrait_image,.o_block_inline_both .o_portait,.o_block_inline_both .o_portrait_name,.o_block_inline_both .o_portrait_image{display:inline-block}.o_portrait_avatar,.o_portrait_dummy,.o_portrait_dummy_female_big,.o_portrait_dummy_male_big,.o_portrait_anonymous{width:100px;height:100px}.o_portrait_dummy{background-image:url("../light/images/portrait/dummy.png")}.o_portrait_dummy_female_big{background-image:url("../light/images/portrait/dummy_female_big.png")}.o_portrait_dummy_male_big{background-image:url("../light/images/portrait/dummy_male_big.png")}.o_portrait_anonymous{background-image:url("../light/images/portrait/anonymous.png")}.o_portrait_avatar_small,.o_portrait_dummy_small,.o_portrait_dummy_female_small,.o_portrait_dummy_male_small,.o_portrait_anonymous_small{width:30px;height:30px}.o_portrait_dummy_small{background-image:url("../light/images/portrait/dummy_small.png")}.o_portrait_dummy_female_small{background-image:url("../light/images/portrait/dummy_female_small.png")}.o_portrait_dummy_male_small{background-image:url("../light/images/portrait/dummy_male_small.png")}.o_portrait_anonymous_small{background-image:url("../light/images/portrait/anonymous_small.png")}.o_datecomp{position:relative;width:40px;height:52px;border:1px solid #555;margin-right:12px;text-align:center;vertical-align:middle}.o_datecomp div.o_year{position:absolute;left:0;width:100%;top:-20px;height:20px;line-height:20px;font-size:10px}.o_datecomp div.o_month{height:20px;line-height:20px;font-size:12px;background-color:#337ab7;color:#fff}.o_datecomp div.o_day{height:30px;line-height:30px;font-size:18px;border-top:1px solid #555;background-color:#fff;color:#333}.o_block_with_datecomp .o_head{position:relative;padding-left:52px}.o_block_with_datecomp .o_datecomp{position:absolute;top:0.2em;left:0}.o_block_with_datecomp .o_title{margin-top:0}.o_block_with_datecomp .o_meta{color:#777}.o_block_with_datecomp .o_content{border-left:5px solid #eee;padding:0 20px}.o_block_with_datecomp .o_block_footer{padding-left:25px}ul.o_certificates li{padding:5px 0}ul.o_certificates li a.o_sel_certificate_delete{padding-left:2em}.o_cal_toptoolbar{margin-bottom:6px}.o_cal_toptoolbar .o_cal_toptoolbar_help{float:left;margin-right:12px}.o_cal_toptoolbar .o_noti{margin-top:0}.o_feed .o_date,.o_feed .o_author{color:#777}.o_feed .o_subscription a{margin-right:1.5em}.o_feed .o_subscription .form-group{margin-bottom:5px}.o_feed .o_subscription .form-control{border:0;background:none;padding:0;height:auto;-webkit-box-shadow:none;box-shadow:none}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper{float:left}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_title,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_explanation,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_legend{display:none}.o_feed .o_blog_posts .o_ratings_and_comments a.o_comments span{display:none}.o_feed .o_content:before,.o_feed .o_content:after{content:" ";display:table}.o_feed .o_content:after{clear:both}.o_glossary .o_register{text-align:center}.o_glossary .o_meta{font-size:90%;color:#777;font-style:italic}.o_glossary dl dt:first-letter{font-size:21px}.o_glossary dl dt small{color:#777}.o_tm_glossary{border-bottom:1px dotted #666699 !important}.o_tm_yellow{background-color:#FFFF66}.o_tm_blue{background-color:#33FFFF}.o_tm_red{background-color:#FF3333}.o_tm_green{background-color:#99FF00}.o_coaching div#o_main_toolbar.o_toolbar{margin-top:0px}.o_eff_statement_details .o_user_infos{margin-top:20px}div.o_assessment_user_type_filter{display:inline-block;padding:0.5em;border:1px solid #eee;border-radius:4px}div.o_assessment_user_type_filter div.form-inline,div.o_assessment_user_type_filter div.o_navbar-form{margin-left:5px;display:inline-block}.vitero_iframe{width:100%;height:100%;border:none;min-height:60em}.o_reminder_rule{padding:5px 0}.o_segments.btn-group a span{overflow:hidden;display:block;text-overflow:ellipsis}.o_segments_content{margin-top:20px}.o_tabbed_pane .o_tabbed_pane_content{padding:20px 0 6px 0}.o_togglebox_wrapper .o_opener{position:relative;left:-0.5em}.o_togglebox_wrapper div.o_togglebox_content{position:relative;margin:0}.o_togglebox_wrapper div.o_togglebox_content .o_hide{position:absolute;bottom:0.5em;right:1em}.o_toolboxes ul{margin:0 0 1.5em 0;padding:0 0 0 1.5em}.o_qrcode{width:256px;height:256px}#o_ajax_busy{position:absolute;left:50%;top:20em;margin-left:-2.5em;height:5em;width:5em;color:#fff;z-index:1201;display:none}#o_body.o_ajax_busy{cursor:busy}.o_exception .o_visual{position:relative;background-image:url("../light/images/lion-500x333.jpg");filter:grayscale(50%);-webkit-filter:grayscale(50%);-moz-filter:grayscale(50%);-ms-filter:grayscale(50%);-o-filter:grayscale(50%);width:500px;height:333px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;margin:0 0 10px 16px}@media (min-width: 768px) and (max-width: 991px){.o_exception .o_visual{width:375px;height:249px}}@media (min-width: 500px) and (max-width: 767px){.o_exception .o_visual{width:250px;height:166px}}@media (max-width: 500px){.o_exception .o_visual{background-size:cover}}.o_exception .jumbotron h1,.o_exception .o_repo_details .o_lead h1,.o_repo_details .o_exception .o_lead h1{color:#d9534f}ul.o_assessment_docs{margin-bottom:0}ul.o_assessment_docs>li{margin-bottom:0.33em}ul.o_assessment_docs>li:last-child{margin-bottom:0em}.o_mail_message .o_mail_meta{background:#fafafa;border:1px solid #eee;padding:5px 10px}.o_mail_message .o_mail_meta h3{margin-top:0}.o_mail_message .o_mail_date,.o_mail_message .o_mail_from,.o_mail_message .o_mail_recipients{color:#777;font-size:90%}.o_mail_message .o_mail_date .o_label,.o_mail_message .o_mail_from .o_label,.o_mail_message .o_mail_recipients .o_label{font-weight:bold;margin-right:1em}.o_mail_message .o_mail_date .o_group span,.o_mail_message .o_mail_from .o_group span,.o_mail_message .o_mail_recipients .o_group span{font-weight:bold}.o_mail_message .o_mail_date .o_group span:after,.o_mail_message .o_mail_from .o_group span:after,.o_mail_message .o_mail_recipients .o_group span:after{content:':';margin-right:0.5em}.o_mail_message .o_mail_date i,.o_mail_message .o_mail_from i,.o_mail_message .o_mail_recipients i{margin-left:1em}.o_mail_message .o_mail_date ul.list-inline,.o_mail_message .o_mail_from ul.list-inline,.o_mail_message .o_mail_recipients ul.list-inline{display:inline}.o_mail_message .o_mail_date ul.list-inline li,.o_mail_message .o_mail_from ul.list-inline li,.o_mail_message .o_mail_recipients ul.list-inline li{padding-right:0;padding-left:0}.o_mail_message .o_more{margin-left:1em}.o_mail_message .o_showAllLink{float:right;font-size:80%}.progress .o_progress_marker{position:absolute;height:100%;top:0;width:3px;background:red}.o_web_content{padding-bottom:15px}.tt-input{width:400px}.tt-menu{width:400px;margin-top:6px;padding:0 0 0;color:#555;background-color:#fff;border:1px solid #66afe9;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 0 8px rgba(102,175,233,0.6);box-shadow:0 0 8px rgba(102,175,233,0.6)}.tt-suggestion{padding:6px 12px;font-size:14px;line-height:1.42857}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;background-color:#337ab7}.tt-suggestion p{margin:0}.tt-menu div.o_icon_error:before{content:''}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_highlight{font-weight:bold;background-color:#fcf8e3}.o_search_result_context{color:#3c763d}.o_search_result_excerpt{color:#555}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}@media (max-width: 767px){.o_search_result_details{display:none}}.wizard{border:1px solid #d4d4d4;border-radius:2px;background-color:#f9f9f9;position:relative;overflow:hidden;margin-bottom:15px}.wizard ul{list-style:none outside none;padding:0;margin:0;width:4000px}.wizard ul li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#333;font-size:16px;cursor:default}.wizard ul li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.wizard ul li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.wizard ul li.active{background:#f1f6fc;color:#333}.wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.wizard ul li .badge{margin-right:8px}.wizard ul li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.o_process{position:relative;padding-left:25px}.o_process .o_step{position:relative;height:auto;padding-top:10px;padding-left:30px;padding-bottom:10px}.o_process .o_bar{position:absolute;top:10px;left:8px;height:100%;border-left:4px solid #777}.o_process .o_bar:after{position:absolute;top:0;left:-10px;height:16px;width:16px;border:4px solid #777;border-radius:16px;background:#fff;content:" "}.o_process .o_title{margin-top:-1px;color:#777 !important}.o_process .o_title:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:-24px}.o_process .o_title a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";width:1em}.o_process .o_title a.collapsed:before{content:""}.o_process .o_step.o_active .o_bar,.o_process .o_step.o_active .o_bar:after{border-color:#337ab7}.o_process .o_step.o_active .o_title{color:#337ab7 !important}.o_process .o_step.o_active .o_title:before{content:"";color:#337ab7}.o_process .o_step.o_done .o_bar,.o_process .o_step.o_done .o_bar:after{border-color:#5094ce}.o_process .o_step.o_done .o_title{color:#5094ce !important}.o_process .o_step.o_done .o_title:before{content:"";color:#5cb85c}.o_process .o_meta{color:#777;font-size:12px;margin-top:-0.5em}.o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5D5D5D !important}.o_cal_class.o_cal_orange{border-left:20px solid #ffc266}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#FFF !important}.o_cal_class.o_cal_green{border-left:20px solid #66c266}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#FFF !important}.o_cal_class.o_cal_blue{border-left:20px solid #4d6e9f}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5D5D5D !important}.o_cal_class.o_cal_yellow{border-left:20px solid #ffe066}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#FFF !important}.o_cal_class.o_cal_red{border-left:20px solid #c26666}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#FFF !important}.o_cal_class.o_cal_rebeccapurple{border-left:20px solid #639}.o_cal_fuchsia{background:#FF00FF;border-color:#dd00dd;color:#FFF}.o_cal_fuchsia .o_cal_wv_event_header{background:#FF00FF}.o_cal_fuchsia a{color:#FFF !important}.o_cal_class.o_cal_fuchsia{border-left:20px solid #f0f}.o_cal_olive{background:#808000;border-color:#636300;color:#FFF}.o_cal_olive .o_cal_wv_event_header{background:#808000}.o_cal_olive a{color:#FFF !important}.o_cal_class.o_cal_olive{border-left:20px solid olive}.o_cal_navy{background:#000080;border-color:#000057;color:#FFF}.o_cal_navy .o_cal_wv_event_header{background:#000080}.o_cal_navy a{color:#FFF !important}.o_cal_class.o_cal_navy{border-left:20px solid navy}.o_cal_maroon{background:#800000;border-color:#740000;color:#FFF}.o_cal_maroon .o_cal_wv_event_header{background:#800000}.o_cal_maroon a{color:#FFF !important}.o_cal_class.o_cal_maroon{border-left:20px solid maroon}.o_cal_lime{background:#00FF00;border-color:#00e200;color:#004d00}.o_cal_lime .o_cal_wv_event_header{background:#00FF00}.o_cal_lime a{color:#004d00 !important}.o_cal_class.o_cal_lime{border-left:20px solid lime}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#FFF !important}.o_cal_class.o_cal_grey{border-left:20px solid #DDDAAA}.o_sel_calendar_print_chooser{padding-right:4em}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_config_color{display:block;width:16px;height:16px;border-radius:8px}.o_cal_colorchooser_selected:before{content:""}#o_cal_colorchooser div{border:1px solid #337ab7;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_cal_embedded_course_container .o_content_popup{top:0}.fc-button{color:#333;background-color:#fff;border-color:#ccc}.fc-button:hover,.fc-button:focus,.fc-button.focus,.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{background-image:none}.fc-button.disabled,.fc-button.disabled:hover,.fc-button.disabled:focus,.fc-button.disabled.focus,.fc-button.disabled:active,.fc-button.disabled.active,.fc-button[disabled],.fc-button[disabled]:hover,.fc-button[disabled]:focus,.fc-button[disabled].focus,.fc-button[disabled]:active,.fc-button[disabled].active,fieldset[disabled] .fc-button,fieldset[disabled] .fc-button:hover,fieldset[disabled] .fc-button:focus,fieldset[disabled] .fc-button.focus,fieldset[disabled] .fc-button:active,fieldset[disabled] .fc-button.active{background-color:#fff;border-color:#ccc}.fc-button .badge{color:#fff;background-color:#333}.fc-button.fc-state-default{text-shadow:none}.fc-button.fc-state-active{color:#fff;background-color:#337ab7;border-color:#2e6da4}.fc-button.fc-state-active:hover,.fc-button.fc-state-active:focus,.fc-button.fc-state-active.focus,.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{background-image:none}.fc-button.fc-state-active.disabled,.fc-button.fc-state-active.disabled:hover,.fc-button.fc-state-active.disabled:focus,.fc-button.fc-state-active.disabled.focus,.fc-button.fc-state-active.disabled:active,.fc-button.fc-state-active.disabled.active,.fc-button.fc-state-active[disabled],.fc-button.fc-state-active[disabled]:hover,.fc-button.fc-state-active[disabled]:focus,.fc-button.fc-state-active[disabled].focus,.fc-button.fc-state-active[disabled]:active,.fc-button.fc-state-active[disabled].active,fieldset[disabled] .fc-button.fc-state-active,fieldset[disabled] .fc-button.fc-state-active:hover,fieldset[disabled] .fc-button.fc-state-active:focus,fieldset[disabled] .fc-button.fc-state-active.focus,fieldset[disabled] .fc-button.fc-state-active:active,fieldset[disabled] .fc-button.fc-state-active.active{background-color:#337ab7;border-color:#2e6da4}.fc-button.fc-state-active .badge{color:#337ab7;background-color:#fff}body.o_cal_print fieldset{border:none;margin-bottom:2em}body.o_cal_print legend{font-size:2em;font-weight:bold}body.o_cal_print legend span{display:block;font-size:14px;font-weight:normal}body.o_cal_print ul.o_cal_wv_list{list-style-type:none;padding:0}body.o_cal_print ul.o_cal_wv_list>li{page-break-inside:avoid;margin-bottom:2em}body.o_cal_print ul.o_cal_wv_list .o_cal_date{font-size:1.25em;font-weight:bold;padding:0.5em 0 0.5em 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events{list-style-type:none;padding:0.5em 0 0 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event{position:relative;left:30px;page-break-inside:avoid;clear:both;margin-bottom:1.5em;padding-right:30px}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_time{float:left;font-weight:bold;margin-right:1em}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject{font-weight:bold}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject p{margin:0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_location,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_description,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{clear:both}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{font-style:italic}body.o_cal_print .o_cal_class{position:absolute;left:-30px;width:20px}body.o_cal_print #o_cal_config legend{font-size:1.25em}body.o_cal_print #o_cal_config .o_cal_config_calendar{margin:0;padding:0}body.o_cal_print #o_cal_config .o_cal_config_calendar{position:relative;left:30px;float:none;padding-right:30px}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #337ab7;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{box-sizing:content-box;border-right:1px solid #337ab7}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #337ab7;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#5bc0de}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#337ab7;border-color:#2e6da4}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#337ab7;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#f0ad4e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#337ab7}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#286090}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:normal;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;font-size:90%;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{border-right:37px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;width:37px;line-height:50px;color:#fff;background-color:#337ab7}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #337ab7;border-bottom:1px solid #337ab7}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#337ab7}.o_catalog .o_level .o_meta .o_title a:hover{color:#286090}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels_list .o_sublevel{position:relative;border:1px solid #337ab7;margin-bottom:10px}.o_catalog .o_sublevels_list .o_sublevel .o_visual{height:75px;width:75px}.o_catalog .o_sublevels_list .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels_list .o_sublevel .o_title{margin:0}.o_catalog .o_sublevels_list .o_sublevel .o_meta{border-left:1px solid #337ab7;min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em;overflow:hidden}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_title{line-height:75px}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_desc{display:none}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a{font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a>i,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a>i,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a>i{display:none}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels{border:1px solid transparent}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels .o_meta{border-left:1px solid transparent}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #337ab7;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #337ab7;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#337ab7;font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#286090}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (min-width: 768px){.o_catalog .o_sublevels_list,.o_catalog .o_sublevels_compact{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2;columns:2}}.o_repo_details{position:relative}.o_repo_details .o_lead{margin-bottom:10px}.o_repo_details .o_lead .o_author{margin-top:0.5em;margin-bottom:1em;font-size:120%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead .o_media.o_desc_empty{float:none;margin-left:0;margin-bottom:0}.o_repo_details .o_lead h1{font-size:37px}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start_wrapper{clear:both;margin:2em 0 -10px 0;text-align:right}.o_repo_details .o_start_wrapper .o_start_inner{display:inline-block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:400px;display:inline-block}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-left:0;float:none;text-align:center}.o_repo_details .o_start_wrapper{text-align:center}.o_repo_details .o_start_wrapper .o_start_inner{display:block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:100%;display:block}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}}.o_meta .o_closed{padding:2px 5px;margin:5px 0}.o_overview .o_closed{padding:12px 15px;margin:15px 0}.o_ac_configuration span.o_ac_infos{font-weight:normal;color:grey}tr.o_entry_closed,tr.o_entry_closed td,tr.o_entry_closed td span,tr.o_entry_unpublished,tr.o_entry_unpublished td,tr.o_entry_unpublished td span{text-decoration:line-through}.badge.o_midpub{background-color:#3c763d}.badge.o_midwarn{background-color:#8a6d3b}.badge.o_midlock{background-color:#31708f}.badge.o_miderr{background-color:#a94442}.badge.o_middel{background-color:#777}.o_course_editor_legend .badge{font-size:80%}.o_course_editor_legend .badge:before{content:none}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#333}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#66512c}.o_failed th{color:#333}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#333}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_course_run .o_in_review{font-style:italic;position:relative}.o_course_run.o_titled_wrapper>h2 i{display:none}.o_course_run .o_cal_toptoolbar{margin-right:26px}.o_course_run .o_titled_wrapper .o_cal_toptoolbar{margin-right:0px}.o_tree.o_course_menu div.o_tree_l0>a:first-child{background-color:none}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_ll_container h5{margin-bottom:5px}.o_ll_container h5 a.o_desc{color:#337ab7}.o_ll_container h5 a.o_desc small{display:none}.o_ll_container h5 a.o_desc:hover{color:#286090;text-decoration:none}.o_ll_container h5 a.o_desc:hover small{color:#5e5e5e;display:inline}.o_ll_container div.o_comment{color:#777}.o_cmembers .o_cmember{margin:12px 0}.o_cmembers .o_cmember .o_portrait{margin-right:10px}.o_cmembers .o_cmember .o_portrait img{width:50px;height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper{line-height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_cmembers .o_cmember a.o_mail{display:none}.o_cmembers .o_cmember:hover a.o_mail{display:inline}.o_cmembers_print{color:#000}.o_cmembers_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_cmembers_print #o_print_brand img{width:100%}.o_cmembers_print .o_portrait{width:100px;height:100px;position:relative}.o_cmembers_print .o_portrait img{border-radius:0px;margin:auto;display:block;max-width:100px;max-height:100px}.o_cmembers_print .o_cmember{padding-left:0px;padding-right:15px;margin-bottom:20px}.o_cmembers_print .o_cmember .o_cmember_info_wrapper{word-wrap:break-word}.o_cmembers_print .o_cmember .o_prop.o_zipCode{float:left;padding-right:0.5em}.o_cmembers_print h1{font-size:18pt;color:#000}.o_cmembers_print h3{font-size:14pt;margin-top:5px;font-weight:normal;color:#000}.o_cmembers_print h4,.o_cmembers_print .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_cmembers_print h2{font-size:11pt;font-weight:strong;color:#000;padding-bottom:10px;border-bottom:1px solid #eee}.o_cmembers_print .o_cmember_info_wrapper{font-size:7pt;color:#000}.o_cmembers_print .o_cmember_info_wrapper strong{font-size:8pt}.tag.label.label-info{margin-right:3px}.input-group.o_tag_inputgroup .form-control{height:auto}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#337ab7}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #337ab7}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #337ab7 !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid #337ab7}.o_gap_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}div.hotspotInteraction{overflow-x:auto}#itemBody .extendedTextInteraction{margin:15px 0}#itemBody .extendedTextInteraction textarea{resize:vertical !important}#itemBody .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-color:#337ab7}.progress-striped #o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_questioninfo .progress-bar{background-color:#337ab7}.progress-striped #o_qti_run_infos #o_qti_questioninfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_results_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 0 1em 0}#o_qti_results_infos .progress{background-color:#eee}#o_qti_results_infos #o_qti_run_scoreinfo,#o_qti_results_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}.o_qti_hotspot_label{padding-left:48%}.o_info.o_assessmentsection_rubrics{margin:0 0 0.5em 0}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d9534f;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d9534f}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d9534f}.o_assessmentitem div.orderInteraction div.box{background-color:#eee}.o_assessmentitem div.orderInteraction div.box span.info{margin-left:1em;color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction div.box.horizontal{margin:0.5em 0;width:100%}.o_assessmentitem div.orderInteraction ul.horizontal{float:left;margin:0 1em;padding:1em 0;width:100%}.o_assessmentitem div.orderInteraction div.box.vertical{margin:1em 0;width:49%}.o_assessmentitem div.orderInteraction div.box.vertical.source{float:left}.o_assessmentitem div.orderInteraction div.box.vertical.target{float:right}.o_assessmentitem div.orderInteraction ul.vertical{margin:0 1em;padding:1em 0;width:auto}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0;width:60%}.o_assessmentitem div.orderInteraction ul li{margin:0 3px 3px 3px;padding:0.4em;padding-left:1.5em;font-size:1em}.o_assessmentitem div.orderInteraction ul li span.ui-icon{position:absolute;margin-left:-1.3em}.o_assessmentitem div.orderInteraction ul.horizontal li{float:left;width:auto}.o_assessmentitem div.orderInteraction br{clear:both}.o_assessmentitem .hottext{position:relative;margin:-2px 0.15em -2px 0.15em;white-space:nowrap}.o_assessmentitem .hottext input{margin:0 3px 0 2px;position:absolute;top:0.1em;left:0.05em}.o_assessmentitem .hottext input+label{display:inline;padding:0 0.1em 0 1.2em;background:#f8f8f8;border:1px solid #e7e7e7;border-radius:2px;color:#333;font-weight:normal;white-space:normal}.o_assessmentitem .hottext input:checked+label{color:#fff;background:#5bc0de;border:1px solid #31b0d5}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem .textEntryInteraction input{margin:-1px 2px;line-height:90%;vertical-align:middle;font-size:98%;border:0.5px solid #999;background:#fff;padding:0.5px 1px;color:#333}.o_assessmentitem .textEntryInteraction input:valid,.o_assessmentitem .textEntryInteraction input:disabled{color:#fff;-webkit-text-fill-color:#fff;background:#5bc0de;border:0.5px solid #31b0d5}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em}.o_assessmentitem_wrapper #itemBody{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;line-height:1.5em}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type,.o_assessmentitem_wrapper .modalFeedback .o_cal .fc-header-title h2:first-of-type,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback h2:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4,.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h2{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d9534f}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#5cb85c}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f0ad4e}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#5bc0de;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}#itemBody{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}.o_assessment_test_results .o_sel_assessment_item_hint{display:none}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction label{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#5cb85c}.matchInteraction div.bar_red{background-color:#d9534f}.source-left,.target-left,.source-right,.target-right{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_match_dnd_sources{padding:10px 10px 0 10px;min-height:60px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_match_dnd_sources.oo-accepted{border-color:#1f7e9a}.o_match_dnd_source{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;cursor:move;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.o_match_dnd_source:before,.o_match_dnd_source:after{content:" ";display:table}.o_match_dnd_source:after{clear:both}.o_match_dnd_source.oo-selected{border:2px dashed #f0ad4e;background:#fae3c4}.o_match_dnd_source.oo-drag{border:2px dashed #f0ad4e !important}.source-bottom .o_match_dnd_source,.source-top .o_match_dnd_source{margin:0 0 10px 0}.o_match_dnd_targets .oo-accepted{border:2px solid #1f7e9a;border-radius:4px}.o_match_dnd_target{padding:10px 10px 0 10px;margin:0 0 10px 10px;border:2px solid #5bc0de;border-radius:4px;background:#d9edf7}.o_match_dnd_target:before,.o_match_dnd_target:after{content:" ";display:table}.o_match_dnd_target:after{clear:both}.o_match_dnd_target .o_match_dnd_target_drop_zone{margin:0;padding:5px 0 0 15px;min-height:30px}.o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{border:2px dashed #777}.target-bottom .o_match_dnd_target,.target-top .o_match_dnd_target{margin:0 0 10px 0}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone{padding-left:0px}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{padding-left:15px}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#5cb85c}.o_assessmentitem div.failure{background-color:#f0ad4e}.o_assessmentitem div.error{background-color:#d9534f}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:10px;border-bottom:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#337ab7;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#23527c;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f0ad4e}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#5bc0de}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}.o_assessment_test_results .o_qti_assessment_title{border-bottom:1px solid #ddd}.o_assessment_test_results table th{width:40%}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section{text-align:center}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section .o_qti_section_sublisting{padding:0 10%;min-height:3em}.o_assessment_test_results .o_qti_sections .o_qti_section{margin-top:40px}.o_assessment_test_results .o_qti_sections .o_qti_section h3{margin-bottom:20px}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_id{display:none}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:0;padding:5px 10px 10px 5px;border-top:1px solid #ddd;broder-bottom:1px solid #ddd}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2{font-size:100%;font-weight:bold;color:inherit}.o_assessment_test_results .o_qti_to_overview{text-align:right}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}div.o_wiki_wrapper a.wikiimg{text-decoration:none;color:inherit;font-weight:inherit}div.o_wiki_wrapper div.imgcaption{padding:0.3em 0em 0.2em 0.3em}div.o_wiki_wrapper div.imgleft{clear:left;float:left;margin:0.3em 0.3em 0.3em 0em}div.o_wiki_wrapper div.imgright{clear:right;float:right;margin:0.3em 0em 0.3em 0.3em}div.o_wiki_wrapper div.imgcenter{clear:both;overflow:hidden;text-align:center;margin:0.3em 0em 0.3em 0em}div.o_wiki_wrapper div.imgthumb{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper table.gallery{border:1px solid #ccc;margin:2px;padding:2px;background-color:white}div.o_wiki_wrapper table.gallery tr{vertical-align:middle}div.o_wiki_wrapper table.gallery td{background-color:#f9f9f9;border:solid 2px white;text-align:center;vertical-align:middle;width:150px}div.o_wiki_wrapper img.gallery{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper a.edit{font-style:italic;color:red}div.o_wiki_wrapper a.externallink:before{padding-right:2px}div.o_wiki_wrapper a.externallink:before:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}.o_ep_icon_map:before{content:""}.o_ep_icon_collection:before{content:""}.o_ep_icon_page:before{content:""}.o_ep_icon_struct:before{content:""}.o_ep_icon_liveblog:before{content:"ï‚¡"}.o_artefact_closed:before{content:""}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.o_eportfolio_page .o_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.panel-footer .o_ep_options{display:inline-block}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ECF69A;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99E44D;background:#99E44D -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99E44D), to(#CBF1A5));background:#99E44D -moz-linear-gradient(43% 71% 101deg, #CBF1A5, #99E44D);background:#99E44D -o-linear-gradient(#99E44D, #CBF1A5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99E44D', EndColorStr='#CBF1A5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#DFF0C1;background:#DFF0C1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DFF0C1), to(#A0D346));background:#DFF0C1 -moz-linear-gradient(43% 71% 101deg, #A0D346, #DFF0C1);background:#DFF0C1 -o-linear-gradient(#DFF0C1, #A0D346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DFF0C1', EndColorStr='#A0D346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#D7DBB5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#FFBA71;background:#FFBA71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFBA71), to(#FFBA99));background:#FFBA71 -moz-linear-gradient(43% 71% 101deg, #FFBA99, #FFBA71);background:#FFBA71 -o-linear-gradient(#FFBA71, #FFBA99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFBA71', EndColorStr='#FFBA99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#FF9772;background:#FF9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FF9772), to(#FF9780));background:#FF9772 -moz-linear-gradient(43% 71% 101deg, #FF9780, #FF9772);background:#FF9772 -o-linear-gradient(#FF9772, #FF9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF9772', EndColorStr='#FF9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#E8AFBB;background:#E8AFBB -webkit-gradient(linear, 37% 20%, 53% 100%, from(#E8AFBB), to(#E8AFA0));background:#E8AFBB -moz-linear-gradient(43% 71% 101deg, #E8AFA0, #E8AFBB);background:#E8AFBB -o-linear-gradient(#E8AFBB, #E8AFA0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#E8AFBB', EndColorStr='#E8AFA0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#FFA800;background:#FFA800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFA800), to(#FFAF00));background:#FFA800 -moz-linear-gradient(43% 71% 101deg, #FFAF00, #FFA800);background:#FFA800 -o-linear-gradient(#FFA800, #FFAF00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFA800', EndColorStr='#FFAF00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00D2F8;background:#00D2F8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00D2F8), to(#4A9EAD));background:#00D2F8 -moz-linear-gradient(43% 71% 101deg, #4A9EAD, #00D2F8);background:#00D2F8 -o-linear-gradient(#00D2F8, #4A9EAD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00D2F8', EndColorStr='#4A9EAD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#C4F6FF;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#B3E2F7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#DEE7F7;background:#DEE7F7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DEE7F7), to(#C1E9FD));background:#DEE7F7 -moz-linear-gradient(43% 71% 101deg, #C1E9FD, #DEE7F7);background:#DEE7F7 -o-linear-gradient(#DEE7F7, #C1E9FD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DEE7F7', EndColorStr='#C1E9FD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_portfolio div#o_main_toolbar.o_toolbar{margin-top:0px}.o_section_lead,.o_page_lead,.o_assignment_lead{padding:10px 10px;margin-bottom:10px;background-color:#f2f2f2;border-radius:3px;border:1px #d9d9d9 solid}.o_section_lead.o_assignment_2_instantiate{border-radius:3px 3px 0px 0px;border-bottom:none;padding-bottom:1px;margin-bottom:0px}.o_assignment_2_instantiate{padding:10px 10px 0px 10px;background-color:#f2f2f2;border-left:1px #d9d9d9 solid;border-right:1px #d9d9d9 solid}.o_assignment_2_instantiate.last{padding-bottom:10px;border-bottom:1px #d9d9d9 solid;border-radius:0px 0px 3px 3px}.o_page_lead{padding:20px}.o_page_lead h2{margin-bottom:5px}.o_page_lead .o_portfolio_page_meta{margin-bottom:5px}.o_page_lead .o_page_summary{font-size:18px}.o_page_lead .o_media.o_media_right,.o_page_lead .o_media.o_media_right_large{float:right;margin-left:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_left_large{float:left;margin-right:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_right{max-height:200px;max-width:50%}.o_page_lead .o_media.o_media_left img,.o_page_lead .o_media.o_media_right img{max-height:200px}.o_page_lead .o_media.o_media_right_large,.o_page_lead .o_media.o_media_left_large{max-height:300px;max-width:75%}.o_page_lead .o_media.o_media_right_large img,.o_page_lead .o_media.o_media_left_large img{max-height:300px}.o_page_lead .o_media.o_desc_empty{max-height:300px;text-align:center}.o_page_lead .o_media.o_desc_empty img{max-height:300px}.o_page_lead .o_media img{border-radius:3px;border:1px #d9d9d9 solid;background:#fff}.o_page_lead .o_portfolio_status_block{border-top:1px solid #d9d9d9;padding-top:1em;margin-bottom:-1em}.o_page_lead .o_portfolio_status{display:inline-block;padding-right:2em}.o_page_lead.o_block_imagebg .o_portfolio_status{padding:2px;background-color:rgba(255,255,255,0.8)}.o_page_assignment{font-size:12px}.o_page_assignment.o_togglebox_wrapper div.o_togglebox_content{margin:10px 0 20px 0;padding:20px;border-left:3px solid #d9534f;background-color:#f2dede}.o_page_assignment .o_page_assignement_info{position:relative;left:-1em}.o_portfolio_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry{position:relative;display:inline-block;height:230px;width:400px;vertical-align:top;margin-right:10px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry ul{padding-left:2em}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul{margin:0;padding:0;list-style-type:none}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul li{padding:2px}.o_binder.o_portfolio_assignments .panel-heading,.o_binder.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.panel-default.o_portfolio_assignments .panel-heading,.panel-default.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_meta_wrapper,.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_summary{padding-left:10px}.o_portfolio_page_summary .o_media.o_media_right,.o_portfolio_page_summary .o_media.o_media_right_large{float:right;margin-left:0.5em;margin-bottom:0.5em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_left_large{float:left;margin-right:0.5em;margin-bottom:0.5em}.o_portfolio_categories .tag{font-size:80%;font-weight:normal}.o_portfolio_last_modified+.o_portfolio_categories,.o_portfolio_page_meta+.o_portfolio_categories{margin-left:1em}.o_rendertype_classic .o_pf_page,.o_rendertype_classic .o_pf_assignment{padding-left:1em}.o_portfolio_timeline .o_timeline_up{text-align:center}.o_portfolio_timeline .o_timeline_down{text-align:center}.o_portfolio_timeline .axis path,.o_portfolio_timeline .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_portfolio_timeline .x.axis line,.o_portfolio_timeline .x.axis path{display:none}.o_portfolio_timeline path.o_timeline_curve{fill:none;stroke:#ccc;shape-rendering:crispEdges}.o_portfolio_timeline .y.axis .tick line,.o_portfolio_timeline .y.axis path.domain{stroke:#ddd}.o_portfolio_timeline text{fill:#888;stroke:none;font-size:10px}.o_portfolio_timeline .dot.o_pf_status_draft{fill:#f0ad4e}.o_portfolio_timeline .dot.o_pf_status_published{fill:#337ab7}.o_portfolio_timeline .dot.o_pf_status_inrevision{fill:#d9534f}.o_portfolio_timeline .dot.o_pf_status_closed{fill:#5cb85c}.o_portfolio_timeline .dot.o_pf_status_deleted{fill:#000}.o_portfolio_title_help_helper{display:inline-block;float:right;position:relative;top:1em;right:1em}.o_pf_comments{margin-top:2em}.o_pf_content .o_cit,.o_pf_content .o_file{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_forum{border:1px #f8f8f8 solid;padding:10px;border-radius:10px}.o_pf_content .o_image,.o_pf_content .o_video{padding:10px;text-align:center;width:100%}.o_pf_content .o_image img,.o_pf_content .o_video img{border:1px #f8f8f8 solid;border-radius:10px}.o_pf_content_editor .o_toolbar{border:none}.o_pf_content_editor .o_page_part{border:2px solid transparent}.o_pf_content_editor .o_page_part:hover{border:2px dotted #78acd9}.o_pf_content_editor .o_page_fragment_edit{position:relative}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above{height:25px;width:100%;background:#78acd9;position:absolute;z-index:3;left:0;top:-25px;box-shadow:3px -8px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_add_above{position:absolute;left:0;top:-25px;height:25px;border-left:2px dashed #78acd9;border-top:2px dashed #78acd9;border-right:2px dashed #78acd9;border-radius:10px 10px 0 0;box-shadow:0 -5px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_sel_add_element_above{display:inline-block;padding:5px 5px 0 5px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above{padding-right:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above .o_page_type{display:none}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a{float:right;color:#fff;padding-right:1em}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd{position:absolute;z-index:4;top:0;right:0;width:25px;height:100%;background:#78acd9}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a{position:absolute;display:inline-block;width:25px;height:25px;line-height:25px;text-align:center;vertical-align:middle;color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_up_element{z-index:4;top:-25px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_down_element{bottom:0}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit{padding-right:25px;border:2px solid #78acd9;box-shadow:5px 5px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit:hover{border:2px solid #78acd9}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar{position:absolute;z-index:5;left:5px;top:-25px;display:inline-block;height:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a{color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_title .o_page_edit_toolbar li{font-weight:bold}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_richtext_mce textarea{border:0}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below{position:absolute;z-index:3;left:0;bottom:-25px;height:25px;border-left:2px dashed #78acd9;border-bottom:2px dashed #78acd9;border-right:2px dashed #78acd9;border-radius:0 0 10px 10px;box-shadow:3px 8px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below .o_sel_add_element_below{display:inline-block;padding:0 5px 5px 5px}.o_pf_content_editor .o_pf_add_contents{margin-top:30px}.o_portfolio_add_callout a span{display:none}.o_portfolio_add_callout ul.list-inline{margin-bottom:0}.o_portfolio_image_options{clear:both;width:300px;padding:5px}.o_binder_page_listing .o_portfolio_page_links{background-color:#f8f8f8;border-radius:4px}.o_binder_page_listing .o_portfolio_page_links .o_portfolio_comment{float:right}.o_portfolio_toc{padding-bottom:6em}.o_portfolio_toc .o_portfolio_section_meta{font-size:80%;color:#777;position:relative;top:-15px}.o_portfolio_toc .o_section{position:relative}.o_portfolio_toc .o_section .o_header_with_buttons h4,.o_portfolio_toc .o_section .o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_portfolio_toc .o_section .o_header_with_buttons h2{padding-right:0.5em}.o_portfolio_toc .o_section_actions{position:absolute;top:0;right:0}.o_portfolio_toc .o_section_actions .o_section_move_up_and_down{display:inline-block}.o_portfolio_toc .o_section_actions .o_section_dropdown{display:inline-block;position:relative;top:-0.5em;padding-left:0.5em}.o_portfolio_toc ul>li>ul{padding-left:1.5em}.o_portfolio_content .o_portfolio_toc.o_portfolio_toc_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_page_meta_wrapper{background-position:left top;background-repeat:no-repeat}.o_portfolio_rights table .o_portfolio_section td:first-child{padding-left:1.5em}.o_portfolio_rights table .o_portfolio_page td:first-child{padding-left:2.5em}.o_portfolio_publication table{padding-bottom:10px}.o_portfolio_publication table td{padding:5px 5px 5px 0}.o_portfolio_publication .o_portfolio_ac{font-size:90%}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(2){width:200px;white-space:nowrap}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(3){width:40px;white-space:nowrap}.o_portfolio_publication ul ul{margin-left:2em;margin-bottom:5px}.o_portfolio_publication ul li{background:#fbfbfb;padding:3px;margin-bottom:2px}.o_portfolio_publication ul li li{background:#f2f2f2}.o_portfolio_publication ul li li li{background:#eee}.o_portfolio_publication ul li li .table{margin-bottom:0px}@media (max-width: 767px){.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:100%;float:none}.o_portfolio_content .o_sel_timeline_off,.o_portfolio_content .o_sel_timeline_on,.o_portfolio_content .o_portfolio_timeline{display:none}.o_portfolio_content .o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline{width:100%;float:none}}.o_portfolio_media_browser .o_portfolio_medias{position:relative;margin-bottom:20px;margin-top:20px}.o_portfolio_media_browser .o_portfolio_medias:before,.o_portfolio_media_browser .o_portfolio_medias:after{content:" ";display:table}.o_portfolio_media_browser .o_portfolio_medias:after{clear:both}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media:last-child{margin-right:0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{border:1px solid #337ab7;position:relative;height:180px;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon span.o_visual_not_available{background-image:none}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:6em;text-align:center;color:#eee;line-height:140px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #337ab7;border-top:0;background-color:rgba(255,255,255,0.8)}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a{display:block;color:#337ab7;font-family:inherit;font-weight:inherit}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover{color:#286090}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 10px 10px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}@media (max-width: 767px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 1px 1px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}.o_evaluation_form .o_evaluation_step_labels{margin-bottom:8px}.o_evaluation_form .o_evaluation_step_labels div,.o_evaluation_form .o_evaluation_step_labels span{display:inline-block;text-align:center}.o_evaluation_form .o_slider{margin-bottom:8px}.o_evaluation_form .o_slider.hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels{position:relative}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:first-child{position:absolute;left:0px;text-align:left}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div{display:inline-block;text-align:center}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:last-child{position:absolute;right:0px;text-align:right}.o_evaluation_form .o_evaluation_discrete_radio .o_slider input[type='radio']{padding:0;margin:0;position:relative}.o_evaluation_form .o_evaluation_discrete_radio .o_slider label{padding:0;margin:0;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps div.radio{display:inline-block;text-align:center}.o_evaluation_form .o_slider .ui-slider.ui-slider-horizontal.ui-widget-content{margin-top:0.3em}.o_evaluation_form .o_evaluation_left_label{text-align:right}.o_evaluation_form .o_evaluation_right_label{text-align:left}.o_evaluation_form .o_evaluation_textinput .o_evaluation_legend{padding-left:0.5em;margin-bottom:0.5em}@media (max-width: 768px){.o_evaluation_form .o_evaluation_left_label{text-align:left}.o_evaluation_form .o_evaluation_right_label{text-align:right}}.o_slider_overview{width:100%;height:20px;position:relative}.o_slider_overview .o_slider_overview_line{top:5px;left:0px;position:absolute;width:100%;height:11px;border:1px solid #999;border-radius:4px}.o_slider_overview .o_slider_overview_point{position:absolute;width:10px;height:10px;background-color:#337ab7}.o_evaluation_editor_form{margin:10px 10px 0 10px}.o_evaluation_editor_form .o_slider_editor{margin-top:10px;position:relative}.o_evaluation_editor_form .o_evaluation_step_labels{display:inline-block}.o_evaluation_editor_form .o_evaluation_step_labels input{width:100%}.o_evaluation_editor_form .o_slider_editor_delete{padding-right:48px}.o_evaluation_editor_form .o_slider_editor_delete .o_slider_editor_delete_button{position:absolute;right:15px}.o_cit{position:relative;margin:10px 0}.o_cit blockquote.o_quote{color:#555;font-size:18px;margin-top:6px;padding:0 12px}.o_cit blockquote.o_quote p:last-child:after{content:'1)';top:-0.5em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}.o_cit .o_cit_bibinfo{font-size:90%;margin-left:1em;position:relative}.o_cit .o_cit_bibinfo>div:first-child:before{content:'1)';position:absolute;top:0.5em;left:-1em;font-size:75%;line-height:0;vertical-align:baseline}.o_cit .title,.o_cit .url,.o_cit .authors,.o_cit .pages,.o_cit .date,.o_cit .dateAdded,.o_cit .place,.o_cit .institution,.o_cit .issue,.o_cit .publisher,.o_cit .publicationTitle,.o_cit .edition,.o_cit .series,.o_cit .volume{margin-right:0.5em}.o_cit .title{font-style:italic}.o_cit .publicationTitle{color:black}.o_cit .links{padding-left:2em}.o_cit .notes{padding-left:2em;color:grey}.o_cit .note{font-style:italic}.o_cit .note p:first-child{margin-top:0}.o_cit .note p:first-child{margin-bottom:0}.o_cit .listing.web .item{padding-left:0;text-indent:0}.o_cit .listing.web .title{display:block;font-weight:bold;font-style:normal}.o_cit .listing.web .publicationTitle{display:block;font-style:italic}.o_cit .listing.web .url{display:block}.o_cit .listing.web .links{padding-left:0}.o_cit .listing.web .notes{padding-left:0}.o_cit .general-info{border-top:1px solid #eee;padding-top:30px;margin-top:30px}.o_cit .copyright{display:none}@media print{.cit{background-image:none;padding-top:0;max-width:100%}.cit #styles,.cit #refreshContainer{display:none}.cit #general-info a:after{content:" (" attr(href) ") ";font-size:0.8em;font-weight:normal}.cit #copyright{display:block;margin-top:30px}}.o_video_poster{position:relative;display:inline-block;width:400px;max-width:100%;height:225px;background-size:cover;background-repeat:no-repeat;border:1px solid #eee}.o_video_poster_select{text-align:center}.o_video_poster_select .o_video_poster{margin:5px}.o_video_poster_select .o_video_poster a{position:absolute;left:0;top:0;width:100%;height:100%}.o_video_poster_select .o_video_poster a span{position:absolute;bottom:0;width:100%;display:block;line-height:3em;background:#f8f8f8;opacity:0.8}.o_video_poster_select .o_video_poster a:hover{border:1px solid #bbb}.o_video_poster_select .o_video_poster a:hover span{opacity:0.9}.o_video_peekview{text-align:center}.o_video_listing .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_video_listing .o_video_entry{position:relative;display:inline-block;height:230px;width:250px;vertical-align:top;margin-right:10px}.o_video_listing .o_video_poster{width:250px;max-width:100%;height:140px;border:1px solid #eee}.o_video_listing .o_timecode{position:absolute;bottom:2px;right:3px;padding:3px 4px;background:#333;color:#fff;font-size:12px;line-height:12px}.o_video_listing .o_meta{padding:2px;font-size:11px}.o_video_listing .o_meta h5{font-size:14px;margin-top:0;margin-bottom:5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_video_listing .o_date{margin-left:10px;display:inline-block}.o_video_listing .o_date:before{content:'\002022';margin-right:10px;display:inline-block}.o_video_run .o_author{margin-top:0.5em;margin-bottom:1em;line-height:normal;font-size:90%;color:#3c763d}.o_video_run .o_ratings_and_comments{margin-top:2em;border-top:1px solid #eee;padding-top:1em}.mejs__controls .mejs__sourcechooser-button>button{background:transparent;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.mejs__controls .mejs__sourcechooser-button>button:before{content:"";color:white;font-size:18px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector{visibility:visible !important;width:170px;padding-left:10px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label{font-weight:normal;font-size:10px;width:140px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label:hover{color:#eee}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label .type{display:none}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input:checked+label{color:#d9534f}.mejs__controls .mejs__captions-button .mejs__captions-selector{right:-26px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label{font-weight:normal;font-size:10px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label:hover{color:#eee}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label .type{display:none}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input:checked+label{color:#d9534f}.mejs__button.mejs__speed-button{width:36px}.mejs__controls .mejs__speed-button>button{background:transparent;width:36px;margin:11px 0 0 0;font-size:11px;line-height:normal;color:#ffffff}.mejs__controls .mejs__speed-button .mejs__speed-selector{height:150px;top:auto;bottom:40px}.mejs__controls .mejs__speed-button .mejs__speed-selector ul li label{font-weight:normal;font-size:10px}.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-title,.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.o_userbulk_changedcell{font-style:italic;font-weight:bold}body.o_dmz{background:transparent}body.o_dmz #o_bg{position:absolute;top:0;left:0;width:100%;height:100%;border-top:50px solid transparent;border-bottom:70px solid transparent;background:url("../light/images/learn-bg.jpg");background-size:cover;background-position:center center;background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=1 )}body.o_dmz #o_bg:after{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to right, rgba(255,255,255,0.1) 0.2%, rgba(255,255,255,0.6) 60%, rgba(255,255,255,0.8) 100%);background-size:cover;background-position:center center;background-repeat:no-repeat}body.o_dmz #o_toplink{display:none}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-bottom:20px;padding-left:10%;padding-right:10%;text-align:right}.o_login .o_login_intro{padding-left:10%}.o_login .o_login_intro h1{margin-bottom:40px;color:#337ab7}.o_login .o_login_intro .lead{color:#333}.o_login .o_login_intro .lead h1,.o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h3,.o_login .o_login_intro .lead h4,.o_login .o_login_intro .lead .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h5{margin-bottom:20px;color:#337ab7}.o_login .o_login_messages,.o_login .o_login_box{display:inline-block;width:400px;text-align:left}.o_login .o_login_messages .o_infomessage_wrapper{background:rgba(255,255,255,0.5);border:1px solid transparent;border-radius:4px;padding:6px 12px}.o_login .o_login_messages .o_infomessage_wrapper .o_info,.o_login .o_login_messages .o_infomessage_wrapper .o_warning,.o_login .o_login_messages .o_infomessage_wrapper .o_note{margin:0}.o_login .o_login_box{padding-top:10px}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_providers .o_icon_provider_olat{font-size:1em}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_form .o_form .o_desc{margin:0 0 30px 0;padding:0;border-left:0;background-color:transparent}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#5bc0de;border-color:#46b8da;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register.focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled.focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled].focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register.focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#5bc0de;border-color:#46b8da}.o_login .o_login_register .badge{color:#5bc0de;background-color:#fff}.o_login .o_login_register small{font-size:14px}.o_login .o_login_social{position:relative;padding:10px 12px}.o_login .o_login_social li{padding:10px 12px}.o_login .o_login_social li>a{display:block;line-height:2em;text-align:center;font-size:18px;border-radius:4px;padding:10px 12px}.o_login .o_login_social .btn-default.o_sel_auth_facebook{color:#fff;background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{color:#fff;background-color:#37538d;border-color:#2d4374}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled],.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook .badge{color:#4568b2;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_twitter{color:#fff;background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{color:#fff;background-color:#00b4f8;border-color:#009ad4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled],.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter .badge{color:#2cc5ff;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_google{color:#fff;background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.focus,.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{color:#fff;background-color:#d83825;border-color:#ba3120}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google.disabled,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled],.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google .badge{color:#e15f4f;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{color:#fff;background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{color:#fff;background-color:#015e8a;border-color:#014667}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled],.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin .badge{color:#0181bd;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_adfs{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled],.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_adfs .badge{color:#337ab7;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled],.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active{background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect .badge{color:#337ab7;background-color:#fff}@media (max-width: 767px){body.o_dmz #o_bg{background:none;display:none}.o_login{padding:0}.o_login .o_login_intro{padding:0;text-align:left}.o_login .o_login_box_wrapper{text-align:center;padding:0}.o_login .o_login_box{padding-left:0;padding-right:0}.o_login .o_login_box .o_login_providers,.o_login .o_login_box .o_login_provider{-webkit-box-shadow:none;box-shadow:none}.o_login .o_login_messages,.o_login .o_login_box{width:100%;display:block}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px;margin-top:10px}.o_portlet{position:relative;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library_icon:before{content:""}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.o_library_overview .o_library_newest_files ul li{float:left;margin-right:15px}.o_library_item{margin-bottom:10px;position:relative}.o_library_item .o_library_visual,.o_library_item .o_library_extra,.o_library_item .o_library_meta{margin-top:15px}.o_library_item .o_library_visual{float:left;background-color:#fff;border-radius:4px;border:1px solid #ddd}.o_library_item .o_library_visual .o_thumbnail_available,.o_library_item .o_library_visual .o_thumbnail_unavailable{background-size:146px auto;width:150px !important;height:150px !important;background-repeat:no-repeat;background-position:50% 50%}.o_library_item .o_library_visual .o_thumbnail_available:before,.o_library_item .o_library_visual .o_thumbnail_unavailable:before{content:none}.o_library_item .o_library_visual .o_thumbnail_available{background-size:146px auto}.o_library_item .o_library_visual .o_thumbnail_unavailable{display:none}.o_library_item .o_library_extra{float:right;width:200px}.o_library_item .o_library_meta{clear:both}.o_library_item .o_library_meta .o_library_desc{padding-bottom:10px}.o_library_item .o_library_meta small{display:block;word-wrap:break-word}.o_library_item h4,.o_library_item .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal}.o_library_item .btn{display:block;margin-bottom:0.5em}.o_library_item .o_comments{display:inline-block}.o_library_item .table{table-layout:fixed;word-wrap:break-word;margin-bottom:0}.o_library_item p.o_library_show_more{text-align:right;margin:0;padding-top:20px}.o_library_item .o_library_more{padding-top:20px;display:none}.o_library_folder{margin-top:-20px}.o_library .o_ratings_and_comments .o_rating_title,.o_library .o_ratings_and_comments .o_rating_explanation{display:none}@media (min-width: 768px){.o_library_item .o_library_meta{clear:none;margin-left:150px;margin-right:200px;padding:0 10px}.o_library_item .o_library_more{display:none}.o_library_item .o_library_more table tbody{vertical-align:top}.o_library_item .o_library_more table tr,.o_library_item .o_library_more table th,.o_library_item .o_library_more table td{display:inline-block}.o_library_item .o_library_more table tr{width:49%}.o_library_item .o_library_more table th{width:30%}.o_library_item .o_library_more table td{width:70%}}.o_library_item_compact .o_library_extra{width:auto}.o_library_item_compact .o_library_meta{padding:0 10px 0 0;margin:0;overflow:hidden}.o_library_item_compact .btn{display:inline-block}.o_library_item_compact h4,.o_library_item_compact .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item_compact h2{overflow:hidden;margin-right:70px}.o_library_item_compact h4 a,.o_library_item_compact .o_cal .fc-header-title h2 a,.o_cal .fc-header-title .o_library_item_compact h2 a{text-overflow:ellipsis;white-space:nowrap}.o_library_item_compact p.o_library_show_more{padding:20px;position:absolute;top:0;right:0}span.o_translation_i18nitem{position:relative !important}span.o_translation_i18nitem a.o_translation_i18nitem_launcher{position:absolute !important;z-index:100 !important;width:18px !important;height:20px !important;top:0 !important;left:5px !important;background:#fff;border:1px solid #337ab7 !important;border-radius:3px;text-align:center;padding:0 !important}.o_user_infos{position:relative}.o_user_infos .o_user_portrait{position:absolute;top:0;left:15px;width:100px;height:100px}.o_user_infos .o_user_infos_inner{margin:0 30px 0 100px}.o_user_infos .o_user_infos_inner table{margin:0 30px 15px 30px}div.o_skype_button{display:inline-block}div.o_skype_button p{margin:0 0 0 0}div.o_skype_button p a img{margin:0 !important;vertical-align:middle !important}.o_members_pagination{text-align:center}.o_bcard_logo{margin-left:10px;height:66px}.o_bcard_title_with_logo{clear:both;padding:20px 0 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:66px}.o_visitingcard .o_icon_visitingcard{display:none}.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:66px;height:66px;margin-right:10px}@media (max-width: 767px){.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:50px;height:50px;margin:5px 5px 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:50px}.o_visitingcard_logo,.o_bcard_logo{height:50px;margin:5px 0 0 5px}.o_visitingcard_logo img,.o_bcard_logo img{position:relative;transform:scale(.75758);top:-8px}}@media (max-width: 414px){.o_visitingcard_logo img{max-width:260px}}@media (max-width: 375px){.o_visitingcard_logo img{max-width:220px}}@media (max-width: 320px){.o_visitingcard_logo img{max-width:180px}.o_bcard_logo img{max-width:150px}}.o_c2b_peekview{height:182px;width:302px;border-style:solid;border-width:0.1px}.o_c2b_cover{height:180px;width:300px;position:absolute;z-index:2;background:transparent;cursor:pointer}.o_c2b_iframe{height:180px;width:300px;position:absolute;z-index:1}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-title{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"ï€" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close span{display:none}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important;float:right}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px;overflow:auto;background:white !important}.ui-dialog .ui-dialog-titlebar{padding:4px 7px 4px 7px;background-color:#eee !important}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}.ui-slider.ui-slider-horizontal.ui-widget-content{border-color:#999}.ui-slider.ui-slider-horizontal.ui-widget-content.ui-state-disabled{opacity:0.65}.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:1px solid #337ab7;background-image:none;background-color:#337ab7}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"ï¡";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"ï ";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #2e6da4;background:#337ab7;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal}.o_richtext_mce_without_path .mce-statusbar{border:none}.o_richtext_mce_without_path .mce-path{display:none !important}.o_richtext_mce_without_path .mce-menubtn.mce-fixed-width span{width:auto}i.mce-ico.mce-i-media,i.mce-ico.mce-i-movie,i.mce-ico.mce-i-help,i.mce-ico.mce-i-gaptext,i.mce-ico.mce-i-gapnumerical,i.mce-ico.mce-i-hottext,i.mce-ico.mce-i-edit{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}i.mce-ico.mce-i-media:before{content:""}i.mce-ico.mce-i-movie:before{content:""}i.mce-ico.mce-i-gaptext:before{content:"ï…"}i.mce-ico.mce-i-gapnumerical:before{content:""}i.mce-ico.mce-i-hottext:before{content:"ï"}i.mce-ico.mce-i-math:before{content:'\03A3'}i.mce-ico.mce-i-edit:before{content:"ï„"}i.mce-ico.mce-i-help{width:9px;height:9px;padding-top:1px}i.mce-ico.mce-i-help:before{content:"ï™";color:white}.mce-tabs span.o_chelp_wrapper{float:right;margin:5px}div.o_table_search span.twitter-typeahead{display:table-cell;padding-top:3px}.tag.label.label-info{margin-right:3px}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fff !important;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important;-webkit-print-color-adjust:exact;color-adjust:exact}.modal-dialog{margin:0 !important;width:100% !important;height:100% !important;background:#fff !important;-webkit-print-color-adjust:exact;color-adjust:exact}.progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}.radial-progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#eee !important}.radial-progress .circle .mask .fill{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#000 !important}.radial-progress .inset{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#fff !important}body{margin:0}}.o_highscore .o_position{text-align:center;font-size:1.2em;font-weight:bold}.o_highscore .o_position h2{font-size:3em;font-weight:700;line-height:1.2em}@media screen and (-webkit-min-device-pixel-ratio: 0){.o_highscore .o_position h2{background:linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline}.o_highscore .o_position h2:after{content:"\A";white-space:pre}}.o_highscore .o_position_relative{font-size:1em;font-weight:normal}.o_highscore .o_podium{position:relative;vertical-align:bottom;height:300px;margin-bottom:50px}.o_highscore .o_rank{width:30%;position:absolute;bottom:0;text-shadow:rgba(102,102,102,0.5) 0 -1px 0,rgba(255,255,255,0.6) 0 2px 1px}.o_highscore .o_rank:before{position:absolute;bottom:0;left:0;width:100%;text-align:center}.o_highscore .o_rank .o_name{position:absolute;top:100%;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1em;text-shadow:none}.o_highscore .o_rank .o_score{color:#777;font-size:90%;width:100%;text-align:center;position:absolute;top:-20px;text-shadow:none}.o_highscore .o_rank .o_singleportrait{position:absolute;width:100%;text-align:center;top:-125px}.o_highscore .o_rank .o_rank_portraits{position:relative;left:0;top:-210px;height:180px;width:200px;text-align:center;vertical-align:bottom;display:table-cell}.o_highscore .o_rank .o_rank_portraits ul{display:inline-block}.o_highscore .o_rank .o_rank_portraits .o_portrait{margin:5px}.o_highscore .o_first{height:150px;left:30%;border:1px solid #d9d9d9;border-top-left-radius:4px;border-top-right-radius:4px;background:gold;background:-moz-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:-webkit-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 )}.o_highscore .o_first:before{content:"1";font-size:700%;line-height:150px;color:#666}.o_highscore .o_second{height:100px;left:0;background:silver;background:-moz-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-left-radius:4px}.o_highscore .o_second:before{content:"2";font-size:500%;line-height:100px;color:#666}.o_highscore .o_third{height:80px;left:60%;background:#cd7f32;background:-moz-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:-webkit-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-right:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-right-radius:4px}.o_highscore .o_third:before{content:"3";font-size:300%;line-height:80px;color:#666}.o_highscore .o_histogram{position:relative;bottom:-40px;margin-bottom:40px}.o_highscore .o_histogram .d3chart{width:100%;padding-top:50px;height:300px}.o_highscore .o_histogram .d3chart text{fill:#888}.o_highscore .o_histogram .d3chart .axis path,.o_highscore .o_histogram .d3chart .axis line{stroke:#888}.o_highscore .o_histogram .d3chart .o_myself{fill:#337ab7}.o_highscore .o_histogram .d3chart .o_myself:hover{fill:#5094ce}.o_highscore .o_histogram .d3chart .o_other{fill:#777}.o_highscore .o_histogram .d3chart .o_other:hover{fill:#919191}.o_highscore .o_histogram .d3chart .o_empty{fill:#000}.o_listing .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_listing table th:nth-of-type(1),.o_listing table th :nth-of-type(2){width:5em}body.o_browser_ie7 #o_offcanvas_right,body.o_browser_ie8 #o_offcanvas_right{right:0px} /*# sourceMappingURL=theme.css.map */ diff --git a/src/main/webapp/static/themes/light/theme.css.map b/src/main/webapp/static/themes/light/theme.css.map index a90afa0dd4247189f697b0c5d172b0fb5b57c244..80538298e835c5204d64024c36fe28c24b6bff18 100644 --- a/src/main/webapp/static/themes/light/theme.css.map +++ b/src/main/webapp/static/themes/light/theme.css.map @@ -1,7 +1,7 @@ { "version": 3, -"mappings": "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", -"sources": ["_license.scss","../../bootstrap/stylesheets/bootstrap/_normalize.scss","../../bootstrap/stylesheets/bootstrap/_print.scss","../../bootstrap/stylesheets/bootstrap/_scaffolding.scss","../../bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss","_config.scss","../../bootstrap/stylesheets/bootstrap/_variables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss","../../bootstrap/stylesheets/bootstrap/mixins/_image.scss","../../bootstrap/stylesheets/bootstrap/_type.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss","../../bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss","../../bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss","../../bootstrap/stylesheets/bootstrap/_code.scss","../../bootstrap/stylesheets/bootstrap/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid-framework.scss","../../bootstrap/stylesheets/bootstrap/_tables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_table-row.scss","../../bootstrap/stylesheets/bootstrap/_forms.scss","../../bootstrap/stylesheets/bootstrap/mixins/_forms.scss","../../bootstrap/stylesheets/bootstrap/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_opacity.scss","../../bootstrap/stylesheets/bootstrap/_component-animations.scss","../../bootstrap/stylesheets/bootstrap/_dropdowns.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-divider.scss","../../bootstrap/stylesheets/bootstrap/mixins/_reset-filter.scss","../../bootstrap/stylesheets/bootstrap/_button-groups.scss","../../bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss","../../bootstrap/stylesheets/bootstrap/_input-groups.scss","../../bootstrap/stylesheets/bootstrap/_navs.scss","../../bootstrap/stylesheets/bootstrap/_navbar.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-vertical-align.scss","../../bootstrap/stylesheets/bootstrap/_breadcrumbs.scss","../../bootstrap/stylesheets/bootstrap/_pagination.scss","../../bootstrap/stylesheets/bootstrap/mixins/_pagination.scss","../../bootstrap/stylesheets/bootstrap/_pager.scss","../../bootstrap/stylesheets/bootstrap/_labels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_labels.scss","../../bootstrap/stylesheets/bootstrap/_badges.scss","../../bootstrap/stylesheets/bootstrap/_jumbotron.scss","../../bootstrap/stylesheets/bootstrap/_thumbnails.scss","../../bootstrap/stylesheets/bootstrap/_alerts.scss","../../bootstrap/stylesheets/bootstrap/mixins/_alerts.scss","../../bootstrap/stylesheets/bootstrap/_progress-bars.scss","../../bootstrap/stylesheets/bootstrap/mixins/_gradients.scss","../../bootstrap/stylesheets/bootstrap/mixins/_progress-bar.scss","../../bootstrap/stylesheets/bootstrap/_media.scss","../../bootstrap/stylesheets/bootstrap/_list-group.scss","../../bootstrap/stylesheets/bootstrap/mixins/_list-group.scss","../../bootstrap/stylesheets/bootstrap/_panels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_panels.scss","../../bootstrap/stylesheets/bootstrap/_responsive-embed.scss","../../bootstrap/stylesheets/bootstrap/_wells.scss","../../bootstrap/stylesheets/bootstrap/_close.scss","../../bootstrap/stylesheets/bootstrap/_modals.scss","../../bootstrap/stylesheets/bootstrap/_tooltip.scss","../../bootstrap/stylesheets/bootstrap/_popovers.scss","../../bootstrap/stylesheets/bootstrap/_utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_center-block.scss","../../bootstrap/stylesheets/bootstrap/mixins/_hide-text.scss","../../bootstrap/stylesheets/bootstrap/_responsive-utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_responsive-visibility.scss","modules/_bootstrap.scss","modules/_fonts.scss","../../font-awesome/scss/_path.scss","../../font-awesome/scss/_core.scss","../../font-awesome/scss/_larger.scss","../../font-awesome/scss/_fixed-width.scss","../../font-awesome/scss/_list.scss","../../font-awesome/scss/_variables.scss","../../font-awesome/scss/_bordered-pulled.scss","../../font-awesome/scss/_animated.scss","../../font-awesome/scss/_rotated-flipped.scss","../../font-awesome/scss/_mixins.scss","../../font-awesome/scss/_stacked.scss","modules/_icons.scss","modules/_emoticons.scss","modules/_helpers.scss","modules/_type.scss","modules/_content_embedded.scss","modules/_mixins.scss","modules/_layout.scss","modules/_main.scss","modules/_footer.scss","modules/_navbar.scss","modules/_toolbar.scss","modules/_offcanvas.scss","modules/_dialog.scss","modules/_tree.scss","modules/_breadcrumb.scss","modules/_form.scss","modules/_table.scss","modules/_im.scss","modules/_flags.scss","modules/_rating_and_comments.scss","modules/_chart.scss","modules/_forum.scss","modules/_various_modules.scss","modules/_autocomplete.scss","modules/_search.scss","modules/_wizard.scss","modules/_process.scss","modules/_cal.scss","modules/_coursesite.scss","modules/_repository.scss","modules/_course.scss","modules/_qti.scss","modules/_qti21.scss","modules/_devel.scss","modules/_wiki.scss","modules/_portfolio.scss","modules/_portfoliomaps/_epmst_default.scss","modules/_portfoliomaps/_mixins.scss","modules/_portfoliomaps/_epmst_comic.scss","modules/_portfoliomaps/_epmst_leather.scss","modules/_portfoliomaps/_epmst_green.scss","modules/_portfoliomaps/_epmst_green2.scss","modules/_portfoliomaps/_epmst_green3.scss","modules/_portfoliomaps/_epmst_green4.scss","modules/_portfoliomaps/_epmst_red.scss","modules/_portfoliomaps/_epmst_red2.scss","modules/_portfoliomaps/_epmst_red3.scss","modules/_portfoliomaps/_epmst_red4.scss","modules/_portfoliomaps/_epmst_blue.scss","modules/_portfoliomaps/_epmst_blue2.scss","modules/_portfoliomaps/_epmst_blue3.scss","modules/_portfoliomaps/_epmst_blue4.scss","modules/_portfolio_v2.scss","modules/_evaluation_form.scss","modules/_citation.scss","modules/_video.scss","modules/_admin.scss","modules/_dmz.scss","modules/_portal.scss","modules/_library.scss","modules/_translationtool.scss","modules/_user.scss","modules/_members.scss","modules/_thirdparty.scss","modules/_print.scss","modules/_highscore.scss","_patches.scss"], +"mappings": "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", +"sources": ["_license.scss","../../bootstrap/stylesheets/bootstrap/_normalize.scss","../../bootstrap/stylesheets/bootstrap/_print.scss","../../bootstrap/stylesheets/bootstrap/_scaffolding.scss","../../bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss","_config.scss","../../bootstrap/stylesheets/bootstrap/_variables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss","../../bootstrap/stylesheets/bootstrap/mixins/_image.scss","../../bootstrap/stylesheets/bootstrap/_type.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss","../../bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss","../../bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss","../../bootstrap/stylesheets/bootstrap/_code.scss","../../bootstrap/stylesheets/bootstrap/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid-framework.scss","../../bootstrap/stylesheets/bootstrap/_tables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_table-row.scss","../../bootstrap/stylesheets/bootstrap/_forms.scss","../../bootstrap/stylesheets/bootstrap/mixins/_forms.scss","../../bootstrap/stylesheets/bootstrap/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_opacity.scss","../../bootstrap/stylesheets/bootstrap/_component-animations.scss","../../bootstrap/stylesheets/bootstrap/_dropdowns.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-divider.scss","../../bootstrap/stylesheets/bootstrap/mixins/_reset-filter.scss","../../bootstrap/stylesheets/bootstrap/_button-groups.scss","../../bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss","../../bootstrap/stylesheets/bootstrap/_input-groups.scss","../../bootstrap/stylesheets/bootstrap/_navs.scss","../../bootstrap/stylesheets/bootstrap/_navbar.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-vertical-align.scss","../../bootstrap/stylesheets/bootstrap/_breadcrumbs.scss","../../bootstrap/stylesheets/bootstrap/_pagination.scss","../../bootstrap/stylesheets/bootstrap/mixins/_pagination.scss","../../bootstrap/stylesheets/bootstrap/_pager.scss","../../bootstrap/stylesheets/bootstrap/_labels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_labels.scss","../../bootstrap/stylesheets/bootstrap/_badges.scss","../../bootstrap/stylesheets/bootstrap/_jumbotron.scss","../../bootstrap/stylesheets/bootstrap/_thumbnails.scss","../../bootstrap/stylesheets/bootstrap/_alerts.scss","../../bootstrap/stylesheets/bootstrap/mixins/_alerts.scss","../../bootstrap/stylesheets/bootstrap/_progress-bars.scss","../../bootstrap/stylesheets/bootstrap/mixins/_gradients.scss","../../bootstrap/stylesheets/bootstrap/mixins/_progress-bar.scss","../../bootstrap/stylesheets/bootstrap/_media.scss","../../bootstrap/stylesheets/bootstrap/_list-group.scss","../../bootstrap/stylesheets/bootstrap/mixins/_list-group.scss","../../bootstrap/stylesheets/bootstrap/_panels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_panels.scss","../../bootstrap/stylesheets/bootstrap/_responsive-embed.scss","../../bootstrap/stylesheets/bootstrap/_wells.scss","../../bootstrap/stylesheets/bootstrap/_close.scss","../../bootstrap/stylesheets/bootstrap/_modals.scss","../../bootstrap/stylesheets/bootstrap/_tooltip.scss","../../bootstrap/stylesheets/bootstrap/_popovers.scss","../../bootstrap/stylesheets/bootstrap/_utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_center-block.scss","../../bootstrap/stylesheets/bootstrap/mixins/_hide-text.scss","../../bootstrap/stylesheets/bootstrap/_responsive-utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_responsive-visibility.scss","modules/_bootstrap.scss","modules/_fonts.scss","../../font-awesome/scss/_path.scss","../../font-awesome/scss/_core.scss","../../font-awesome/scss/_larger.scss","../../font-awesome/scss/_fixed-width.scss","../../font-awesome/scss/_list.scss","../../font-awesome/scss/_variables.scss","../../font-awesome/scss/_bordered-pulled.scss","../../font-awesome/scss/_animated.scss","../../font-awesome/scss/_rotated-flipped.scss","../../font-awesome/scss/_mixins.scss","../../font-awesome/scss/_stacked.scss","modules/_icons.scss","modules/_emoticons.scss","modules/_helpers.scss","modules/_type.scss","modules/_content_embedded.scss","modules/_mixins.scss","modules/_radial-progress.scss","modules/_layout.scss","modules/_main.scss","modules/_footer.scss","modules/_navbar.scss","modules/_toolbar.scss","modules/_offcanvas.scss","modules/_dialog.scss","modules/_tree.scss","modules/_breadcrumb.scss","modules/_form.scss","modules/_table.scss","modules/_im.scss","modules/_flags.scss","modules/_rating_and_comments.scss","modules/_chart.scss","modules/_forum.scss","modules/_various_modules.scss","modules/_autocomplete.scss","modules/_search.scss","modules/_wizard.scss","modules/_process.scss","modules/_cal.scss","modules/_coursesite.scss","modules/_repository.scss","modules/_course.scss","modules/_qti.scss","modules/_qti21.scss","modules/_devel.scss","modules/_wiki.scss","modules/_portfolio.scss","modules/_portfoliomaps/_epmst_default.scss","modules/_portfoliomaps/_mixins.scss","modules/_portfoliomaps/_epmst_comic.scss","modules/_portfoliomaps/_epmst_leather.scss","modules/_portfoliomaps/_epmst_green.scss","modules/_portfoliomaps/_epmst_green2.scss","modules/_portfoliomaps/_epmst_green3.scss","modules/_portfoliomaps/_epmst_green4.scss","modules/_portfoliomaps/_epmst_red.scss","modules/_portfoliomaps/_epmst_red2.scss","modules/_portfoliomaps/_epmst_red3.scss","modules/_portfoliomaps/_epmst_red4.scss","modules/_portfoliomaps/_epmst_blue.scss","modules/_portfoliomaps/_epmst_blue2.scss","modules/_portfoliomaps/_epmst_blue3.scss","modules/_portfoliomaps/_epmst_blue4.scss","modules/_portfolio_v2.scss","modules/_evaluation_form.scss","modules/_citation.scss","modules/_video.scss","modules/_admin.scss","modules/_dmz.scss","modules/_portal.scss","modules/_library.scss","modules/_translationtool.scss","modules/_user.scss","modules/_members.scss","modules/_card2brain.scss","modules/_thirdparty.scss","modules/_print.scss","modules/_highscore.scss","_patches.scss"], "names": [], "file": "theme.css" } diff --git a/src/main/webapp/static/themes/light/theme_ie_completions.css b/src/main/webapp/static/themes/light/theme_ie_completions.css index a414b52b2e4b2ea1a07aa85cf03143b15703e46a..085511b947ef6d93bbc8e5e57700c542a14b80b5 100644 --- a/src/main/webapp/static/themes/light/theme_ie_completions.css +++ b/src/main/webapp/static/themes/light/theme_ie_completions.css @@ -1 +1 @@ -.o_button_dirty.disabled,.o_button_dirty.disabled:hover,.o_button_dirty.disabled:focus,.o_button_dirty.disabled.focus,.o_button_dirty.disabled:active,.o_button_dirty.disabled.active,.o_button_dirty[disabled],.o_button_dirty[disabled]:hover,.o_button_dirty[disabled]:focus,.o_button_dirty[disabled].focus,.o_button_dirty[disabled]:active,.o_button_dirty[disabled].active,fieldset[disabled] .o_button_dirty,fieldset[disabled] .o_button_dirty:hover,fieldset[disabled] .o_button_dirty:focus,fieldset[disabled] .o_button_dirty.focus,fieldset[disabled] .o_button_dirty:active,fieldset[disabled] .o_button_dirty.active{background-color:#f0ad4e;border-color:#eea236}.o_button_dirty .badge{color:#f0ad4e;background-color:#fff}.o_button_toggle{border:1px solid #777;border-top-right-radius:9px;border-top-left-radius:9px;border-bottom-right-radius:9px;border-bottom-left-radius:9px;background:#eee;display:inline-block;height:18px;line-height:16px;font-size:16px;text-align:left;padding:0 0.5em 0 0;margin:0}.o_button_toggle i{color:#777;text-shadow:1px 0 2px rgba(0,0,0,0.25)}.o_button_toggle span{line-height:16px;vertical-align:top;font-size:60%;color:#777;text-transform:uppercase}.o_button_toggle.o_on{text-align:right;padding:0 0 0 0.5em}.o_button_toggle.o_on i{color:#337ab7;text-shadow:-1px 0 2px rgba(0,0,0,0.25)}.o_table_wrapper{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_table_wrapper.o_table_flexi .o_table_body{margin-top:20px}.o_table_wrapper.o_table_flexi .table{margin-top:20px}.o_table_wrapper.o_table_flexi .table td ul{margin:0}.o_table_wrapper.o_table_flexi.o_table_no_margin .table{margin:0}.o_table_wrapper.o_table_edit table tbody{border-top:solid #f90 4px;background-color:#fefbf6}.o_table_wrapper .o_table_search{max-width:50em}.o_table_wrapper .o_table_footer .o_table_pagination{text-align:center}.o_table_wrapper .o_table_rows_infos{float:left;padding-left:0;padding-right:20px;margin:20px 0}.o_table_wrapper .o_row_selected td{background-color:#dff0d8 !important}.o_table_wrapper .o_table{margin-bottom:0}.o_table_wrapper .o_marked{font-weight:bold}.o_table_wrapper .table{margin-bottom:0}.o_table_wrapper th a,.o_table_wrapper th a:hover{color:#333;text-decoration:none}.o_table_search a.btn.o_reset_quick_search{width:38px;margin-left:-38px;z-index:5;color:grey}@media (max-width: 767px){.o_table_wrapper .o_table_rows_infos{clear:both}}a.o_orderby,a.o_orderby:hover{color:#333;text-decoration:none}a.o_orderby.o_orderby_asc,a.o_orderby.o_orderby_desc,a.o_orderby:hover.o_orderby_asc,a.o_orderby:hover.o_orderby_desc{border-bottom:1px solid #ddd}.o_table_row_count{padding-top:6px;padding-bottom:6px;vertical-align:middle}.o_table_row_details td{background-color:white !important}.o_table_config{font-size:12px}.o_table_buttons{text-align:center}.o_table_buttons input{margin-right:1em}.o_table_buttons input:last-child{margin-right:0}.o_table_tools{margin-left:6px}.o_table_tools_indications{margin-left:10px;padding-top:3px;font-size:80%}.o_table_tools_indications a{color:#d9534f}.o_table_toolbar_left .o_table_tools_indications{text-align:right}.o_table_count{max-width:20em;float:left;padding:0 15px}.o_info .table-bordered td,o_note .table-bordered td,o_important .table-bordered td,o_warning .table-bordered td,o_error .table-bordered td{border-color:#333}.panel .o_table_layout{border-top:1px solid #ddd;padding-top:6px}.panel .o_table_count{padding:0 15px}#o_navbar_imclient .o_im_messages{float:left}#o_navbar_imclient #o_im_message,#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_summary{float:left;position:relative;padding:15px 3px}#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_message{padding-left:15px}#o_navbar_imclient #o_im_summary .badge{color:#fff;background-color:#777}#o_navbar_imclient #o_im_status li>a>span{display:inline}#o_navbar_imclient #o_im_status div.o_chelp_wrapper{right:0.5em}#o_navbar_imclient #o_im_message a:hover,#o_navbar_imclient #o_im_message a:focus{text-decoration:none}#o_navbar_imclient #o_im_message .o_icon_message{color:#d9534f}#o_navbar_imclient #o_im_message .o_icon_message:hover{color:#f4c37d}.o_im_load_history{margin-bottom:6px}.o_im_load_history .o_label{font-size:12px;padding-right:0.5em;line-height:1.5em;color:#777}.o_im_chat_history{height:170px;font-size:90%;border:1px solid #eee;margin:0 0 1em 0;overflow:scroll;overflow-x:auto}.o_im_message_group{padding:3px 3px 3px 40px;min-height:40px;position:relative;border-top:1px solid #eee;background:#fff}.o_im_message_group.o_odd{background:#F4F4F4}.o_im_message_group .o_portrait{position:absolute;top:3px;left:3px}.o_im_message_group .o_im_from{color:#777;font-size:12px;font-weight:bold}.o_im_message_group .o_im_from:hover{color:#5e5e5e}.o_im_message_group div.o_im_body{padding:3px 0 3px 0;font-size:12px}.o_im_message_group div.o_im_body .o_date{float:right;color:#777;font-size:9px}.o_groupchat_roster{font-size:12px}.o_groupchat_roster li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.o_groupchat_roster li.o_vip{color:#3c763d}.o_groupchat_roster li.o_anonymous{color:#31708f}.o_im_buddieslist .o_im_buddieslist_toggler .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_im_buddieslist ul{font-size:12px}.o_im_buddieslist ul ul{padding-left:1em}.o_im_buddieslist ul a{color:#337ab7}.o_im_buddieslist ul a:hover{color:#23527c}.o_flag{position:relative;top:1px;display:inline-block;line-height:1;width:16px;height:16px;background-repeat:no-repeat;background-position:0 100%}option.o_with_flag{padding-left:23px;min-height:16px;background-repeat:no-repeat;background-position:2px 50%}.o_flag_en{background-image:url("../light/images/flags/gb.png")}.o_flag_de{background-image:url("../light/images/flags/de.png")}.o_flag_fr{background-image:url("../light/images/flags/fr.png")}.o_flag_it{background-image:url("../light/images/flags/it.png")}.o_flag_es{background-image:url("../light/images/flags/es.png")}.o_flag_da{background-image:url("../light/images/flags/dk.png")}.o_flag_cs{background-image:url("../light/images/flags/cz.png")}.o_flag_el{background-image:url("../light/images/flags/gr.png")}.o_flag_ee{background-image:url("../light/images/flags/ee.png")}.o_flag_ru{background-image:url("../light/images/flags/ru.png")}.o_flag_pl{background-image:url("../light/images/flags/pl.png")}.o_flag_zh_CN{background-image:url("../light/images/flags/cn.png")}.o_flag_zh_TW{background-image:url("../light/images/flags/tw.png")}.o_flag_lt{background-image:url("../light/images/flags/lt.png")}.o_flag_fa{background-image:url("../light/images/flags/ir.png")}.o_flag_pt_PT{background-image:url("../light/images/flags/pt.png")}.o_flag_pt_BR{background-image:url("../light/images/flags/br.png")}.o_flag_tr{background-image:url("../light/images/flags/tr.png")}.o_flag_hu{background-image:url("../light/images/flags/hu.png")}.o_flag_sq{background-image:url("../light/images/flags/al.png")}.o_flag_in{background-image:url("../light/images/flags/id.png")}.o_flag_ar{background-image:url("../light/images/flags/eg.png")}.o_flag_rm{background-image:url("../light/images/flags/rm.png")}.o_flag_af{background-image:url("../light/images/flags/za.png")}.o_flag_vi{background-image:url("../light/images/flags/vn.png")}.o_flag_mn{background-image:url("../light/images/flags/mn.png")}.o_flag_iw{background-image:url("../light/images/flags/il.png")}.o_flag_ko{background-image:url("../light/images/flags/kr.png")}.o_flag_nl_NL{background-image:url("../light/images/flags/nl.png")}.o_flag_jp{background-image:url("../light/images/flags/jp.png")}.o_flag_nb_NO{background-image:url("../light/images/flags/no.png")}.o_flag_et_EE{background-image:url("../light/images/flags/ee.png")}.o_flag_bg{background-image:url("../light/images/flags/bg.png")}.o_flag_hi_IN_ASIA{background-image:url("../light/images/flags/in.png")}.o_flag_ar_LB{background-image:url("../light/images/flags/lb.png")}.o_flag_gl_ES{background-image:url("../light/images/flags/galicia.png")}.o_flag_sk{background-image:url("../light/images/flags/sk.png")}.o_rating .o_rating_title{font-size:12px}.o_rating .o_rating_items{white-space:nowrap}.o_rating .o_rating_items .o_icon{color:#f0ad4e}.o_rating .o_rating_items .o_icon:hover{color:#337ab7}.o_rating .o_rating_items .o_legend{margin-left:1em;font-size:12px;line-height:normal}.o_rating .o_rating_explanation{font-size:12px;color:#777}@media (max-width: 991px){.o_rating .o_rating_title,.o_rating .o_rating_explanation{display:none}}.o_comments .o_comment_wrapper .o_avatar{float:left;margin:0 1em 0 0}.o_comments .o_comment_wrapper .o_reply,.o_comments .o_comment_wrapper .o_delete{float:right}.o_comments .o_comment_wrapper .o_comment_wrapper{margin-left:16px}.o_ratings_and_comments .o_rating_wrapper{vertical-align:middle;display:inline-block}.o_ratings_and_comments a.o_comments{margin-left:10px;position:relative;top:0.1em}.d3chart .bar{shape-rendering:crispEdges}.d3chart .bar_default_light{fill:#64a0d3}.d3chart .bar_default,.d3chart .bubble_default{fill:#337ab7}.d3chart .bar_default_dark{fill:#23527c}.d3chart .axis{font:12px sans-serif}.d3chart .axis path,.d3chart .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_forum_peekview .o_quote_wrapper,.o_forum_peekview .b_quote_wrapper{display:none}.o_forum_thread_sticky{font-weight:bold}.o_forum_switch{font-size:12px}.o_forum_toolbar{margin-bottom:6px;float:left}.o_forum_fulltextsearch{float:right}@media (max-width: 767px){.o_forum_fulltextsearch{float:left}.o_forum_toolbar .o_forum_tool span{display:none}}.o_forum{padding-bottom:50px}.o_forum .o_mark,.o_forum .o_ep_collect{float:right;position:relative;width:2em;margin-left:12px}.o_forum .o_portrait{float:left;margin-right:16px}.o_forum .o_portrait_avatar{width:70px;height:70px}.o_forum .o_newindicator{font-size:10px;color:#5cb85c;text-transform:uppercase;padding-left:1em;vertical-align:text-top;white-space:nowrap}.o_forum .o_author,.o_forum .o_date{display:inline-block;color:#777}.o_forum .o_date{font-size:12px}.o_forum .o_modified{color:#8a6d3b;font-size:12px;font-style:italic}.o_forum .o_forum_message{margin-bottom:20px;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_forum .o_forum_message_new{-webkit-box-shadow:0 1px 10px rgba(92,184,92,0.3);box-shadow:0 1px 10px rgba(92,184,92,0.3)}.o_forum .o_forum_message_highlight{-webkit-box-shadow:0 1px 10px rgba(240,173,78,0.5);box-shadow:0 1px 10px rgba(240,173,78,0.5)}.o_forum .o_forum_message_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:3px;border-top-left-radius:3px}.o_forum .o_forum_message_title{margin-top:0}.o_forum .o_forum_message_body{padding:10px 15px}.o_forum .o_forum_message_attachments{border-top:1px solid #ddd;padding:10px 15px;font-size:12px;background-color:#f7f7f9}.o_forum .o_attachment{position:relative;max-width:250px;vertical-align:top;margin:6px 12px 10px 0}.o_forum .o_attachment img{margin-top:6px}.o_forum .o_filename{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_forum .o_icon_enlarge{position:absolute;left:1em;bottom:1em;text-shadow:1px 1px 2px #fff, -1px 1px 2px #fff, 1px -1px 2px #fff, -1px -1px 2px #fff}@media (min-width: 768px) and (max-width: 991px){.o_forum .o_attachments{font-size:10px}.o_forum .o_attachment{max-width:200px}.o_forum .o_attachment img{max-width:150px}.o_forum .o_filename{max-width:200px}}@media (max-width: 767px){.o_forum .o_attachments{font-size:9px}.o_forum .o_attachment{max-width:150px}.o_forum .o_attachment img{max-width:100px}.o_forum .o_filename{max-width:150px}}.o_quote_wrapper,.b_quote_wrapper{position:relative;margin:10px 0}.o_quote_author,.b_quote_author{color:#777;font-size:12px}.o_quote_author:before,.b_quote_author:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";font-size:21px;padding-right:0.5em}blockquote.o_quote,blockquote.b_quote{color:#555;font-size:12px;margin-top:6px;padding:0 12px}a.o_chelp{display:inline-block;padding:1px 3px;text-align:center;vertical-align:middle;white-space:nowrap;font-size:10px;font-weight:normal;line-height:15px;color:#fff;background-color:#337ab7;border:1px solid #2e6da4;border-radius:2px;cursor:help;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}a.o_chelp:active,a.o_chelp:hover,a.o_chelp:focus{text-decoration:none;color:#fff;background-color:#2a6598;border-color:#204d74}a.o_chelp i{font-size:10px !important}.o_chelp_wrapper{position:relative;float:right;display:inline-block;line-height:normal;margin-bottom:10px;margin-left:10px}.o_form_chelp,.o_chelp_tooltip{color:#737373}.o_draw_circle{border:4px solid #337ab7;border-radius:50%;position:absolute !important}.o_draw_rectangle{border:4px solid #337ab7;position:absolute !important}.o_iframedisplay iframe{width:100%}.o_singlepage .o_edit{position:absolute;top:10px;right:37px}.o_content_popup{position:absolute;top:10px;right:12px}.o_module_cp_wrapper .o_tools{position:absolute;top:10px;right:12px;text-align:right;vertical-align:middle}.o_module_cp_wrapper .o_tools .o_search_wrapper{display:inline-block;position:relative;top:-2px}ul.o_dropdown{margin:-5px -14px}ul.o_dropdown .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}ul.o_dropdown>li>a{display:block;padding:5px 14px;clear:both;font-weight:normal;line-height:1.42857;color:#333;background:#fff;white-space:nowrap}ul.o_dropdown>li>a:hover,ul.o_dropdown>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.badge.o_scorm_completed{background-color:#3c763d}.badge.o_scorm_failed{background-color:#a94442}.badge.o_scorm_incomplete{background-color:#8a6d3b}.badge.o_scorm_not_attempted{background:none}.o_bc_meta h5,.o_bc_meta .o_author,.o_bc_meta .o_comment,.tooltip h5,.tooltip .o_author,.tooltip .o_comment{color:#fff;margin:5px 0}.o_bc_meta .o_thumbnail,.tooltip .o_thumbnail{width:200px;height:200px;display:inline-block;background-color:#fff;margin:0 -5px}.o_htmleditor .o_metadata{border:1px solid #999;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:0;background:#eee;position:relative;top:1px;padding:5px}.o_htmleditor .o_metadata #o_filename{float:left}.o_htmleditor .o_metadata .o_lastmodified{float:right;color:#777;line-height:1.42857}.o_htmleditor #o_save{margin-top:10px;text-align:center}.o_htmleditor #o_save input{margin-right:1em}.o_htmleditor #o_save input:last-child{margin-right:0}.o_notifications_news_wrapper .o_notifications_news_subscription{margin:10px 0}.o_notifications_news_wrapper .o_notifications_news_subscription h4 i,.o_notifications_news_wrapper .o_notifications_news_subscription .o_cal .fc-header-title h2 i,.o_cal .fc-header-title .o_notifications_news_wrapper .o_notifications_news_subscription h2 i{display:none}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_context{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content{margin-left:1.5em;position:relative}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_icon{position:absolute;left:-1.5em;line-height:1.5em;top:0}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_date{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_url{margin-left:1.5em}.o_noti{margin:6px 0 6px 12px;float:right;color:#777}.o_noti .o_label{color:#777;cursor:help}@media (max-width: 767px){.o_noti .o_label span{display:none}}.panel-body .o_noti{margin:0}.o_portrait{display:inline-block}.o_portrait img{border-radius:50%;border:none;background-color:#eee;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.o_portrait_name{margin-top:6px}.o_block_inline .o_portait,.o_block_inline .o_portrait_name,.o_block_inline .o_portrait_image,.o_block_inline_right .o_portait,.o_block_inline_right .o_portrait_name,.o_block_inline_right .o_portrait_image,.o_block_inline_left .o_portait,.o_block_inline_left .o_portrait_name,.o_block_inline_left .o_portrait_image,.o_block_inline_both .o_portait,.o_block_inline_both .o_portrait_name,.o_block_inline_both .o_portrait_image{display:inline-block}.o_portrait_avatar,.o_portrait_dummy,.o_portrait_dummy_female_big,.o_portrait_dummy_male_big,.o_portrait_anonymous{width:100px;height:100px}.o_portrait_dummy{background-image:url("../light/images/portrait/dummy.png")}.o_portrait_dummy_female_big{background-image:url("../light/images/portrait/dummy_female_big.png")}.o_portrait_dummy_male_big{background-image:url("../light/images/portrait/dummy_male_big.png")}.o_portrait_anonymous{background-image:url("../light/images/portrait/anonymous.png")}.o_portrait_avatar_small,.o_portrait_dummy_small,.o_portrait_dummy_female_small,.o_portrait_dummy_male_small,.o_portrait_anonymous_small{width:30px;height:30px}.o_portrait_dummy_small{background-image:url("../light/images/portrait/dummy_small.png")}.o_portrait_dummy_female_small{background-image:url("../light/images/portrait/dummy_female_small.png")}.o_portrait_dummy_male_small{background-image:url("../light/images/portrait/dummy_male_small.png")}.o_portrait_anonymous_small{background-image:url("../light/images/portrait/anonymous_small.png")}.o_datecomp{position:relative;width:40px;height:52px;border:1px solid #555;margin-right:12px;text-align:center;vertical-align:middle}.o_datecomp div.o_year{position:absolute;left:0;width:100%;top:-20px;height:20px;line-height:20px;font-size:10px}.o_datecomp div.o_month{height:20px;line-height:20px;font-size:12px;background-color:#337ab7;color:#fff}.o_datecomp div.o_day{height:30px;line-height:30px;font-size:18px;border-top:1px solid #555;background-color:#fff;color:#333}.o_block_with_datecomp .o_head{position:relative;padding-left:52px}.o_block_with_datecomp .o_datecomp{position:absolute;top:0.2em;left:0}.o_block_with_datecomp .o_title{margin-top:0}.o_block_with_datecomp .o_meta{color:#777}.o_block_with_datecomp .o_content{border-left:5px solid #eee;padding:0 20px}.o_block_with_datecomp .o_block_footer{padding-left:25px}ul.o_certificates li{padding:5px 0}ul.o_certificates li a.o_sel_certificate_delete{padding-left:2em}.o_cal_toptoolbar{margin-bottom:6px}.o_cal_toptoolbar .o_cal_toptoolbar_help{float:left;margin-right:12px}.o_cal_toptoolbar .o_noti{margin-top:0}.o_feed .o_date,.o_feed .o_author{color:#777}.o_feed .o_subscription a{margin-right:1.5em}.o_feed .o_subscription .form-group{margin-bottom:5px}.o_feed .o_subscription .form-control{border:0;background:none;padding:0;height:auto;-webkit-box-shadow:none;box-shadow:none}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper{float:left}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_title,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_explanation,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_legend{display:none}.o_feed .o_blog_posts .o_ratings_and_comments a.o_comments span{display:none}.o_feed .o_content:before,.o_feed .o_content:after{content:" ";display:table}.o_feed .o_content:after{clear:both}.o_glossary .o_register{text-align:center}.o_glossary .o_meta{font-size:90%;color:#777;font-style:italic}.o_glossary dl dt:first-letter{font-size:21px}.o_glossary dl dt small{color:#777}.o_tm_glossary{border-bottom:1px dotted #666699 !important}.o_tm_yellow{background-color:#FFFF66}.o_tm_blue{background-color:#33FFFF}.o_tm_red{background-color:#FF3333}.o_tm_green{background-color:#99FF00}.o_coaching div#o_main_toolbar.o_toolbar{margin-top:0px}.o_eff_statement_details .o_user_infos{margin-top:20px}div.o_assessment_user_type_filter{display:inline-block;padding:0.5em;border:1px solid #eee;border-radius:4px}div.o_assessment_user_type_filter div.form-inline,div.o_assessment_user_type_filter div.o_navbar-form{margin-left:5px;display:inline-block}.vitero_iframe{width:100%;height:100%;border:none;min-height:60em}.o_reminder_rule{padding:5px 0}.o_segments.btn-group a span{overflow:hidden;display:block;text-overflow:ellipsis}.o_segments_content{margin-top:20px}.o_tabbed_pane .o_tabbed_pane_content{padding:20px 0 6px 0}.o_togglebox_wrapper .o_opener{position:relative;left:-0.5em}.o_togglebox_wrapper div.o_togglebox_content{position:relative;margin:0}.o_togglebox_wrapper div.o_togglebox_content .o_hide{position:absolute;bottom:0.5em;right:1em}.o_toolboxes ul{margin:0 0 1.5em 0;padding:0 0 0 1.5em}.o_qrcode{width:256px;height:256px}#o_ajax_busy{position:absolute;left:50%;top:20em;margin-left:-2.5em;height:5em;width:5em;color:#fff;z-index:1201;display:none}#o_body.o_ajax_busy{cursor:busy}.o_exception .o_visual{position:relative;background-image:url("../light/images/lion-500x333.jpg");filter:grayscale(50%);-webkit-filter:grayscale(50%);-moz-filter:grayscale(50%);-ms-filter:grayscale(50%);-o-filter:grayscale(50%);width:500px;height:333px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;margin:0 0 10px 16px}@media (min-width: 768px) and (max-width: 991px){.o_exception .o_visual{width:375px;height:249px}}@media (min-width: 500px) and (max-width: 767px){.o_exception .o_visual{width:250px;height:166px}}@media (max-width: 500px){.o_exception .o_visual{background-size:cover}}.o_exception .jumbotron h1,.o_exception .o_repo_details .o_lead h1,.o_repo_details .o_exception .o_lead h1{color:#d9534f}.o_mail_message .o_mail_meta{background:#fafafa;border:1px solid #eee;padding:5px 10px}.o_mail_message .o_mail_meta h3{margin-top:0}.o_mail_message .o_mail_date,.o_mail_message .o_mail_from,.o_mail_message .o_mail_recipients{color:#777;font-size:90%}.o_mail_message .o_mail_date .o_label,.o_mail_message .o_mail_from .o_label,.o_mail_message .o_mail_recipients .o_label{font-weight:bold;margin-right:1em}.o_mail_message .o_mail_date .o_group span,.o_mail_message .o_mail_from .o_group span,.o_mail_message .o_mail_recipients .o_group span{font-weight:bold}.o_mail_message .o_mail_date .o_group span:after,.o_mail_message .o_mail_from .o_group span:after,.o_mail_message .o_mail_recipients .o_group span:after{content:':';margin-right:0.5em}.o_mail_message .o_mail_date i,.o_mail_message .o_mail_from i,.o_mail_message .o_mail_recipients i{margin-left:1em}.o_mail_message .o_mail_date ul.list-inline,.o_mail_message .o_mail_from ul.list-inline,.o_mail_message .o_mail_recipients ul.list-inline{display:inline}.o_mail_message .o_mail_date ul.list-inline li,.o_mail_message .o_mail_from ul.list-inline li,.o_mail_message .o_mail_recipients ul.list-inline li{padding-right:0;padding-left:0}.o_mail_message .o_more{margin-left:1em}.o_mail_message .o_showAllLink{float:right;font-size:80%}.tt-input{width:400px}.tt-menu{width:400px;margin-top:6px;padding:0 0 0;color:#555;background-color:#fff;border:1px solid #66afe9;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 0 8px rgba(102,175,233,0.6);box-shadow:0 0 8px rgba(102,175,233,0.6)}.tt-suggestion{padding:6px 12px;font-size:14px;line-height:1.42857}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;background-color:#337ab7}.tt-suggestion p{margin:0}.tt-menu div.o_icon_error:before{content:''}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_highlight{font-weight:bold;background-color:#fcf8e3}.o_search_result_context{color:#3c763d}.o_search_result_excerpt{color:#555}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}@media (max-width: 767px){.o_search_result_details{display:none}}.wizard{border:1px solid #d4d4d4;border-radius:2px;background-color:#f9f9f9;position:relative;overflow:hidden;margin-bottom:15px}.wizard ul{list-style:none outside none;padding:0;margin:0;width:4000px}.wizard ul li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#333;font-size:16px;cursor:default}.wizard ul li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.wizard ul li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.wizard ul li.active{background:#f1f6fc;color:#333}.wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.wizard ul li .badge{margin-right:8px}.wizard ul li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.o_process{position:relative;padding-left:25px}.o_process .o_step{position:relative;height:auto;padding-top:10px;padding-left:30px;padding-bottom:10px}.o_process .o_bar{position:absolute;top:10px;left:8px;height:100%;border-left:4px solid #777}.o_process .o_bar:after{position:absolute;top:0;left:-10px;height:16px;width:16px;border:4px solid #777;border-radius:16px;background:#fff;content:" "}.o_process .o_title{margin-top:-1px;color:#777 !important}.o_process .o_title:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:-24px}.o_process .o_title a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";width:1em}.o_process .o_title a.collapsed:before{content:""}.o_process .o_step.o_active .o_bar,.o_process .o_step.o_active .o_bar:after{border-color:#337ab7}.o_process .o_step.o_active .o_title{color:#337ab7 !important}.o_process .o_step.o_active .o_title:before{content:"";color:#337ab7}.o_process .o_step.o_done .o_bar,.o_process .o_step.o_done .o_bar:after{border-color:#5094ce}.o_process .o_step.o_done .o_title{color:#5094ce !important}.o_process .o_step.o_done .o_title:before{content:"";color:#5cb85c}.o_process .o_meta{color:#777;font-size:12px;margin-top:-0.5em}.o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5D5D5D !important}.o_cal_class.o_cal_orange{border-left:20px solid #ffc266}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#FFF !important}.o_cal_class.o_cal_green{border-left:20px solid #66c266}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#FFF !important}.o_cal_class.o_cal_blue{border-left:20px solid #4d6e9f}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5D5D5D !important}.o_cal_class.o_cal_yellow{border-left:20px solid #ffe066}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#FFF !important}.o_cal_class.o_cal_red{border-left:20px solid #c26666}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#FFF !important}.o_cal_class.o_cal_rebeccapurple{border-left:20px solid #639}.o_cal_fuchsia{background:#FF00FF;border-color:#dd00dd;color:#FFF}.o_cal_fuchsia .o_cal_wv_event_header{background:#FF00FF}.o_cal_fuchsia a{color:#FFF !important}.o_cal_class.o_cal_fuchsia{border-left:20px solid #f0f}.o_cal_olive{background:#808000;border-color:#636300;color:#FFF}.o_cal_olive .o_cal_wv_event_header{background:#808000}.o_cal_olive a{color:#FFF !important}.o_cal_class.o_cal_olive{border-left:20px solid olive}.o_cal_navy{background:#000080;border-color:#000057;color:#FFF}.o_cal_navy .o_cal_wv_event_header{background:#000080}.o_cal_navy a{color:#FFF !important}.o_cal_class.o_cal_navy{border-left:20px solid navy}.o_cal_maroon{background:#800000;border-color:#740000;color:#FFF}.o_cal_maroon .o_cal_wv_event_header{background:#800000}.o_cal_maroon a{color:#FFF !important}.o_cal_class.o_cal_maroon{border-left:20px solid maroon}.o_cal_lime{background:#00FF00;border-color:#00e200;color:#004d00}.o_cal_lime .o_cal_wv_event_header{background:#00FF00}.o_cal_lime a{color:#004d00 !important}.o_cal_class.o_cal_lime{border-left:20px solid lime}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#FFF !important}.o_cal_class.o_cal_grey{border-left:20px solid #DDDAAA}.o_sel_calendar_print_chooser{padding-right:4em}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_config_color{display:block;width:16px;height:16px;border-radius:8px}.o_cal_colorchooser_selected:before{content:""}#o_cal_colorchooser div{border:1px solid #337ab7;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_cal_embedded_course_container .o_content_popup{top:0}.fc-button{color:#333;background-color:#fff;border-color:#ccc}.fc-button:hover,.fc-button:focus,.fc-button.focus,.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{background-image:none}.fc-button.disabled,.fc-button.disabled:hover,.fc-button.disabled:focus,.fc-button.disabled.focus,.fc-button.disabled:active,.fc-button.disabled.active,.fc-button[disabled],.fc-button[disabled]:hover,.fc-button[disabled]:focus,.fc-button[disabled].focus,.fc-button[disabled]:active,.fc-button[disabled].active,fieldset[disabled] .fc-button,fieldset[disabled] .fc-button:hover,fieldset[disabled] .fc-button:focus,fieldset[disabled] .fc-button.focus,fieldset[disabled] .fc-button:active,fieldset[disabled] .fc-button.active{background-color:#fff;border-color:#ccc}.fc-button .badge{color:#fff;background-color:#333}.fc-button.fc-state-default{text-shadow:none}.fc-button.fc-state-active{color:#fff;background-color:#337ab7;border-color:#2e6da4}.fc-button.fc-state-active:hover,.fc-button.fc-state-active:focus,.fc-button.fc-state-active.focus,.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{background-image:none}.fc-button.fc-state-active.disabled,.fc-button.fc-state-active.disabled:hover,.fc-button.fc-state-active.disabled:focus,.fc-button.fc-state-active.disabled.focus,.fc-button.fc-state-active.disabled:active,.fc-button.fc-state-active.disabled.active,.fc-button.fc-state-active[disabled],.fc-button.fc-state-active[disabled]:hover,.fc-button.fc-state-active[disabled]:focus,.fc-button.fc-state-active[disabled].focus,.fc-button.fc-state-active[disabled]:active,.fc-button.fc-state-active[disabled].active,fieldset[disabled] .fc-button.fc-state-active,fieldset[disabled] .fc-button.fc-state-active:hover,fieldset[disabled] .fc-button.fc-state-active:focus,fieldset[disabled] .fc-button.fc-state-active.focus,fieldset[disabled] .fc-button.fc-state-active:active,fieldset[disabled] .fc-button.fc-state-active.active{background-color:#337ab7;border-color:#2e6da4}.fc-button.fc-state-active .badge{color:#337ab7;background-color:#fff}body.o_cal_print fieldset{border:none;margin-bottom:2em}body.o_cal_print legend{font-size:2em;font-weight:bold}body.o_cal_print legend span{display:block;font-size:14px;font-weight:normal}body.o_cal_print ul.o_cal_wv_list{list-style-type:none;padding:0}body.o_cal_print ul.o_cal_wv_list>li{page-break-inside:avoid;margin-bottom:2em}body.o_cal_print ul.o_cal_wv_list .o_cal_date{font-size:1.25em;font-weight:bold;padding:0.5em 0 0.5em 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events{list-style-type:none;padding:0.5em 0 0 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event{position:relative;left:30px;page-break-inside:avoid;clear:both;margin-bottom:1.5em;padding-right:30px}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_time{float:left;font-weight:bold;margin-right:1em}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject{font-weight:bold}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject p{margin:0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_location,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_description,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{clear:both}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{font-style:italic}body.o_cal_print .o_cal_class{position:absolute;left:-30px;width:20px}body.o_cal_print #o_cal_config legend{font-size:1.25em}body.o_cal_print #o_cal_config .o_cal_config_calendar{margin:0;padding:0}body.o_cal_print #o_cal_config .o_cal_config_calendar{position:relative;left:30px;float:none;padding-right:30px}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #337ab7;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{box-sizing:content-box;border-right:1px solid #337ab7}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #337ab7;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#5bc0de}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#337ab7;border-color:#2e6da4}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#337ab7;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#f0ad4e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#337ab7}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#286090}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:normal;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;font-size:90%;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{border-right:37px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;width:37px;line-height:50px;color:#fff;background-color:#337ab7}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #337ab7;border-bottom:1px solid #337ab7}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#337ab7}.o_catalog .o_level .o_meta .o_title a:hover{color:#286090}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels_list .o_sublevel{position:relative;border:1px solid #337ab7;margin-bottom:10px}.o_catalog .o_sublevels_list .o_sublevel .o_visual{height:75px;width:75px}.o_catalog .o_sublevels_list .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels_list .o_sublevel .o_title{margin:0}.o_catalog .o_sublevels_list .o_sublevel .o_meta{border-left:1px solid #337ab7;min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em;overflow:hidden}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_title{line-height:75px}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_desc{display:none}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a{font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a>i,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a>i,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a>i{display:none}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels{border:1px solid transparent}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels .o_meta{border-left:1px solid transparent}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #337ab7;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #337ab7;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#337ab7;font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#286090}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (min-width: 768px){.o_catalog .o_sublevels_list,.o_catalog .o_sublevels_compact{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2;columns:2}}.o_repo_details{position:relative}.o_repo_details .o_lead{margin-bottom:10px}.o_repo_details .o_lead .o_author{margin-top:0.5em;margin-bottom:1em;font-size:120%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead .o_media.o_desc_empty{float:none;margin-left:0;margin-bottom:0}.o_repo_details .o_lead h1{font-size:37px}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start_wrapper{clear:both;margin:2em 0 -10px 0;text-align:right}.o_repo_details .o_start_wrapper .o_start_inner{display:inline-block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:400px;display:inline-block}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-left:0;float:none;text-align:center}.o_repo_details .o_start_wrapper{text-align:center}.o_repo_details .o_start_wrapper .o_start_inner{display:block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:100%;display:block}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}}.o_meta .o_closed{padding:2px 5px;margin:5px 0}.o_overview .o_closed{padding:12px 15px;margin:15px 0}.o_ac_configuration span.o_ac_infos{font-weight:normal;color:grey}tr.o_entry_closed,tr.o_entry_closed td,tr.o_entry_closed td span,tr.o_entry_unpublished,tr.o_entry_unpublished td,tr.o_entry_unpublished td span{text-decoration:line-through}.badge.o_midpub{background-color:#3c763d}.badge.o_midwarn{background-color:#8a6d3b}.badge.o_midlock{background-color:#31708f}.badge.o_miderr{background-color:#a94442}.badge.o_middel{background-color:#777}.o_course_editor_legend .badge{font-size:80%}.o_course_editor_legend .badge:before{content:none}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#333}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#66512c}.o_failed th{color:#333}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#333}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_course_run.o_titled_wrapper>h2 i{display:none}.o_course_run .o_cal_toptoolbar{margin-right:26px}.o_course_run .o_titled_wrapper .o_cal_toptoolbar{margin-right:0px}.o_tree.o_course_menu div.o_tree_l0>a:first-child{background-color:none}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_ll_container h5{margin-bottom:5px}.o_ll_container h5 a.o_desc{color:#337ab7}.o_ll_container h5 a.o_desc small{display:none}.o_ll_container h5 a.o_desc:hover{color:#286090;text-decoration:none}.o_ll_container h5 a.o_desc:hover small{color:#5e5e5e;display:inline}.o_ll_container div.o_comment{color:#777}.o_cmembers .o_cmember{margin:12px 0}.o_cmembers .o_cmember .o_portrait{margin-right:10px}.o_cmembers .o_cmember .o_portrait img{width:50px;height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper{line-height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_cmembers .o_cmember a.o_mail{display:none}.o_cmembers .o_cmember:hover a.o_mail{display:inline}.o_cmembers_print{color:#000}.o_cmembers_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_cmembers_print #o_print_brand img{width:100%}.o_cmembers_print .o_portrait{width:100px;height:100px;position:relative}.o_cmembers_print .o_portrait img{border-radius:0px;margin:auto;display:block;max-width:100px;max-height:100px}.o_cmembers_print .o_cmember{padding-left:0px;padding-right:15px;margin-bottom:20px}.o_cmembers_print .o_cmember .o_cmember_info_wrapper{word-wrap:break-word}.o_cmembers_print .o_cmember .o_prop.o_zipCode{float:left;padding-right:0.5em}.o_cmembers_print h1{font-size:18pt;color:#000}.o_cmembers_print h3{font-size:14pt;margin-top:5px;font-weight:normal;color:#000}.o_cmembers_print h4,.o_cmembers_print .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_cmembers_print h2{font-size:11pt;font-weight:strong;color:#000;padding-bottom:10px;border-bottom:1px solid #eee}.o_cmembers_print .o_cmember_info_wrapper{font-size:7pt;color:#000}.o_cmembers_print .o_cmember_info_wrapper strong{font-size:8pt}.tag.label.label-info{margin-right:3px}.input-group.o_tag_inputgroup .form-control{height:auto}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#337ab7}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #337ab7}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #337ab7 !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid grey}.o_gap_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}div.hotspotInteraction{overflow-x:auto}#itemBody .extendedTextInteraction{margin:15px 0}#itemBody .extendedTextInteraction textarea{resize:vertical !important}#itemBody .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}.o_qti_hotspot_label{padding-left:48%}.o_info.o_assessmentsection_rubrics{margin:0 0 0.5em 0}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d9534f;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d9534f}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d9534f}.o_assessmentitem div.orderInteraction div.box{background-color:#eee}.o_assessmentitem div.orderInteraction div.box span.info{margin-left:1em;color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction div.box.horizontal{margin:0.5em 0;width:100%}.o_assessmentitem div.orderInteraction ul.horizontal{float:left;margin:0 1em;padding:1em 0;width:100%}.o_assessmentitem div.orderInteraction div.box.vertical{margin:1em 0;width:49%}.o_assessmentitem div.orderInteraction div.box.vertical.source{float:left}.o_assessmentitem div.orderInteraction div.box.vertical.target{float:right}.o_assessmentitem div.orderInteraction ul.vertical{margin:0 1em;padding:1em 0;width:auto}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0;width:60%}.o_assessmentitem div.orderInteraction ul li{margin:0 3px 3px 3px;padding:0.4em;padding-left:1.5em;font-size:1em}.o_assessmentitem div.orderInteraction ul li span.ui-icon{position:absolute;margin-left:-1.3em}.o_assessmentitem div.orderInteraction ul.horizontal li{float:left;width:auto}.o_assessmentitem div.orderInteraction br{clear:both}.o_assessmentitem .hottext{font-weight:bold}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em}.o_assessmentitem_wrapper #itemBody{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type,.o_assessmentitem_wrapper .modalFeedback .o_cal .fc-header-title h2:first-of-type,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback h2:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4,.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h2{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d9534f}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#5cb85c}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f0ad4e}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#5bc0de;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}#itemBody{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#5cb85c}.matchInteraction div.bar_red{background-color:#d9534f}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#5cb85c}.o_assessmentitem div.failure{background-color:#f0ad4e}.o_assessmentitem div.error{background-color:#d9534f}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:10px;border-bottom:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#337ab7;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#23527c;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f0ad4e}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#5bc0de}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}div.o_wiki_wrapper a.wikiimg{text-decoration:none;color:inherit;font-weight:inherit}div.o_wiki_wrapper div.imgcaption{padding:0.3em 0em 0.2em 0.3em}div.o_wiki_wrapper div.imgleft{clear:left;float:left;margin:0.3em 0.3em 0.3em 0em}div.o_wiki_wrapper div.imgright{clear:right;float:right;margin:0.3em 0em 0.3em 0.3em}div.o_wiki_wrapper div.imgcenter{clear:both;overflow:hidden;text-align:center;margin:0.3em 0em 0.3em 0em}div.o_wiki_wrapper div.imgthumb{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper table.gallery{border:1px solid #ccc;margin:2px;padding:2px;background-color:white}div.o_wiki_wrapper table.gallery tr{vertical-align:middle}div.o_wiki_wrapper table.gallery td{background-color:#f9f9f9;border:solid 2px white;text-align:center;vertical-align:middle;width:150px}div.o_wiki_wrapper img.gallery{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper a.edit{font-style:italic;color:red}div.o_wiki_wrapper a.externallink:before{padding-right:2px}div.o_wiki_wrapper a.externallink:before:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}.o_ep_icon_map:before{content:""}.o_ep_icon_collection:before{content:""}.o_ep_icon_page:before{content:""}.o_ep_icon_struct:before{content:""}.o_ep_icon_liveblog:before{content:"ï‚¡"}.o_artefact_closed:before{content:""}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.o_eportfolio_page .o_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.panel-footer .o_ep_options{display:inline-block}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ECF69A;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99E44D;background:#99E44D -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99E44D), to(#CBF1A5));background:#99E44D -moz-linear-gradient(43% 71% 101deg, #CBF1A5, #99E44D);background:#99E44D -o-linear-gradient(#99E44D, #CBF1A5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99E44D', EndColorStr='#CBF1A5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#DFF0C1;background:#DFF0C1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DFF0C1), to(#A0D346));background:#DFF0C1 -moz-linear-gradient(43% 71% 101deg, #A0D346, #DFF0C1);background:#DFF0C1 -o-linear-gradient(#DFF0C1, #A0D346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DFF0C1', EndColorStr='#A0D346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#D7DBB5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#FFBA71;background:#FFBA71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFBA71), to(#FFBA99));background:#FFBA71 -moz-linear-gradient(43% 71% 101deg, #FFBA99, #FFBA71);background:#FFBA71 -o-linear-gradient(#FFBA71, #FFBA99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFBA71', EndColorStr='#FFBA99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#FF9772;background:#FF9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FF9772), to(#FF9780));background:#FF9772 -moz-linear-gradient(43% 71% 101deg, #FF9780, #FF9772);background:#FF9772 -o-linear-gradient(#FF9772, #FF9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF9772', EndColorStr='#FF9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#E8AFBB;background:#E8AFBB -webkit-gradient(linear, 37% 20%, 53% 100%, from(#E8AFBB), to(#E8AFA0));background:#E8AFBB -moz-linear-gradient(43% 71% 101deg, #E8AFA0, #E8AFBB);background:#E8AFBB -o-linear-gradient(#E8AFBB, #E8AFA0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#E8AFBB', EndColorStr='#E8AFA0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#FFA800;background:#FFA800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFA800), to(#FFAF00));background:#FFA800 -moz-linear-gradient(43% 71% 101deg, #FFAF00, #FFA800);background:#FFA800 -o-linear-gradient(#FFA800, #FFAF00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFA800', EndColorStr='#FFAF00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00D2F8;background:#00D2F8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00D2F8), to(#4A9EAD));background:#00D2F8 -moz-linear-gradient(43% 71% 101deg, #4A9EAD, #00D2F8);background:#00D2F8 -o-linear-gradient(#00D2F8, #4A9EAD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00D2F8', EndColorStr='#4A9EAD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#C4F6FF;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#B3E2F7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#DEE7F7;background:#DEE7F7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DEE7F7), to(#C1E9FD));background:#DEE7F7 -moz-linear-gradient(43% 71% 101deg, #C1E9FD, #DEE7F7);background:#DEE7F7 -o-linear-gradient(#DEE7F7, #C1E9FD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DEE7F7', EndColorStr='#C1E9FD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_portfolio div#o_main_toolbar.o_toolbar{margin-top:0px}.o_section_lead,.o_page_lead,.o_assignment_lead{padding:10px 10px;margin-bottom:10px;background-color:#f2f2f2;border-radius:3px;border:1px #d9d9d9 solid}.o_section_lead.o_assignment_2_instantiate{border-radius:3px 3px 0px 0px;border-bottom:none;padding-bottom:1px;margin-bottom:0px}.o_assignment_2_instantiate{padding:10px 10px 0px 10px;background-color:#f2f2f2;border-left:1px #d9d9d9 solid;border-right:1px #d9d9d9 solid}.o_assignment_2_instantiate.last{padding-bottom:10px;border-bottom:1px #d9d9d9 solid;border-radius:0px 0px 3px 3px}.o_page_lead{padding:20px}.o_page_lead .o_page_summary{font-size:18px}.o_page_lead .o_media.o_media_right,.o_page_lead .o_media.o_media_right_large{float:right;margin-left:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_left_large{float:left;margin-right:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_right{max-height:200px;max-width:50%}.o_page_lead .o_media.o_media_left img,.o_page_lead .o_media.o_media_right img{max-height:200px}.o_page_lead .o_media.o_media_right_large,.o_page_lead .o_media.o_media_left_large{max-height:300px;max-width:75%}.o_page_lead .o_media.o_media_right_large img,.o_page_lead .o_media.o_media_left_large img{max-height:300px}.o_page_lead .o_media.o_desc_empty{max-height:300px;text-align:center}.o_page_lead .o_media.o_desc_empty img{max-height:300px}.o_page_lead .o_media img{border-radius:3px;border:1px #d9d9d9 solid;background:#fff}.o_page_lead .o_portfolio_status_block{border-top:1px solid #d9d9d9;padding-top:1em;margin-bottom:-1em}.o_page_lead .o_portfolio_status{display:inline-block;padding-right:2em}.o_page_lead.o_block_imagebg .o_portfolio_status{padding:2px;background-color:rgba(255,255,255,0.8)}.o_page_assignment{font-size:12px}.o_page_assignment.o_togglebox_wrapper div.o_togglebox_content{margin:10px 0 20px 0;padding:20px;border-left:3px solid #d9534f;background-color:#f2dede}.o_page_assignment .o_page_assignement_info{position:relative;left:-1em}.o_portfolio_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry{position:relative;display:inline-block;height:230px;width:400px;vertical-align:top;margin-right:10px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry ul{padding-left:2em}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul{margin:0;padding:0;list-style-type:none}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul li{padding:2px}.o_binder.o_portfolio_assignments .panel-heading,.o_binder.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.panel-default.o_portfolio_assignments .panel-heading,.panel-default.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_meta_wrapper,.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_summary{padding-left:10px}.o_portfolio_page_summary .o_media.o_media_right,.o_portfolio_page_summary .o_media.o_media_right_large{float:right;margin-left:0.5em;margin-bottom:0.5em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_left_large{float:left;margin-right:0.5em;margin-bottom:0.5em}.o_rendertype_classic .o_pf_page,.o_rendertype_classic .o_pf_assignment{padding-left:1em}.o_portfolio_timeline .o_timeline_up{text-align:center}.o_portfolio_timeline .o_timeline_down{text-align:center}.o_portfolio_timeline .axis path,.o_portfolio_timeline .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_portfolio_timeline .x.axis line,.o_portfolio_timeline .x.axis path{display:none}.o_portfolio_timeline path.o_timeline_curve{fill:none;stroke:#ccc;shape-rendering:crispEdges}.o_portfolio_timeline .y.axis .tick line,.o_portfolio_timeline .y.axis path.domain{stroke:#ddd}.o_portfolio_timeline text{fill:#888;stroke:none;font-size:10px}.o_portfolio_timeline .dot.o_pf_status_draft{fill:#f0ad4e}.o_portfolio_timeline .dot.o_pf_status_published{fill:#337ab7}.o_portfolio_timeline .dot.o_pf_status_inrevision{fill:#d9534f}.o_portfolio_timeline .dot.o_pf_status_closed{fill:#5cb85c}.o_portfolio_timeline .dot.o_pf_status_deleted{fill:#000}.o_portfolio_title_help_helper{display:inline-block;float:right;position:relative;top:1em;right:1em}.o_pf_comments{margin-top:2em}.o_pf_content .o_cit,.o_pf_content .o_file{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_forum{border:1px #f8f8f8 solid;padding:10px;border-radius:10px}.o_pf_content .o_image,.o_pf_content .o_video{padding:10px;text-align:center;width:100%}.o_pf_content .o_image img,.o_pf_content .o_video img{border:1px #f8f8f8 solid;border-radius:10px}.o_pf_content_editor .o_toolbar{border:none}.o_pf_content_editor .o_page_part{border:2px solid transparent}.o_pf_content_editor .o_page_part:hover{border:2px dotted #78acd9}.o_pf_content_editor .o_page_fragment_edit{position:relative}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above{height:25px;width:100%;background:#78acd9;position:absolute;z-index:3;left:0;top:-25px;box-shadow:3px -8px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_add_above{position:absolute;left:0;top:-25px;height:25px;border-left:2px dashed #78acd9;border-top:2px dashed #78acd9;border-right:2px dashed #78acd9;border-radius:10px 10px 0 0;box-shadow:0 -5px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_sel_add_element_above{display:inline-block;padding:5px 5px 0 5px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above{padding-right:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above .o_page_type{display:none}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a{float:right;color:#fff;padding-right:1em}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd{position:absolute;z-index:4;top:0;right:0;width:25px;height:100%;background:#78acd9}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a{position:absolute;display:inline-block;width:25px;height:25px;line-height:25px;text-align:center;vertical-align:middle;color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_up_element{z-index:4;top:-25px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_down_element{bottom:0}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit{padding-right:25px;border:2px solid #78acd9;box-shadow:5px 5px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit:hover{border:2px solid #78acd9}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar{position:absolute;z-index:5;left:5px;top:-25px;display:inline-block;height:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a{color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_title .o_page_edit_toolbar li{font-weight:bold}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_richtext_mce textarea{border:0}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below{position:absolute;z-index:3;left:0;bottom:-25px;height:25px;border-left:2px dashed #78acd9;border-bottom:2px dashed #78acd9;border-right:2px dashed #78acd9;border-radius:0 0 10px 10px;box-shadow:3px 8px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below .o_sel_add_element_below{display:inline-block;padding:0 5px 5px 5px}.o_pf_content_editor .o_pf_add_contents{margin-top:30px}.o_portfolio_add_callout a span{display:none}.o_portfolio_add_callout ul.list-inline{margin-bottom:0}.o_portfolio_image_options{clear:both;width:300px;padding:5px}.o_binder_page_listing .o_portfolio_page_links{background-color:#f8f8f8;border-radius:4px}.o_binder_page_listing .o_portfolio_page_links .o_portfolio_comment{float:right}.o_portfolio_toc{padding-bottom:6em}.o_portfolio_toc .o_portfolio_section_meta{font-size:80%;color:#777;position:relative;top:-15px}.o_portfolio_toc .o_section{position:relative}.o_portfolio_toc .o_section .o_header_with_buttons h4,.o_portfolio_toc .o_section .o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_portfolio_toc .o_section .o_header_with_buttons h2{padding-right:0.5em}.o_portfolio_toc .o_section_actions{position:absolute;top:0;right:0}.o_portfolio_toc .o_section_actions .o_section_move_up_and_down{display:inline-block}.o_portfolio_toc .o_section_actions .o_section_dropdown{display:inline-block;position:relative;top:-0.5em;padding-left:0.5em}.o_portfolio_toc ul>li>ul{padding-left:1.5em}.o_portfolio_content .o_portfolio_toc.o_portfolio_toc_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_page_meta_wrapper{background-position:left top;background-repeat:no-repeat}.o_portfolio_rights table .o_portfolio_section td:first-child{padding-left:1.5em}.o_portfolio_rights table .o_portfolio_page td:first-child{padding-left:2.5em}.o_portfolio_publication table{padding-bottom:10px}.o_portfolio_publication table td{padding:5px 5px 5px 0}.o_portfolio_publication .o_portfolio_ac{font-size:90%}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(2){width:200px;white-space:nowrap}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(3){width:40px;white-space:nowrap}.o_portfolio_publication ul ul{margin-left:2em;margin-bottom:5px}.o_portfolio_publication ul li{background:#fbfbfb;padding:3px;margin-bottom:2px}.o_portfolio_publication ul li li{background:#f2f2f2}.o_portfolio_publication ul li li li{background:#eee}.o_portfolio_publication ul li li .table{margin-bottom:0px}@media (max-width: 767px){.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:100%;float:none}.o_portfolio_content .o_sel_timeline_off,.o_portfolio_content .o_sel_timeline_on,.o_portfolio_content .o_portfolio_timeline{display:none}.o_portfolio_content .o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline{width:100%;float:none}}.o_portfolio_media_browser .o_portfolio_medias{position:relative;margin-bottom:20px;margin-top:20px}.o_portfolio_media_browser .o_portfolio_medias:before,.o_portfolio_media_browser .o_portfolio_medias:after{content:" ";display:table}.o_portfolio_media_browser .o_portfolio_medias:after{clear:both}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media:last-child{margin-right:0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{border:1px solid #337ab7;position:relative;height:180px;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon span.o_visual_not_available{background-image:none}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:6em;text-align:center;color:#eee;line-height:140px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #337ab7;border-top:0;background-color:rgba(255,255,255,0.8)}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a{display:block;color:#337ab7;font-family:inherit;font-weight:inherit}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover{color:#286090}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 10px 10px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}@media (max-width: 767px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 1px 1px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}.o_evaluation_form .o_evaluation_step_labels{margin-bottom:8px}.o_evaluation_form .o_evaluation_step_labels div,.o_evaluation_form .o_evaluation_step_labels span{display:inline-block;text-align:center}.o_evaluation_form .o_slider{margin-bottom:8px}.o_evaluation_form .o_slider.hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels{position:relative}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:first-child{position:absolute;left:0px;text-align:left}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div{display:inline-block;text-align:center}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:last-child{position:absolute;right:0px;text-align:right}.o_evaluation_form .o_evaluation_discrete_radio .o_slider input[type='radio']{padding:0;margin:0;position:relative}.o_evaluation_form .o_evaluation_discrete_radio .o_slider label{padding:0;margin:0;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps div.radio{display:inline-block;text-align:center}.o_evaluation_form .o_slider .ui-slider.ui-slider-horizontal.ui-widget-content{margin-top:0.3em}.o_evaluation_form .o_evaluation_left_label{text-align:right}.o_evaluation_form .o_evaluation_right_label{text-align:left}.o_evaluation_form .o_evaluation_textinput .o_evaluation_legend{padding-left:0.5em;margin-bottom:0.5em}@media (max-width: 768px){.o_evaluation_form .o_evaluation_left_label{text-align:left}.o_evaluation_form .o_evaluation_right_label{text-align:right}}.o_slider_overview{width:100%;height:20px;position:relative}.o_slider_overview .o_slider_overview_line{top:5px;left:0px;position:absolute;width:100%;height:11px;border:1px solid #999;border-radius:4px}.o_slider_overview .o_slider_overview_point{position:absolute;width:10px;height:10px;background-color:#337ab7}.o_evaluation_editor_form{margin:10px 10px 0 10px}.o_evaluation_editor_form .o_slider_editor{margin-top:10px;position:relative}.o_evaluation_editor_form .o_evaluation_step_labels{display:inline-block}.o_evaluation_editor_form .o_evaluation_step_labels input{width:100%}.o_evaluation_editor_form .o_slider_editor_delete{padding-right:48px}.o_evaluation_editor_form .o_slider_editor_delete .o_slider_editor_delete_button{position:absolute;right:15px}.o_cit{position:relative;margin:10px 0}.o_cit blockquote.o_quote{color:#555;font-size:18px;margin-top:6px;padding:0 12px}.o_cit blockquote.o_quote p:last-child:after{content:'1)';top:-0.5em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}.o_cit .o_cit_bibinfo{font-size:90%;margin-left:1em;position:relative}.o_cit .o_cit_bibinfo>div:first-child:before{content:'1)';position:absolute;top:0.5em;left:-1em;font-size:75%;line-height:0;vertical-align:baseline}.o_cit .title,.o_cit .url,.o_cit .authors,.o_cit .pages,.o_cit .date,.o_cit .dateAdded,.o_cit .place,.o_cit .institution,.o_cit .issue,.o_cit .publisher,.o_cit .publicationTitle,.o_cit .edition,.o_cit .series,.o_cit .volume{margin-right:0.5em}.o_cit .title{font-style:italic}.o_cit .publicationTitle{color:black}.o_cit .links{padding-left:2em}.o_cit .notes{padding-left:2em;color:grey}.o_cit .note{font-style:italic}.o_cit .note p:first-child{margin-top:0}.o_cit .note p:first-child{margin-bottom:0}.o_cit .listing.web .item{padding-left:0;text-indent:0}.o_cit .listing.web .title{display:block;font-weight:bold;font-style:normal}.o_cit .listing.web .publicationTitle{display:block;font-style:italic}.o_cit .listing.web .url{display:block}.o_cit .listing.web .links{padding-left:0}.o_cit .listing.web .notes{padding-left:0}.o_cit .general-info{border-top:1px solid #eee;padding-top:30px;margin-top:30px}.o_cit .copyright{display:none}@media print{.cit{background-image:none;padding-top:0;max-width:100%}.cit #styles,.cit #refreshContainer{display:none}.cit #general-info a:after{content:" (" attr(href) ") ";font-size:0.8em;font-weight:normal}.cit #copyright{display:block;margin-top:30px}}.o_video_poster{position:relative;display:inline-block;width:400px;max-width:100%;height:225px;background-size:cover;background-repeat:no-repeat;border:1px solid #eee}.o_video_poster_select{text-align:center}.o_video_poster_select .o_video_poster{margin:5px}.o_video_poster_select .o_video_poster a{position:absolute;left:0;top:0;width:100%;height:100%}.o_video_poster_select .o_video_poster a span{position:absolute;bottom:0;width:100%;display:block;line-height:3em;background:#f8f8f8;opacity:0.8}.o_video_poster_select .o_video_poster a:hover{border:1px solid #bbb}.o_video_poster_select .o_video_poster a:hover span{opacity:0.9}.o_video_peekview{text-align:center}.o_video_listing .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_video_listing .o_video_entry{position:relative;display:inline-block;height:230px;width:250px;vertical-align:top;margin-right:10px}.o_video_listing .o_video_poster{width:250px;max-width:100%;height:140px;border:1px solid #eee}.o_video_listing .o_timecode{position:absolute;bottom:2px;right:3px;padding:3px 4px;background:#333;color:#fff;font-size:12px;line-height:12px}.o_video_listing .o_meta{padding:2px;font-size:11px}.o_video_listing .o_meta h5{font-size:14px;margin-top:0;margin-bottom:5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_video_listing .o_date{margin-left:10px;display:inline-block}.o_video_listing .o_date:before{content:'\002022';margin-right:10px;display:inline-block}.o_video_run .o_author{margin-top:0.5em;margin-bottom:1em;line-height:normal;font-size:90%;color:#3c763d}.o_video_run .o_ratings_and_comments{margin-top:2em;border-top:1px solid #eee;padding-top:1em}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector{visibility:visible !important;width:160px}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label{font-weight:normal;width:140px}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label:hover{color:#eee}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label .type{display:none}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input{visibility:hidden;margin:0;width:0}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input:checked+label{color:#d9534f}.mejs-controls .mejs-captions-button .mejs-captions-selector{right:-26px}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label{font-weight:normal}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label:hover{color:#eee}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label .type{display:none}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input{visibility:hidden;margin:0;width:0}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input:checked+label{color:#d9534f}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label{font-weight:normal;font-size:10px}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title,.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.o_userbulk_changedcell{font-style:italic;font-weight:bold}body.o_dmz{background:transparent}body.o_dmz #o_bg{position:absolute;top:0;left:0;width:100%;height:100%;border-top:50px solid transparent;border-bottom:70px solid transparent;background:url("../light/images/learn-bg.jpg");background-size:cover;background-position:center center;background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=1 )}body.o_dmz #o_bg:after{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to right, rgba(255,255,255,0.1) 0.2%, rgba(255,255,255,0.6) 60%, rgba(255,255,255,0.8) 100%);background-size:cover;background-position:center center;background-repeat:no-repeat}body.o_dmz #o_toplink{display:none}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-bottom:20px;padding-left:10%;padding-right:10%;text-align:right}.o_login .o_login_intro{padding-left:10%}.o_login .o_login_intro h1{margin-bottom:40px;color:#337ab7}.o_login .o_login_intro .lead{color:#333}.o_login .o_login_intro .lead h1,.o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h3,.o_login .o_login_intro .lead h4,.o_login .o_login_intro .lead .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h5{margin-bottom:20px;color:#337ab7}.o_login .o_login_messages,.o_login .o_login_box{display:inline-block;width:400px;text-align:left}.o_login .o_login_messages .o_infomessage_wrapper{background:rgba(255,255,255,0.5);border:1px solid transparent;border-radius:4px;padding:6px 12px}.o_login .o_login_messages .o_infomessage_wrapper .o_info,.o_login .o_login_messages .o_infomessage_wrapper .o_warning,.o_login .o_login_messages .o_infomessage_wrapper .o_note{margin:0}.o_login .o_login_box{padding-top:10px}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_providers .o_icon_provider_olat{font-size:1em}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_form .o_form .o_desc{margin:0 0 30px 0;padding:0;border-left:0;background-color:transparent}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#5bc0de;border-color:#46b8da;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register.focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled.focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled].focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register.focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#5bc0de;border-color:#46b8da}.o_login .o_login_register .badge{color:#5bc0de;background-color:#fff}.o_login .o_login_register small{font-size:14px}.o_login .o_login_social{position:relative;padding:10px 12px}.o_login .o_login_social li{padding:10px 12px}.o_login .o_login_social li>a{display:block;line-height:2em;text-align:center;font-size:18px;border-radius:4px;padding:10px 12px}.o_login .o_login_social .btn-default.o_sel_auth_facebook{color:#fff;background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{color:#fff;background-color:#37538d;border-color:#2d4374}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled],.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook .badge{color:#4568b2;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_twitter{color:#fff;background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{color:#fff;background-color:#00b4f8;border-color:#009ad4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled],.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter .badge{color:#2cc5ff;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_google{color:#fff;background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.focus,.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{color:#fff;background-color:#d83825;border-color:#ba3120}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google.disabled,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled],.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google .badge{color:#e15f4f;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{color:#fff;background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{color:#fff;background-color:#015e8a;border-color:#014667}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled],.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin .badge{color:#0181bd;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_adfs{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled],.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_adfs .badge{color:#337ab7;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled],.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active{background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect .badge{color:#337ab7;background-color:#fff}@media (max-width: 767px){body.o_dmz #o_bg{background:none;display:none}.o_login{padding:0}.o_login .o_login_intro{padding:0;text-align:left}.o_login .o_login_box_wrapper{text-align:center;padding:0}.o_login .o_login_box{padding-left:0;padding-right:0}.o_login .o_login_box .o_login_providers,.o_login .o_login_box .o_login_provider{-webkit-box-shadow:none;box-shadow:none}.o_login .o_login_messages,.o_login .o_login_box{width:100%;display:block}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px;margin-top:10px}.o_portlet{position:relative;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library_icon:before{content:""}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.o_library_overview .o_library_newest_files ul li{float:left;margin-right:15px}.o_library_item{margin-bottom:10px;position:relative}.o_library_item .o_library_visual,.o_library_item .o_library_extra,.o_library_item .o_library_meta{margin-top:15px}.o_library_item .o_library_visual{float:left;background-color:#fff;border-radius:4px;border:1px solid #ddd}.o_library_item .o_library_visual .o_thumbnail_available,.o_library_item .o_library_visual .o_thumbnail_unavailable{background-size:146px auto;width:150px !important;height:150px !important;background-repeat:no-repeat;background-position:50% 50%}.o_library_item .o_library_visual .o_thumbnail_available:before,.o_library_item .o_library_visual .o_thumbnail_unavailable:before{content:none}.o_library_item .o_library_visual .o_thumbnail_available{background-size:146px auto}.o_library_item .o_library_visual .o_thumbnail_unavailable{display:none}.o_library_item .o_library_extra{float:right;width:200px}.o_library_item .o_library_meta{clear:both}.o_library_item .o_library_meta .o_library_desc{padding-bottom:10px}.o_library_item .o_library_meta small{display:block;word-wrap:break-word}.o_library_item h4,.o_library_item .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal}.o_library_item .btn{display:block;margin-bottom:0.5em}.o_library_item .o_comments{display:inline-block}.o_library_item .table{table-layout:fixed;word-wrap:break-word;margin-bottom:0}.o_library_item p.o_library_show_more{text-align:right;margin:0;padding-top:20px}.o_library_item .o_library_more{padding-top:20px;display:none}.o_library_folder{margin-top:-20px}.o_library .o_ratings_and_comments .o_rating_title,.o_library .o_ratings_and_comments .o_rating_explanation{display:none}@media (min-width: 768px){.o_library_item .o_library_meta{clear:none;margin-left:150px;margin-right:200px;padding:0 10px}.o_library_item .o_library_more{display:none}.o_library_item .o_library_more table tbody{vertical-align:top}.o_library_item .o_library_more table tr,.o_library_item .o_library_more table th,.o_library_item .o_library_more table td{display:inline-block}.o_library_item .o_library_more table tr{width:49%}.o_library_item .o_library_more table th{width:30%}.o_library_item .o_library_more table td{width:70%}}.o_library_item_compact .o_library_extra{width:auto}.o_library_item_compact .o_library_meta{padding:0 10px 0 0;margin:0;overflow:hidden}.o_library_item_compact .btn{display:inline-block}.o_library_item_compact h4,.o_library_item_compact .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item_compact h2{overflow:hidden;margin-right:70px}.o_library_item_compact h4 a,.o_library_item_compact .o_cal .fc-header-title h2 a,.o_cal .fc-header-title .o_library_item_compact h2 a{text-overflow:ellipsis;white-space:nowrap}.o_library_item_compact p.o_library_show_more{padding:20px;position:absolute;top:0;right:0}span.o_translation_i18nitem{position:relative !important}span.o_translation_i18nitem a.o_translation_i18nitem_launcher{position:absolute !important;z-index:100 !important;width:18px !important;height:20px !important;top:0 !important;left:5px !important;background:#fff;border:1px solid #337ab7 !important;border-radius:3px;text-align:center;padding:0 !important}.o_user_infos{position:relative}.o_user_infos .o_user_portrait{position:absolute;top:0;left:15px;width:100px;height:100px}.o_user_infos .o_user_infos_inner{margin:0 30px 0 100px}.o_user_infos .o_user_infos_inner table{margin:0 30px 15px 30px}div.o_skype_button{display:inline-block}div.o_skype_button p{margin:0 0 0 0}div.o_skype_button p a img{margin:0 !important;vertical-align:middle !important}.o_members_pagination{text-align:center}.o_bcard_logo{margin-left:10px;height:66px}.o_bcard_title_with_logo{clear:both;padding:20px 0 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:66px}.o_visitingcard .o_icon_visitingcard{display:none}.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:66px;height:66px;margin-right:10px}@media (max-width: 767px){.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:50px;height:50px;margin:5px 5px 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:50px}.o_visitingcard_logo,.o_bcard_logo{height:50px;margin:5px 0 0 5px}.o_visitingcard_logo img,.o_bcard_logo img{position:relative;transform:scale(.75758);top:-8px}}@media (max-width: 414px){.o_visitingcard_logo img{max-width:260px}}@media (max-width: 375px){.o_visitingcard_logo img{max-width:220px}}@media (max-width: 320px){.o_visitingcard_logo img{max-width:180px}.o_bcard_logo img{max-width:150px}}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-title{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"ï€" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close span{display:none}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important;float:right}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px;overflow:auto;background:white !important}.ui-dialog .ui-dialog-titlebar{padding:4px 7px 4px 7px;background-color:#eee !important}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}.ui-slider.ui-slider-horizontal.ui-widget-content{border-color:#999}.ui-slider.ui-slider-horizontal.ui-widget-content.ui-state-disabled{opacity:0.65}.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:1px solid #337ab7;background-image:none;background-color:#337ab7}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"ï¡";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"ï ";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #2e6da4;background:#337ab7;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal}.o_richtext_mce_without_path .mce-statusbar{border:none}.o_richtext_mce_without_path .mce-path{display:none !important}.o_richtext_mce_without_path .mce-menubtn.mce-fixed-width span{width:auto}i.mce-ico.mce-i-media,i.mce-ico.mce-i-movie,i.mce-ico.mce-i-help,i.mce-ico.mce-i-gaptext,i.mce-ico.mce-i-gapnumerical,i.mce-ico.mce-i-hottext,i.mce-ico.mce-i-edit{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}i.mce-ico.mce-i-media:before{content:""}i.mce-ico.mce-i-movie:before{content:""}i.mce-ico.mce-i-gaptext:before{content:"ï…"}i.mce-ico.mce-i-gapnumerical:before{content:""}i.mce-ico.mce-i-hottext:before{content:"ï"}i.mce-ico.mce-i-math:before{content:'\03A3'}i.mce-ico.mce-i-edit:before{content:"ï„"}i.mce-ico.mce-i-help{width:9px;height:9px;padding-top:1px}i.mce-ico.mce-i-help:before{content:"ï™";color:white}.mce-tabs span.o_chelp_wrapper{float:right;margin:5px}div.o_table_search span.twitter-typeahead{display:table-cell;padding-top:3px}.tag.label.label-info{margin-right:3px}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{background:#fff;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important}.progress{-webkit-print-color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}body{margin:0}}.o_highscore .o_position{text-align:center;font-size:1.2em;font-weight:bold}.o_highscore .o_position h2{font-size:3em;font-weight:700;line-height:1.2em}@media screen and (-webkit-min-device-pixel-ratio: 0){.o_highscore .o_position h2{background:linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline}.o_highscore .o_position h2:after{content:"\A";white-space:pre}}.o_highscore .o_position_relative{font-size:1em;font-weight:normal}.o_highscore .o_podium{position:relative;vertical-align:bottom;height:300px;margin-bottom:50px}.o_highscore .o_rank{width:30%;position:absolute;bottom:0;text-shadow:rgba(102,102,102,0.5) 0 -1px 0,rgba(255,255,255,0.6) 0 2px 1px}.o_highscore .o_rank:before{position:absolute;bottom:0;left:0;width:100%;text-align:center}.o_highscore .o_rank .o_name{position:absolute;top:100%;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1em;text-shadow:none}.o_highscore .o_rank .o_score{color:#777;font-size:90%;width:100%;text-align:center;position:absolute;top:-20px;text-shadow:none}.o_highscore .o_rank .o_singleportrait{position:absolute;width:100%;text-align:center;top:-125px}.o_highscore .o_rank .o_rank_portraits{position:relative;left:0;top:-210px;height:180px;width:200px;text-align:center;vertical-align:bottom;display:table-cell}.o_highscore .o_rank .o_rank_portraits ul{display:inline-block}.o_highscore .o_rank .o_rank_portraits .o_portrait{margin:5px}.o_highscore .o_first{height:150px;left:30%;border:1px solid #d9d9d9;border-top-left-radius:4px;border-top-right-radius:4px;background:gold;background:-moz-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:-webkit-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 )}.o_highscore .o_first:before{content:"1";font-size:700%;line-height:150px;color:#666}.o_highscore .o_second{height:100px;left:0;background:silver;background:-moz-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-left-radius:4px}.o_highscore .o_second:before{content:"2";font-size:500%;line-height:100px;color:#666}.o_highscore .o_third{height:80px;left:60%;background:#cd7f32;background:-moz-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:-webkit-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-right:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-right-radius:4px}.o_highscore .o_third:before{content:"3";font-size:300%;line-height:80px;color:#666}.o_highscore .o_histogram{position:relative;bottom:-40px;margin-bottom:40px}.o_highscore .o_histogram .d3chart{width:100%;padding-top:50px;height:300px}.o_highscore .o_histogram .d3chart text{fill:#888}.o_highscore .o_histogram .d3chart .axis path,.o_highscore .o_histogram .d3chart .axis line{stroke:#888}.o_highscore .o_histogram .d3chart .o_myself{fill:#337ab7}.o_highscore .o_histogram .d3chart .o_myself:hover{fill:#5094ce}.o_highscore .o_histogram .d3chart .o_other{fill:#777}.o_highscore .o_histogram .d3chart .o_other:hover{fill:#919191}.o_highscore .o_histogram .d3chart .o_empty{fill:#000}.o_listing .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_listing table th:nth-of-type(1),.o_listing table th :nth-of-type(2){width:5em}body.o_browser_ie7 #o_offcanvas_right,body.o_browser_ie8 #o_offcanvas_right{right:0px} \ No newline at end of file +.o_note h2,.o_note h3,.o_note h4,.o_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_note h2,.o_note h5,.b_note h2,.o_form .o_desc h2,.o_course_run .o_statusinfo h2,.o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h3,.o_form .o_desc h3,.o_course_run .o_statusinfo h3,.o_course_stats .o_desc h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h3,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h3,.b_note h4,.o_form .o_desc h4,.o_course_run .o_statusinfo h4,.o_course_stats .o_desc h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.b_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_note h2,.o_form .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_desc h2,.o_course_run .o_statusinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_statusinfo h2,.o_course_stats .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h5,.o_form .o_desc h5,.o_course_run .o_statusinfo h5,.o_course_stats .o_desc h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h5,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important,.o_bc_empty,.o_course_run .o_no_scoreinfo{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_important h2,.o_important h5,.b_important h2,.o_bc_empty h2,.o_course_run .o_no_scoreinfo h2,.b_important h3,.o_bc_empty h3,.o_course_run .o_no_scoreinfo h3,.b_important h4,.o_bc_empty h4,.o_course_run .o_no_scoreinfo h4,.b_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_important h2,.o_bc_empty .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_bc_empty h2,.o_course_run .o_no_scoreinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_no_scoreinfo h2,.b_important h5,.o_bc_empty h5,.o_course_run .o_no_scoreinfo h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_success h2,.o_success h5,.b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h3,.b_success h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h4,.b_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning,.o_form .o_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_warning h2,.o_warning h5,.b_warning h2,.o_form .o_warning h2,.b_warning h3,.o_form .o_warning h3,.b_warning h4,.o_form .o_warning h4,.b_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_warning h2,.o_form .o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_warning h2,.b_warning h5,.o_form .o_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_error h2,.o_error h5,.b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h3,.b_error h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h4,.b_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4,.modal .modal-header .o_cal .fc-header-title h2,.o_cal .fc-header-title .modal .modal-header h2{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.o_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_tree a{color:#777;background-color:none}.o_tree a:hover,.o_tree a:focus{color:#333}.o_tree .o_tree_link{background-color:none}.o_tree .o_tree_link:hover,.o_tree .o_tree_link:focus{background-color:#f8f8f8}.o_tree .o_tree_link:first-child{background-color:transparent}.o_tree .o_tree_link:last-child:hover,.o_tree .o_tree_link:last-child:focus{background-color:#f8f8f8}.o_tree .o_insertion_point>a>span{padding:5px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_insertion_source>a>span.o_tree_item,.o_tree .o_insertion_source>a>span.o_dnd_item{border-bottom:solid #f90 4px;background-color:#fefbf6}.o_tree ul{margin:0;padding:0;list-style-type:none}.o_tree ul li{margin:0;padding:0;white-space:nowrap}.o_tree ul li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_tree ul li div.popover{position:absolute;left:auto;right:0}.o_tree ul li div a.o_tree_oc_l0{position:absolute;top:10px;left:-4px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l0,.o_tree ul .o_tree_level_close.b_tree_oc_l0{z-index:10}.o_tree ul li div a.o_tree_oc_l1{position:absolute;top:10px;left:11px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l1,.o_tree ul .o_tree_level_close.b_tree_oc_l1{z-index:10}.o_tree ul li div a.o_tree_oc_l2{position:absolute;top:10px;left:26px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l2,.o_tree ul .o_tree_level_close.b_tree_oc_l2{z-index:10}.o_tree ul li div a.o_tree_oc_l3{position:absolute;top:10px;left:41px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l3,.o_tree ul .o_tree_level_close.b_tree_oc_l3{z-index:10}.o_tree ul li div a.o_tree_oc_l4{position:absolute;top:10px;left:56px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l4,.o_tree ul .o_tree_level_close.b_tree_oc_l4{z-index:10}.o_tree ul li div a.o_tree_oc_l5{position:absolute;top:10px;left:71px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l5,.o_tree ul .o_tree_level_close.b_tree_oc_l5{z-index:10}.o_tree ul li div a.o_tree_oc_l6{position:absolute;top:10px;left:86px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l6,.o_tree ul .o_tree_level_close.b_tree_oc_l6{z-index:10}.o_tree ul li div a.o_tree_oc_l7{position:absolute;top:10px;left:101px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l7,.o_tree ul .o_tree_level_close.b_tree_oc_l7{z-index:10}.o_tree ul li div a.o_tree_oc_l8{position:absolute;top:10px;left:116px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l8,.o_tree ul .o_tree_level_close.b_tree_oc_l8{z-index:10}.o_tree ul li div a.o_tree_oc_l9{position:absolute;top:10px;left:131px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l9,.o_tree ul .o_tree_level_close.b_tree_oc_l9{z-index:10}.o_tree ul li div a.o_tree_oc_l10{position:absolute;top:10px;left:146px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l10,.o_tree ul .o_tree_level_close.b_tree_oc_l10{z-index:10}.o_tree ul li div a.o_tree_oc_l11{position:absolute;top:10px;left:161px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l11,.o_tree ul .o_tree_level_close.b_tree_oc_l11{z-index:10}.o_tree ul li div span.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_tree ul li div span.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_tree ul li div span.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_tree ul li div span.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_tree ul li div span.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_tree ul li div span.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_tree ul li div span.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_tree ul li div span.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_tree ul li div span.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_tree ul li div span.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_tree ul li div span.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_tree ul li div span.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_tree ul span.o_tree_leaf{display:none}.o_tree ul span.o_tree_link>input[type=checkbox]{margin-right:5px}.o_tree ul li .badge{position:absolute;font-size:70%}.o_tree ul li .badge:before{content:none}.o_tree ul li .badge.o_badge_1{top:3px;right:1px}.o_tree ul li .badge.o_badge_2{bottom:3px;right:1px}.o_tree ul li .badge.o_badge_3{top:3px;right:25px}.o_tree ul li .badge.o_badge_4{bottom:3px;right:25px}.o_tree ul li div.o_dnd_sibling{margin:0;padding:0;border-bottom:none}.o_tree ul li .active.o_tree_link{background-color:none;font-weight:bold}.o_tree ul li .active.o_tree_link a{color:#337ab7}.o_tree ul li .active.o_tree_link:hover,.o_tree ul li .active.o_tree_link:focus{background-color:#eee}.o_tree ul li .active.o_tree_link:hover a,.o_tree ul li .active.o_tree_link:focus a{color:#23527c}.o_tree ul li .active_parent.o_tree_link{font-weight:bold}.o_tree ul li .active_parent.o_tree_link a{color:#777}.o_tree ul li .active_parent.o_tree_link a:hover,.o_tree ul li .active_parent.o_tree_link a:focus{color:#333}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l0{left:6px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l1{left:21px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l2{left:36px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l3{left:51px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l4{left:66px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l5{left:81px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l6{left:96px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l7{left:111px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l8{left:126px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l9{left:141px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l10{left:156px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l11{left:171px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l0{padding:10px 2px 10px 20px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l1{padding:10px 2px 10px 35px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l2{padding:10px 2px 10px 50px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l3{padding:10px 2px 10px 65px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l4{padding:10px 2px 10px 80px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l5{padding:10px 2px 10px 95px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l6{padding:10px 2px 10px 110px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l7{padding:10px 2px 10px 125px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l8{padding:10px 2px 10px 140px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l9{padding:10px 2px 10px 155px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l10{padding:10px 2px 10px 170px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l11{padding:10px 2px 10px 185px}.o_tree .o_dnd_item{cursor:move;z-index:100}.o_tree .o_dnd_proxy{opacity:.4;filter:alpha(opacity=40);background-color:#f0ad4e;padding:5px 10px 5px 10px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_dnd_item.o_dnd_over{background-color:#ffff60}.o_tree .o_dnd_sibling{height:7px;width:100%}.o_tree .o_dnd_sibling.o_dnd_over{background:transparent url(../light/images/arrow_dd.png) top left no-repeat}.o_tree .o_dnd_l1{margin-left:0 !important}.o_tree .o_dnd_l2{margin-left:1em !important}.o_tree .o_dnd_l3{margin-left:2em !important}.o_tree .o_dnd_l4{margin-left:3em !important}.o_tree .o_dnd_l5{margin-left:4em !important}.o_tree .o_dnd_l6{margin-left:5em !important}.o_tree .o_dnd_l7{margin-left:6em !important}.o_tree .o_dnd_l8{margin-left:7em !important}.o_tree .o_dnd_l9{margin-left:8em !important}.o_tree .o_dnd_l10{margin-left:9em !important}.o_tree .o_dnd_l11{margin-left:10em !important}.o_tree.o_tree_insert_tool span.o_tree_link a{display:block}.o_offcanvas .o_tree{border:0}.o_selection_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_selection_tree ul{margin:0;padding:0;list-style-type:none}.o_selection_tree li{margin:0;padding:0;white-space:nowrap}.o_selection_tree li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_selection_tree li>div>span.o_tree_l0,.o_selection_tree li>div>div.checkbox.o_tree_l0,.o_selection_tree li>div>div.radio.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_selection_tree li>div>span.o_tree_l1,.o_selection_tree li>div>div.checkbox.o_tree_l1,.o_selection_tree li>div>div.radio.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_selection_tree li>div>span.o_tree_l2,.o_selection_tree li>div>div.checkbox.o_tree_l2,.o_selection_tree li>div>div.radio.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_selection_tree li>div>span.o_tree_l3,.o_selection_tree li>div>div.checkbox.o_tree_l3,.o_selection_tree li>div>div.radio.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_selection_tree li>div>span.o_tree_l4,.o_selection_tree li>div>div.checkbox.o_tree_l4,.o_selection_tree li>div>div.radio.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_selection_tree li>div>span.o_tree_l5,.o_selection_tree li>div>div.checkbox.o_tree_l5,.o_selection_tree li>div>div.radio.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_selection_tree li>div>span.o_tree_l6,.o_selection_tree li>div>div.checkbox.o_tree_l6,.o_selection_tree li>div>div.radio.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_selection_tree li>div>span.o_tree_l7,.o_selection_tree li>div>div.checkbox.o_tree_l7,.o_selection_tree li>div>div.radio.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_selection_tree li>div>span.o_tree_l8,.o_selection_tree li>div>div.checkbox.o_tree_l8,.o_selection_tree li>div>div.radio.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_selection_tree li>div>span.o_tree_l9,.o_selection_tree li>div>div.checkbox.o_tree_l9,.o_selection_tree li>div>div.radio.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_selection_tree li>div>span.o_tree_l10,.o_selection_tree li>div>div.checkbox.o_tree_l10,.o_selection_tree li>div>div.radio.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_selection_tree li>div>span.o_tree_l11,.o_selection_tree li>div>div.checkbox.o_tree_l11,.o_selection_tree li>div>div.radio.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_breadcrumb{position:relative}.o_breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_breadcrumb .o_breadcrumb_close a span{display:none}.o_breadcrumb .o_breadcrumb_close:before{content:none}.o_form .o_icon_mandatory{margin-right:0.25em}.o_form .o_form_chelp{padding-left:0.25em;margin-right:-1.25em}.o_form .o_form_example{font-size:90%}.o_form .o_error{margin-top:1px;margin-bottom:0;padding:10px}.o_form hr.o_spacer_noline{border-top:1px solid transparent}.o_form hr.o_spacer.form,.o_form hr.o_spacer_noline.form{margin-top:0px;margin-bottom:0px}.o_form .form-group.o_omit_margin{margin-bottom:0}.o_form .o_date{position:relative;padding-right:34px}.o_form .o_date.form-inline .form-group,.o_form .o_date.o_navbar-form .form-group{margin-left:0}.o_form input.o_date_ms{width:3em}.o_form .o_date.form-inline .o_date_ms.form-group,.o_form .o_date.o_navbar-form .o_date_ms.form-group{margin-left:25px}.o_form .has-feedback .o_date.form-inline .form-control.o_date_ms,.o_form .has-feedback .o_date.o_navbar-form .form-control.o_date_ms{padding-right:0}.o_form .o_form_element.form-inline .o_form_element.form-group,.o_form .o_form_element.o_navbar-form .o_form_element.form-group{margin-left:25px}.o_form .input-group.o_date_picker{width:16em}.o_form .o_filepreview{margin-bottom:10px}.o_form .o_fileinput{cursor:pointer;position:relative}.o_form .o_fileinput .o_fakechooser{position:relative;z-index:1}.o_form .o_fileinput .o_realchooser{position:absolute;top:0;right:0;z-index:2;opacity:0;filter:alpha(opacity=0)}.o_form .o_fileinput .o_realchooser.o_chooser_with_delete{right:38px}.o_form .has-feedback.has-error .o_fileinput .o_fakechooser{margin-right:30px}.o_form .form-control.textarea_disabled{resize:both;overflow:auto;white-space:pre-wrap;background:#fafafa}.o_centered_form{text-align:center}.o_centered_form fieldset.o_form{display:inline-block;text-align:left}.o_choice_checkrow,.o_choice_textrow{vertical-align:text-top;padding-bottom:2px}.o_choice_textrow{padding-left:1em}.o_togglecheck a{white-space:nowrap}.o_catalog .o_catalog_delete_img{position:relative;top:-0.5em}.o_button_dirty{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_button_dirty:hover,.o_button_dirty:focus,.o_button_dirty.focus,.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{background-image:none}.o_button_dirty.disabled,.o_button_dirty.disabled:hover,.o_button_dirty.disabled:focus,.o_button_dirty.disabled.focus,.o_button_dirty.disabled:active,.o_button_dirty.disabled.active,.o_button_dirty[disabled],.o_button_dirty[disabled]:hover,.o_button_dirty[disabled]:focus,.o_button_dirty[disabled].focus,.o_button_dirty[disabled]:active,.o_button_dirty[disabled].active,fieldset[disabled] .o_button_dirty,fieldset[disabled] .o_button_dirty:hover,fieldset[disabled] .o_button_dirty:focus,fieldset[disabled] .o_button_dirty.focus,fieldset[disabled] .o_button_dirty:active,fieldset[disabled] .o_button_dirty.active{background-color:#f0ad4e;border-color:#eea236}.o_button_dirty .badge{color:#f0ad4e;background-color:#fff}.o_button_toggle{border:1px solid #777;border-top-right-radius:9px;border-top-left-radius:9px;border-bottom-right-radius:9px;border-bottom-left-radius:9px;background:#eee;display:inline-block;height:18px;line-height:16px;font-size:16px;text-align:left;padding:0 0.5em 0 0;margin:0}.o_button_toggle i{color:#777;text-shadow:1px 0 2px rgba(0,0,0,0.25)}.o_button_toggle span{line-height:16px;vertical-align:top;font-size:60%;color:#777;text-transform:uppercase}.o_button_toggle.o_on{text-align:right;padding:0 0 0 0.5em}.o_button_toggle.o_on i{color:#337ab7;text-shadow:-1px 0 2px rgba(0,0,0,0.25)}.o_table_wrapper{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_table_wrapper.o_table_flexi .o_table_body{margin-top:20px}.o_table_wrapper.o_table_flexi .table{margin-top:20px}.o_table_wrapper.o_table_flexi .table td ul{margin:0}.o_table_wrapper.o_table_flexi.o_table_no_margin .table{margin:0}.o_table_wrapper.o_table_edit table tbody{border-top:solid #f90 4px;background-color:#fefbf6}.o_table_wrapper .o_table_search{max-width:50em}.o_table_wrapper .o_table_footer .o_table_pagination{text-align:center}.o_table_wrapper .o_table_rows_infos{float:left;padding-left:0;padding-right:20px;margin:20px 0}.o_table_wrapper .o_row_selected td{background-color:#dff0d8 !important}.o_table_wrapper .o_table{margin-bottom:0}.o_table_wrapper .o_marked{font-weight:bold}.o_table_wrapper .table{margin-bottom:0}.o_table_wrapper th a,.o_table_wrapper th a:hover{color:#333;text-decoration:none}.o_table_search a.btn.o_reset_quick_search{width:38px;margin-left:-38px;z-index:5;color:grey}@media (max-width: 767px){.o_table_wrapper .o_table_rows_infos{clear:both}}a.o_orderby,a.o_orderby:hover{color:#333;text-decoration:none}a.o_orderby.o_orderby_asc,a.o_orderby.o_orderby_desc,a.o_orderby:hover.o_orderby_asc,a.o_orderby:hover.o_orderby_desc{border-bottom:1px solid #ddd}.o_table_row_count{padding-top:6px;padding-bottom:6px;vertical-align:middle}.o_table_row_details td{background-color:white !important}.o_table_config{font-size:12px}.o_table_buttons{text-align:center}.o_table_buttons input{margin-right:1em}.o_table_buttons input:last-child{margin-right:0}.o_table_tools{margin-left:6px}.o_table_tools_indications{margin-left:10px;padding-top:3px;font-size:80%}.o_table_tools_indications a{color:#d9534f}.o_table_toolbar_left .o_table_tools_indications{text-align:right}.o_table_count{max-width:20em;float:left;padding:0 15px}.o_info .table-bordered td,o_note .table-bordered td,o_important .table-bordered td,o_warning .table-bordered td,o_error .table-bordered td{border-color:#333}.panel .o_table_layout{border-top:1px solid #ddd;padding-top:6px}.panel .o_table_count{padding:0 15px}#o_navbar_imclient .o_im_messages{float:left}#o_navbar_imclient #o_im_message,#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_summary{float:left;position:relative;padding:15px 3px}#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_message{padding-left:15px}#o_navbar_imclient #o_im_summary .badge{color:#fff;background-color:#777}#o_navbar_imclient #o_im_status li>a>span{display:inline}#o_navbar_imclient #o_im_status div.o_chelp_wrapper{right:0.5em}#o_navbar_imclient #o_im_message a:hover,#o_navbar_imclient #o_im_message a:focus{text-decoration:none}#o_navbar_imclient #o_im_message .o_icon_message{color:#d9534f}#o_navbar_imclient #o_im_message .o_icon_message:hover{color:#f4c37d}.o_im_load_history{margin-bottom:6px}.o_im_load_history .o_label{font-size:12px;padding-right:0.5em;line-height:1.5em;color:#777}.o_im_chat_history{height:170px;font-size:90%;border:1px solid #eee;margin:0 0 1em 0;overflow:scroll;overflow-x:auto}.o_im_message_group{padding:3px 3px 3px 40px;min-height:40px;position:relative;border-top:1px solid #eee;background:#fff}.o_im_message_group.o_odd{background:#F4F4F4}.o_im_message_group .o_portrait{position:absolute;top:3px;left:3px}.o_im_message_group .o_im_from{color:#777;font-size:12px;font-weight:bold}.o_im_message_group .o_im_from:hover{color:#5e5e5e}.o_im_message_group div.o_im_body{padding:3px 0 3px 0;font-size:12px}.o_im_message_group div.o_im_body .o_date{float:right;color:#777;font-size:9px}.o_groupchat_roster{font-size:12px}.o_groupchat_roster li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.o_groupchat_roster li.o_vip{color:#3c763d}.o_groupchat_roster li.o_anonymous{color:#31708f}.o_im_buddieslist .o_im_buddieslist_toggler .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_im_buddieslist ul{font-size:12px}.o_im_buddieslist ul ul{padding-left:1em}.o_im_buddieslist ul a{color:#337ab7}.o_im_buddieslist ul a:hover{color:#23527c}.o_flag{position:relative;top:1px;display:inline-block;line-height:1;width:16px;height:16px;background-repeat:no-repeat;background-position:0 100%}option.o_with_flag{padding-left:23px;min-height:16px;background-repeat:no-repeat;background-position:2px 50%}.o_flag_en{background-image:url("../light/images/flags/gb.png")}.o_flag_de{background-image:url("../light/images/flags/de.png")}.o_flag_fr{background-image:url("../light/images/flags/fr.png")}.o_flag_it{background-image:url("../light/images/flags/it.png")}.o_flag_es{background-image:url("../light/images/flags/es.png")}.o_flag_da{background-image:url("../light/images/flags/dk.png")}.o_flag_cs{background-image:url("../light/images/flags/cz.png")}.o_flag_el{background-image:url("../light/images/flags/gr.png")}.o_flag_ee{background-image:url("../light/images/flags/ee.png")}.o_flag_ru{background-image:url("../light/images/flags/ru.png")}.o_flag_pl{background-image:url("../light/images/flags/pl.png")}.o_flag_zh_CN{background-image:url("../light/images/flags/cn.png")}.o_flag_zh_TW{background-image:url("../light/images/flags/tw.png")}.o_flag_lt{background-image:url("../light/images/flags/lt.png")}.o_flag_fa{background-image:url("../light/images/flags/ir.png")}.o_flag_pt_PT{background-image:url("../light/images/flags/pt.png")}.o_flag_pt_BR{background-image:url("../light/images/flags/br.png")}.o_flag_tr{background-image:url("../light/images/flags/tr.png")}.o_flag_hu{background-image:url("../light/images/flags/hu.png")}.o_flag_sq{background-image:url("../light/images/flags/al.png")}.o_flag_in{background-image:url("../light/images/flags/id.png")}.o_flag_ar{background-image:url("../light/images/flags/eg.png")}.o_flag_rm{background-image:url("../light/images/flags/rm.png")}.o_flag_af{background-image:url("../light/images/flags/za.png")}.o_flag_vi{background-image:url("../light/images/flags/vn.png")}.o_flag_mn{background-image:url("../light/images/flags/mn.png")}.o_flag_iw{background-image:url("../light/images/flags/il.png")}.o_flag_ko{background-image:url("../light/images/flags/kr.png")}.o_flag_nl_NL{background-image:url("../light/images/flags/nl.png")}.o_flag_jp{background-image:url("../light/images/flags/jp.png")}.o_flag_nb_NO{background-image:url("../light/images/flags/no.png")}.o_flag_et_EE{background-image:url("../light/images/flags/ee.png")}.o_flag_bg{background-image:url("../light/images/flags/bg.png")}.o_flag_hi_IN_ASIA{background-image:url("../light/images/flags/in.png")}.o_flag_ar_LB{background-image:url("../light/images/flags/lb.png")}.o_flag_gl_ES{background-image:url("../light/images/flags/galicia.png")}.o_flag_sk{background-image:url("../light/images/flags/sk.png")}.o_rating .o_rating_title{font-size:12px}.o_rating .o_rating_items{white-space:nowrap}.o_rating .o_rating_items .o_icon{color:#f0ad4e}.o_rating .o_rating_items .o_icon:hover{color:#337ab7}.o_rating .o_rating_items .o_legend{margin-left:1em;font-size:12px;line-height:normal}.o_rating .o_rating_explanation{font-size:12px;color:#777}@media (max-width: 991px){.o_rating .o_rating_title,.o_rating .o_rating_explanation{display:none}}.o_comments .o_comment_wrapper .o_avatar{float:left;margin:0 1em 0 0}.o_comments .o_comment_wrapper .o_reply,.o_comments .o_comment_wrapper .o_delete{float:right}.o_comments .o_comment_wrapper .o_comment_wrapper{margin-left:16px}.o_ratings_and_comments .o_rating_wrapper{vertical-align:middle;display:inline-block}.o_ratings_and_comments a.o_comments{margin-left:10px;position:relative;top:0.1em}.d3chart .bar{shape-rendering:crispEdges}.d3chart .bar_default_light{fill:#64a0d3}.d3chart .bar_default,.d3chart .bubble_default{fill:#337ab7}.d3chart .bar_default_dark{fill:#23527c}.d3chart .axis{font:12px sans-serif}.d3chart .axis path,.d3chart .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_forum_peekview .o_quote_wrapper,.o_forum_peekview .b_quote_wrapper{display:none}.o_forum_thread_sticky{font-weight:bold}.o_forum_switch{font-size:12px}.o_forum_toolbar{margin-bottom:6px;float:left}.o_forum_fulltextsearch{float:right}@media (max-width: 767px){.o_forum_fulltextsearch{float:left}.o_forum_toolbar .o_forum_tool span{display:none}}.o_forum{padding-bottom:50px}.o_forum .o_mark,.o_forum .o_ep_collect{float:right;position:relative;width:2em;margin-left:12px}.o_forum .o_portrait{float:left;margin-right:16px}.o_forum .o_portrait_avatar{width:70px;height:70px}.o_forum .o_newindicator{font-size:10px;color:#5cb85c;text-transform:uppercase;padding-left:1em;vertical-align:text-top;white-space:nowrap}.o_forum .o_author,.o_forum .o_date{display:inline-block;color:#777}.o_forum .o_date{font-size:12px}.o_forum .o_modified{color:#8a6d3b;font-size:12px;font-style:italic}.o_forum .o_forum_message{margin-bottom:20px;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_forum .o_forum_message_new{-webkit-box-shadow:0 1px 10px rgba(92,184,92,0.3);box-shadow:0 1px 10px rgba(92,184,92,0.3)}.o_forum .o_forum_message_highlight{-webkit-box-shadow:0 1px 10px rgba(240,173,78,0.5);box-shadow:0 1px 10px rgba(240,173,78,0.5)}.o_forum .o_forum_message_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:3px;border-top-left-radius:3px}.o_forum .o_forum_message_title{margin-top:0}.o_forum .o_forum_message_body{padding:10px 15px}.o_forum .o_forum_message_attachments{border-top:1px solid #ddd;padding:10px 15px;font-size:12px;background-color:#f7f7f9}.o_forum .o_attachment{position:relative;max-width:250px;vertical-align:top;margin:6px 12px 10px 0}.o_forum .o_attachment img{margin-top:6px}.o_forum .o_filename{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_forum .o_icon_enlarge{position:absolute;left:1em;bottom:1em;text-shadow:1px 1px 2px #fff, -1px 1px 2px #fff, 1px -1px 2px #fff, -1px -1px 2px #fff}@media (min-width: 768px) and (max-width: 991px){.o_forum .o_attachments{font-size:10px}.o_forum .o_attachment{max-width:200px}.o_forum .o_attachment img{max-width:150px}.o_forum .o_filename{max-width:200px}}@media (max-width: 767px){.o_forum .o_attachments{font-size:9px}.o_forum .o_attachment{max-width:150px}.o_forum .o_attachment img{max-width:100px}.o_forum .o_filename{max-width:150px}}.o_quote_wrapper,.b_quote_wrapper{position:relative;margin:10px 0}.o_quote_author,.b_quote_author{color:#777;font-size:12px}.o_quote_author:before,.b_quote_author:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";font-size:21px;padding-right:0.5em}blockquote.o_quote,blockquote.b_quote{color:#555;font-size:12px;margin-top:6px;padding:0 12px}a.o_chelp{display:inline-block;padding:1px 3px;text-align:center;vertical-align:middle;white-space:nowrap;font-size:10px;font-weight:normal;line-height:15px;color:#fff;background-color:#337ab7;border:1px solid #2e6da4;border-radius:2px;cursor:help;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}a.o_chelp:active,a.o_chelp:hover,a.o_chelp:focus{text-decoration:none;color:#fff;background-color:#2a6598;border-color:#204d74}a.o_chelp i{font-size:10px !important}.o_chelp_wrapper{position:relative;float:right;display:inline-block;line-height:normal;margin-bottom:10px;margin-left:10px}.o_form_chelp,.o_chelp_tooltip{color:#737373}.o_draw_circle{border:4px solid #337ab7;border-radius:50%;position:absolute !important}.o_draw_rectangle{border:4px solid #337ab7;position:absolute !important}.o_iframedisplay iframe{width:100%}.o_singlepage .o_edit{position:absolute;top:10px;right:37px}.o_content_popup{position:absolute;top:10px;right:12px}.o_module_cp_wrapper .o_tools{position:absolute;top:10px;right:12px;text-align:right;vertical-align:middle}.o_module_cp_wrapper .o_tools .o_search_wrapper{display:inline-block;position:relative;top:-2px}ul.o_dropdown{margin:-5px -14px}ul.o_dropdown .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}ul.o_dropdown>li>a{display:block;padding:5px 14px;clear:both;font-weight:normal;line-height:1.42857;color:#333;background:#fff;white-space:nowrap}ul.o_dropdown>li>a:hover,ul.o_dropdown>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.badge.o_scorm_completed{background-color:#3c763d}.badge.o_scorm_failed{background-color:#a94442}.badge.o_scorm_incomplete{background-color:#8a6d3b}.badge.o_scorm_not_attempted{background:none}.o_bc_meta h5,.o_bc_meta .o_author,.o_bc_meta .o_comment,.tooltip h5,.tooltip .o_author,.tooltip .o_comment{color:#fff;margin:5px 0}.o_bc_meta .o_thumbnail,.tooltip .o_thumbnail{width:200px;height:200px;display:inline-block;background-color:#fff;margin:0 -5px}.o_htmleditor .o_metadata{border:1px solid #999;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:0;background:#eee;position:relative;top:1px;padding:5px}.o_htmleditor .o_metadata #o_filename{float:left}.o_htmleditor .o_metadata .o_lastmodified{float:right;color:#777;line-height:1.42857}.o_htmleditor #o_save{margin-top:10px;text-align:center}.o_htmleditor #o_save input{margin-right:1em}.o_htmleditor #o_save input:last-child{margin-right:0}.o_notifications_news_wrapper .o_notifications_news_subscription{margin:10px 0}.o_notifications_news_wrapper .o_notifications_news_subscription h4 i,.o_notifications_news_wrapper .o_notifications_news_subscription .o_cal .fc-header-title h2 i,.o_cal .fc-header-title .o_notifications_news_wrapper .o_notifications_news_subscription h2 i{display:none}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_context{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content{margin-left:1.5em;position:relative}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_icon{position:absolute;left:-1.5em;line-height:1.5em;top:0}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_date{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_url{margin-left:1.5em}.o_noti{margin:6px 0 6px 12px;float:right;color:#777}.o_noti .o_label{color:#777;cursor:help}@media (max-width: 767px){.o_noti .o_label span{display:none}}.panel-body .o_noti{margin:0}.o_portrait{display:inline-block}.o_portrait img{border-radius:50%;border:none;background-color:#eee;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.o_portrait_name{margin-top:6px}.o_block_inline .o_portait,.o_block_inline .o_portrait_name,.o_block_inline .o_portrait_image,.o_block_inline_right .o_portait,.o_block_inline_right .o_portrait_name,.o_block_inline_right .o_portrait_image,.o_block_inline_left .o_portait,.o_block_inline_left .o_portrait_name,.o_block_inline_left .o_portrait_image,.o_block_inline_both .o_portait,.o_block_inline_both .o_portrait_name,.o_block_inline_both .o_portrait_image{display:inline-block}.o_portrait_avatar,.o_portrait_dummy,.o_portrait_dummy_female_big,.o_portrait_dummy_male_big,.o_portrait_anonymous{width:100px;height:100px}.o_portrait_dummy{background-image:url("../light/images/portrait/dummy.png")}.o_portrait_dummy_female_big{background-image:url("../light/images/portrait/dummy_female_big.png")}.o_portrait_dummy_male_big{background-image:url("../light/images/portrait/dummy_male_big.png")}.o_portrait_anonymous{background-image:url("../light/images/portrait/anonymous.png")}.o_portrait_avatar_small,.o_portrait_dummy_small,.o_portrait_dummy_female_small,.o_portrait_dummy_male_small,.o_portrait_anonymous_small{width:30px;height:30px}.o_portrait_dummy_small{background-image:url("../light/images/portrait/dummy_small.png")}.o_portrait_dummy_female_small{background-image:url("../light/images/portrait/dummy_female_small.png")}.o_portrait_dummy_male_small{background-image:url("../light/images/portrait/dummy_male_small.png")}.o_portrait_anonymous_small{background-image:url("../light/images/portrait/anonymous_small.png")}.o_datecomp{position:relative;width:40px;height:52px;border:1px solid #555;margin-right:12px;text-align:center;vertical-align:middle}.o_datecomp div.o_year{position:absolute;left:0;width:100%;top:-20px;height:20px;line-height:20px;font-size:10px}.o_datecomp div.o_month{height:20px;line-height:20px;font-size:12px;background-color:#337ab7;color:#fff}.o_datecomp div.o_day{height:30px;line-height:30px;font-size:18px;border-top:1px solid #555;background-color:#fff;color:#333}.o_block_with_datecomp .o_head{position:relative;padding-left:52px}.o_block_with_datecomp .o_datecomp{position:absolute;top:0.2em;left:0}.o_block_with_datecomp .o_title{margin-top:0}.o_block_with_datecomp .o_meta{color:#777}.o_block_with_datecomp .o_content{border-left:5px solid #eee;padding:0 20px}.o_block_with_datecomp .o_block_footer{padding-left:25px}ul.o_certificates li{padding:5px 0}ul.o_certificates li a.o_sel_certificate_delete{padding-left:2em}.o_cal_toptoolbar{margin-bottom:6px}.o_cal_toptoolbar .o_cal_toptoolbar_help{float:left;margin-right:12px}.o_cal_toptoolbar .o_noti{margin-top:0}.o_feed .o_date,.o_feed .o_author{color:#777}.o_feed .o_subscription a{margin-right:1.5em}.o_feed .o_subscription .form-group{margin-bottom:5px}.o_feed .o_subscription .form-control{border:0;background:none;padding:0;height:auto;-webkit-box-shadow:none;box-shadow:none}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper{float:left}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_title,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_explanation,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_legend{display:none}.o_feed .o_blog_posts .o_ratings_and_comments a.o_comments span{display:none}.o_feed .o_content:before,.o_feed .o_content:after{content:" ";display:table}.o_feed .o_content:after{clear:both}.o_glossary .o_register{text-align:center}.o_glossary .o_meta{font-size:90%;color:#777;font-style:italic}.o_glossary dl dt:first-letter{font-size:21px}.o_glossary dl dt small{color:#777}.o_tm_glossary{border-bottom:1px dotted #666699 !important}.o_tm_yellow{background-color:#FFFF66}.o_tm_blue{background-color:#33FFFF}.o_tm_red{background-color:#FF3333}.o_tm_green{background-color:#99FF00}.o_coaching div#o_main_toolbar.o_toolbar{margin-top:0px}.o_eff_statement_details .o_user_infos{margin-top:20px}div.o_assessment_user_type_filter{display:inline-block;padding:0.5em;border:1px solid #eee;border-radius:4px}div.o_assessment_user_type_filter div.form-inline,div.o_assessment_user_type_filter div.o_navbar-form{margin-left:5px;display:inline-block}.vitero_iframe{width:100%;height:100%;border:none;min-height:60em}.o_reminder_rule{padding:5px 0}.o_segments.btn-group a span{overflow:hidden;display:block;text-overflow:ellipsis}.o_segments_content{margin-top:20px}.o_tabbed_pane .o_tabbed_pane_content{padding:20px 0 6px 0}.o_togglebox_wrapper .o_opener{position:relative;left:-0.5em}.o_togglebox_wrapper div.o_togglebox_content{position:relative;margin:0}.o_togglebox_wrapper div.o_togglebox_content .o_hide{position:absolute;bottom:0.5em;right:1em}.o_toolboxes ul{margin:0 0 1.5em 0;padding:0 0 0 1.5em}.o_qrcode{width:256px;height:256px}#o_ajax_busy{position:absolute;left:50%;top:20em;margin-left:-2.5em;height:5em;width:5em;color:#fff;z-index:1201;display:none}#o_body.o_ajax_busy{cursor:busy}.o_exception .o_visual{position:relative;background-image:url("../light/images/lion-500x333.jpg");filter:grayscale(50%);-webkit-filter:grayscale(50%);-moz-filter:grayscale(50%);-ms-filter:grayscale(50%);-o-filter:grayscale(50%);width:500px;height:333px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;margin:0 0 10px 16px}@media (min-width: 768px) and (max-width: 991px){.o_exception .o_visual{width:375px;height:249px}}@media (min-width: 500px) and (max-width: 767px){.o_exception .o_visual{width:250px;height:166px}}@media (max-width: 500px){.o_exception .o_visual{background-size:cover}}.o_exception .jumbotron h1,.o_exception .o_repo_details .o_lead h1,.o_repo_details .o_exception .o_lead h1{color:#d9534f}ul.o_assessment_docs{margin-bottom:0}ul.o_assessment_docs>li{margin-bottom:0.33em}ul.o_assessment_docs>li:last-child{margin-bottom:0em}.o_mail_message .o_mail_meta{background:#fafafa;border:1px solid #eee;padding:5px 10px}.o_mail_message .o_mail_meta h3{margin-top:0}.o_mail_message .o_mail_date,.o_mail_message .o_mail_from,.o_mail_message .o_mail_recipients{color:#777;font-size:90%}.o_mail_message .o_mail_date .o_label,.o_mail_message .o_mail_from .o_label,.o_mail_message .o_mail_recipients .o_label{font-weight:bold;margin-right:1em}.o_mail_message .o_mail_date .o_group span,.o_mail_message .o_mail_from .o_group span,.o_mail_message .o_mail_recipients .o_group span{font-weight:bold}.o_mail_message .o_mail_date .o_group span:after,.o_mail_message .o_mail_from .o_group span:after,.o_mail_message .o_mail_recipients .o_group span:after{content:':';margin-right:0.5em}.o_mail_message .o_mail_date i,.o_mail_message .o_mail_from i,.o_mail_message .o_mail_recipients i{margin-left:1em}.o_mail_message .o_mail_date ul.list-inline,.o_mail_message .o_mail_from ul.list-inline,.o_mail_message .o_mail_recipients ul.list-inline{display:inline}.o_mail_message .o_mail_date ul.list-inline li,.o_mail_message .o_mail_from ul.list-inline li,.o_mail_message .o_mail_recipients ul.list-inline li{padding-right:0;padding-left:0}.o_mail_message .o_more{margin-left:1em}.o_mail_message .o_showAllLink{float:right;font-size:80%}.progress .o_progress_marker{position:absolute;height:100%;top:0;width:3px;background:red}.o_web_content{padding-bottom:15px}.tt-input{width:400px}.tt-menu{width:400px;margin-top:6px;padding:0 0 0;color:#555;background-color:#fff;border:1px solid #66afe9;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 0 8px rgba(102,175,233,0.6);box-shadow:0 0 8px rgba(102,175,233,0.6)}.tt-suggestion{padding:6px 12px;font-size:14px;line-height:1.42857}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;background-color:#337ab7}.tt-suggestion p{margin:0}.tt-menu div.o_icon_error:before{content:''}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_highlight{font-weight:bold;background-color:#fcf8e3}.o_search_result_context{color:#3c763d}.o_search_result_excerpt{color:#555}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}@media (max-width: 767px){.o_search_result_details{display:none}}.wizard{border:1px solid #d4d4d4;border-radius:2px;background-color:#f9f9f9;position:relative;overflow:hidden;margin-bottom:15px}.wizard ul{list-style:none outside none;padding:0;margin:0;width:4000px}.wizard ul li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#333;font-size:16px;cursor:default}.wizard ul li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.wizard ul li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.wizard ul li.active{background:#f1f6fc;color:#333}.wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.wizard ul li .badge{margin-right:8px}.wizard ul li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.o_process{position:relative;padding-left:25px}.o_process .o_step{position:relative;height:auto;padding-top:10px;padding-left:30px;padding-bottom:10px}.o_process .o_bar{position:absolute;top:10px;left:8px;height:100%;border-left:4px solid #777}.o_process .o_bar:after{position:absolute;top:0;left:-10px;height:16px;width:16px;border:4px solid #777;border-radius:16px;background:#fff;content:" "}.o_process .o_title{margin-top:-1px;color:#777 !important}.o_process .o_title:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:-24px}.o_process .o_title a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";width:1em}.o_process .o_title a.collapsed:before{content:""}.o_process .o_step.o_active .o_bar,.o_process .o_step.o_active .o_bar:after{border-color:#337ab7}.o_process .o_step.o_active .o_title{color:#337ab7 !important}.o_process .o_step.o_active .o_title:before{content:"";color:#337ab7}.o_process .o_step.o_done .o_bar,.o_process .o_step.o_done .o_bar:after{border-color:#5094ce}.o_process .o_step.o_done .o_title{color:#5094ce !important}.o_process .o_step.o_done .o_title:before{content:"";color:#5cb85c}.o_process .o_meta{color:#777;font-size:12px;margin-top:-0.5em}.o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5D5D5D !important}.o_cal_class.o_cal_orange{border-left:20px solid #ffc266}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#FFF !important}.o_cal_class.o_cal_green{border-left:20px solid #66c266}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#FFF !important}.o_cal_class.o_cal_blue{border-left:20px solid #4d6e9f}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5D5D5D !important}.o_cal_class.o_cal_yellow{border-left:20px solid #ffe066}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#FFF !important}.o_cal_class.o_cal_red{border-left:20px solid #c26666}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#FFF !important}.o_cal_class.o_cal_rebeccapurple{border-left:20px solid #639}.o_cal_fuchsia{background:#FF00FF;border-color:#dd00dd;color:#FFF}.o_cal_fuchsia .o_cal_wv_event_header{background:#FF00FF}.o_cal_fuchsia a{color:#FFF !important}.o_cal_class.o_cal_fuchsia{border-left:20px solid #f0f}.o_cal_olive{background:#808000;border-color:#636300;color:#FFF}.o_cal_olive .o_cal_wv_event_header{background:#808000}.o_cal_olive a{color:#FFF !important}.o_cal_class.o_cal_olive{border-left:20px solid olive}.o_cal_navy{background:#000080;border-color:#000057;color:#FFF}.o_cal_navy .o_cal_wv_event_header{background:#000080}.o_cal_navy a{color:#FFF !important}.o_cal_class.o_cal_navy{border-left:20px solid navy}.o_cal_maroon{background:#800000;border-color:#740000;color:#FFF}.o_cal_maroon .o_cal_wv_event_header{background:#800000}.o_cal_maroon a{color:#FFF !important}.o_cal_class.o_cal_maroon{border-left:20px solid maroon}.o_cal_lime{background:#00FF00;border-color:#00e200;color:#004d00}.o_cal_lime .o_cal_wv_event_header{background:#00FF00}.o_cal_lime a{color:#004d00 !important}.o_cal_class.o_cal_lime{border-left:20px solid lime}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#FFF !important}.o_cal_class.o_cal_grey{border-left:20px solid #DDDAAA}.o_sel_calendar_print_chooser{padding-right:4em}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_config_color{display:block;width:16px;height:16px;border-radius:8px}.o_cal_colorchooser_selected:before{content:""}#o_cal_colorchooser div{border:1px solid #337ab7;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_cal_embedded_course_container .o_content_popup{top:0}.fc-button{color:#333;background-color:#fff;border-color:#ccc}.fc-button:hover,.fc-button:focus,.fc-button.focus,.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{background-image:none}.fc-button.disabled,.fc-button.disabled:hover,.fc-button.disabled:focus,.fc-button.disabled.focus,.fc-button.disabled:active,.fc-button.disabled.active,.fc-button[disabled],.fc-button[disabled]:hover,.fc-button[disabled]:focus,.fc-button[disabled].focus,.fc-button[disabled]:active,.fc-button[disabled].active,fieldset[disabled] .fc-button,fieldset[disabled] .fc-button:hover,fieldset[disabled] .fc-button:focus,fieldset[disabled] .fc-button.focus,fieldset[disabled] .fc-button:active,fieldset[disabled] .fc-button.active{background-color:#fff;border-color:#ccc}.fc-button .badge{color:#fff;background-color:#333}.fc-button.fc-state-default{text-shadow:none}.fc-button.fc-state-active{color:#fff;background-color:#337ab7;border-color:#2e6da4}.fc-button.fc-state-active:hover,.fc-button.fc-state-active:focus,.fc-button.fc-state-active.focus,.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{background-image:none}.fc-button.fc-state-active.disabled,.fc-button.fc-state-active.disabled:hover,.fc-button.fc-state-active.disabled:focus,.fc-button.fc-state-active.disabled.focus,.fc-button.fc-state-active.disabled:active,.fc-button.fc-state-active.disabled.active,.fc-button.fc-state-active[disabled],.fc-button.fc-state-active[disabled]:hover,.fc-button.fc-state-active[disabled]:focus,.fc-button.fc-state-active[disabled].focus,.fc-button.fc-state-active[disabled]:active,.fc-button.fc-state-active[disabled].active,fieldset[disabled] .fc-button.fc-state-active,fieldset[disabled] .fc-button.fc-state-active:hover,fieldset[disabled] .fc-button.fc-state-active:focus,fieldset[disabled] .fc-button.fc-state-active.focus,fieldset[disabled] .fc-button.fc-state-active:active,fieldset[disabled] .fc-button.fc-state-active.active{background-color:#337ab7;border-color:#2e6da4}.fc-button.fc-state-active .badge{color:#337ab7;background-color:#fff}body.o_cal_print fieldset{border:none;margin-bottom:2em}body.o_cal_print legend{font-size:2em;font-weight:bold}body.o_cal_print legend span{display:block;font-size:14px;font-weight:normal}body.o_cal_print ul.o_cal_wv_list{list-style-type:none;padding:0}body.o_cal_print ul.o_cal_wv_list>li{page-break-inside:avoid;margin-bottom:2em}body.o_cal_print ul.o_cal_wv_list .o_cal_date{font-size:1.25em;font-weight:bold;padding:0.5em 0 0.5em 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events{list-style-type:none;padding:0.5em 0 0 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event{position:relative;left:30px;page-break-inside:avoid;clear:both;margin-bottom:1.5em;padding-right:30px}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_time{float:left;font-weight:bold;margin-right:1em}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject{font-weight:bold}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject p{margin:0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_location,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_description,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{clear:both}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{font-style:italic}body.o_cal_print .o_cal_class{position:absolute;left:-30px;width:20px}body.o_cal_print #o_cal_config legend{font-size:1.25em}body.o_cal_print #o_cal_config .o_cal_config_calendar{margin:0;padding:0}body.o_cal_print #o_cal_config .o_cal_config_calendar{position:relative;left:30px;float:none;padding-right:30px}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #337ab7;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{box-sizing:content-box;border-right:1px solid #337ab7}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #337ab7;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#5bc0de}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#337ab7;border-color:#2e6da4}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#337ab7;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#f0ad4e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#337ab7}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#286090}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:normal;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;font-size:90%;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{border-right:37px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;width:37px;line-height:50px;color:#fff;background-color:#337ab7}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #337ab7;border-bottom:1px solid #337ab7}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#337ab7}.o_catalog .o_level .o_meta .o_title a:hover{color:#286090}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels_list .o_sublevel{position:relative;border:1px solid #337ab7;margin-bottom:10px}.o_catalog .o_sublevels_list .o_sublevel .o_visual{height:75px;width:75px}.o_catalog .o_sublevels_list .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels_list .o_sublevel .o_title{margin:0}.o_catalog .o_sublevels_list .o_sublevel .o_meta{border-left:1px solid #337ab7;min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em;overflow:hidden}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_title{line-height:75px}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_desc{display:none}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a{font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a>i,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a>i,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a>i{display:none}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels{border:1px solid transparent}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels .o_meta{border-left:1px solid transparent}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #337ab7;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #337ab7;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#337ab7;font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#286090}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (min-width: 768px){.o_catalog .o_sublevels_list,.o_catalog .o_sublevels_compact{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2;columns:2}}.o_repo_details{position:relative}.o_repo_details .o_lead{margin-bottom:10px}.o_repo_details .o_lead .o_author{margin-top:0.5em;margin-bottom:1em;font-size:120%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead .o_media.o_desc_empty{float:none;margin-left:0;margin-bottom:0}.o_repo_details .o_lead h1{font-size:37px}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start_wrapper{clear:both;margin:2em 0 -10px 0;text-align:right}.o_repo_details .o_start_wrapper .o_start_inner{display:inline-block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:400px;display:inline-block}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-left:0;float:none;text-align:center}.o_repo_details .o_start_wrapper{text-align:center}.o_repo_details .o_start_wrapper .o_start_inner{display:block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:100%;display:block}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}}.o_meta .o_closed{padding:2px 5px;margin:5px 0}.o_overview .o_closed{padding:12px 15px;margin:15px 0}.o_ac_configuration span.o_ac_infos{font-weight:normal;color:grey}tr.o_entry_closed,tr.o_entry_closed td,tr.o_entry_closed td span,tr.o_entry_unpublished,tr.o_entry_unpublished td,tr.o_entry_unpublished td span{text-decoration:line-through}.badge.o_midpub{background-color:#3c763d}.badge.o_midwarn{background-color:#8a6d3b}.badge.o_midlock{background-color:#31708f}.badge.o_miderr{background-color:#a94442}.badge.o_middel{background-color:#777}.o_course_editor_legend .badge{font-size:80%}.o_course_editor_legend .badge:before{content:none}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#333}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#66512c}.o_failed th{color:#333}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#333}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_course_run .o_in_review{font-style:italic;position:relative}.o_course_run.o_titled_wrapper>h2 i{display:none}.o_course_run .o_cal_toptoolbar{margin-right:26px}.o_course_run .o_titled_wrapper .o_cal_toptoolbar{margin-right:0px}.o_tree.o_course_menu div.o_tree_l0>a:first-child{background-color:none}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_ll_container h5{margin-bottom:5px}.o_ll_container h5 a.o_desc{color:#337ab7}.o_ll_container h5 a.o_desc small{display:none}.o_ll_container h5 a.o_desc:hover{color:#286090;text-decoration:none}.o_ll_container h5 a.o_desc:hover small{color:#5e5e5e;display:inline}.o_ll_container div.o_comment{color:#777}.o_cmembers .o_cmember{margin:12px 0}.o_cmembers .o_cmember .o_portrait{margin-right:10px}.o_cmembers .o_cmember .o_portrait img{width:50px;height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper{line-height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_cmembers .o_cmember a.o_mail{display:none}.o_cmembers .o_cmember:hover a.o_mail{display:inline}.o_cmembers_print{color:#000}.o_cmembers_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_cmembers_print #o_print_brand img{width:100%}.o_cmembers_print .o_portrait{width:100px;height:100px;position:relative}.o_cmembers_print .o_portrait img{border-radius:0px;margin:auto;display:block;max-width:100px;max-height:100px}.o_cmembers_print .o_cmember{padding-left:0px;padding-right:15px;margin-bottom:20px}.o_cmembers_print .o_cmember .o_cmember_info_wrapper{word-wrap:break-word}.o_cmembers_print .o_cmember .o_prop.o_zipCode{float:left;padding-right:0.5em}.o_cmembers_print h1{font-size:18pt;color:#000}.o_cmembers_print h3{font-size:14pt;margin-top:5px;font-weight:normal;color:#000}.o_cmembers_print h4,.o_cmembers_print .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_cmembers_print h2{font-size:11pt;font-weight:strong;color:#000;padding-bottom:10px;border-bottom:1px solid #eee}.o_cmembers_print .o_cmember_info_wrapper{font-size:7pt;color:#000}.o_cmembers_print .o_cmember_info_wrapper strong{font-size:8pt}.tag.label.label-info{margin-right:3px}.input-group.o_tag_inputgroup .form-control{height:auto}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#337ab7}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #337ab7}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #337ab7 !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid #337ab7}.o_gap_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}div.hotspotInteraction{overflow-x:auto}#itemBody .extendedTextInteraction{margin:15px 0}#itemBody .extendedTextInteraction textarea{resize:vertical !important}#itemBody .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-color:#337ab7}.progress-striped #o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_questioninfo .progress-bar{background-color:#337ab7}.progress-striped #o_qti_run_infos #o_qti_questioninfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_results_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 0 1em 0}#o_qti_results_infos .progress{background-color:#eee}#o_qti_results_infos #o_qti_run_scoreinfo,#o_qti_results_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}.o_qti_hotspot_label{padding-left:48%}.o_info.o_assessmentsection_rubrics{margin:0 0 0.5em 0}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d9534f;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d9534f}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d9534f}.o_assessmentitem div.orderInteraction div.box{background-color:#eee}.o_assessmentitem div.orderInteraction div.box span.info{margin-left:1em;color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction div.box.horizontal{margin:0.5em 0;width:100%}.o_assessmentitem div.orderInteraction ul.horizontal{float:left;margin:0 1em;padding:1em 0;width:100%}.o_assessmentitem div.orderInteraction div.box.vertical{margin:1em 0;width:49%}.o_assessmentitem div.orderInteraction div.box.vertical.source{float:left}.o_assessmentitem div.orderInteraction div.box.vertical.target{float:right}.o_assessmentitem div.orderInteraction ul.vertical{margin:0 1em;padding:1em 0;width:auto}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0;width:60%}.o_assessmentitem div.orderInteraction ul li{margin:0 3px 3px 3px;padding:0.4em;padding-left:1.5em;font-size:1em}.o_assessmentitem div.orderInteraction ul li span.ui-icon{position:absolute;margin-left:-1.3em}.o_assessmentitem div.orderInteraction ul.horizontal li{float:left;width:auto}.o_assessmentitem div.orderInteraction br{clear:both}.o_assessmentitem .hottext{position:relative;margin:-2px 0.15em -2px 0.15em;white-space:nowrap}.o_assessmentitem .hottext input{margin:0 3px 0 2px;position:absolute;top:0.1em;left:0.05em}.o_assessmentitem .hottext input+label{display:inline;padding:0 0.1em 0 1.2em;background:#f8f8f8;border:1px solid #e7e7e7;border-radius:2px;color:#333;font-weight:normal;white-space:normal}.o_assessmentitem .hottext input:checked+label{color:#fff;background:#5bc0de;border:1px solid #31b0d5}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem .textEntryInteraction input{margin:-1px 2px;line-height:90%;vertical-align:middle;font-size:98%;border:0.5px solid #999;background:#fff;padding:0.5px 1px;color:#333}.o_assessmentitem .textEntryInteraction input:valid,.o_assessmentitem .textEntryInteraction input:disabled{color:#fff;-webkit-text-fill-color:#fff;background:#5bc0de;border:0.5px solid #31b0d5}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em}.o_assessmentitem_wrapper #itemBody{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;line-height:1.5em}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type,.o_assessmentitem_wrapper .modalFeedback .o_cal .fc-header-title h2:first-of-type,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback h2:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4,.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h2{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d9534f}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#5cb85c}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f0ad4e}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#5bc0de;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}#itemBody{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}.o_assessment_test_results .o_sel_assessment_item_hint{display:none}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction label{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#5cb85c}.matchInteraction div.bar_red{background-color:#d9534f}.source-left,.target-left,.source-right,.target-right{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_match_dnd_sources{padding:10px 10px 0 10px;min-height:60px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_match_dnd_sources.oo-accepted{border-color:#1f7e9a}.o_match_dnd_source{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;cursor:move;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.o_match_dnd_source:before,.o_match_dnd_source:after{content:" ";display:table}.o_match_dnd_source:after{clear:both}.o_match_dnd_source.oo-selected{border:2px dashed #f0ad4e;background:#fae3c4}.o_match_dnd_source.oo-drag{border:2px dashed #f0ad4e !important}.source-bottom .o_match_dnd_source,.source-top .o_match_dnd_source{margin:0 0 10px 0}.o_match_dnd_targets .oo-accepted{border:2px solid #1f7e9a;border-radius:4px}.o_match_dnd_target{padding:10px 10px 0 10px;margin:0 0 10px 10px;border:2px solid #5bc0de;border-radius:4px;background:#d9edf7}.o_match_dnd_target:before,.o_match_dnd_target:after{content:" ";display:table}.o_match_dnd_target:after{clear:both}.o_match_dnd_target .o_match_dnd_target_drop_zone{margin:0;padding:5px 0 0 15px;min-height:30px}.o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{border:2px dashed #777}.target-bottom .o_match_dnd_target,.target-top .o_match_dnd_target{margin:0 0 10px 0}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone{padding-left:0px}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{padding-left:15px}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#5cb85c}.o_assessmentitem div.failure{background-color:#f0ad4e}.o_assessmentitem div.error{background-color:#d9534f}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:10px;border-bottom:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#337ab7;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#23527c;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f0ad4e}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#5bc0de}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}.o_assessment_test_results .o_qti_assessment_title{border-bottom:1px solid #ddd}.o_assessment_test_results table th{width:40%}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section{text-align:center}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section .o_qti_section_sublisting{padding:0 10%;min-height:3em}.o_assessment_test_results .o_qti_sections .o_qti_section{margin-top:40px}.o_assessment_test_results .o_qti_sections .o_qti_section h3{margin-bottom:20px}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_id{display:none}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:0;padding:5px 10px 10px 5px;border-top:1px solid #ddd;broder-bottom:1px solid #ddd}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2{font-size:100%;font-weight:bold;color:inherit}.o_assessment_test_results .o_qti_to_overview{text-align:right}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}div.o_wiki_wrapper a.wikiimg{text-decoration:none;color:inherit;font-weight:inherit}div.o_wiki_wrapper div.imgcaption{padding:0.3em 0em 0.2em 0.3em}div.o_wiki_wrapper div.imgleft{clear:left;float:left;margin:0.3em 0.3em 0.3em 0em}div.o_wiki_wrapper div.imgright{clear:right;float:right;margin:0.3em 0em 0.3em 0.3em}div.o_wiki_wrapper div.imgcenter{clear:both;overflow:hidden;text-align:center;margin:0.3em 0em 0.3em 0em}div.o_wiki_wrapper div.imgthumb{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper table.gallery{border:1px solid #ccc;margin:2px;padding:2px;background-color:white}div.o_wiki_wrapper table.gallery tr{vertical-align:middle}div.o_wiki_wrapper table.gallery td{background-color:#f9f9f9;border:solid 2px white;text-align:center;vertical-align:middle;width:150px}div.o_wiki_wrapper img.gallery{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper a.edit{font-style:italic;color:red}div.o_wiki_wrapper a.externallink:before{padding-right:2px}div.o_wiki_wrapper a.externallink:before:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}.o_ep_icon_map:before{content:""}.o_ep_icon_collection:before{content:""}.o_ep_icon_page:before{content:""}.o_ep_icon_struct:before{content:""}.o_ep_icon_liveblog:before{content:"ï‚¡"}.o_artefact_closed:before{content:""}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.o_eportfolio_page .o_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.panel-footer .o_ep_options{display:inline-block}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ECF69A;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99E44D;background:#99E44D -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99E44D), to(#CBF1A5));background:#99E44D -moz-linear-gradient(43% 71% 101deg, #CBF1A5, #99E44D);background:#99E44D -o-linear-gradient(#99E44D, #CBF1A5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99E44D', EndColorStr='#CBF1A5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#DFF0C1;background:#DFF0C1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DFF0C1), to(#A0D346));background:#DFF0C1 -moz-linear-gradient(43% 71% 101deg, #A0D346, #DFF0C1);background:#DFF0C1 -o-linear-gradient(#DFF0C1, #A0D346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DFF0C1', EndColorStr='#A0D346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#D7DBB5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#FFBA71;background:#FFBA71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFBA71), to(#FFBA99));background:#FFBA71 -moz-linear-gradient(43% 71% 101deg, #FFBA99, #FFBA71);background:#FFBA71 -o-linear-gradient(#FFBA71, #FFBA99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFBA71', EndColorStr='#FFBA99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#FF9772;background:#FF9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FF9772), to(#FF9780));background:#FF9772 -moz-linear-gradient(43% 71% 101deg, #FF9780, #FF9772);background:#FF9772 -o-linear-gradient(#FF9772, #FF9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF9772', EndColorStr='#FF9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#E8AFBB;background:#E8AFBB -webkit-gradient(linear, 37% 20%, 53% 100%, from(#E8AFBB), to(#E8AFA0));background:#E8AFBB -moz-linear-gradient(43% 71% 101deg, #E8AFA0, #E8AFBB);background:#E8AFBB -o-linear-gradient(#E8AFBB, #E8AFA0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#E8AFBB', EndColorStr='#E8AFA0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#FFA800;background:#FFA800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFA800), to(#FFAF00));background:#FFA800 -moz-linear-gradient(43% 71% 101deg, #FFAF00, #FFA800);background:#FFA800 -o-linear-gradient(#FFA800, #FFAF00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFA800', EndColorStr='#FFAF00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00D2F8;background:#00D2F8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00D2F8), to(#4A9EAD));background:#00D2F8 -moz-linear-gradient(43% 71% 101deg, #4A9EAD, #00D2F8);background:#00D2F8 -o-linear-gradient(#00D2F8, #4A9EAD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00D2F8', EndColorStr='#4A9EAD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#C4F6FF;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#B3E2F7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#DEE7F7;background:#DEE7F7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DEE7F7), to(#C1E9FD));background:#DEE7F7 -moz-linear-gradient(43% 71% 101deg, #C1E9FD, #DEE7F7);background:#DEE7F7 -o-linear-gradient(#DEE7F7, #C1E9FD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DEE7F7', EndColorStr='#C1E9FD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_portfolio div#o_main_toolbar.o_toolbar{margin-top:0px}.o_section_lead,.o_page_lead,.o_assignment_lead{padding:10px 10px;margin-bottom:10px;background-color:#f2f2f2;border-radius:3px;border:1px #d9d9d9 solid}.o_section_lead.o_assignment_2_instantiate{border-radius:3px 3px 0px 0px;border-bottom:none;padding-bottom:1px;margin-bottom:0px}.o_assignment_2_instantiate{padding:10px 10px 0px 10px;background-color:#f2f2f2;border-left:1px #d9d9d9 solid;border-right:1px #d9d9d9 solid}.o_assignment_2_instantiate.last{padding-bottom:10px;border-bottom:1px #d9d9d9 solid;border-radius:0px 0px 3px 3px}.o_page_lead{padding:20px}.o_page_lead h2{margin-bottom:5px}.o_page_lead .o_portfolio_page_meta{margin-bottom:5px}.o_page_lead .o_page_summary{font-size:18px}.o_page_lead .o_media.o_media_right,.o_page_lead .o_media.o_media_right_large{float:right;margin-left:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_left_large{float:left;margin-right:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_right{max-height:200px;max-width:50%}.o_page_lead .o_media.o_media_left img,.o_page_lead .o_media.o_media_right img{max-height:200px}.o_page_lead .o_media.o_media_right_large,.o_page_lead .o_media.o_media_left_large{max-height:300px;max-width:75%}.o_page_lead .o_media.o_media_right_large img,.o_page_lead .o_media.o_media_left_large img{max-height:300px}.o_page_lead .o_media.o_desc_empty{max-height:300px;text-align:center}.o_page_lead .o_media.o_desc_empty img{max-height:300px}.o_page_lead .o_media img{border-radius:3px;border:1px #d9d9d9 solid;background:#fff}.o_page_lead .o_portfolio_status_block{border-top:1px solid #d9d9d9;padding-top:1em;margin-bottom:-1em}.o_page_lead .o_portfolio_status{display:inline-block;padding-right:2em}.o_page_lead.o_block_imagebg .o_portfolio_status{padding:2px;background-color:rgba(255,255,255,0.8)}.o_page_assignment{font-size:12px}.o_page_assignment.o_togglebox_wrapper div.o_togglebox_content{margin:10px 0 20px 0;padding:20px;border-left:3px solid #d9534f;background-color:#f2dede}.o_page_assignment .o_page_assignement_info{position:relative;left:-1em}.o_portfolio_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry{position:relative;display:inline-block;height:230px;width:400px;vertical-align:top;margin-right:10px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry ul{padding-left:2em}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul{margin:0;padding:0;list-style-type:none}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul li{padding:2px}.o_binder.o_portfolio_assignments .panel-heading,.o_binder.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.panel-default.o_portfolio_assignments .panel-heading,.panel-default.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_meta_wrapper,.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_summary{padding-left:10px}.o_portfolio_page_summary .o_media.o_media_right,.o_portfolio_page_summary .o_media.o_media_right_large{float:right;margin-left:0.5em;margin-bottom:0.5em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_left_large{float:left;margin-right:0.5em;margin-bottom:0.5em}.o_portfolio_categories .tag{font-size:80%;font-weight:normal}.o_portfolio_last_modified+.o_portfolio_categories,.o_portfolio_page_meta+.o_portfolio_categories{margin-left:1em}.o_rendertype_classic .o_pf_page,.o_rendertype_classic .o_pf_assignment{padding-left:1em}.o_portfolio_timeline .o_timeline_up{text-align:center}.o_portfolio_timeline .o_timeline_down{text-align:center}.o_portfolio_timeline .axis path,.o_portfolio_timeline .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_portfolio_timeline .x.axis line,.o_portfolio_timeline .x.axis path{display:none}.o_portfolio_timeline path.o_timeline_curve{fill:none;stroke:#ccc;shape-rendering:crispEdges}.o_portfolio_timeline .y.axis .tick line,.o_portfolio_timeline .y.axis path.domain{stroke:#ddd}.o_portfolio_timeline text{fill:#888;stroke:none;font-size:10px}.o_portfolio_timeline .dot.o_pf_status_draft{fill:#f0ad4e}.o_portfolio_timeline .dot.o_pf_status_published{fill:#337ab7}.o_portfolio_timeline .dot.o_pf_status_inrevision{fill:#d9534f}.o_portfolio_timeline .dot.o_pf_status_closed{fill:#5cb85c}.o_portfolio_timeline .dot.o_pf_status_deleted{fill:#000}.o_portfolio_title_help_helper{display:inline-block;float:right;position:relative;top:1em;right:1em}.o_pf_comments{margin-top:2em}.o_pf_content .o_cit,.o_pf_content .o_file{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_forum{border:1px #f8f8f8 solid;padding:10px;border-radius:10px}.o_pf_content .o_image,.o_pf_content .o_video{padding:10px;text-align:center;width:100%}.o_pf_content .o_image img,.o_pf_content .o_video img{border:1px #f8f8f8 solid;border-radius:10px}.o_pf_content_editor .o_toolbar{border:none}.o_pf_content_editor .o_page_part{border:2px solid transparent}.o_pf_content_editor .o_page_part:hover{border:2px dotted #78acd9}.o_pf_content_editor .o_page_fragment_edit{position:relative}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above{height:25px;width:100%;background:#78acd9;position:absolute;z-index:3;left:0;top:-25px;box-shadow:3px -8px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_add_above{position:absolute;left:0;top:-25px;height:25px;border-left:2px dashed #78acd9;border-top:2px dashed #78acd9;border-right:2px dashed #78acd9;border-radius:10px 10px 0 0;box-shadow:0 -5px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_sel_add_element_above{display:inline-block;padding:5px 5px 0 5px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above{padding-right:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above .o_page_type{display:none}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a{float:right;color:#fff;padding-right:1em}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd{position:absolute;z-index:4;top:0;right:0;width:25px;height:100%;background:#78acd9}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a{position:absolute;display:inline-block;width:25px;height:25px;line-height:25px;text-align:center;vertical-align:middle;color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_up_element{z-index:4;top:-25px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_down_element{bottom:0}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit{padding-right:25px;border:2px solid #78acd9;box-shadow:5px 5px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit:hover{border:2px solid #78acd9}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar{position:absolute;z-index:5;left:5px;top:-25px;display:inline-block;height:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a{color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_title .o_page_edit_toolbar li{font-weight:bold}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_richtext_mce textarea{border:0}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below{position:absolute;z-index:3;left:0;bottom:-25px;height:25px;border-left:2px dashed #78acd9;border-bottom:2px dashed #78acd9;border-right:2px dashed #78acd9;border-radius:0 0 10px 10px;box-shadow:3px 8px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below .o_sel_add_element_below{display:inline-block;padding:0 5px 5px 5px}.o_pf_content_editor .o_pf_add_contents{margin-top:30px}.o_portfolio_add_callout a span{display:none}.o_portfolio_add_callout ul.list-inline{margin-bottom:0}.o_portfolio_image_options{clear:both;width:300px;padding:5px}.o_binder_page_listing .o_portfolio_page_links{background-color:#f8f8f8;border-radius:4px}.o_binder_page_listing .o_portfolio_page_links .o_portfolio_comment{float:right}.o_portfolio_toc{padding-bottom:6em}.o_portfolio_toc .o_portfolio_section_meta{font-size:80%;color:#777;position:relative;top:-15px}.o_portfolio_toc .o_section{position:relative}.o_portfolio_toc .o_section .o_header_with_buttons h4,.o_portfolio_toc .o_section .o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_portfolio_toc .o_section .o_header_with_buttons h2{padding-right:0.5em}.o_portfolio_toc .o_section_actions{position:absolute;top:0;right:0}.o_portfolio_toc .o_section_actions .o_section_move_up_and_down{display:inline-block}.o_portfolio_toc .o_section_actions .o_section_dropdown{display:inline-block;position:relative;top:-0.5em;padding-left:0.5em}.o_portfolio_toc ul>li>ul{padding-left:1.5em}.o_portfolio_content .o_portfolio_toc.o_portfolio_toc_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_page_meta_wrapper{background-position:left top;background-repeat:no-repeat}.o_portfolio_rights table .o_portfolio_section td:first-child{padding-left:1.5em}.o_portfolio_rights table .o_portfolio_page td:first-child{padding-left:2.5em}.o_portfolio_publication table{padding-bottom:10px}.o_portfolio_publication table td{padding:5px 5px 5px 0}.o_portfolio_publication .o_portfolio_ac{font-size:90%}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(2){width:200px;white-space:nowrap}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(3){width:40px;white-space:nowrap}.o_portfolio_publication ul ul{margin-left:2em;margin-bottom:5px}.o_portfolio_publication ul li{background:#fbfbfb;padding:3px;margin-bottom:2px}.o_portfolio_publication ul li li{background:#f2f2f2}.o_portfolio_publication ul li li li{background:#eee}.o_portfolio_publication ul li li .table{margin-bottom:0px}@media (max-width: 767px){.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:100%;float:none}.o_portfolio_content .o_sel_timeline_off,.o_portfolio_content .o_sel_timeline_on,.o_portfolio_content .o_portfolio_timeline{display:none}.o_portfolio_content .o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline{width:100%;float:none}}.o_portfolio_media_browser .o_portfolio_medias{position:relative;margin-bottom:20px;margin-top:20px}.o_portfolio_media_browser .o_portfolio_medias:before,.o_portfolio_media_browser .o_portfolio_medias:after{content:" ";display:table}.o_portfolio_media_browser .o_portfolio_medias:after{clear:both}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media:last-child{margin-right:0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{border:1px solid #337ab7;position:relative;height:180px;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon span.o_visual_not_available{background-image:none}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:6em;text-align:center;color:#eee;line-height:140px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #337ab7;border-top:0;background-color:rgba(255,255,255,0.8)}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a{display:block;color:#337ab7;font-family:inherit;font-weight:inherit}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover{color:#286090}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 10px 10px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}@media (max-width: 767px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 1px 1px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}.o_evaluation_form .o_evaluation_step_labels{margin-bottom:8px}.o_evaluation_form .o_evaluation_step_labels div,.o_evaluation_form .o_evaluation_step_labels span{display:inline-block;text-align:center}.o_evaluation_form .o_slider{margin-bottom:8px}.o_evaluation_form .o_slider.hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels{position:relative}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:first-child{position:absolute;left:0px;text-align:left}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div{display:inline-block;text-align:center}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:last-child{position:absolute;right:0px;text-align:right}.o_evaluation_form .o_evaluation_discrete_radio .o_slider input[type='radio']{padding:0;margin:0;position:relative}.o_evaluation_form .o_evaluation_discrete_radio .o_slider label{padding:0;margin:0;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps div.radio{display:inline-block;text-align:center}.o_evaluation_form .o_slider .ui-slider.ui-slider-horizontal.ui-widget-content{margin-top:0.3em}.o_evaluation_form .o_evaluation_left_label{text-align:right}.o_evaluation_form .o_evaluation_right_label{text-align:left}.o_evaluation_form .o_evaluation_textinput .o_evaluation_legend{padding-left:0.5em;margin-bottom:0.5em}@media (max-width: 768px){.o_evaluation_form .o_evaluation_left_label{text-align:left}.o_evaluation_form .o_evaluation_right_label{text-align:right}}.o_slider_overview{width:100%;height:20px;position:relative}.o_slider_overview .o_slider_overview_line{top:5px;left:0px;position:absolute;width:100%;height:11px;border:1px solid #999;border-radius:4px}.o_slider_overview .o_slider_overview_point{position:absolute;width:10px;height:10px;background-color:#337ab7}.o_evaluation_editor_form{margin:10px 10px 0 10px}.o_evaluation_editor_form .o_slider_editor{margin-top:10px;position:relative}.o_evaluation_editor_form .o_evaluation_step_labels{display:inline-block}.o_evaluation_editor_form .o_evaluation_step_labels input{width:100%}.o_evaluation_editor_form .o_slider_editor_delete{padding-right:48px}.o_evaluation_editor_form .o_slider_editor_delete .o_slider_editor_delete_button{position:absolute;right:15px}.o_cit{position:relative;margin:10px 0}.o_cit blockquote.o_quote{color:#555;font-size:18px;margin-top:6px;padding:0 12px}.o_cit blockquote.o_quote p:last-child:after{content:'1)';top:-0.5em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}.o_cit .o_cit_bibinfo{font-size:90%;margin-left:1em;position:relative}.o_cit .o_cit_bibinfo>div:first-child:before{content:'1)';position:absolute;top:0.5em;left:-1em;font-size:75%;line-height:0;vertical-align:baseline}.o_cit .title,.o_cit .url,.o_cit .authors,.o_cit .pages,.o_cit .date,.o_cit .dateAdded,.o_cit .place,.o_cit .institution,.o_cit .issue,.o_cit .publisher,.o_cit .publicationTitle,.o_cit .edition,.o_cit .series,.o_cit .volume{margin-right:0.5em}.o_cit .title{font-style:italic}.o_cit .publicationTitle{color:black}.o_cit .links{padding-left:2em}.o_cit .notes{padding-left:2em;color:grey}.o_cit .note{font-style:italic}.o_cit .note p:first-child{margin-top:0}.o_cit .note p:first-child{margin-bottom:0}.o_cit .listing.web .item{padding-left:0;text-indent:0}.o_cit .listing.web .title{display:block;font-weight:bold;font-style:normal}.o_cit .listing.web .publicationTitle{display:block;font-style:italic}.o_cit .listing.web .url{display:block}.o_cit .listing.web .links{padding-left:0}.o_cit .listing.web .notes{padding-left:0}.o_cit .general-info{border-top:1px solid #eee;padding-top:30px;margin-top:30px}.o_cit .copyright{display:none}@media print{.cit{background-image:none;padding-top:0;max-width:100%}.cit #styles,.cit #refreshContainer{display:none}.cit #general-info a:after{content:" (" attr(href) ") ";font-size:0.8em;font-weight:normal}.cit #copyright{display:block;margin-top:30px}}.o_video_poster{position:relative;display:inline-block;width:400px;max-width:100%;height:225px;background-size:cover;background-repeat:no-repeat;border:1px solid #eee}.o_video_poster_select{text-align:center}.o_video_poster_select .o_video_poster{margin:5px}.o_video_poster_select .o_video_poster a{position:absolute;left:0;top:0;width:100%;height:100%}.o_video_poster_select .o_video_poster a span{position:absolute;bottom:0;width:100%;display:block;line-height:3em;background:#f8f8f8;opacity:0.8}.o_video_poster_select .o_video_poster a:hover{border:1px solid #bbb}.o_video_poster_select .o_video_poster a:hover span{opacity:0.9}.o_video_peekview{text-align:center}.o_video_listing .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_video_listing .o_video_entry{position:relative;display:inline-block;height:230px;width:250px;vertical-align:top;margin-right:10px}.o_video_listing .o_video_poster{width:250px;max-width:100%;height:140px;border:1px solid #eee}.o_video_listing .o_timecode{position:absolute;bottom:2px;right:3px;padding:3px 4px;background:#333;color:#fff;font-size:12px;line-height:12px}.o_video_listing .o_meta{padding:2px;font-size:11px}.o_video_listing .o_meta h5{font-size:14px;margin-top:0;margin-bottom:5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_video_listing .o_date{margin-left:10px;display:inline-block}.o_video_listing .o_date:before{content:'\002022';margin-right:10px;display:inline-block}.o_video_run .o_author{margin-top:0.5em;margin-bottom:1em;line-height:normal;font-size:90%;color:#3c763d}.o_video_run .o_ratings_and_comments{margin-top:2em;border-top:1px solid #eee;padding-top:1em}.mejs__controls .mejs__sourcechooser-button>button{background:transparent;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.mejs__controls .mejs__sourcechooser-button>button:before{content:"";color:white;font-size:18px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector{visibility:visible !important;width:170px;padding-left:10px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label{font-weight:normal;font-size:10px;width:140px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label:hover{color:#eee}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label .type{display:none}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input:checked+label{color:#d9534f}.mejs__controls .mejs__captions-button .mejs__captions-selector{right:-26px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label{font-weight:normal;font-size:10px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label:hover{color:#eee}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label .type{display:none}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input:checked+label{color:#d9534f}.mejs__button.mejs__speed-button{width:36px}.mejs__controls .mejs__speed-button>button{background:transparent;width:36px;margin:11px 0 0 0;font-size:11px;line-height:normal;color:#ffffff}.mejs__controls .mejs__speed-button .mejs__speed-selector{height:150px;top:auto;bottom:40px}.mejs__controls .mejs__speed-button .mejs__speed-selector ul li label{font-weight:normal;font-size:10px}.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-title,.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.o_userbulk_changedcell{font-style:italic;font-weight:bold}body.o_dmz{background:transparent}body.o_dmz #o_bg{position:absolute;top:0;left:0;width:100%;height:100%;border-top:50px solid transparent;border-bottom:70px solid transparent;background:url("../light/images/learn-bg.jpg");background-size:cover;background-position:center center;background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=1 )}body.o_dmz #o_bg:after{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to right, rgba(255,255,255,0.1) 0.2%, rgba(255,255,255,0.6) 60%, rgba(255,255,255,0.8) 100%);background-size:cover;background-position:center center;background-repeat:no-repeat}body.o_dmz #o_toplink{display:none}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-bottom:20px;padding-left:10%;padding-right:10%;text-align:right}.o_login .o_login_intro{padding-left:10%}.o_login .o_login_intro h1{margin-bottom:40px;color:#337ab7}.o_login .o_login_intro .lead{color:#333}.o_login .o_login_intro .lead h1,.o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h3,.o_login .o_login_intro .lead h4,.o_login .o_login_intro .lead .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h5{margin-bottom:20px;color:#337ab7}.o_login .o_login_messages,.o_login .o_login_box{display:inline-block;width:400px;text-align:left}.o_login .o_login_messages .o_infomessage_wrapper{background:rgba(255,255,255,0.5);border:1px solid transparent;border-radius:4px;padding:6px 12px}.o_login .o_login_messages .o_infomessage_wrapper .o_info,.o_login .o_login_messages .o_infomessage_wrapper .o_warning,.o_login .o_login_messages .o_infomessage_wrapper .o_note{margin:0}.o_login .o_login_box{padding-top:10px}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_providers .o_icon_provider_olat{font-size:1em}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_form .o_form .o_desc{margin:0 0 30px 0;padding:0;border-left:0;background-color:transparent}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#5bc0de;border-color:#46b8da;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register.focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled.focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled].focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register.focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#5bc0de;border-color:#46b8da}.o_login .o_login_register .badge{color:#5bc0de;background-color:#fff}.o_login .o_login_register small{font-size:14px}.o_login .o_login_social{position:relative;padding:10px 12px}.o_login .o_login_social li{padding:10px 12px}.o_login .o_login_social li>a{display:block;line-height:2em;text-align:center;font-size:18px;border-radius:4px;padding:10px 12px}.o_login .o_login_social .btn-default.o_sel_auth_facebook{color:#fff;background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{color:#fff;background-color:#37538d;border-color:#2d4374}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled],.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook .badge{color:#4568b2;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_twitter{color:#fff;background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{color:#fff;background-color:#00b4f8;border-color:#009ad4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled],.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter .badge{color:#2cc5ff;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_google{color:#fff;background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.focus,.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{color:#fff;background-color:#d83825;border-color:#ba3120}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google.disabled,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled],.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google .badge{color:#e15f4f;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{color:#fff;background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{color:#fff;background-color:#015e8a;border-color:#014667}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled],.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin .badge{color:#0181bd;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_adfs{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled],.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_adfs .badge{color:#337ab7;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect{color:#fff;background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{color:#fff;background-color:#286090;border-color:#204d74}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled],.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active{background-color:#337ab7;border-color:#2e6da4}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect .badge{color:#337ab7;background-color:#fff}@media (max-width: 767px){body.o_dmz #o_bg{background:none;display:none}.o_login{padding:0}.o_login .o_login_intro{padding:0;text-align:left}.o_login .o_login_box_wrapper{text-align:center;padding:0}.o_login .o_login_box{padding-left:0;padding-right:0}.o_login .o_login_box .o_login_providers,.o_login .o_login_box .o_login_provider{-webkit-box-shadow:none;box-shadow:none}.o_login .o_login_messages,.o_login .o_login_box{width:100%;display:block}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px;margin-top:10px}.o_portlet{position:relative;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library_icon:before{content:""}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.o_library_overview .o_library_newest_files ul li{float:left;margin-right:15px}.o_library_item{margin-bottom:10px;position:relative}.o_library_item .o_library_visual,.o_library_item .o_library_extra,.o_library_item .o_library_meta{margin-top:15px}.o_library_item .o_library_visual{float:left;background-color:#fff;border-radius:4px;border:1px solid #ddd}.o_library_item .o_library_visual .o_thumbnail_available,.o_library_item .o_library_visual .o_thumbnail_unavailable{background-size:146px auto;width:150px !important;height:150px !important;background-repeat:no-repeat;background-position:50% 50%}.o_library_item .o_library_visual .o_thumbnail_available:before,.o_library_item .o_library_visual .o_thumbnail_unavailable:before{content:none}.o_library_item .o_library_visual .o_thumbnail_available{background-size:146px auto}.o_library_item .o_library_visual .o_thumbnail_unavailable{display:none}.o_library_item .o_library_extra{float:right;width:200px}.o_library_item .o_library_meta{clear:both}.o_library_item .o_library_meta .o_library_desc{padding-bottom:10px}.o_library_item .o_library_meta small{display:block;word-wrap:break-word}.o_library_item h4,.o_library_item .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal}.o_library_item .btn{display:block;margin-bottom:0.5em}.o_library_item .o_comments{display:inline-block}.o_library_item .table{table-layout:fixed;word-wrap:break-word;margin-bottom:0}.o_library_item p.o_library_show_more{text-align:right;margin:0;padding-top:20px}.o_library_item .o_library_more{padding-top:20px;display:none}.o_library_folder{margin-top:-20px}.o_library .o_ratings_and_comments .o_rating_title,.o_library .o_ratings_and_comments .o_rating_explanation{display:none}@media (min-width: 768px){.o_library_item .o_library_meta{clear:none;margin-left:150px;margin-right:200px;padding:0 10px}.o_library_item .o_library_more{display:none}.o_library_item .o_library_more table tbody{vertical-align:top}.o_library_item .o_library_more table tr,.o_library_item .o_library_more table th,.o_library_item .o_library_more table td{display:inline-block}.o_library_item .o_library_more table tr{width:49%}.o_library_item .o_library_more table th{width:30%}.o_library_item .o_library_more table td{width:70%}}.o_library_item_compact .o_library_extra{width:auto}.o_library_item_compact .o_library_meta{padding:0 10px 0 0;margin:0;overflow:hidden}.o_library_item_compact .btn{display:inline-block}.o_library_item_compact h4,.o_library_item_compact .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item_compact h2{overflow:hidden;margin-right:70px}.o_library_item_compact h4 a,.o_library_item_compact .o_cal .fc-header-title h2 a,.o_cal .fc-header-title .o_library_item_compact h2 a{text-overflow:ellipsis;white-space:nowrap}.o_library_item_compact p.o_library_show_more{padding:20px;position:absolute;top:0;right:0}span.o_translation_i18nitem{position:relative !important}span.o_translation_i18nitem a.o_translation_i18nitem_launcher{position:absolute !important;z-index:100 !important;width:18px !important;height:20px !important;top:0 !important;left:5px !important;background:#fff;border:1px solid #337ab7 !important;border-radius:3px;text-align:center;padding:0 !important}.o_user_infos{position:relative}.o_user_infos .o_user_portrait{position:absolute;top:0;left:15px;width:100px;height:100px}.o_user_infos .o_user_infos_inner{margin:0 30px 0 100px}.o_user_infos .o_user_infos_inner table{margin:0 30px 15px 30px}div.o_skype_button{display:inline-block}div.o_skype_button p{margin:0 0 0 0}div.o_skype_button p a img{margin:0 !important;vertical-align:middle !important}.o_members_pagination{text-align:center}.o_bcard_logo{margin-left:10px;height:66px}.o_bcard_title_with_logo{clear:both;padding:20px 0 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:66px}.o_visitingcard .o_icon_visitingcard{display:none}.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:66px;height:66px;margin-right:10px}@media (max-width: 767px){.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:50px;height:50px;margin:5px 5px 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:50px}.o_visitingcard_logo,.o_bcard_logo{height:50px;margin:5px 0 0 5px}.o_visitingcard_logo img,.o_bcard_logo img{position:relative;transform:scale(.75758);top:-8px}}@media (max-width: 414px){.o_visitingcard_logo img{max-width:260px}}@media (max-width: 375px){.o_visitingcard_logo img{max-width:220px}}@media (max-width: 320px){.o_visitingcard_logo img{max-width:180px}.o_bcard_logo img{max-width:150px}}.o_c2b_peekview{height:182px;width:302px;border-style:solid;border-width:0.1px}.o_c2b_cover{height:180px;width:300px;position:absolute;z-index:2;background:transparent;cursor:pointer}.o_c2b_iframe{height:180px;width:300px;position:absolute;z-index:1}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-title{color:#337ab7;font-weight:500;font-family:inherit;line-height:1.1}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"ï€" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close span{display:none}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important;float:right}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px;overflow:auto;background:white !important}.ui-dialog .ui-dialog-titlebar{padding:4px 7px 4px 7px;background-color:#eee !important}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}.ui-slider.ui-slider-horizontal.ui-widget-content{border-color:#999}.ui-slider.ui-slider-horizontal.ui-widget-content.ui-state-disabled{opacity:0.65}.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:1px solid #337ab7;background-image:none;background-color:#337ab7}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"ï¡";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"ï ";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #2e6da4;background:#337ab7;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal}.o_richtext_mce_without_path .mce-statusbar{border:none}.o_richtext_mce_without_path .mce-path{display:none !important}.o_richtext_mce_without_path .mce-menubtn.mce-fixed-width span{width:auto}i.mce-ico.mce-i-media,i.mce-ico.mce-i-movie,i.mce-ico.mce-i-help,i.mce-ico.mce-i-gaptext,i.mce-ico.mce-i-gapnumerical,i.mce-ico.mce-i-hottext,i.mce-ico.mce-i-edit{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}i.mce-ico.mce-i-media:before{content:""}i.mce-ico.mce-i-movie:before{content:""}i.mce-ico.mce-i-gaptext:before{content:"ï…"}i.mce-ico.mce-i-gapnumerical:before{content:""}i.mce-ico.mce-i-hottext:before{content:"ï"}i.mce-ico.mce-i-math:before{content:'\03A3'}i.mce-ico.mce-i-edit:before{content:"ï„"}i.mce-ico.mce-i-help{width:9px;height:9px;padding-top:1px}i.mce-ico.mce-i-help:before{content:"ï™";color:white}.mce-tabs span.o_chelp_wrapper{float:right;margin:5px}div.o_table_search span.twitter-typeahead{display:table-cell;padding-top:3px}.tag.label.label-info{margin-right:3px}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fff !important;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important;-webkit-print-color-adjust:exact;color-adjust:exact}.modal-dialog{margin:0 !important;width:100% !important;height:100% !important;background:#fff !important;-webkit-print-color-adjust:exact;color-adjust:exact}.progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}.radial-progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#eee !important}.radial-progress .circle .mask .fill{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#000 !important}.radial-progress .inset{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#fff !important}body{margin:0}}.o_highscore .o_position{text-align:center;font-size:1.2em;font-weight:bold}.o_highscore .o_position h2{font-size:3em;font-weight:700;line-height:1.2em}@media screen and (-webkit-min-device-pixel-ratio: 0){.o_highscore .o_position h2{background:linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline}.o_highscore .o_position h2:after{content:"\A";white-space:pre}}.o_highscore .o_position_relative{font-size:1em;font-weight:normal}.o_highscore .o_podium{position:relative;vertical-align:bottom;height:300px;margin-bottom:50px}.o_highscore .o_rank{width:30%;position:absolute;bottom:0;text-shadow:rgba(102,102,102,0.5) 0 -1px 0,rgba(255,255,255,0.6) 0 2px 1px}.o_highscore .o_rank:before{position:absolute;bottom:0;left:0;width:100%;text-align:center}.o_highscore .o_rank .o_name{position:absolute;top:100%;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1em;text-shadow:none}.o_highscore .o_rank .o_score{color:#777;font-size:90%;width:100%;text-align:center;position:absolute;top:-20px;text-shadow:none}.o_highscore .o_rank .o_singleportrait{position:absolute;width:100%;text-align:center;top:-125px}.o_highscore .o_rank .o_rank_portraits{position:relative;left:0;top:-210px;height:180px;width:200px;text-align:center;vertical-align:bottom;display:table-cell}.o_highscore .o_rank .o_rank_portraits ul{display:inline-block}.o_highscore .o_rank .o_rank_portraits .o_portrait{margin:5px}.o_highscore .o_first{height:150px;left:30%;border:1px solid #d9d9d9;border-top-left-radius:4px;border-top-right-radius:4px;background:gold;background:-moz-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:-webkit-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 )}.o_highscore .o_first:before{content:"1";font-size:700%;line-height:150px;color:#666}.o_highscore .o_second{height:100px;left:0;background:silver;background:-moz-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-left-radius:4px}.o_highscore .o_second:before{content:"2";font-size:500%;line-height:100px;color:#666}.o_highscore .o_third{height:80px;left:60%;background:#cd7f32;background:-moz-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:-webkit-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-right:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-right-radius:4px}.o_highscore .o_third:before{content:"3";font-size:300%;line-height:80px;color:#666}.o_highscore .o_histogram{position:relative;bottom:-40px;margin-bottom:40px}.o_highscore .o_histogram .d3chart{width:100%;padding-top:50px;height:300px}.o_highscore .o_histogram .d3chart text{fill:#888}.o_highscore .o_histogram .d3chart .axis path,.o_highscore .o_histogram .d3chart .axis line{stroke:#888}.o_highscore .o_histogram .d3chart .o_myself{fill:#337ab7}.o_highscore .o_histogram .d3chart .o_myself:hover{fill:#5094ce}.o_highscore .o_histogram .d3chart .o_other{fill:#777}.o_highscore .o_histogram .d3chart .o_other:hover{fill:#919191}.o_highscore .o_histogram .d3chart .o_empty{fill:#000}.o_listing .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_listing table th:nth-of-type(1),.o_listing table th :nth-of-type(2){width:5em}body.o_browser_ie7 #o_offcanvas_right,body.o_browser_ie8 #o_offcanvas_right{right:0px} \ No newline at end of file diff --git a/src/main/webapp/static/themes/openolat/content.css b/src/main/webapp/static/themes/openolat/content.css index 4d00934ac89a47e30f1d578669f4aa4fa6f489be..c150ca182eeb154abb3dd79ff642e732b5d459a1 100644 --- a/src/main/webapp/static/themes/openolat/content.css +++ b/src/main/webapp/static/themes/openolat/content.css @@ -22,5 +22,5 @@ * @author gnaegi, www.frentix.com * @date April. 2014 * ======================================================== -**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#3b678a;text-decoration:none}a:hover,a:focus{color:#243f54;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#3b678a}a.text-primary:hover{color:#2c4c66}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#3b678a}a.bg-primary:hover{background-color:#2c4c66}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../../font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../../font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_block_bottom,.o_block,.o_button_group,.o_header_with_buttons{margin-bottom:1em}.o_block_top,.o_block,.o_button_group{margin-top:1em}.o_block_large_bottom,.o_block_large{margin-bottom:2em}.o_block_large_top,.o_block_large{margin-top:2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.66667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#6b9ac0;border-radius:10px}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#6b9ac0;border-top:none;border-left:none;border-right:none;color:#3b678a;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#6b9ac0;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:12px}.o_small,.b_small,p.b_small,div.b_small{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:18px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,.o_disabled:focus,.b_disabled:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_info,.b_info,p.b_info,div.b_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info h5,.b_info h2,.b_info h3,.b_info h4,.b_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note h5,.b_note h2,.b_note h3,.b_note h4,.b_note h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important h5,.b_important h2,.b_important h3,.b_important h4,.b_important h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success h5,.b_success h2,.b_success h3,.b_success h4,.b_success h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning h5,.b_warning h2,.b_warning h3,.b_warning h4,.b_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error h5,.b_error h2,.b_error h3,.b_error h4,.b_error h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4{color:#3b678a;font-weight:500;font-family:inherit;line-height:1.1}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}a{color:#3b678a;text-decoration:none}a:hover,a:focus{color:#243f54;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}h1{color:#3b678a}h2{color:#3b678a}h3{color:#3b678a}h4{color:#3b678a}h5{color:#3b678a}h5{color:#3b678a}hr{border-top:1px solid #eee}.o_user_content_block a{color:#3b678a;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#243f54;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:1px 5px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:1px 5px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:1px 5px;border:0;font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:1px 5px;background:#eee;border:1px solid #fff}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:1px 5px;background:#d9edf7;border:1px solid #fff}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:1px 5px;background:#dff0d8;border:1px solid #fff}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:1px 5px;background:#fcf8e3;border:1px solid #fff}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:1px 5px;background:#f2dede;border:1px solid #fff}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#3b678a}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_mailto{color:#3b678a}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#3b678a}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0;font-size:85%;font-family:inherit}span.olatFlashMovieViewer{max-width:100% !important;border:none !important}.mejs-container,.mejs-mediaelement video,.mejs-layers div,.me-cannotplay{max-width:100%}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{background:#fff;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important}.progress{-webkit-print-color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}body{margin:0}} +**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#3b678a;text-decoration:none}a:hover,a:focus{color:#243f54;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,h4 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,h4 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#3b678a}a.text-primary:hover{color:#2c4c66}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#3b678a}a.bg-primary:hover{background-color:#2c4c66}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../../font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../../font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_block_bottom,.o_block,.o_button_group,.o_header_with_buttons{margin-bottom:1em}.o_block_top,.o_block,.o_button_group{margin-top:1em}.o_block_large_bottom,.o_block_large{margin-bottom:2em}.o_block_large_top,.o_block_large{margin-top:2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_centered_wrapper{display:table;width:100%;height:100%}.o_block_centered_content{display:table-cell;vertical-align:middle;text-align:center}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.66667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#6b9ac0;border-radius:10px}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#6b9ac0;border-top:none;border-left:none;border-right:none;color:#3b678a;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#6b9ac0;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:12px}.o_small,.b_small,p.b_small,div.b_small{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:18px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:0.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,.o_disabled:focus,.b_disabled:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}.o_info,.b_info,p.b_info,div.b_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info h5,.b_info h2,.b_info h3,.b_info h4,.b_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note h5,.b_note h2,.b_note h3,.b_note h4,.b_note h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important h5,.b_important h2,.b_important h3,.b_important h4,.b_important h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success h5,.b_success h2,.b_success h3,.b_success h4,.b_success h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning h5,.b_warning h2,.b_warning h3,.b_warning h4,.b_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error h5,.b_error h2,.b_error h3,.b_error h4,.b_error h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4{color:#3b678a;font-weight:500;font-family:inherit;line-height:1.1}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}a{color:#3b678a;text-decoration:none}a:hover,a:focus{color:#243f54;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}h1{color:#3b678a}h2{color:#3b678a}h3{color:#3b678a}h4{color:#3b678a}h5{color:#3b678a}h5{color:#3b678a}hr{border-top:1px solid #eee}.o_user_content_block a{color:#3b678a;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#243f54;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:1px 5px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:1px 5px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:1px 5px;border:0;font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:1px 5px;background:#eee;border:1px solid #fff}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:1px 5px;background:#d9edf7;border:1px solid #fff}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:1px 5px;background:#dff0d8;border:1px solid #fff}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:1px 5px;background:#fcf8e3;border:1px solid #fff}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:1px 5px;background:#f2dede;border:1px solid #fff}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#3b678a}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_mailto{color:#3b678a}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#3b678a}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0;font-size:85%;font-family:inherit}span.olatFlashMovieViewer{max-width:100% !important;border:none !important}.mejs__container,.mejs__mediaelement video,.mejs__layers div,.me_cannotplay{max-width:100%}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fff !important;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important;-webkit-print-color-adjust:exact;color-adjust:exact}.modal-dialog{margin:0 !important;width:100% !important;height:100% !important;background:#fff !important;-webkit-print-color-adjust:exact;color-adjust:exact}.progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}.radial-progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#eee !important}.radial-progress .circle .mask .fill{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#000 !important}.radial-progress .inset{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#fff !important}body{margin:0}} /*# sourceMappingURL=content.css.map */ diff --git a/src/main/webapp/static/themes/openolat/content.css.map b/src/main/webapp/static/themes/openolat/content.css.map index 2adcb92f5ef8fa8cc782545f8f814f9471ed6978..88adcb128740648355e22e1d49500ed17918137d 100644 --- a/src/main/webapp/static/themes/openolat/content.css.map +++ b/src/main/webapp/static/themes/openolat/content.css.map @@ -1,7 +1,7 @@ { "version": 3, -"mappings": "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", -"sources": ["../light/_license.scss","../../bootstrap/stylesheets/bootstrap/_normalize.scss","../../bootstrap/stylesheets/bootstrap/_print.scss","../../bootstrap/stylesheets/bootstrap/_scaffolding.scss","../../bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss","../light/_config.scss","../../bootstrap/stylesheets/bootstrap/_variables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss","../../bootstrap/stylesheets/bootstrap/mixins/_image.scss","../../bootstrap/stylesheets/bootstrap/_type.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss","../../bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss","../../bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss","../../font-awesome/scss/_path.scss","../../font-awesome/scss/_core.scss","../light/modules/_helpers.scss","../../bootstrap/stylesheets/bootstrap/mixins/_opacity.scss","../light/modules/_dialog.scss","../light/modules/_mixins.scss","../light/modules/_emoticons.scss","../light/modules/_content.scss","../light/modules/_content_embedded.scss","../../bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss","../../font-awesome/scss/_variables.scss","../light/modules/_print.scss"], +"mappings": "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", +"sources": ["../../bootstrap/stylesheets/bootstrap/_normalize.scss","../../bootstrap/stylesheets/bootstrap/_print.scss","../../bootstrap/stylesheets/bootstrap/_scaffolding.scss","../../bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss","../light/_config.scss","../../bootstrap/stylesheets/bootstrap/_variables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss","../../bootstrap/stylesheets/bootstrap/mixins/_image.scss","../../bootstrap/stylesheets/bootstrap/_type.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss","../../bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss","../../bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss","../../font-awesome/scss/_path.scss","../../font-awesome/scss/_core.scss","../light/modules/_helpers.scss","../../bootstrap/stylesheets/bootstrap/mixins/_opacity.scss","../light/modules/_dialog.scss","../light/modules/_mixins.scss","../light/modules/_emoticons.scss","../light/modules/_content.scss","../light/modules/_content_embedded.scss","../../bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss","../../font-awesome/scss/_variables.scss","../light/modules/_print.scss"], "names": [], "file": "content.css" } \ No newline at end of file diff --git a/src/main/webapp/static/themes/openolat/theme.css b/src/main/webapp/static/themes/openolat/theme.css index 6b5a359064c5d5b2d6fdaf561f07b8f423bf5042..590bc988b75317a9b5306e27ef50a9ba2aaeb333 100644 --- a/src/main/webapp/static/themes/openolat/theme.css +++ b/src/main/webapp/static/themes/openolat/theme.css @@ -22,5 +22,5 @@ * @author gnaegi, www.frentix.com * @date April. 2014 * ======================================================== -**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#3b678a;text-decoration:none}a:hover,a:focus{color:#243f54;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail,.o_form .o_filepreview img,.o_feed .o_media{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,.o_cal .fc-header-title h2,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.o_cal .fc-header-title h2,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.o_cal .fc-header-title h2,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#3b678a}a.text-primary:hover{color:#2c4c66}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#3b678a}a.bg-primary:hover{background-color:#2c4c66}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#fafafa;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn,.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,.form-group-sm .form-control,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn,.form-group-sm .form-control{height:auto}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn,.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,.form-group-lg .form-control,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn,.form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group,.o_navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control,.o_navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static,.o_navbar-form .form-control-static{display:inline-block}.form-inline .input-group,.o_navbar-form .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.o_navbar-form .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.o_navbar-form .input-group .input-group-btn,.form-inline .input-group .form-control,.o_navbar-form .input-group .form-control{width:auto}.form-inline .input-group>.form-control,.o_navbar-form .input-group>.form-control{width:100%}.form-inline .control-label,.o_navbar-form .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.o_navbar-form .radio,.form-inline .checkbox,.o_navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.o_navbar-form .radio label,.form-inline .checkbox label,.o_navbar-form .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.o_navbar-form .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"],.o_navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback,.o_navbar-form .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#3b678a;border-color:#335a78}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#3b678a;border-color:#335a78}.btn-primary .badge{color:#3b678a;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#3b678a;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#243f54;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#3b678a}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#3b678a}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#3b678a}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#3b678a;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#243f54;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#3b678a;border-color:#3b678a;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#3b678a}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#2c4c66}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#3b678a;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron,.o_repo_details .o_lead{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{color:inherit}.jumbotron p,.o_repo_details .o_lead p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr,.o_repo_details .o_lead>hr{border-top-color:#d5d5d5}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{border-radius:6px}.jumbotron .container,.o_repo_details .o_lead .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron,.o_repo_details .o_lead{padding:48px 0}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{padding-left:60px;padding-right:60px}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#3b678a}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4,.alert .o_cal .fc-header-title h2,.o_cal .fc-header-title .alert h2{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#3b678a;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#3b678a;border-color:#3b678a}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#b3cbde}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table,.panel-collapse>.table,.panel-collapse>.table-responsive>.table,.panel-collapse>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption,.panel-collapse>.table caption,.panel-collapse>.table-responsive>.table caption,.panel-collapse>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel-collapse>.table:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child,.panel-collapse>.table:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,.panel-collapse>.panel-body+.table,.panel-collapse>.panel-body+.table-responsive,.panel-collapse>.table+.panel-body,.panel-collapse>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.panel-collapse>.table>tbody:first-child>tr:first-child th,.panel-collapse>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,.panel-collapse>.table-bordered,.panel-collapse>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.panel-collapse>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#3b678a}.panel-primary>.panel-heading{color:#fff;background-color:#3b678a;border-color:#3b678a}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3b678a}.panel-primary>.panel-heading .badge{color:#3b678a;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3b678a}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:1.42857;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.panel .panel-heading[data-toggle="collapse"]{cursor:pointer}#o_ajax_busy_backdrop{bottom:0;z-index:1020}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}.btn.btn-primary.o_disabled{color:#fff !important}body .progress-bar[aria-valuenow="1"],body .progress-bar[aria-valuenow="2"]{min-width:1px}td.text-left>div.form-inline>label.checkbox-inline>input[type='checkbox'],td.text-left>div.o_navbar-form>label.checkbox-inline>input[type='checkbox']{position:relative}@-moz-document url-prefix(){fieldset{display:table-cell}}@font-face{font-family:'openolat';src:url("../light/fonts/openolat/openolat.eot?4yacgg");src:url("../light/fonts/openolat/openolat.eot?#iefix4yacgg") format("embedded-opentype"),url("../light/fonts/openolat/openolat.woff?4yacgg") format("woff"),url("../light/fonts/openolat/openolat.ttf?4yacgg") format("truetype"),url("../light/fonts/openolat/openolat.svg?4yacgg#openolat") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../../font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../../font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.33333em;line-height:.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.28571em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.14286em;width:2.14286em;top:.14286em;text-align:center}.o_icon-li.o_icon-lg{left:-1.85714em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.o_icon-pull-left{float:left}.o_icon-pull-right{float:right}.o_icon.o_icon-pull-left{margin-right:.3em}.o_icon.o_icon-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.o_icon-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .o_icon-rotate-90,:root .o_icon-rotate-180,:root .o_icon-rotate-270,:root .o_icon-flip-horizontal,:root .o_icon-flip-vertical{filter:none}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_accepted:before{content:"ï…¤"}.o_icon_accessibility:before{content:""}.o_icon_actions:before{content:"ï‚…"}.o_icon_add_html:before{content:"ï„¡"}.o_icon_archive_tool:before{content:""}.o_icon_assessment_mode:before{content:"ï„"}.o_icon_assessment_tool:before{content:"ï‚‘"}.o_icon_assignment:before{content:"";color:#d9534f}.o_icon_attempt_limit:before{content:""}.o_icon_accept:before{content:"";color:#5cb85c}.o_icon_add:before{content:"ï•"}.o_icon_add_member:before{content:""}.o_icon_add_search:before{content:""}.o_icon_audio:before{content:""}.o_icon_back:before{content:"ï“"}.o_icon_back_history:before{content:""}.o_icon_banned:before{content:"";color:#d9534f}.o_icon_bold:before{content:""}.o_icon_booking:before{content:"ïº"}.o_icon_bookmark:before{content:"";color:#bc2d0c}.o_icon_bookmark_add:before{content:"ï‚—"}.o_icon_bookmark_header:before{content:""}.o_icon_browse:before{content:""}.o_icon_brush:before{content:""}.o_icon_browsercheck:before{content:"ï…¤"}.o_icon_busy:before{content:"ï„"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_enabled:before{content:"ï†"}.o_icon_calendar_disabled:before{content:"ï‚–"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_sync:before{content:""}.o_icon_caret:before{content:""}.o_icon_caret_right:before{content:""}.o_icon_catalog:before{content:""}.o_icon_catalog_sub:before{content:"ï»"}.o_icon_certificate:before{content:"ï‚£"}.o_icon_chat:before{content:""}.o_icon_check:before{content:""}.o_icon_check_off:before{content:"ï‚–"}.o_icon_check_on:before{content:"ï†"}.o_icon_checkbox:before{content:"ï‚–"}.o_icon_checkbox_checked:before{content:"ï…Š"}.o_icon_circle:before{content:""}.o_icon_circle_color:before{content:"ï„‘"}.o_icon_citation:before{content:"ï„"}.o_icon_cleanup:before{content:""}.o_icon_clear_all:before{content:""}.o_icon_close:before{content:"ï€"}.o_icon_close_resource:before{content:""}.o_icon_close_tab:before{content:"ï€"}.o_icon_close_tool:before{content:"ï€"}.o_icon_close_tree:before{content:""}.o_icon_close_togglebox:before,.o_togglebox_wrapper .o_opener.o_in i:before{content:""}.o_icon_code:before{content:"ï„¡"}.o_icon_color_picker:before{content:"ïƒ"}.o_icon_copy:before{content:""}.o_icon_courseareas:before{content:""}.o_icon_coursedb:before{content:""}.o_icon_courseeditor:before{content:"ï„"}.o_icon_coursefolder:before{content:"ï„”"}.o_icon_courserun:before{content:""}.o_icon_comments:before{content:""}.o_icon_comments_none:before{content:""}.o_icon_compress:before{content:"ï¦"}.o_icon_content_popup:before{content:""}.o_icon_correct_answer:before{content:"";color:#5cb85c}.o_icon_correction:before{content:"ï€"}.o_icon_customize:before{content:""}.o_icon_delete_item:before{content:""}.o_icon_delete:before{content:"ï–";color:#A87E7E}.o_icon_deleted:before{content:""}.o_icon_details:before{content:""}.o_icon_description:before{content:"ïš"}.o_icon_dev:before{content:""}.o_icon_disabled:before{content:""}.o_icon_download:before{content:""}.o_icon_edit:before{content:"ï„"}.o_icon_edit_file:before{content:"ï„"}.o_icon_edit_metadata:before{content:""}.o_icon_element_after:before{content:"ï£"}.o_icon_element_before:before{content:"ï¢"}.o_icon_enabled:before{content:"ï„‘"}.o_icon_enlarge:before{content:""}.o_icon_eportfolio_add:before{content:"ï„®"}.o_icon_eportfolio_link:before{content:"ï„®"}.o_icon_eraser:before{content:"ï„"}.o_icon_error:before{content:"ïª";color:#d9534f}.o_icon_expand:before{content:"ï¥"}.o_icon_expenditure:before{content:""}.o_icon_export:before{content:"ï…"}.o_icon_external_link:before{content:""}.o_icon_failed:before{content:"ï—"}.o_icon_files:before{content:""}.o_icon_filter:before{content:"ï‚°"}.o_icon_graduate:before{content:"ï†"}.o_icon_group:before,.o_BusinessGroup_icon:before{content:""}.o_icon_header:before{content:""}.o_icon_help:before{content:"ï™";cursor:help}.o_icon_home:before{content:""}.o_icon_image:before{content:""}.o_icon_impress:before{content:"ïš"}.o_icon_important:before{content:"ï±";color:#f0ad4e}.o_icon_import:before{content:"ï‚“"}.o_icon_info:before{content:"ïš";color:#5bc0de}.o_icon_info_msg:before{content:"ïª";color:#d9534f}.o_icon_info_resource:before{content:"ïš"}.o_icon_inline_editable:before{content:"ï„"}.o_icon_institution:before{content:""}.o_icon_italic:before{content:""}.o_icon_landingpage:before{content:"ï…€"}.o_icon_language:before{content:""}.o_icon_layout:before{content:""}.o_icon_line:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_link_extern:before{content:""}.o_icon_list:before{content:""}.o_icon_list_num:before{content:""}.o_icon_lifecycle:before{content:""}.o_icon_lifecycle_date:before{content:"ï³"}.o_icon_locked:before{content:""}.o_icon_login:before{content:"ï‚"}.o_icon_logout:before{content:"ï‚‹"}.o_icon_mandatory:before{content:"ï©";color:#f0ad4e}.o_icon_managed:before{content:"ï¹";color:#777}.o_icon_manual:before{content:"ï€";cursor:help}.o_icon_mail:before{content:""}.o_icon_math:before{content:"\03a3"}.o_icon_media:before{content:""}.o_icon_mediacenter:before{content:"ï¼"}.o_icon_membersmanagement:before{content:""}.o_icon_menuhandel:before{content:""}.o_icon_message:before{content:"ïƒ "}.o_icon_mobile:before{content:"ï„‹"}.o_icon_move:before{content:"ï‡"}.o_icon_move_down:before{content:""}.o_icon_move_left:before{content:"ï„€"}.o_icon_move_right:before{content:"ï„"}.o_icon_move_up:before{content:"ï„‚"}.o_icon_new:before{content:"ï©";color:#5cb85c}.o_icon_new_document:before{content:"ï…œ"}.o_icon_new_folder:before{content:"ï»"}.o_icon_new_portfolio:before{content:"ï€"}.o_icon_news:before{content:"ïš"}.o_icon_next:before{content:""}.o_icon_next_step:before{content:"ï„"}.o_icon_next_page:before{content:"ï„"}.o_icon_next_toolbar:before{content:""}.o_icon_node_after:before{content:"ï…µ"}.o_icon_node_before:before{content:"ï…¶"}.o_icon_node_under:before{content:"ï„’"}.o_icon_notes:before{content:""}.o_icon_notification:before{content:""}.o_icon_ok:before{content:"";color:#5cb85c}.o_icon_open_tree:before{content:""}.o_icon_open_togglebox:before,.o_togglebox_wrapper .o_opener i:before{content:""}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\E600";font-family:openolat;font-size:10px}.o_icon_options:before{content:""}.o_icon_others:before{content:""}.o_icon_pageing:before{content:"ï…"}.o_icon_paragraph:before{content:"ï‡"}.o_icon_passed:before{content:"ï˜"}.o_icon_password:before{content:""}.o_icon_pending:before{content:"ï„"}.o_icon_phone:before{content:"ï‚•"}.o_icon_post:before{content:""}.o_icon_preview:before{content:"ï®"}.o_icon_previous:before{content:"ï„·"}.o_icon_previous_page:before{content:"ï„€"}.o_icon_previous_step:before{content:"ï„€"}.o_icon_previous_toolbar:before{content:""}.o_icon_print:before{content:""}.o_icon_private:before{content:""}.o_icon_provider_adfs:before{content:"ï…º"}.o_icon_provider_facebook:before{content:""}.o_icon_provider_google:before{content:""}.o_icon_provider_guest:before{content:""}.o_icon_provider_ldap:before{content:""}.o_icon_provider_linkedin:before{content:""}.o_icon_provider_oauth:before{content:""}.o_icon_provider_openid:before{content:""}.o_icon_provider_performx:before{content:""}.o_icon_provider_shibboleth:before{content:""}.o_icon_provider_twitter:before{content:"ï‚™"}.o_icon_publish:before{content:"ï¤"}.o_icon_qrcode:before{content:""}.o_icon_quickview:before{content:"ï®"}.o_icon_radio_off:before{content:""}.o_icon_radio_on:before{content:"ï"}.o_icon_rating_on:before,.o_rating .o_rating_items.o_enabled .o_icon:hover:before{content:""}.o_icon_rating_off:before{content:""}.o_icon_read:before{content:""}.o_icon_readonly:before{content:"ï„";color:red}.o_icon_readwrite:before{content:"ï„"}.o_icon_recycle:before{content:""}.o_icon_rectangle:before{content:"ï‚–"}.o_icon_redo:before{content:""}.o_icon_refresh:before{content:""}.o_icon_reject:before{content:"ï€";color:#d9534f}.o_icon_rejected:before{content:"ï…¥"}.o_icon_reminder:before{content:""}.o_icon_remove:before{content:"ï€"}.o_icon_remove_filters:before{content:"ï—"}.o_icon_replace:before{content:""}.o_icon_reply:before{content:"ï„’"}.o_icon_reply_with_quote:before{content:"ï„¢"}.o_icon_response_feedback:before{content:""}.o_icon_restore:before{content:"ï…¤"}.o_icon_results_visible:before{content:"ï®"}.o_icon_results_hidden:before{content:"ï°"}.o_icon_review:before{content:"ï®"}.o_icon_reviewer:before{content:""}.o_icon_rss:before{content:""}.o_icon_rss_unsubscribe:before{content:"";color:#996633}.o_icon_rubric:before{content:""}.o_icon_save:before{content:""}.o_icon_search:before{content:""}.o_icon_select:before{content:""}.o_icon_send:before{content:"ïƒ "}.o_icon_settings:before{content:"ï‚…"}.o_icon_share:before{content:"ï¤"}.o_icon_show_more:before{content:"ï…"}.o_icon_show_less:before{content:"ï…‘"}.o_icon_show_send:before{content:""}.o_icon_sign_out:before{content:"ï‚‹"}.o_icon_slide_down:before{content:"ï¸"}.o_icon_slide_up:before{content:"ï·"}.o_icon_spacer:before{content:"ï¾"}.o_icon_split:before{content:"ï„§"}.o_icon_sort:before{content:""}.o_icon_sort_asc:before{content:""}.o_icon_sort_desc:before{content:"ïƒ"}.o_icon_sort_amount_asc:before{content:"ï… "}.o_icon_sort_amount_desc:before{content:"ï…¡"}.o_icon_sort_menu:before{content:"ï… "}.o_icon_start:before{content:"ï”"}.o_icon_status_available:before{content:"ï„‘";color:#063}.o_icon_status_chat:before{content:"ïµ"}.o_icon_status_dnd:before{content:"";color:#cc3}.o_icon_status_unavailable:before{content:"ïœ";color:#963}.o_icon_status_not_started:before{content:""}.o_icon_status_in_progress:before{content:"ï‹"}.o_icon_status_in_review:before{content:""}.o_icon_status_done:before{content:"ï˜"}.o_icon_statistics_tool:before{content:"ï‚€"}.o_icon_submit:before{content:""}.o_icon_table:before{content:""}.o_icon_table_custom:before{content:""}.o_icon_table_large:before{content:""}.o_icon_tags:before{content:""}.o_icon_textinput:before{content:""}.o_icon_timelimit:before{content:""}.o_icon_timelimit_start:before{content:""}.o_icon_timelimit_half:before{content:""}.o_icon_timelimit_end:before{content:""}.o_icon_toggle:before{content:"ï„‘"}.o_icon_toggle_on:before{content:""}.o_icon_toggle_off:before{content:""}.o_icon_to_read:before{content:"ï„‘"}.o_icon_tool:before{content:""}.o_icon_tools:before{content:"ï‚"}.o_icon_top:before{content:"ï·"}.o_icon_translation_item:before{content:""}.o_icon_translation_package:before{content:"ï„•"}.o_icon_undo:before{content:""}.o_icon_user:before{content:""}.o_icon_user_vip:before{content:"ï†"}.o_icon_user_anonymous:before{content:""}.o_icon_upload:before{content:"ï‚“"}.o_icon_version:before{content:""}.o_icon_video:before{content:""}.o_icon_visitingcard.o_icon_waiting:before{content:""}.o_icon_warn:before{content:"ï±";color:#f0ad4e}.o_icon_wizard:before{content:"ïƒ"}.o_icon_xing:before{content:"ï…¨";color:#cfdc00}.o_BinderTemplate_icon:before{content:""}.o_CourseModule_icon:before,.o_course_icon:before{content:""}.o_EPStructuredMapTemplate_icon:before{content:"ï„®"}.o_FileResource-BLOG_icon:before{content:"ï‚¡"}.o_FileResource-IMSCP_icon:before{content:""}.o_FileResource-FORM_icon:before{content:""}.o_FileResource-PODCAST_icon:before{content:""}.o_FileResource-SHAREDFOLDER:before{content:""}.o_FileResource-SCORMCP_icon:before{content:""}.o_FileResource-SURVEY_icon:before{content:""}.o_FileResource-TEST_icon:before{content:"ï„"}.o_FileResource-IMSQTI21_icon:before{content:"ï…‹"}.o_FileResource-WIKI_icon:before{content:""}.o_FileResource-SHAREDFOLDER_icon:before{content:"ï„•"}.o_FileResource-GLOSSARY_icon:before{content:"ï†"}.o_FileResource-PDF_icon:before{content:"ï‡"}.o_FileResource-XLS_icon:before{content:""}.o_FileResource-PPT_icon:before{content:""}.o_FileResource-DOC_icon:before{content:""}.o_FileResource-ANIM_icon:before{content:""}.o_FileResource-IMAGE_icon:before{content:""}.o_FileResource-SOUND_icon:before{content:""}.o_FileResource-MOVIE_icon:before{content:""}.o_FileResource-FILE_icon:before{content:""}.o_FileResource-VIDEO_icon:before{content:""}.o_CourseModule_icon_closed:before{content:"ïž"}.o_sp_icon:before{content:""}.o_st_icon:before{content:""}.o_tu_icon:before{content:""}.o_bc_icon:before{content:"ï„•"}.o_lti_icon:before{content:""}.o_cp_icon:before{content:""}.o_cp_item:before{content:""}.o_scorm_icon:before{content:""}.o_en_icon:before{content:"ï‚"}.o_fo_icon:before{content:""}.o_co_icon:before{content:""}.o_infomsg_icon:before{content:"ïš"}.o_cal_icon:before{content:"ï³"}.o_wiki_icon:before{content:""}.o_podcast_icon:before{content:""}.o_pf_icon:before{content:""}.o_blog_icon:before{content:"ï‚¡"}.o_ep_icon:before{content:""}.o_ep_icon_v1:before{content:"ï„®"}.o_iqtest_icon:before{content:"ï„"}.o_iqself_icon:before{content:"ï„"}.o_iqsurv_icon:before{content:""}.o_qtiassessment_icon:before{content:"ï…‹"}.o_ta_icon:before{content:"ï‚®"}.o_gta_icon:before{content:"ï‚®"}.o_ms_icon:before{content:""}.o_dialog_icon:before{content:""}.o_projectbroker_icon:before{content:""}.o_ll_icon:before{content:"ïƒ"}.o_den_icon:before{content:""}.o_cmembers_icon:before{content:""}.o_cl_icon:before{content:"ï†"}.o_vc_icon:before{content:""}.o_video_icon:before{content:""}.o_vitero_icon:before{content:""}.o_openmeetings_icon:before{content:""}.o_gotomeeting_icon:before{content:""}.o_portlet_infomsg_icon:before{content:"ïš"}.o_portlet_quickstart_icon:before{content:""}.o_portlet_bookmark_icon:before{content:""}.o_portlet_groups_icon:before{content:""}.o_portlet_notes_icon:before{content:""}.o_portlet_noti_icon:before{content:""}.o_portlet_eff_icon:before{content:"ï‚£"}.o_portlet_repository_student_icon:before{content:""}.o_portlet_repository_teacher_icon:before{content:"ï†"}.o_portlet_iframe_icon:before{content:""}.o_portlet_sysinfo_icon:before{content:""}.o_portlet_dyk_icon:before{content:""}.o_portlet_infomessages_icon:before{content:""}.o_portlet_cal_icon:before{content:"ï³"}.o_portlet_institutions_icon:before{content:""}.o_portlet_links_icon:before{content:"ïƒ"}.o_portlet_shibboleth_icon:before{content:"ï‚"}.o_icon_qpool:before{content:""}.o_icon_pool_private:before{content:"ï‚–"}.o_icon_pool_public:before{content:"ï†"}.o_icon_pool_my_items:before{content:""}.o_icon_pool_favorits:before{content:""}.o_icon_pool_collection:before{content:""}.o_icon_pool_pool:before{content:""}.o_icon_pool_share:before{content:""}.o_forum_message_icon:before{content:""}.o_calendar_icon:before{content:"ï³"}.o_icon_pf_section_draft:before{content:"ï°";color:#f0ad4e}.o_icon_pf_section_progress:before{content:"";color:#f0ad4e}.o_icon_pf_section_submitted:before{content:"";color:#3b678a}.o_icon_pf_section_closed:before{content:"";color:#5cb85c}.o_icon_pf_binder:before{content:""}.o_icon_pf_entry:before{content:"ï…›"}.o_icon_pf_entry_draft:before{content:"ï„‘";color:#f0ad4e}.o_icon_pf_entry_published:before{content:"ï„‘";color:#3b678a}.o_icon_pf_entry_revision:before{content:"ï„‘";color:#d9534f}.o_icon_pf_entry_closed:before{content:"ï„‘";color:#5cb85c}.o_icon_pf_entry_deleted:before{content:"";color:#000}.o_icon_pf_history:before{content:""}.o_icon_pf_my_shares:before{content:"ï‡ "}.o_icon_pf_quick_links:before{content:"ï¤"}.o_icon_pf_page:before{content:""}.o_icon_pf_section:before{content:""}.o_icon_pf_shared_with_me:before{content:""}.o_forum_status_thread_icon:before{content:""}.o_forum_status_sticky_closed_icon:before{content:"ïž"}.o_forum_status_sticky_icon:before{content:""}.o_forum_status_closed_icon:before{content:"ïž";color:#a94442}.o_forum_status_opened_icon:before{content:"ïž";color:#3c763d}.o_forum_status_hidden_icon:before{content:"ï°";color:#a94442}.o_forum_status_visible_icon:before{content:"ï®";color:#3c763d}.o_forum_all_icon:before{content:""}.o_forum_all_flat_icon:before{content:""}.o_forum_one_icon:before{content:"ï®"}.o_forum_marked_icon:before{content:""}.o_forum_new_icon:before{content:"ï©"}.o_mi_qpool_import:before{content:""}.o_mi_qtidrawing:before{content:""}.o_mi_qtisection:before{content:""}.o_mi_qtisc:before{content:""}.o_mi_qtimatch:before{content:""}.o_mi_qtimc:before{content:"ï†"}.o_mi_qtikprim:before{content:"ï…Š"}.o_mi_qtifib:before{content:"ï…"}.o_mi_qtinumerical:before{content:""}.o_mi_qtihotspot:before{content:""}.o_mi_qtihottext:before{content:"ï"}.o_mi_qtiessay:before{content:""}.o_mi_qtiunkown:before{content:""}.o_mi_qtiupload:before{content:"ï‚“"}.o_as_mode_leadtime:before{content:""}.o_as_mode_assessment:before{content:"ï‹"}.o_as_mode_followup:before{content:"ïž"}.o_as_mode_closed:before{content:'-'}.o_icon_qti_notPresented:before{content:"";color:#ddd}.o_icon_qti_notAnswered:before{content:"ï…„";color:#f0ad4e}.o_icon_qti_answered:before{content:"ï˜";color:#5cb85c}.o_icon_qti_ended:before{content:"ïž";color:#5bc0de}.o_icon_qti_invalid:before{content:"ïª";color:#d9534f}.o_icon_qti_review:before{content:"ï®";color:#5bc0de}.o_icon_qti_reviewNotSeen:before,.o_icon_qti_reviewNotAnswered:before,.o_icon_qti_reviewInvalid:before{content:"ï°";color:#5bc0de}.o_icon_qti_end_testpart:before{content:""}.o_icon_qti_close_test:before{content:"ï‹“"}.o_icon_qti_cancel:before{content:"ï"}.o_icon_qti_suspend:before{content:"ïŒ"}.o_icon_qti_close_results:before{content:"ï‹“"}.o_icon_qti_hint:before{content:"ï™"}.o_black_led:before{content:"ï„‘";color:#3b678a}.o_green_led:before{content:"ï„‘";color:#5cb85c}.o_yellow_led:before{content:"ï„‘";color:#f0ad4e}.o_red_led:before{content:"ï„‘";color:#d9534f}.o_ac_token_icon:before{content:"ï‚„"}.o_ac_free_icon:before{content:"ï«"}.o_ac_group_icon:before{content:""}.o_ac_membersonly_icon:before{content:""}.o_ac_paypal_icon:before{content:""}.o_ac_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_status_new_icon:before{content:"ï©";color:#3b678a}.o_ac_status_success_icon:before{content:"";color:#5cb85c}.o_ac_status_waiting_icon:before{content:"";color:#3b678a}.o_ac_order_status_new_icon:before{content:"ï©";color:#3b678a}.o_ac_order_status_prepayment_icon:before{content:"";color:#5bc0de}.o_ac_order_status_payed_icon:before{content:"";color:#5cb85c}.o_ac_order_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_order_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_order_status_warning_icon:before{content:"";color:#f0ad4e}.o_scorm_org:before{content:""}.o_scorm_item:before{content:""}.o_scorm_completed:before,.o_scorm_passed:before{content:"ï˜"}.o_scorm_failed:before{content:"ï±"}.o_scorm_incomplete:before{content:"ï±"}.o_scorm_not_attempted:before{background:none}.o_midpub:before{content:"ï˜"}.o_midwarn:before{content:"ï±"}.o_midlock:before{content:""}.o_miderr:before{content:"ïª"}.o_middel:before{content:"ï„"}.o_filetype_file:before,.o_filetype_ico:before{content:""}.o_filetype_folder:before{content:"ï„”"}.o_filetype_folder_open:before{content:"ï„•"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:""}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:""}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:""}.o_filetype_xls:before,.o_filetype_xlsx:before{content:""}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:""}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:""}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:""}.o_filetype_ps:before,.o_filetype_pdf:before{content:"ï‡"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:""}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:""}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:""}.o_icon_share_social:before{content:"ï…"}.o_icon_apple:before{content:"ï…¹"}.o_icon_facebook:before{content:"ï‚‚"}.o_icon_twitter:before{content:"ï‚"}.o_icon_google:before{content:""}.o_icon_delicious:before{content:""}.o_icon_digg:before{content:""}.o_icon_mailto:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_yahoo:before{content:""}a.o_icon:hover,a.o_icon:focus{text-decoration:none}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}.o_block_bottom,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_pf_content .o_cit,.o_pf_content .o_file,.o_pf_content .o_forum,.o_pf_content .o_image,.o_pf_content .o_video,.o_header_with_buttons,.o_search_result{margin-bottom:1em}.o_block_top,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_pf_content .o_cit,.o_pf_content .o_file,.o_pf_content .o_forum,.o_pf_content .o_image,.o_pf_content .o_video{margin-top:1em}.o_block_large_bottom,.o_block_large,.o_block_with_datecomp,.o_login .o_login_footer_wrapper,.o_portlet{margin-bottom:2em}.o_block_large_top,.o_block_large,.o_block_with_datecomp,.o_login .o_login_footer_wrapper,.o_portlet{margin-top:2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_block_imagebg h2,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg .o_cal .fc-header-title h2:after,.o_cal .fc-header-title .o_block_imagebg h2:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_header_with_buttons h2,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group,.o_header_with_buttons .o_cal .fc-header-title h2+.o_button_group,.o_cal .fc-header-title .o_header_with_buttons h2+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.66667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#6b9ac0;border-radius:10px}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body .o_cal .fc-header-title h2:nth-child(1),.o_cal .fc-header-title .panel-placeholder .panel-body h2:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#6b9ac0;border-top:none;border-left:none;border-right:none;color:#3b678a;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#6b9ac0;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:12px}.o_small,.b_small,p.b_small,div.b_small,.o_comments .o_comment_wrapper h5,.o_comments .o_comment_wrapper .o_comment,.o_bc_meta,.tooltip,.o_htmleditor .o_metadata .o_lastmodified,.o_noti,.o_block_with_datecomp .o_meta,.o_togglebox_wrapper div.o_togglebox_content .o_hide,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label,.o_course_run .o_toc .o_entry{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:18px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,#o_main_wrapper #o_toplink:hover,#o_footer_powered a:hover,#o_share a:hover,#o_share_social_container a:hover,.o_toolbar .o_tools_container a:hover,.o_button_toggle:hover,.o_im_message_group .o_im_from:hover,.o_noti .o_label:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover,.o_catalog .o_level .o_meta .o_title a:hover,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover,.o_repo_details .o_social .o_comments:hover,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover,.o_login .o_login_register:hover,.o_disabled:focus,.b_disabled:focus,#o_main_wrapper #o_toplink:focus,#o_footer_powered a:focus,#o_share a:focus,#o_share_social_container a:focus,.o_toolbar .o_tools_container a:focus,.o_button_toggle:focus,.o_im_message_group .o_im_from:focus,.o_noti .o_label:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:focus,.o_catalog .o_level .o_meta .o_title a:focus,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:focus,.o_repo_details .o_social .o_comments:focus,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:focus,.o_login .o_login_register:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}h1{color:#3b678a}h2{color:#3b678a}h3{color:#3b678a}h4,.o_cal .fc-header-title h2{color:#3b678a}h5{color:#3b678a}h5{color:#3b678a}fieldset legend{color:#333}.o_user_content_block a{color:#3b678a;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#243f54;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:1px 5px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:1px 5px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:1px 5px;border:0;font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:1px 5px;background:#eee;border:1px solid #fff}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:1px 5px;background:#d9edf7;border:1px solid #fff}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:1px 5px;background:#dff0d8;border:1px solid #fff}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:1px 5px;background:#fcf8e3;border:1px solid #fff}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:1px 5px;background:#f2dede;border:1px solid #fff}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#3b678a}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_mailto{color:#3b678a}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#3b678a}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0;font-size:85%;font-family:inherit}span.olatFlashMovieViewer{max-width:100% !important;border:none !important}.mejs-container,.mejs-mediaelement video,.mejs-layers div,.me-cannotplay{max-width:100%}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}html{position:relative;min-height:100%}body{min-height:100%;margin-bottom:80px}#o_main_wrapper{background:#fff;z-index:3}#o_main_wrapper #o_main_container{background:#fff}#o_main_wrapper #o_main_container #o_main_left{float:left;z-index:2;position:relative;background:#fff}#o_main_wrapper #o_main_container #o_main_left #o_main_left_content{padding:0 0 0 15px}#o_main_wrapper #o_main_container #o_main_left #o_main_left_toggle{position:absolute;display:none;right:0;top:70px;margin-right:-30px;font-size:25px;line-height:35px;text-align:center;width:30px;height:35px;z-index:3;border:1px solid #ddd;border-left:none;border-bottom-right-radius:4px;border-top-right-radius:4px;background-color:#fbfbfb;-webkit-box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);color:#3b678a}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas{background:#fbfbfb;-webkit-box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);min-width:250px}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas #o_main_left_content{padding:0 0 0 0}#o_main_wrapper #o_main_container #o_main_right{float:right;z-index:2;position:relative;background:inherit}#o_main_wrapper #o_main_container #o_main_right #o_main_right_content{padding:0 15px 0 0}#o_main_wrapper #o_main_container #o_main_center{position:relative;z-index:1;background:inherit}#o_main_wrapper #o_main_container #o_main_center h2:first-child{margin-top:0}@media screen and (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center{margin-left:0 !important}}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:0 15px}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content #o_main_center_content_inner{padding-bottom:15px}#o_main_wrapper #o_toplink{position:absolute;bottom:0;right:15px;text-align:center;z-index:3}@media (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:15px}}#o_back_wrapper,#o_preview_wrapper{margin-top:10px}#o_back_wrapper.o_toolbar .o_breadcrumb .breadcrumb,#o_preview_wrapper.o_toolbar .o_breadcrumb .breadcrumb{font-size:14px}body.o_message #o_main_center_content_inner{min-height:150px;max-width:500px;padding:15px;margin:60px auto}#o_footer_wrapper{position:absolute;bottom:0;width:100%;height:70px;overflow:hidden;background-color:#f5f5f5;color:#999;line-height:16px;font-size:12px}#o_footer_wrapper a{color:#999}#o_footer_wrapper a:hover{color:#000}#o_footer_container{position:relative;padding-top:10px;min-height:70px;background:#f5f5f5;z-index:1}#o_footer_user{position:absolute;left:15px;top:10px;z-index:1}#o_footer_user #o_counter{white-space:nowrap}#o_footer_user #o_username{white-space:nowrap;margin-right:1em}#o_footer_version{position:absolute;right:15px;top:10px;text-align:right;z-index:1}@media (max-width: 767px){#o_footer_version{padding-top:10px;text-align:left}}#o_footer_powered{position:absolute;top:30px;right:15px;z-index:1}#o_footer_powered img{opacity:.6;filter:alpha(opacity=60)}#o_footer_powered img:hover{opacity:1;filter:alpha(opacity=100)}#o_footer_impressum{position:absolute;top:10px;width:100%;text-align:center;z-index:-1}#o_footer_impressum i{display:none}#o_footer_textline{position:absolute;top:30px;width:100%;text-align:center;z-index:-1}#o_share{margin-top:10px}#o_share a{opacity:.6;filter:alpha(opacity=60)}#o_share a:hover{opacity:1;filter:alpha(opacity=100)}#o_share a,#o_share_social_container a{color:#999;margin:0 0.25em 0 0}#o_share a:hover,#o_share_social_container a:hover{color:#000}@media (max-width: 767px){#o_counter,#o_footer_version,#o_share{display:none}#o_footer_impressum{top:30px;text-align:left}#o_footer_textline{top:50px;text-align:left}#o_footer_powered{top:10px}#o_footer_powered a:after{content:"\221E";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;font-size:14px}#o_footer_powered img{display:none}}#o_navbar_wrapper{z-index:4;border-top:1px solid #e7e7e7;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}#o_navbar_wrapper #o_navbar_container{position:relative}a.o_disabled.navbar-text{margin:0}.o_navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid #e7e7e7;background-color:#f8f8f8}.o_navbar:before,.o_navbar:after{content:" ";display:table}.o_navbar:after{clear:both}.o_navbar .o_navbar_tabs li{max-width:150px}.o_navbar .o_navbar_tabs li a{padding-right:30px}.o_navbar .o_navbar_tabs li a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_navbar .o_navbar_tabs .o_icon-fw{position:absolute;top:15px;left:0.5em;padding-top:3px;width:1em;height:1em;display:none}.o_navbar .o_navbar_tabs .o_navbar_tab_close{position:absolute;top:15px;right:0.5em;padding:0;width:1em;height:1em}.o_navbar .o_navbar_tabs .o_navbar_tab_close i:before{color:#d9534f}.o_navbar .o_navbar_tabs .o_navbar_tab_close:hover i:before{color:#c9302c}.o_navbar .o_custom_navbar-brand{background-position:5px 0;background-repeat:no-repeat;height:50px;width:120px}.o_navbar #o_navbar_langchooser{color:#777;padding:7px 15px}.o_navbar #o_navbar_langchooser form span+div{display:inline}.o_navbar #o_navbar_tools_permanent #o_navbar_print a,.o_navbar #o_navbar_tools_permanent #o_navbar_impress a,.o_navbar #o_navbar_tools_permanent #o_navbar_help a{color:#777;padding-right:0}.o_navbar #o_navbar_tools_permanent #o_navbar_login a{color:#f0ad4e}.o_navbar .o_navbar_tools>#o_navbar_tools_permanent>li>a>span{display:none}@media (min-width: 768px){.o_navbar .o_navbar_tools li.o_portrait>a>span{display:inline}}.o_navbar #o_navbar_tools_personal .o_navbar_tool a,.o_navbar #o_navbar_tools_permanent .o_navbar_tool a{padding-right:5px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu a{padding-left:45px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .dropdown-menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .dropdown-menu a{padding-left:15px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .o_portrait,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .o_portrait{position:absolute;left:7px;top:10px}.o_navbar #o_navbar_tools_personal .o_logout,.o_navbar #o_navbar_tools_permanent .o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar_tab_close{top:10px;right:10px}.o_navbar.o_navbar-offcanvas .o_navbar-right a{padding:3px 20px;color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-right a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a:focus{color:#fff;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:focus{color:#c9302c}.o_navbar.o_navbar-offcanvas .o_navbar-right a .o_icon-lg{font-size:1.0em;vertical-align:baseline}.o_navbar.o_navbar-offcanvas .o_navbar-right .divider{height:1px;margin:9px 0;overflow:hidden;background-color:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-header{padding-left:15px}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-toggle{display:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu{box-shadow:none;position:relative;top:0;left:0;display:block;float:none;background-color:#222;color:#9d9d9d;font-size:14px;border:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu .divider{background:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a{color:#9d9d9d;text-shadow:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav a:focus{background-color:transparent;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:focus{background-color:#090909;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link{color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link:hover{color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a{color:#777}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}#o_navbar_impress a span,#o_navbar_search_opener a span{display:none}body.o_dmz #o_navbar_print a span,body.o_dmz #o_navbar_impress a span,body.o_dmz #o_navbar_help a span,body.o_dmz #o_navbar_search_opener a span{display:inline}.o_navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;-webkit-overflow-scrolling:touch}.o_navbar-collapse:before,.o_navbar-collapse:after{content:" ";display:table}.o_navbar-collapse:after{clear:both}.o_navbar-collapse.o_collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.o_navbar-offcanvas .o_navbar-collapse{width:auto;box-shadow:none;margin-top:10px;margin-right:-15px;margin-left:-15px}.o_navbar-brand{float:left;font-size:18px;line-height:20px;height:50px;color:#777}.o_navbar-brand:hover,.o_navbar-brand:focus{text-decoration:none;color:#5e5e5e;background-color:transparent}.o_navbar-toggle{position:relative;margin-right:15px;margin-left:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;border:1px solid #ddd;border-radius:4px;background-color:transparent;background-image:none}.o_navbar-toggle:hover,.o_navbar-toggle:focus{outline:none;background-color:#ddd}.o_navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;background-color:#888}.o_navbar-toggle .icon-bar+.icon-bar{margin-top:4px}#o_navbar_left-toggle{float:left}#o_navbar_right-toggle{float:right}.o_navbar-link{color:#777}.o_navbar-link:hover{color:#333}.o_navbar-nav{margin:7.5px -15px}.o_navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px;color:#777}.o_navbar-nav>li>a:hover,.o_navbar-nav>li>a:focus{color:#333;background-color:transparent}.o_navbar-nav>.active>a,.o_navbar-nav>.active>a:hover,.o_navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar-nav>.disabled>a,.o_navbar-nav>.disabled>a:hover,.o_navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.o_navbar-nav>.open>a,.o_navbar-nav>.open>a:hover,.o_navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}.o_collapse .o_navbar-nav{float:left;margin:0}.o_collapse .o_navbar-nav>li{float:left}.o_collapse .o_navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.o_collapse .o_navbar-nav.o_navbar-right:last-child{margin-right:-15px}.o_collapse.o_navbar-collapse .o_navbar-left{float:left !important}.o_collapse.o_navbar-collapse .o_navbar-right{float:right !important}.o_navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (max-width: 767px){.o_navbar-form .form-group{margin-bottom:5px}}.o_collapse .o_navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.o_collapse .o_navbar-form.o_navbar-right:last-child{margin-right:-15px}.o_navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.o_navbar-fixed-bottom .o_navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.o_navbar-btn{margin-top:8px;margin-bottom:8px}.o_navbar-btn.btn-sm,.btn-group-sm>.o_navbar-btn.btn{margin-top:10px;margin-bottom:10px}.o_navbar-btn.btn-xs,.btn-group-xs>.o_navbar-btn.btn{margin-top:14px;margin-bottom:14px}.o_navbar-text{margin-top:15px;margin-bottom:15px;color:#777}.o_collapse .o_navbar-text{float:left;margin-left:15px;margin-right:15px}.o_collapse .o_navbar-text.o_navbar-right:last-child{margin-right:0}.o_dropdown_tab{position:relative}.o_dropdown_tab>a:first-child{padding-right:30px}.o_dropdown_tab>a:first-child .o_icon-fw{display:none;position:absolute;top:0;left:10px;padding-top:3px;line-height:20px}.o_dropdown_tab>a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_dropdown_tab .o_navbar_tab_close{position:absolute;top:0px;right:10px;padding-left:0px;padding-right:0px;color:#d9534f;background-color:inherit}.o_dropdown_tab .o_navbar_tab_close:focus,.o_dropdown_tab .o_navbar_tab_close:hover{color:#c9302c;background-color:inherit}#o_navbar_more .dropdown-menu .divider:last-child{display:none}@media (min-width: 768px){#o_navbar_more .dropdown-menu{max-width:300px}}@media (max-width: 767px){#o_navbar_more>li{position:inherit}#o_navbar_more .dropdown-menu{left:0px;right:0px}#o_navbar_more .dropdown-menu a,#o_navbar_more .dropdown-menu i{line-height:30px}#o_navbar_more .dropdown-menu .o_navbar_tab_close{line-height:inherit}}.o_body_popup #o_topnav_printview{display:inline-block}.o_body_popup #o_topnav_close{float:right}.o_body_popup #o_topnav_close span{display:block}.o_body_popup #o_navbar_tools_permanent li>a{background-color:transparent}.o_toolbar{position:relative;margin-bottom:20px;margin-top:-10px;border:1px solid #e7e7e7}.o_toolbar:before,.o_toolbar:after{content:" ";display:table}.o_toolbar:after{clear:both}@media (min-width: 768px){.o_toolbar{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}}.o_toolbar .o_breadcrumb:before,.o_toolbar .o_breadcrumb:after{content:" ";display:table}.o_toolbar .o_breadcrumb:after{clear:both}.o_toolbar .o_breadcrumb .breadcrumb{margin-bottom:0;padding:5px 9px;font-size:11px;line-height:15px;border-radius:0;background:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a span{display:none}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close:before{content:none}.o_toolbar .o_tools_container{text-align:center;min-height:37px;position:relative;background-color:#f8f8f8;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:1px solid #e7e7e7}.o_toolbar .o_tools_container:before,.o_toolbar .o_tools_container:after{content:" ";display:table}.o_toolbar .o_tools_container:after{clear:both}@media (max-width: 991px){.o_toolbar .o_tools_container{min-height:35px}}@media (max-width: 767px){.o_toolbar .o_tools_container{min-height:22px;text-align:left}}.o_toolbar .o_tools_container span.o_tool_text{color:#777;display:inline-block}.o_toolbar .o_tools_container a{color:#777;display:inline-block}.o_toolbar .o_tools_container a:hover{color:#333}.o_toolbar .o_tools_container a.o_disabled{color:#aaa !important}.o_toolbar .o_tools_container a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tools_container a.active{color:#3b678a;background-color:transparent}.o_toolbar .o_tools_container a.btn-primary{color:#fff}.o_toolbar .o_tools_container .dropdown-menu a{display:block}.o_toolbar .o_tools_container .dropdown-menu a.active{color:#3b678a;background-color:transparent}.o_toolbar .o_tools{margin-top:8px;margin-bottom:5px}.o_toolbar .o_tool,.o_toolbar .o_text{position:relative;margin:0 10px}.o_toolbar .o_tool:first-child,.o_toolbar .o_text:first-child{margin-left:0}.o_toolbar .o_tool:last-child,.o_toolbar .o_text:last-child{margin-right:0}.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:18px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:block;font-size:12px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{position:absolute;right:50%;top:-18px;margin-right:-12px;font-size:13px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:16px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{font-size:11px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{top:-16.5px;margin-right:-11px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:20px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:none}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{display:block;position:relative;top:0;left:0;margin-right:0}}.o_toolbar .o_tool .o_chelp,.o_toolbar .o_text .o_chelp{position:relative;top:-1em;vertical-align:top;color:#fff}.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{padding:0;margin-top:5px;border:1px solid #ccc;background-color:#eee}.o_toolbar .o_tool_next a,.o_toolbar .o_tool_previous a{color:#777}.o_toolbar .o_tool_next a:hover,.o_toolbar .o_tool_previous a:hover{color:#333}.o_toolbar .o_tool_next a.o_disabled,.o_toolbar .o_tool_previous a.o_disabled{color:#aaa !important}.o_toolbar .o_tool_next a.o_disabled:hover,.o_toolbar .o_tool_previous a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:21px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:4px}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:18px}}@media (max-width: 767px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:0}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:20px}}.o_toolbar .o_tool_previous{margin-left:10px;border-bottom-left-radius:4px;border-top-left-radius:4px;border-right:0}.o_toolbar .o_tool_next{border-bottom-right-radius:4px;border-top-right-radius:4px}.o_toolbar .o_tool_dropdown{margin:0 10px}.o_toolbar .o_tool_dropdown:first-child{margin-left:0}.o_toolbar .o_tool_dropdown:last-child{margin-right:0}.o_toolbar .o_tool_dropdown a.dropdown-toggle{position:relative}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:18px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span{display:block;font-size:12px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{position:absolute;right:50%;top:4px;margin-right:-20px;font-size:14px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:16px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span,.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{font-size:11px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{top:4px;margin-right:-18px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown a.dropdown-toggle{padding:0 10px 0 5px}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:20px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span{display:none}}.o_toolbar .o_tool_dropdown .dropdown-menu{text-align:left}.o_toolbar .o_tools_left{float:left}.o_toolbar .o_tools_right{float:right}.o_toolbar .o_tools_right_edge{float:right}.o_toolbar .o_tools_center{float:both;width:50%;margin-left:auto;margin-right:auto}.o_toolbar .o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}@media (max-width: 991px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tool span{max-width:10em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_toolbar .o_tools_segments .o_tool span{display:block}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 5px}}@media (max-width: 767px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools .o_chelp{top:0;vertical-align:top}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_center{float:left}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 0;position:static}.o_toolbar .o_tool_dropdown .dropdown-menu{left:0px;right:0px}.o_toolbar .o_tool_dropdown .dropdown-menu a,.o_toolbar .o_tool_dropdown .dropdown-menu i{line-height:30px}.o_toolbar .o_tool_dropdown .dropdown-menu .o_navbar_tab_close{line-height:inherit}}#o_main_container .o_toolbar_message{display:table;margin:0 auto 20px auto}#o_main_container .o_toolbar_message.o_warning{padding-top:5px;padding-bottom:5px;border:1px solid #8a6d3b;border-radius:3px}.o_edit_mode .o_toolbar .o_tools_container{background:repeating-linear-gradient(300deg, #fff0d9, #fff0d9 10px, #fcfcfc 10px, #fcfcfc 20px)}.o_edit_mode .o_toolbar .o_edit_mode .o_tools_container{background:#f8f8f8}body{overflow-x:hidden}.o_container_offcanvas{position:relative;max-width:1324px;-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;-m-transition:all .25s ease-in-out;transition:all .25s ease-in-out}#o_offcanvas_right{position:absolute;top:0;right:-250px;width:250px;padding:15px 15px;background-color:#222;color:#9d9d9d;border:1px solid #090909;-webkit-box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);min-height:100%;z-index:10;display:none}#o_offcanvas_right:before,#o_offcanvas_right:after{content:" ";display:table}#o_offcanvas_right:after{clear:both}@media screen and (max-width: 767px){.row-offcanvas{position:relative;-webkit-transition:all .25s ease-out;-moz-transition:all .25s ease-out;transition:all .25s ease-out}.row-offcanvas-right{right:0}.row-offcanvas-right .sidebar-offcanvas{right:-50%}.row-offcanvas-right.active{right:50%}.row-offcanvas-left{left:0}.row-offcanvas-left .sidebar-offcanvas{left:-50%}.row-offcanvas-left.active{left:50%}.sidebar-offcanvas{position:absolute;top:0;width:50%}}.o_info,.b_info,p.b_info,div.b_info,.o_form .o_info,.o_togglebox_wrapper div.o_togglebox_content,div.o_qti_item_itemfeedback,.o_assessmentitem_wrapper .modalFeedback .o_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_info h2,.o_info h5,.b_info h2,.o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h3,.o_form .o_info h3,.o_togglebox_wrapper div.o_togglebox_content h3,div.o_qti_item_itemfeedback h3,.o_assessmentitem_wrapper .modalFeedback .o_info h3,.b_info h4,.o_form .o_info h4,.o_togglebox_wrapper div.o_togglebox_content h4,div.o_qti_item_itemfeedback h4,.o_assessmentitem_wrapper .modalFeedback .o_info h4,.b_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_info h2,.o_form .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback .o_cal .fc-header-title h2,.o_cal .fc-header-title div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h5,.o_form .o_info h5,.o_togglebox_wrapper div.o_togglebox_content h5,div.o_qti_item_itemfeedback h5,.o_assessmentitem_wrapper .modalFeedback .o_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note,.o_form .o_desc,.o_course_run .o_statusinfo,.o_course_stats .o_desc,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_note h2,.o_note h5,.b_note h2,.o_form .o_desc h2,.o_course_run .o_statusinfo h2,.o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.b_note h3,.o_form .o_desc h3,.o_course_run .o_statusinfo h3,.o_course_stats .o_desc h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h3,.b_note h4,.o_form .o_desc h4,.o_course_run .o_statusinfo h4,.o_course_stats .o_desc h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h4,.b_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_note h2,.o_form .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_desc h2,.o_course_run .o_statusinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_statusinfo h2,.o_course_stats .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.b_note h5,.o_form .o_desc h5,.o_course_run .o_statusinfo h5,.o_course_stats .o_desc h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important,.o_bc_empty,.o_course_run .o_no_scoreinfo{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_important h2,.o_important h5,.b_important h2,.o_bc_empty h2,.o_course_run .o_no_scoreinfo h2,.b_important h3,.o_bc_empty h3,.o_course_run .o_no_scoreinfo h3,.b_important h4,.o_bc_empty h4,.o_course_run .o_no_scoreinfo h4,.b_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_important h2,.o_bc_empty .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_bc_empty h2,.o_course_run .o_no_scoreinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_no_scoreinfo h2,.b_important h5,.o_bc_empty h5,.o_course_run .o_no_scoreinfo h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_success h2,.o_success h5,.b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h3,.b_success h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h4,.b_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning,.o_form .o_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_warning h2,.o_warning h5,.b_warning h2,.o_form .o_warning h2,.b_warning h3,.o_form .o_warning h3,.b_warning h4,.o_form .o_warning h4,.b_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_warning h2,.o_form .o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_warning h2,.b_warning h5,.o_form .o_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_error h2,.o_error h5,.b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h3,.b_error h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h4,.b_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4,.modal .modal-header .o_cal .fc-header-title h2,.o_cal .fc-header-title .modal .modal-header h2{color:#3b678a;font-weight:500;font-family:inherit;line-height:1.1}.o_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_tree a{color:#777;background-color:none}.o_tree a:hover,.o_tree a:focus{color:#333}.o_tree .o_tree_link{background-color:none}.o_tree .o_tree_link:hover,.o_tree .o_tree_link:focus{background-color:#f8f8f8}.o_tree .o_tree_link:first-child{background-color:transparent}.o_tree .o_tree_link:last-child:hover,.o_tree .o_tree_link:last-child:focus{background-color:#f8f8f8}.o_tree .o_insertion_point>a>span{padding:5px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_insertion_source>a>span.o_tree_item,.o_tree .o_insertion_source>a>span.o_dnd_item{border-bottom:solid #f90 4px;background-color:#fefbf6}.o_tree ul{margin:0;padding:0;list-style-type:none}.o_tree ul li{margin:0;padding:0;white-space:nowrap}.o_tree ul li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_tree ul li div.popover{position:absolute;left:auto;right:0}.o_tree ul li div a.o_tree_oc_l0{position:absolute;top:10px;left:-4px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l0,.o_tree ul .o_tree_level_close.b_tree_oc_l0{z-index:10}.o_tree ul li div a.o_tree_oc_l1{position:absolute;top:10px;left:11px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l1,.o_tree ul .o_tree_level_close.b_tree_oc_l1{z-index:10}.o_tree ul li div a.o_tree_oc_l2{position:absolute;top:10px;left:26px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l2,.o_tree ul .o_tree_level_close.b_tree_oc_l2{z-index:10}.o_tree ul li div a.o_tree_oc_l3{position:absolute;top:10px;left:41px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l3,.o_tree ul .o_tree_level_close.b_tree_oc_l3{z-index:10}.o_tree ul li div a.o_tree_oc_l4{position:absolute;top:10px;left:56px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l4,.o_tree ul .o_tree_level_close.b_tree_oc_l4{z-index:10}.o_tree ul li div a.o_tree_oc_l5{position:absolute;top:10px;left:71px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l5,.o_tree ul .o_tree_level_close.b_tree_oc_l5{z-index:10}.o_tree ul li div a.o_tree_oc_l6{position:absolute;top:10px;left:86px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l6,.o_tree ul .o_tree_level_close.b_tree_oc_l6{z-index:10}.o_tree ul li div a.o_tree_oc_l7{position:absolute;top:10px;left:101px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l7,.o_tree ul .o_tree_level_close.b_tree_oc_l7{z-index:10}.o_tree ul li div a.o_tree_oc_l8{position:absolute;top:10px;left:116px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l8,.o_tree ul .o_tree_level_close.b_tree_oc_l8{z-index:10}.o_tree ul li div a.o_tree_oc_l9{position:absolute;top:10px;left:131px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l9,.o_tree ul .o_tree_level_close.b_tree_oc_l9{z-index:10}.o_tree ul li div a.o_tree_oc_l10{position:absolute;top:10px;left:146px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l10,.o_tree ul .o_tree_level_close.b_tree_oc_l10{z-index:10}.o_tree ul li div a.o_tree_oc_l11{position:absolute;top:10px;left:161px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l11,.o_tree ul .o_tree_level_close.b_tree_oc_l11{z-index:10}.o_tree ul li div span.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_tree ul li div span.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_tree ul li div span.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_tree ul li div span.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_tree ul li div span.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_tree ul li div span.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_tree ul li div span.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_tree ul li div span.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_tree ul li div span.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_tree ul li div span.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_tree ul li div span.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_tree ul li div span.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_tree ul span.o_tree_leaf{display:none}.o_tree ul span.o_tree_link>input[type=checkbox]{margin-right:5px}.o_tree ul li .badge{position:absolute;font-size:70%}.o_tree ul li .badge:before{content:none}.o_tree ul li .badge.o_badge_1{top:3px;right:1px}.o_tree ul li .badge.o_badge_2{bottom:3px;right:1px}.o_tree ul li .badge.o_badge_3{top:3px;right:25px}.o_tree ul li .badge.o_badge_4{bottom:3px;right:25px}.o_tree ul li div.o_dnd_sibling{margin:0;padding:0;border-bottom:none}.o_tree ul li .active.o_tree_link{background-color:none;font-weight:bold}.o_tree ul li .active.o_tree_link a{color:#3b678a}.o_tree ul li .active.o_tree_link:hover,.o_tree ul li .active.o_tree_link:focus{background-color:#eee}.o_tree ul li .active.o_tree_link:hover a,.o_tree ul li .active.o_tree_link:focus a{color:#243f54}.o_tree ul li .active_parent.o_tree_link{font-weight:bold}.o_tree ul li .active_parent.o_tree_link a{color:#777}.o_tree ul li .active_parent.o_tree_link a:hover,.o_tree ul li .active_parent.o_tree_link a:focus{color:#333}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l0{left:6px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l1{left:21px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l2{left:36px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l3{left:51px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l4{left:66px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l5{left:81px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l6{left:96px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l7{left:111px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l8{left:126px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l9{left:141px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l10{left:156px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l11{left:171px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l0{padding:10px 2px 10px 20px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l1{padding:10px 2px 10px 35px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l2{padding:10px 2px 10px 50px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l3{padding:10px 2px 10px 65px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l4{padding:10px 2px 10px 80px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l5{padding:10px 2px 10px 95px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l6{padding:10px 2px 10px 110px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l7{padding:10px 2px 10px 125px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l8{padding:10px 2px 10px 140px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l9{padding:10px 2px 10px 155px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l10{padding:10px 2px 10px 170px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l11{padding:10px 2px 10px 185px}.o_tree .o_dnd_item{cursor:move;z-index:100}.o_tree .o_dnd_proxy{opacity:.4;filter:alpha(opacity=40);background-color:#f0ad4e;padding:5px 10px 5px 10px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_dnd_item.o_dnd_over{background-color:#ffff60}.o_tree .o_dnd_sibling{height:7px;width:100%}.o_tree .o_dnd_sibling.o_dnd_over{background:transparent url(../light/images/arrow_dd.png) top left no-repeat}.o_tree .o_dnd_l1{margin-left:0 !important}.o_tree .o_dnd_l2{margin-left:1em !important}.o_tree .o_dnd_l3{margin-left:2em !important}.o_tree .o_dnd_l4{margin-left:3em !important}.o_tree .o_dnd_l5{margin-left:4em !important}.o_tree .o_dnd_l6{margin-left:5em !important}.o_tree .o_dnd_l7{margin-left:6em !important}.o_tree .o_dnd_l8{margin-left:7em !important}.o_tree .o_dnd_l9{margin-left:8em !important}.o_tree .o_dnd_l10{margin-left:9em !important}.o_tree .o_dnd_l11{margin-left:10em !important}.o_tree.o_tree_insert_tool span.o_tree_link a{display:block}.o_offcanvas .o_tree{border:0}.o_selection_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_selection_tree ul{margin:0;padding:0;list-style-type:none}.o_selection_tree li{margin:0;padding:0;white-space:nowrap}.o_selection_tree li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_selection_tree li>div>span.o_tree_l0,.o_selection_tree li>div>div.checkbox.o_tree_l0,.o_selection_tree li>div>div.radio.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_selection_tree li>div>span.o_tree_l1,.o_selection_tree li>div>div.checkbox.o_tree_l1,.o_selection_tree li>div>div.radio.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_selection_tree li>div>span.o_tree_l2,.o_selection_tree li>div>div.checkbox.o_tree_l2,.o_selection_tree li>div>div.radio.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_selection_tree li>div>span.o_tree_l3,.o_selection_tree li>div>div.checkbox.o_tree_l3,.o_selection_tree li>div>div.radio.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_selection_tree li>div>span.o_tree_l4,.o_selection_tree li>div>div.checkbox.o_tree_l4,.o_selection_tree li>div>div.radio.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_selection_tree li>div>span.o_tree_l5,.o_selection_tree li>div>div.checkbox.o_tree_l5,.o_selection_tree li>div>div.radio.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_selection_tree li>div>span.o_tree_l6,.o_selection_tree li>div>div.checkbox.o_tree_l6,.o_selection_tree li>div>div.radio.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_selection_tree li>div>span.o_tree_l7,.o_selection_tree li>div>div.checkbox.o_tree_l7,.o_selection_tree li>div>div.radio.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_selection_tree li>div>span.o_tree_l8,.o_selection_tree li>div>div.checkbox.o_tree_l8,.o_selection_tree li>div>div.radio.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_selection_tree li>div>span.o_tree_l9,.o_selection_tree li>div>div.checkbox.o_tree_l9,.o_selection_tree li>div>div.radio.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_selection_tree li>div>span.o_tree_l10,.o_selection_tree li>div>div.checkbox.o_tree_l10,.o_selection_tree li>div>div.radio.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_selection_tree li>div>span.o_tree_l11,.o_selection_tree li>div>div.checkbox.o_tree_l11,.o_selection_tree li>div>div.radio.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_breadcrumb{position:relative}.o_breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_breadcrumb .o_breadcrumb_close a span{display:none}.o_breadcrumb .o_breadcrumb_close:before{content:none}.o_form .o_icon_mandatory{margin-right:0.25em}.o_form .o_form_chelp{padding-left:0.25em;margin-right:-1.25em}.o_form .o_form_example{font-size:90%}.o_form .o_error{margin-top:1px;margin-bottom:0;padding:10px}.o_form hr.o_spacer_noline{border-top:1px solid transparent}.o_form hr.o_spacer.form,.o_form hr.o_spacer_noline.form{margin-top:0px;margin-bottom:0px}.o_form .form-group.o_omit_margin{margin-bottom:0}.o_form .o_date{position:relative;padding-right:34px}.o_form .o_date.form-inline .form-group,.o_form .o_date.o_navbar-form .form-group{margin-left:0}.o_form input.o_date_ms{width:3em}.o_form .o_date.form-inline .o_date_ms.form-group,.o_form .o_date.o_navbar-form .o_date_ms.form-group{margin-left:25px}.o_form .has-feedback .o_date.form-inline .form-control.o_date_ms,.o_form .has-feedback .o_date.o_navbar-form .form-control.o_date_ms{padding-right:0}.o_form .o_form_element.form-inline .o_form_element.form-group,.o_form .o_form_element.o_navbar-form .o_form_element.form-group{margin-left:25px}.o_form .input-group.o_date_picker{width:16em}.o_form .o_filepreview{margin-bottom:10px}.o_form .o_fileinput{cursor:pointer;position:relative}.o_form .o_fileinput .o_fakechooser{position:relative;z-index:1}.o_form .o_fileinput .o_realchooser{position:absolute;top:0;right:0;z-index:2;opacity:0;filter:alpha(opacity=0)}.o_form .o_fileinput .o_realchooser.o_chooser_with_delete{right:38px}.o_form .has-feedback.has-error .o_fileinput .o_fakechooser{margin-right:30px}.o_form .form-control.textarea_disabled{resize:both;overflow:auto;white-space:pre-wrap;background:#fafafa}.o_centered_form{text-align:center}.o_centered_form fieldset.o_form{display:inline-block;text-align:left}.o_choice_checkrow,.o_choice_textrow{vertical-align:text-top;padding-bottom:2px}.o_choice_textrow{padding-left:1em}.o_togglecheck a{white-space:nowrap}.o_catalog .o_catalog_delete_img{position:relative;top:-0.5em}.o_button_dirty{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_button_dirty:hover,.o_button_dirty:focus,.o_button_dirty.focus,.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{background-image:none}.o_button_dirty.disabled,.o_button_dirty.disabled:hover,.o_button_dirty.disabled:focus,.o_button_dirty.disabled.focus,.o_button_dirty.disabled:active,.o_button_dirty.disabled.active,.o_button_dirty[disabled],.o_button_dirty[disabled]:hover,.o_button_dirty[disabled]:focus,.o_button_dirty[disabled].focus,.o_button_dirty[disabled]:active,.o_button_dirty[disabled].active,fieldset[disabled] .o_button_dirty,fieldset[disabled] .o_button_dirty:hover,fieldset[disabled] .o_button_dirty:focus,fieldset[disabled] .o_button_dirty.focus,fieldset[disabled] .o_button_dirty:active,fieldset[disabled] .o_button_dirty.active{background-color:#f0ad4e;border-color:#eea236}.o_button_dirty .badge{color:#f0ad4e;background-color:#fff}.o_button_toggle{border:1px solid #777;border-top-right-radius:9px;border-top-left-radius:9px;border-bottom-right-radius:9px;border-bottom-left-radius:9px;background:#eee;display:inline-block;height:18px;line-height:16px;font-size:16px;text-align:left;padding:0 0.5em 0 0;margin:0}.o_button_toggle i{color:#777;text-shadow:1px 0 2px rgba(0,0,0,0.25)}.o_button_toggle span{line-height:16px;vertical-align:top;font-size:60%;color:#777;text-transform:uppercase}.o_button_toggle.o_on{text-align:right;padding:0 0 0 0.5em}.o_button_toggle.o_on i{color:#3b678a;text-shadow:-1px 0 2px rgba(0,0,0,0.25)}.o_table_wrapper{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_table_wrapper.o_table_flexi .o_table_body{margin-top:20px}.o_table_wrapper.o_table_flexi .table{margin-top:20px}.o_table_wrapper.o_table_flexi .table td ul{margin:0}.o_table_wrapper.o_table_flexi.o_table_no_margin .table{margin:0}.o_table_wrapper.o_table_edit table tbody{border-top:solid #f90 4px;background-color:#fefbf6}.o_table_wrapper .o_table_search{max-width:50em}.o_table_wrapper .o_table_footer .o_table_pagination{text-align:center}.o_table_wrapper .o_table_rows_infos{float:left;padding-left:0;padding-right:20px;margin:20px 0}.o_table_wrapper .o_row_selected td{background-color:#dff0d8 !important}.o_table_wrapper .o_table{margin-bottom:0}.o_table_wrapper .o_marked{font-weight:bold}.o_table_wrapper .table{margin-bottom:0}.o_table_wrapper th a,.o_table_wrapper th a:hover{color:#333;text-decoration:none}.o_table_search a.btn.o_reset_quick_search{width:38px;margin-left:-38px;z-index:5;color:grey}@media (max-width: 767px){.o_table_wrapper .o_table_rows_infos{clear:both}}a.o_orderby,a.o_orderby:hover{color:#333;text-decoration:none}a.o_orderby.o_orderby_asc,a.o_orderby.o_orderby_desc,a.o_orderby:hover.o_orderby_asc,a.o_orderby:hover.o_orderby_desc{border-bottom:1px solid #ddd}.o_table_row_count{padding-top:6px;padding-bottom:6px;vertical-align:middle}.o_table_row_details td{background-color:white !important}.o_table_config{font-size:12px}.o_table_buttons{text-align:center}.o_table_buttons input{margin-right:1em}.o_table_buttons input:last-child{margin-right:0}.o_table_tools{margin-left:6px}.o_table_tools_indications{margin-left:10px;padding-top:3px;font-size:80%}.o_table_tools_indications a{color:#d9534f}.o_table_toolbar_left .o_table_tools_indications{text-align:right}.o_table_count{max-width:20em;float:left;padding:0 15px}.o_info .table-bordered td,o_note .table-bordered td,o_important .table-bordered td,o_warning .table-bordered td,o_error .table-bordered td{border-color:#333}.panel .o_table_layout{border-top:1px solid #ddd;padding-top:6px}.panel .o_table_count{padding:0 15px}#o_navbar_imclient .o_im_messages{float:left}#o_navbar_imclient #o_im_message,#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_summary{float:left;position:relative;padding:15px 3px}#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_message{padding-left:15px}#o_navbar_imclient #o_im_summary .badge{color:#fff;background-color:#777}#o_navbar_imclient #o_im_status li>a>span{display:inline}#o_navbar_imclient #o_im_status div.o_chelp_wrapper{right:0.5em}#o_navbar_imclient #o_im_message a:hover,#o_navbar_imclient #o_im_message a:focus{text-decoration:none}#o_navbar_imclient #o_im_message .o_icon_message{color:#d9534f}#o_navbar_imclient #o_im_message .o_icon_message:hover{color:#f4c37d}.o_im_load_history{margin-bottom:6px}.o_im_load_history .o_label{font-size:12px;padding-right:0.5em;line-height:1.5em;color:#777}.o_im_chat_history{height:170px;font-size:90%;border:1px solid #eee;margin:0 0 1em 0;overflow:scroll;overflow-x:auto}.o_im_message_group{padding:3px 3px 3px 40px;min-height:40px;position:relative;border-top:1px solid #eee;background:#fff}.o_im_message_group.o_odd{background:#F4F4F4}.o_im_message_group .o_portrait{position:absolute;top:3px;left:3px}.o_im_message_group .o_im_from{color:#777;font-size:12px;font-weight:bold}.o_im_message_group .o_im_from:hover{color:#5e5e5e}.o_im_message_group div.o_im_body{padding:3px 0 3px 0;font-size:12px}.o_im_message_group div.o_im_body .o_date{float:right;color:#777;font-size:9px}.o_groupchat_roster{font-size:12px}.o_groupchat_roster li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.o_groupchat_roster li.o_vip{color:#3c763d}.o_groupchat_roster li.o_anonymous{color:#31708f}.o_im_buddieslist .o_im_buddieslist_toggler .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_im_buddieslist ul{font-size:12px}.o_im_buddieslist ul ul{padding-left:1em}.o_im_buddieslist ul a{color:#3b678a}.o_im_buddieslist ul a:hover{color:#243f54}.o_flag{position:relative;top:1px;display:inline-block;line-height:1;width:16px;height:16px;background-repeat:no-repeat;background-position:0 100%}option.o_with_flag{padding-left:23px;min-height:16px;background-repeat:no-repeat;background-position:2px 50%}.o_flag_en{background-image:url("../light/images/flags/gb.png")}.o_flag_de{background-image:url("../light/images/flags/de.png")}.o_flag_fr{background-image:url("../light/images/flags/fr.png")}.o_flag_it{background-image:url("../light/images/flags/it.png")}.o_flag_es{background-image:url("../light/images/flags/es.png")}.o_flag_da{background-image:url("../light/images/flags/dk.png")}.o_flag_cs{background-image:url("../light/images/flags/cz.png")}.o_flag_el{background-image:url("../light/images/flags/gr.png")}.o_flag_ee{background-image:url("../light/images/flags/ee.png")}.o_flag_ru{background-image:url("../light/images/flags/ru.png")}.o_flag_pl{background-image:url("../light/images/flags/pl.png")}.o_flag_zh_CN{background-image:url("../light/images/flags/cn.png")}.o_flag_zh_TW{background-image:url("../light/images/flags/tw.png")}.o_flag_lt{background-image:url("../light/images/flags/lt.png")}.o_flag_fa{background-image:url("../light/images/flags/ir.png")}.o_flag_pt_PT{background-image:url("../light/images/flags/pt.png")}.o_flag_pt_BR{background-image:url("../light/images/flags/br.png")}.o_flag_tr{background-image:url("../light/images/flags/tr.png")}.o_flag_hu{background-image:url("../light/images/flags/hu.png")}.o_flag_sq{background-image:url("../light/images/flags/al.png")}.o_flag_in{background-image:url("../light/images/flags/id.png")}.o_flag_ar{background-image:url("../light/images/flags/eg.png")}.o_flag_rm{background-image:url("../light/images/flags/rm.png")}.o_flag_af{background-image:url("../light/images/flags/za.png")}.o_flag_vi{background-image:url("../light/images/flags/vn.png")}.o_flag_mn{background-image:url("../light/images/flags/mn.png")}.o_flag_iw{background-image:url("../light/images/flags/il.png")}.o_flag_ko{background-image:url("../light/images/flags/kr.png")}.o_flag_nl_NL{background-image:url("../light/images/flags/nl.png")}.o_flag_jp{background-image:url("../light/images/flags/jp.png")}.o_flag_nb_NO{background-image:url("../light/images/flags/no.png")}.o_flag_et_EE{background-image:url("../light/images/flags/ee.png")}.o_flag_bg{background-image:url("../light/images/flags/bg.png")}.o_flag_hi_IN_ASIA{background-image:url("../light/images/flags/in.png")}.o_flag_ar_LB{background-image:url("../light/images/flags/lb.png")}.o_flag_gl_ES{background-image:url("../light/images/flags/galicia.png")}.o_flag_sk{background-image:url("../light/images/flags/sk.png")}.o_rating .o_rating_title{font-size:12px}.o_rating .o_rating_items{white-space:nowrap}.o_rating .o_rating_items .o_icon{color:#f0ad4e}.o_rating .o_rating_items .o_icon:hover{color:#3b678a}.o_rating .o_rating_items .o_legend{margin-left:1em;font-size:12px;line-height:normal}.o_rating .o_rating_explanation{font-size:12px;color:#777}@media (max-width: 991px){.o_rating .o_rating_title,.o_rating .o_rating_explanation{display:none}}.o_comments .o_comment_wrapper .o_avatar{float:left;margin:0 1em 0 0}.o_comments .o_comment_wrapper .o_reply,.o_comments .o_comment_wrapper .o_delete{float:right}.o_comments .o_comment_wrapper .o_comment_wrapper{margin-left:16px}.o_ratings_and_comments .o_rating_wrapper{vertical-align:middle;display:inline-block}.o_ratings_and_comments a.o_comments{margin-left:10px;position:relative;top:0.1em}.d3chart .bar{shape-rendering:crispEdges}.d3chart .bar_default_light{fill:#598eb8}.d3chart .bar_default,.d3chart .bubble_default{fill:#3b678a}.d3chart .bar_default_dark{fill:#243f54}.d3chart .axis{font:12px sans-serif}.d3chart .axis path,.d3chart .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_forum_peekview .o_quote_wrapper,.o_forum_peekview .b_quote_wrapper{display:none}.o_forum_thread_sticky{font-weight:bold}.o_forum_switch{font-size:12px}.o_forum_toolbar{margin-bottom:6px;float:left}.o_forum_fulltextsearch{float:right}@media (max-width: 767px){.o_forum_fulltextsearch{float:left}.o_forum_toolbar .o_forum_tool span{display:none}}.o_forum{padding-bottom:50px}.o_forum .o_mark,.o_forum .o_ep_collect{float:right;position:relative;width:2em;margin-left:12px}.o_forum .o_portrait{float:left;margin-right:16px}.o_forum .o_portrait_avatar{width:70px;height:70px}.o_forum .o_newindicator{font-size:10px;color:#5cb85c;text-transform:uppercase;padding-left:1em;vertical-align:text-top;white-space:nowrap}.o_forum .o_author,.o_forum .o_date{display:inline-block;color:#777}.o_forum .o_date{font-size:12px}.o_forum .o_modified{color:#8a6d3b;font-size:12px;font-style:italic}.o_forum .o_forum_message{margin-bottom:20px;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_forum .o_forum_message_new{-webkit-box-shadow:0 1px 10px rgba(92,184,92,0.3);box-shadow:0 1px 10px rgba(92,184,92,0.3)}.o_forum .o_forum_message_highlight{-webkit-box-shadow:0 1px 10px rgba(240,173,78,0.5);box-shadow:0 1px 10px rgba(240,173,78,0.5)}.o_forum .o_forum_message_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:3px;border-top-left-radius:3px}.o_forum .o_forum_message_title{margin-top:0}.o_forum .o_forum_message_body{padding:10px 15px}.o_forum .o_forum_message_attachments{border-top:1px solid #ddd;padding:10px 15px;font-size:12px;background-color:#f7f7f9}.o_forum .o_attachment{position:relative;max-width:250px;vertical-align:top;margin:6px 12px 10px 0}.o_forum .o_attachment img{margin-top:6px}.o_forum .o_filename{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_forum .o_icon_enlarge{position:absolute;left:1em;bottom:1em;text-shadow:1px 1px 2px #fff, -1px 1px 2px #fff, 1px -1px 2px #fff, -1px -1px 2px #fff}@media (min-width: 768px) and (max-width: 991px){.o_forum .o_attachments{font-size:10px}.o_forum .o_attachment{max-width:200px}.o_forum .o_attachment img{max-width:150px}.o_forum .o_filename{max-width:200px}}@media (max-width: 767px){.o_forum .o_attachments{font-size:9px}.o_forum .o_attachment{max-width:150px}.o_forum .o_attachment img{max-width:100px}.o_forum .o_filename{max-width:150px}}.o_quote_wrapper,.b_quote_wrapper{position:relative;margin:10px 0}.o_quote_author,.b_quote_author{color:#777;font-size:12px}.o_quote_author:before,.b_quote_author:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";font-size:21px;padding-right:0.5em}blockquote.o_quote,blockquote.b_quote{color:#555;font-size:12px;margin-top:6px;padding:0 12px}a.o_chelp{display:inline-block;padding:1px 3px;text-align:center;vertical-align:middle;white-space:nowrap;font-size:10px;font-weight:normal;line-height:15px;color:#fff;background-color:#3b678a;border:1px solid #335a78;border-radius:2px;cursor:help;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}a.o_chelp:active,a.o_chelp:hover,a.o_chelp:focus{text-decoration:none;color:#fff;background-color:#2f526d;border-color:#213a4d}a.o_chelp i{font-size:10px !important}.o_chelp_wrapper{position:relative;float:right;display:inline-block;line-height:normal;margin-bottom:10px;margin-left:10px}.o_form_chelp,.o_chelp_tooltip{color:#737373}.o_draw_circle{border:4px solid #3b678a;border-radius:50%;position:absolute !important}.o_draw_rectangle{border:4px solid #3b678a;position:absolute !important}.o_iframedisplay iframe{width:100%}.o_singlepage .o_edit{position:absolute;top:10px;right:37px}.o_content_popup{position:absolute;top:10px;right:12px}.o_module_cp_wrapper .o_tools{position:absolute;top:10px;right:12px;text-align:right;vertical-align:middle}.o_module_cp_wrapper .o_tools .o_search_wrapper{display:inline-block;position:relative;top:-2px}ul.o_dropdown{margin:-5px -14px}ul.o_dropdown .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}ul.o_dropdown>li>a{display:block;padding:5px 14px;clear:both;font-weight:normal;line-height:1.42857;color:#333;background:#fff;white-space:nowrap}ul.o_dropdown>li>a:hover,ul.o_dropdown>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.badge.o_scorm_completed{background-color:#3c763d}.badge.o_scorm_failed{background-color:#a94442}.badge.o_scorm_incomplete{background-color:#8a6d3b}.badge.o_scorm_not_attempted{background:none}.o_bc_meta h5,.o_bc_meta .o_author,.o_bc_meta .o_comment,.tooltip h5,.tooltip .o_author,.tooltip .o_comment{color:#fff;margin:5px 0}.o_bc_meta .o_thumbnail,.tooltip .o_thumbnail{width:200px;height:200px;display:inline-block;background-color:#fff;margin:0 -5px}.o_htmleditor .o_metadata{border:1px solid #999;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:0;background:#eee;position:relative;top:1px;padding:5px}.o_htmleditor .o_metadata #o_filename{float:left}.o_htmleditor .o_metadata .o_lastmodified{float:right;color:#777;line-height:1.42857}.o_htmleditor #o_save{margin-top:10px;text-align:center}.o_htmleditor #o_save input{margin-right:1em}.o_htmleditor #o_save input:last-child{margin-right:0}.o_notifications_news_wrapper .o_notifications_news_subscription{margin:10px 0}.o_notifications_news_wrapper .o_notifications_news_subscription h4 i,.o_notifications_news_wrapper .o_notifications_news_subscription .o_cal .fc-header-title h2 i,.o_cal .fc-header-title .o_notifications_news_wrapper .o_notifications_news_subscription h2 i{display:none}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_context{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content{margin-left:1.5em;position:relative}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_icon{position:absolute;left:-1.5em;line-height:1.5em;top:0}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_date{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_url{margin-left:1.5em}.o_noti{margin:6px 0 6px 12px;float:right;color:#777}.o_noti .o_label{color:#777;cursor:help}@media (max-width: 767px){.o_noti .o_label span{display:none}}.panel-body .o_noti{margin:0}.o_portrait{display:inline-block}.o_portrait img{border-radius:50%;border:none;background-color:#eee;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.o_portrait_name{margin-top:6px}.o_block_inline .o_portait,.o_block_inline .o_portrait_name,.o_block_inline .o_portrait_image,.o_block_inline_right .o_portait,.o_block_inline_right .o_portrait_name,.o_block_inline_right .o_portrait_image,.o_block_inline_left .o_portait,.o_block_inline_left .o_portrait_name,.o_block_inline_left .o_portrait_image,.o_block_inline_both .o_portait,.o_block_inline_both .o_portrait_name,.o_block_inline_both .o_portrait_image{display:inline-block}.o_portrait_avatar,.o_portrait_dummy,.o_portrait_dummy_female_big,.o_portrait_dummy_male_big,.o_portrait_anonymous{width:100px;height:100px}.o_portrait_dummy{background-image:url("../light/images/portrait/dummy.png")}.o_portrait_dummy_female_big{background-image:url("../light/images/portrait/dummy_female_big.png")}.o_portrait_dummy_male_big{background-image:url("../light/images/portrait/dummy_male_big.png")}.o_portrait_anonymous{background-image:url("../light/images/portrait/anonymous.png")}.o_portrait_avatar_small,.o_portrait_dummy_small,.o_portrait_dummy_female_small,.o_portrait_dummy_male_small,.o_portrait_anonymous_small{width:30px;height:30px}.o_portrait_dummy_small{background-image:url("../light/images/portrait/dummy_small.png")}.o_portrait_dummy_female_small{background-image:url("../light/images/portrait/dummy_female_small.png")}.o_portrait_dummy_male_small{background-image:url("../light/images/portrait/dummy_male_small.png")}.o_portrait_anonymous_small{background-image:url("../light/images/portrait/anonymous_small.png")}.o_datecomp{position:relative;width:40px;height:52px;border:1px solid #555;margin-right:12px;text-align:center;vertical-align:middle}.o_datecomp div.o_year{position:absolute;left:0;width:100%;top:-20px;height:20px;line-height:20px;font-size:10px}.o_datecomp div.o_month{height:20px;line-height:20px;font-size:12px;background-color:#3b678a;color:#fff}.o_datecomp div.o_day{height:30px;line-height:30px;font-size:18px;border-top:1px solid #555;background-color:#fff;color:#333}.o_block_with_datecomp .o_head{position:relative;padding-left:52px}.o_block_with_datecomp .o_datecomp{position:absolute;top:0.2em;left:0}.o_block_with_datecomp .o_title{margin-top:0}.o_block_with_datecomp .o_meta{color:#777}.o_block_with_datecomp .o_content{border-left:5px solid #eee;padding:0 20px}.o_block_with_datecomp .o_block_footer{padding-left:25px}ul.o_certificates li{padding:5px 0}ul.o_certificates li a.o_sel_certificate_delete{padding-left:2em}.o_cal_toptoolbar{margin-bottom:6px}.o_cal_toptoolbar .o_cal_toptoolbar_help{float:left;margin-right:12px}.o_cal_toptoolbar .o_noti{margin-top:0}.o_feed .o_date,.o_feed .o_author{color:#777}.o_feed .o_subscription a{margin-right:1.5em}.o_feed .o_subscription .form-group{margin-bottom:5px}.o_feed .o_subscription .form-control{border:0;background:none;padding:0;height:auto;-webkit-box-shadow:none;box-shadow:none}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper{float:left}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_title,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_explanation,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_legend{display:none}.o_feed .o_blog_posts .o_ratings_and_comments a.o_comments span{display:none}.o_feed .o_content:before,.o_feed .o_content:after{content:" ";display:table}.o_feed .o_content:after{clear:both}.o_glossary .o_register{text-align:center}.o_glossary .o_meta{font-size:90%;color:#777;font-style:italic}.o_glossary dl dt:first-letter{font-size:21px}.o_glossary dl dt small{color:#777}.o_tm_glossary{border-bottom:1px dotted #666699 !important}.o_tm_yellow{background-color:#FFFF66}.o_tm_blue{background-color:#33FFFF}.o_tm_red{background-color:#FF3333}.o_tm_green{background-color:#99FF00}.o_coaching div#o_main_toolbar.o_toolbar{margin-top:0px}.o_eff_statement_details .o_user_infos{margin-top:20px}div.o_assessment_user_type_filter{display:inline-block;padding:0.5em;border:1px solid #eee;border-radius:4px}div.o_assessment_user_type_filter div.form-inline,div.o_assessment_user_type_filter div.o_navbar-form{margin-left:5px;display:inline-block}.vitero_iframe{width:100%;height:100%;border:none;min-height:60em}.o_reminder_rule{padding:5px 0}.o_segments.btn-group a span{overflow:hidden;display:block;text-overflow:ellipsis}.o_segments_content{margin-top:20px}.o_tabbed_pane .o_tabbed_pane_content{padding:20px 0 6px 0}.o_togglebox_wrapper .o_opener{position:relative;left:-0.5em}.o_togglebox_wrapper div.o_togglebox_content{position:relative;margin:0}.o_togglebox_wrapper div.o_togglebox_content .o_hide{position:absolute;bottom:0.5em;right:1em}.o_toolboxes ul{margin:0 0 1.5em 0;padding:0 0 0 1.5em}.o_qrcode{width:256px;height:256px}#o_ajax_busy{position:absolute;left:50%;top:20em;margin-left:-2.5em;height:5em;width:5em;color:#fff;z-index:1201;display:none}#o_body.o_ajax_busy{cursor:busy}.o_exception .o_visual{position:relative;background-image:url("../light/images/lion-500x333.jpg");filter:grayscale(50%);-webkit-filter:grayscale(50%);-moz-filter:grayscale(50%);-ms-filter:grayscale(50%);-o-filter:grayscale(50%);width:500px;height:333px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;margin:0 0 10px 16px}@media (min-width: 768px) and (max-width: 991px){.o_exception .o_visual{width:375px;height:249px}}@media (min-width: 500px) and (max-width: 767px){.o_exception .o_visual{width:250px;height:166px}}@media (max-width: 500px){.o_exception .o_visual{background-size:cover}}.o_exception .jumbotron h1,.o_exception .o_repo_details .o_lead h1,.o_repo_details .o_exception .o_lead h1{color:#d9534f}.o_mail_message .o_mail_meta{background:#fafafa;border:1px solid #eee;padding:5px 10px}.o_mail_message .o_mail_meta h3{margin-top:0}.o_mail_message .o_mail_date,.o_mail_message .o_mail_from,.o_mail_message .o_mail_recipients{color:#777;font-size:90%}.o_mail_message .o_mail_date .o_label,.o_mail_message .o_mail_from .o_label,.o_mail_message .o_mail_recipients .o_label{font-weight:bold;margin-right:1em}.o_mail_message .o_mail_date .o_group span,.o_mail_message .o_mail_from .o_group span,.o_mail_message .o_mail_recipients .o_group span{font-weight:bold}.o_mail_message .o_mail_date .o_group span:after,.o_mail_message .o_mail_from .o_group span:after,.o_mail_message .o_mail_recipients .o_group span:after{content:':';margin-right:0.5em}.o_mail_message .o_mail_date i,.o_mail_message .o_mail_from i,.o_mail_message .o_mail_recipients i{margin-left:1em}.o_mail_message .o_mail_date ul.list-inline,.o_mail_message .o_mail_from ul.list-inline,.o_mail_message .o_mail_recipients ul.list-inline{display:inline}.o_mail_message .o_mail_date ul.list-inline li,.o_mail_message .o_mail_from ul.list-inline li,.o_mail_message .o_mail_recipients ul.list-inline li{padding-right:0;padding-left:0}.o_mail_message .o_more{margin-left:1em}.o_mail_message .o_showAllLink{float:right;font-size:80%}.tt-input{width:400px}.tt-menu{width:400px;margin-top:6px;padding:0 0 0;color:#555;background-color:#fff;border:1px solid #66afe9;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 0 8px rgba(102,175,233,0.6);box-shadow:0 0 8px rgba(102,175,233,0.6)}.tt-suggestion{padding:6px 12px;font-size:14px;line-height:1.42857}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;background-color:#3b678a}.tt-suggestion p{margin:0}.tt-menu div.o_icon_error:before{content:''}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_highlight{font-weight:bold;background-color:#fcf8e3}.o_search_result_context{color:#3c763d}.o_search_result_excerpt{color:#555}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}@media (max-width: 767px){.o_search_result_details{display:none}}.wizard{border:1px solid #d4d4d4;border-radius:2px;background-color:#f9f9f9;position:relative;overflow:hidden;margin-bottom:15px}.wizard ul{list-style:none outside none;padding:0;margin:0;width:4000px}.wizard ul li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#333;font-size:16px;cursor:default}.wizard ul li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.wizard ul li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.wizard ul li.active{background:#f1f6fc;color:#333}.wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.wizard ul li .badge{margin-right:8px}.wizard ul li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.o_process{position:relative;padding-left:25px}.o_process .o_step{position:relative;height:auto;padding-top:10px;padding-left:30px;padding-bottom:10px}.o_process .o_bar{position:absolute;top:10px;left:8px;height:100%;border-left:4px solid #777}.o_process .o_bar:after{position:absolute;top:0;left:-10px;height:16px;width:16px;border:4px solid #777;border-radius:16px;background:#fff;content:" "}.o_process .o_title{margin-top:-1px;color:#777 !important}.o_process .o_title:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:-24px}.o_process .o_title a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";width:1em}.o_process .o_title a.collapsed:before{content:""}.o_process .o_step.o_active .o_bar,.o_process .o_step.o_active .o_bar:after{border-color:#3b678a}.o_process .o_step.o_active .o_title{color:#3b678a !important}.o_process .o_step.o_active .o_title:before{content:"";color:#3b678a}.o_process .o_step.o_done .o_bar,.o_process .o_step.o_done .o_bar:after{border-color:#4a82ae}.o_process .o_step.o_done .o_title{color:#4a82ae !important}.o_process .o_step.o_done .o_title:before{content:"";color:#5cb85c}.o_process .o_meta{color:#777;font-size:12px;margin-top:-0.5em}.o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5D5D5D !important}.o_cal_class.o_cal_orange{border-left:20px solid #ffc266}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#FFF !important}.o_cal_class.o_cal_green{border-left:20px solid #66c266}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#FFF !important}.o_cal_class.o_cal_blue{border-left:20px solid #4d6e9f}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5D5D5D !important}.o_cal_class.o_cal_yellow{border-left:20px solid #ffe066}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#FFF !important}.o_cal_class.o_cal_red{border-left:20px solid #c26666}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#FFF !important}.o_cal_class.o_cal_rebeccapurple{border-left:20px solid #639}.o_cal_fuchsia{background:#FF00FF;border-color:#dd00dd;color:#FFF}.o_cal_fuchsia .o_cal_wv_event_header{background:#FF00FF}.o_cal_fuchsia a{color:#FFF !important}.o_cal_class.o_cal_fuchsia{border-left:20px solid #f0f}.o_cal_olive{background:#808000;border-color:#636300;color:#FFF}.o_cal_olive .o_cal_wv_event_header{background:#808000}.o_cal_olive a{color:#FFF !important}.o_cal_class.o_cal_olive{border-left:20px solid olive}.o_cal_navy{background:#000080;border-color:#000057;color:#FFF}.o_cal_navy .o_cal_wv_event_header{background:#000080}.o_cal_navy a{color:#FFF !important}.o_cal_class.o_cal_navy{border-left:20px solid navy}.o_cal_maroon{background:#800000;border-color:#740000;color:#FFF}.o_cal_maroon .o_cal_wv_event_header{background:#800000}.o_cal_maroon a{color:#FFF !important}.o_cal_class.o_cal_maroon{border-left:20px solid maroon}.o_cal_lime{background:#00FF00;border-color:#00e200;color:#004d00}.o_cal_lime .o_cal_wv_event_header{background:#00FF00}.o_cal_lime a{color:#004d00 !important}.o_cal_class.o_cal_lime{border-left:20px solid lime}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#FFF !important}.o_cal_class.o_cal_grey{border-left:20px solid #DDDAAA}.o_sel_calendar_print_chooser{padding-right:4em}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_config_color{display:block;width:16px;height:16px;border-radius:8px}.o_cal_colorchooser_selected:before{content:""}#o_cal_colorchooser div{border:1px solid #3b678a;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_cal_embedded_course_container .o_content_popup{top:0}.fc-button{color:#333;background-color:#fff;border-color:#ccc}.fc-button:hover,.fc-button:focus,.fc-button.focus,.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{background-image:none}.fc-button.disabled,.fc-button.disabled:hover,.fc-button.disabled:focus,.fc-button.disabled.focus,.fc-button.disabled:active,.fc-button.disabled.active,.fc-button[disabled],.fc-button[disabled]:hover,.fc-button[disabled]:focus,.fc-button[disabled].focus,.fc-button[disabled]:active,.fc-button[disabled].active,fieldset[disabled] .fc-button,fieldset[disabled] .fc-button:hover,fieldset[disabled] .fc-button:focus,fieldset[disabled] .fc-button.focus,fieldset[disabled] .fc-button:active,fieldset[disabled] .fc-button.active{background-color:#fff;border-color:#ccc}.fc-button .badge{color:#fff;background-color:#333}.fc-button.fc-state-default{text-shadow:none}.fc-button.fc-state-active{color:#fff;background-color:#3b678a;border-color:#335a78}.fc-button.fc-state-active:hover,.fc-button.fc-state-active:focus,.fc-button.fc-state-active.focus,.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{background-image:none}.fc-button.fc-state-active.disabled,.fc-button.fc-state-active.disabled:hover,.fc-button.fc-state-active.disabled:focus,.fc-button.fc-state-active.disabled.focus,.fc-button.fc-state-active.disabled:active,.fc-button.fc-state-active.disabled.active,.fc-button.fc-state-active[disabled],.fc-button.fc-state-active[disabled]:hover,.fc-button.fc-state-active[disabled]:focus,.fc-button.fc-state-active[disabled].focus,.fc-button.fc-state-active[disabled]:active,.fc-button.fc-state-active[disabled].active,fieldset[disabled] .fc-button.fc-state-active,fieldset[disabled] .fc-button.fc-state-active:hover,fieldset[disabled] .fc-button.fc-state-active:focus,fieldset[disabled] .fc-button.fc-state-active.focus,fieldset[disabled] .fc-button.fc-state-active:active,fieldset[disabled] .fc-button.fc-state-active.active{background-color:#3b678a;border-color:#335a78}.fc-button.fc-state-active .badge{color:#3b678a;background-color:#fff}body.o_cal_print fieldset{border:none;margin-bottom:2em}body.o_cal_print legend{font-size:2em;font-weight:bold}body.o_cal_print legend span{display:block;font-size:14px;font-weight:normal}body.o_cal_print ul.o_cal_wv_list{list-style-type:none;padding:0}body.o_cal_print ul.o_cal_wv_list>li{page-break-inside:avoid;margin-bottom:2em}body.o_cal_print ul.o_cal_wv_list .o_cal_date{font-size:1.25em;font-weight:bold;padding:0.5em 0 0.5em 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events{list-style-type:none;padding:0.5em 0 0 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event{position:relative;left:30px;page-break-inside:avoid;clear:both;margin-bottom:1.5em;padding-right:30px}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_time{float:left;font-weight:bold;margin-right:1em}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject{font-weight:bold}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject p{margin:0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_location,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_description,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{clear:both}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{font-style:italic}body.o_cal_print .o_cal_class{position:absolute;left:-30px;width:20px}body.o_cal_print #o_cal_config legend{font-size:1.25em}body.o_cal_print #o_cal_config .o_cal_config_calendar{margin:0;padding:0}body.o_cal_print #o_cal_config .o_cal_config_calendar{position:relative;left:30px;float:none;padding-right:30px}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #3b678a;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{box-sizing:content-box;border-right:1px solid #3b678a}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #3b678a;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#5bc0de}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#3b678a;border-color:#335a78}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#3b678a;border-color:#335a78}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#3b678a;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#f0ad4e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#3b678a}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#2c4c66}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:normal;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;font-size:90%;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{border-right:37px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;width:37px;line-height:50px;color:#fff;background-color:#3b678a}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #3b678a;border-bottom:1px solid #3b678a}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#3b678a}.o_catalog .o_level .o_meta .o_title a:hover{color:#2c4c66}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels_list .o_sublevel{position:relative;border:1px solid #3b678a;margin-bottom:10px}.o_catalog .o_sublevels_list .o_sublevel .o_visual{height:75px;width:75px}.o_catalog .o_sublevels_list .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels_list .o_sublevel .o_title{margin:0}.o_catalog .o_sublevels_list .o_sublevel .o_meta{border-left:1px solid #3b678a;min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em;overflow:hidden}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_title{line-height:75px}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_desc{display:none}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a{font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a>i,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a>i,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a>i{display:none}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels{border:1px solid transparent}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels .o_meta{border-left:1px solid transparent}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #3b678a;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #3b678a;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#3b678a;font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#2c4c66}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (min-width: 768px){.o_catalog .o_sublevels_list,.o_catalog .o_sublevels_compact{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2;columns:2}}.o_repo_details{position:relative}.o_repo_details .o_lead{margin-bottom:10px}.o_repo_details .o_lead .o_author{margin-top:0.5em;margin-bottom:1em;font-size:120%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead .o_media.o_desc_empty{float:none;margin-left:0;margin-bottom:0}.o_repo_details .o_lead h1{font-size:37px}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start_wrapper{clear:both;margin:2em 0 -10px 0;text-align:right}.o_repo_details .o_start_wrapper .o_start_inner{display:inline-block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:400px;display:inline-block}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-left:0;float:none;text-align:center}.o_repo_details .o_start_wrapper{text-align:center}.o_repo_details .o_start_wrapper .o_start_inner{display:block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:100%;display:block}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}}.o_meta .o_closed{padding:2px 5px;margin:5px 0}.o_overview .o_closed{padding:12px 15px;margin:15px 0}.o_ac_configuration span.o_ac_infos{font-weight:normal;color:grey}tr.o_entry_closed,tr.o_entry_closed td,tr.o_entry_closed td span,tr.o_entry_unpublished,tr.o_entry_unpublished td,tr.o_entry_unpublished td span{text-decoration:line-through}.badge.o_midpub{background-color:#3c763d}.badge.o_midwarn{background-color:#8a6d3b}.badge.o_midlock{background-color:#31708f}.badge.o_miderr{background-color:#a94442}.badge.o_middel{background-color:#777}.o_course_editor_legend .badge{font-size:80%}.o_course_editor_legend .badge:before{content:none}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#333}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#66512c}.o_failed th{color:#333}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#333}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_course_run.o_titled_wrapper>h2 i{display:none}.o_course_run .o_cal_toptoolbar{margin-right:26px}.o_course_run .o_titled_wrapper .o_cal_toptoolbar{margin-right:0px}.o_tree.o_course_menu div.o_tree_l0>a:first-child{background-color:none}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_ll_container h5{margin-bottom:5px}.o_ll_container h5 a.o_desc{color:#3b678a}.o_ll_container h5 a.o_desc small{display:none}.o_ll_container h5 a.o_desc:hover{color:#2c4c66;text-decoration:none}.o_ll_container h5 a.o_desc:hover small{color:#5e5e5e;display:inline}.o_ll_container div.o_comment{color:#777}.o_cmembers .o_cmember{margin:12px 0}.o_cmembers .o_cmember .o_portrait{margin-right:10px}.o_cmembers .o_cmember .o_portrait img{width:50px;height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper{line-height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_cmembers .o_cmember a.o_mail{display:none}.o_cmembers .o_cmember:hover a.o_mail{display:inline}.o_cmembers_print{color:#000}.o_cmembers_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_cmembers_print #o_print_brand img{width:100%}.o_cmembers_print .o_portrait{width:100px;height:100px;position:relative}.o_cmembers_print .o_portrait img{border-radius:0px;margin:auto;display:block;max-width:100px;max-height:100px}.o_cmembers_print .o_cmember{padding-left:0px;padding-right:15px;margin-bottom:20px}.o_cmembers_print .o_cmember .o_cmember_info_wrapper{word-wrap:break-word}.o_cmembers_print .o_cmember .o_prop.o_zipCode{float:left;padding-right:0.5em}.o_cmembers_print h1{font-size:18pt;color:#000}.o_cmembers_print h3{font-size:14pt;margin-top:5px;font-weight:normal;color:#000}.o_cmembers_print h4,.o_cmembers_print .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_cmembers_print h2{font-size:11pt;font-weight:strong;color:#000;padding-bottom:10px;border-bottom:1px solid #eee}.o_cmembers_print .o_cmember_info_wrapper{font-size:7pt;color:#000}.o_cmembers_print .o_cmember_info_wrapper strong{font-size:8pt}.tag.label.label-info{margin-right:3px}.input-group.o_tag_inputgroup .form-control{height:auto}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#3b678a}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #3b678a}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #3b678a !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid grey}.o_gap_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}div.hotspotInteraction{overflow-x:auto}#itemBody .extendedTextInteraction{margin:15px 0}#itemBody .extendedTextInteraction textarea{resize:vertical !important}#itemBody .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}.o_qti_hotspot_label{padding-left:48%}.o_info.o_assessmentsection_rubrics{margin:0 0 0.5em 0}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d9534f;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d9534f}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d9534f}.o_assessmentitem div.orderInteraction div.box{background-color:#eee}.o_assessmentitem div.orderInteraction div.box span.info{margin-left:1em;color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction div.box.horizontal{margin:0.5em 0;width:100%}.o_assessmentitem div.orderInteraction ul.horizontal{float:left;margin:0 1em;padding:1em 0;width:100%}.o_assessmentitem div.orderInteraction div.box.vertical{margin:1em 0;width:49%}.o_assessmentitem div.orderInteraction div.box.vertical.source{float:left}.o_assessmentitem div.orderInteraction div.box.vertical.target{float:right}.o_assessmentitem div.orderInteraction ul.vertical{margin:0 1em;padding:1em 0;width:auto}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0;width:60%}.o_assessmentitem div.orderInteraction ul li{margin:0 3px 3px 3px;padding:0.4em;padding-left:1.5em;font-size:1em}.o_assessmentitem div.orderInteraction ul li span.ui-icon{position:absolute;margin-left:-1.3em}.o_assessmentitem div.orderInteraction ul.horizontal li{float:left;width:auto}.o_assessmentitem div.orderInteraction br{clear:both}.o_assessmentitem .hottext{font-weight:bold}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em}.o_assessmentitem_wrapper #itemBody{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type,.o_assessmentitem_wrapper .modalFeedback .o_cal .fc-header-title h2:first-of-type,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback h2:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4,.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h2{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d9534f}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#5cb85c}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f0ad4e}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#5bc0de;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}#itemBody{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#5cb85c}.matchInteraction div.bar_red{background-color:#d9534f}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#5cb85c}.o_assessmentitem div.failure{background-color:#f0ad4e}.o_assessmentitem div.error{background-color:#d9534f}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:10px;border-bottom:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#3b678a;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#243f54;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f0ad4e}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#5bc0de}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}div.o_wiki_wrapper a.wikiimg{text-decoration:none;color:inherit;font-weight:inherit}div.o_wiki_wrapper div.imgcaption{padding:0.3em 0em 0.2em 0.3em}div.o_wiki_wrapper div.imgleft{clear:left;float:left;margin:0.3em 0.3em 0.3em 0em}div.o_wiki_wrapper div.imgright{clear:right;float:right;margin:0.3em 0em 0.3em 0.3em}div.o_wiki_wrapper div.imgcenter{clear:both;overflow:hidden;text-align:center;margin:0.3em 0em 0.3em 0em}div.o_wiki_wrapper div.imgthumb{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper table.gallery{border:1px solid #ccc;margin:2px;padding:2px;background-color:white}div.o_wiki_wrapper table.gallery tr{vertical-align:middle}div.o_wiki_wrapper table.gallery td{background-color:#f9f9f9;border:solid 2px white;text-align:center;vertical-align:middle;width:150px}div.o_wiki_wrapper img.gallery{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper a.edit{font-style:italic;color:red}div.o_wiki_wrapper a.externallink:before{padding-right:2px}div.o_wiki_wrapper a.externallink:before:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}.o_ep_icon_map:before{content:""}.o_ep_icon_collection:before{content:""}.o_ep_icon_page:before{content:""}.o_ep_icon_struct:before{content:""}.o_ep_icon_liveblog:before{content:"ï‚¡"}.o_artefact_closed:before{content:""}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.o_eportfolio_page .o_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.panel-footer .o_ep_options{display:inline-block}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ECF69A;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99E44D;background:#99E44D -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99E44D), to(#CBF1A5));background:#99E44D -moz-linear-gradient(43% 71% 101deg, #CBF1A5, #99E44D);background:#99E44D -o-linear-gradient(#99E44D, #CBF1A5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99E44D', EndColorStr='#CBF1A5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#DFF0C1;background:#DFF0C1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DFF0C1), to(#A0D346));background:#DFF0C1 -moz-linear-gradient(43% 71% 101deg, #A0D346, #DFF0C1);background:#DFF0C1 -o-linear-gradient(#DFF0C1, #A0D346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DFF0C1', EndColorStr='#A0D346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#D7DBB5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#FFBA71;background:#FFBA71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFBA71), to(#FFBA99));background:#FFBA71 -moz-linear-gradient(43% 71% 101deg, #FFBA99, #FFBA71);background:#FFBA71 -o-linear-gradient(#FFBA71, #FFBA99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFBA71', EndColorStr='#FFBA99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#FF9772;background:#FF9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FF9772), to(#FF9780));background:#FF9772 -moz-linear-gradient(43% 71% 101deg, #FF9780, #FF9772);background:#FF9772 -o-linear-gradient(#FF9772, #FF9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF9772', EndColorStr='#FF9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#E8AFBB;background:#E8AFBB -webkit-gradient(linear, 37% 20%, 53% 100%, from(#E8AFBB), to(#E8AFA0));background:#E8AFBB -moz-linear-gradient(43% 71% 101deg, #E8AFA0, #E8AFBB);background:#E8AFBB -o-linear-gradient(#E8AFBB, #E8AFA0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#E8AFBB', EndColorStr='#E8AFA0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#FFA800;background:#FFA800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFA800), to(#FFAF00));background:#FFA800 -moz-linear-gradient(43% 71% 101deg, #FFAF00, #FFA800);background:#FFA800 -o-linear-gradient(#FFA800, #FFAF00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFA800', EndColorStr='#FFAF00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00D2F8;background:#00D2F8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00D2F8), to(#4A9EAD));background:#00D2F8 -moz-linear-gradient(43% 71% 101deg, #4A9EAD, #00D2F8);background:#00D2F8 -o-linear-gradient(#00D2F8, #4A9EAD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00D2F8', EndColorStr='#4A9EAD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#C4F6FF;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#B3E2F7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#DEE7F7;background:#DEE7F7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DEE7F7), to(#C1E9FD));background:#DEE7F7 -moz-linear-gradient(43% 71% 101deg, #C1E9FD, #DEE7F7);background:#DEE7F7 -o-linear-gradient(#DEE7F7, #C1E9FD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DEE7F7', EndColorStr='#C1E9FD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_portfolio div#o_main_toolbar.o_toolbar{margin-top:0px}.o_section_lead,.o_page_lead,.o_assignment_lead{padding:10px 10px;margin-bottom:10px;background-color:#f2f2f2;border-radius:3px;border:1px #d9d9d9 solid}.o_section_lead.o_assignment_2_instantiate{border-radius:3px 3px 0px 0px;border-bottom:none;padding-bottom:1px;margin-bottom:0px}.o_assignment_2_instantiate{padding:10px 10px 0px 10px;background-color:#f2f2f2;border-left:1px #d9d9d9 solid;border-right:1px #d9d9d9 solid}.o_assignment_2_instantiate.last{padding-bottom:10px;border-bottom:1px #d9d9d9 solid;border-radius:0px 0px 3px 3px}.o_page_lead{padding:20px}.o_page_lead .o_page_summary{font-size:18px}.o_page_lead .o_media.o_media_right,.o_page_lead .o_media.o_media_right_large{float:right;margin-left:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_left_large{float:left;margin-right:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_right{max-height:200px;max-width:50%}.o_page_lead .o_media.o_media_left img,.o_page_lead .o_media.o_media_right img{max-height:200px}.o_page_lead .o_media.o_media_right_large,.o_page_lead .o_media.o_media_left_large{max-height:300px;max-width:75%}.o_page_lead .o_media.o_media_right_large img,.o_page_lead .o_media.o_media_left_large img{max-height:300px}.o_page_lead .o_media.o_desc_empty{max-height:300px;text-align:center}.o_page_lead .o_media.o_desc_empty img{max-height:300px}.o_page_lead .o_media img{border-radius:3px;border:1px #d9d9d9 solid;background:#fff}.o_page_lead .o_portfolio_status_block{border-top:1px solid #d9d9d9;padding-top:1em;margin-bottom:-1em}.o_page_lead .o_portfolio_status{display:inline-block;padding-right:2em}.o_page_lead.o_block_imagebg .o_portfolio_status{padding:2px;background-color:rgba(255,255,255,0.8)}.o_page_assignment{font-size:12px}.o_page_assignment.o_togglebox_wrapper div.o_togglebox_content{margin:10px 0 20px 0;padding:20px;border-left:3px solid #d9534f;background-color:#f2dede}.o_page_assignment .o_page_assignement_info{position:relative;left:-1em}.o_portfolio_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry{position:relative;display:inline-block;height:230px;width:400px;vertical-align:top;margin-right:10px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry ul{padding-left:2em}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul{margin:0;padding:0;list-style-type:none}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul li{padding:2px}.o_binder.o_portfolio_assignments .panel-heading,.o_binder.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.panel-default.o_portfolio_assignments .panel-heading,.panel-default.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_meta_wrapper,.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_summary{padding-left:10px}.o_portfolio_page_summary .o_media.o_media_right,.o_portfolio_page_summary .o_media.o_media_right_large{float:right;margin-left:0.5em;margin-bottom:0.5em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_left_large{float:left;margin-right:0.5em;margin-bottom:0.5em}.o_rendertype_classic .o_pf_page,.o_rendertype_classic .o_pf_assignment{padding-left:1em}.o_portfolio_timeline .o_timeline_up{text-align:center}.o_portfolio_timeline .o_timeline_down{text-align:center}.o_portfolio_timeline .axis path,.o_portfolio_timeline .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_portfolio_timeline .x.axis line,.o_portfolio_timeline .x.axis path{display:none}.o_portfolio_timeline path.o_timeline_curve{fill:none;stroke:#ccc;shape-rendering:crispEdges}.o_portfolio_timeline .y.axis .tick line,.o_portfolio_timeline .y.axis path.domain{stroke:#ddd}.o_portfolio_timeline text{fill:#888;stroke:none;font-size:10px}.o_portfolio_timeline .dot.o_pf_status_draft{fill:#f0ad4e}.o_portfolio_timeline .dot.o_pf_status_published{fill:#3b678a}.o_portfolio_timeline .dot.o_pf_status_inrevision{fill:#d9534f}.o_portfolio_timeline .dot.o_pf_status_closed{fill:#5cb85c}.o_portfolio_timeline .dot.o_pf_status_deleted{fill:#000}.o_portfolio_title_help_helper{display:inline-block;float:right;position:relative;top:1em;right:1em}.o_pf_comments{margin-top:2em}.o_pf_content .o_cit,.o_pf_content .o_file{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_forum{border:1px #f8f8f8 solid;padding:10px;border-radius:10px}.o_pf_content .o_image,.o_pf_content .o_video{padding:10px;text-align:center;width:100%}.o_pf_content .o_image img,.o_pf_content .o_video img{border:1px #f8f8f8 solid;border-radius:10px}.o_pf_content_editor .o_toolbar{border:none}.o_pf_content_editor .o_page_part{border:2px solid transparent}.o_pf_content_editor .o_page_part:hover{border:2px dotted #6b9ac0}.o_pf_content_editor .o_page_fragment_edit{position:relative}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above{height:25px;width:100%;background:#6b9ac0;position:absolute;z-index:3;left:0;top:-25px;box-shadow:3px -8px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_add_above{position:absolute;left:0;top:-25px;height:25px;border-left:2px dashed #6b9ac0;border-top:2px dashed #6b9ac0;border-right:2px dashed #6b9ac0;border-radius:10px 10px 0 0;box-shadow:0 -5px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_sel_add_element_above{display:inline-block;padding:5px 5px 0 5px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above{padding-right:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above .o_page_type{display:none}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a{float:right;color:#fff;padding-right:1em}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd{position:absolute;z-index:4;top:0;right:0;width:25px;height:100%;background:#6b9ac0}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a{position:absolute;display:inline-block;width:25px;height:25px;line-height:25px;text-align:center;vertical-align:middle;color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_up_element{z-index:4;top:-25px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_down_element{bottom:0}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit{padding-right:25px;border:2px solid #6b9ac0;box-shadow:5px 5px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit:hover{border:2px solid #6b9ac0}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar{position:absolute;z-index:5;left:5px;top:-25px;display:inline-block;height:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a{color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_title .o_page_edit_toolbar li{font-weight:bold}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_richtext_mce textarea{border:0}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below{position:absolute;z-index:3;left:0;bottom:-25px;height:25px;border-left:2px dashed #6b9ac0;border-bottom:2px dashed #6b9ac0;border-right:2px dashed #6b9ac0;border-radius:0 0 10px 10px;box-shadow:3px 8px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below .o_sel_add_element_below{display:inline-block;padding:0 5px 5px 5px}.o_pf_content_editor .o_pf_add_contents{margin-top:30px}.o_portfolio_add_callout a span{display:none}.o_portfolio_add_callout ul.list-inline{margin-bottom:0}.o_portfolio_image_options{clear:both;width:300px;padding:5px}.o_binder_page_listing .o_portfolio_page_links{background-color:#f8f8f8;border-radius:4px}.o_binder_page_listing .o_portfolio_page_links .o_portfolio_comment{float:right}.o_portfolio_toc{padding-bottom:6em}.o_portfolio_toc .o_portfolio_section_meta{font-size:80%;color:#777;position:relative;top:-15px}.o_portfolio_toc .o_section{position:relative}.o_portfolio_toc .o_section .o_header_with_buttons h4,.o_portfolio_toc .o_section .o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_portfolio_toc .o_section .o_header_with_buttons h2{padding-right:0.5em}.o_portfolio_toc .o_section_actions{position:absolute;top:0;right:0}.o_portfolio_toc .o_section_actions .o_section_move_up_and_down{display:inline-block}.o_portfolio_toc .o_section_actions .o_section_dropdown{display:inline-block;position:relative;top:-0.5em;padding-left:0.5em}.o_portfolio_toc ul>li>ul{padding-left:1.5em}.o_portfolio_content .o_portfolio_toc.o_portfolio_toc_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_page_meta_wrapper{background-position:left top;background-repeat:no-repeat}.o_portfolio_rights table .o_portfolio_section td:first-child{padding-left:1.5em}.o_portfolio_rights table .o_portfolio_page td:first-child{padding-left:2.5em}.o_portfolio_publication table{padding-bottom:10px}.o_portfolio_publication table td{padding:5px 5px 5px 0}.o_portfolio_publication .o_portfolio_ac{font-size:90%}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(2){width:200px;white-space:nowrap}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(3){width:40px;white-space:nowrap}.o_portfolio_publication ul ul{margin-left:2em;margin-bottom:5px}.o_portfolio_publication ul li{background:#fbfbfb;padding:3px;margin-bottom:2px}.o_portfolio_publication ul li li{background:#f2f2f2}.o_portfolio_publication ul li li li{background:#eee}.o_portfolio_publication ul li li .table{margin-bottom:0px}@media (max-width: 767px){.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:100%;float:none}.o_portfolio_content .o_sel_timeline_off,.o_portfolio_content .o_sel_timeline_on,.o_portfolio_content .o_portfolio_timeline{display:none}.o_portfolio_content .o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline{width:100%;float:none}}.o_portfolio_media_browser .o_portfolio_medias{position:relative;margin-bottom:20px;margin-top:20px}.o_portfolio_media_browser .o_portfolio_medias:before,.o_portfolio_media_browser .o_portfolio_medias:after{content:" ";display:table}.o_portfolio_media_browser .o_portfolio_medias:after{clear:both}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media:last-child{margin-right:0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{border:1px solid #3b678a;position:relative;height:180px;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon span.o_visual_not_available{background-image:none}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:6em;text-align:center;color:#eee;line-height:140px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #3b678a;border-top:0;background-color:rgba(255,255,255,0.8)}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a{display:block;color:#3b678a;font-family:inherit;font-weight:inherit}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover{color:#2c4c66}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 10px 10px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}@media (max-width: 767px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 1px 1px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}.o_evaluation_form .o_evaluation_step_labels{margin-bottom:8px}.o_evaluation_form .o_evaluation_step_labels div,.o_evaluation_form .o_evaluation_step_labels span{display:inline-block;text-align:center}.o_evaluation_form .o_slider{margin-bottom:8px}.o_evaluation_form .o_slider.hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels{position:relative}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:first-child{position:absolute;left:0px;text-align:left}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div{display:inline-block;text-align:center}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:last-child{position:absolute;right:0px;text-align:right}.o_evaluation_form .o_evaluation_discrete_radio .o_slider input[type='radio']{padding:0;margin:0;position:relative}.o_evaluation_form .o_evaluation_discrete_radio .o_slider label{padding:0;margin:0;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps div.radio{display:inline-block;text-align:center}.o_evaluation_form .o_slider .ui-slider.ui-slider-horizontal.ui-widget-content{margin-top:0.3em}.o_evaluation_form .o_evaluation_left_label{text-align:right}.o_evaluation_form .o_evaluation_right_label{text-align:left}.o_evaluation_form .o_evaluation_textinput .o_evaluation_legend{padding-left:0.5em;margin-bottom:0.5em}@media (max-width: 768px){.o_evaluation_form .o_evaluation_left_label{text-align:left}.o_evaluation_form .o_evaluation_right_label{text-align:right}}.o_slider_overview{width:100%;height:20px;position:relative}.o_slider_overview .o_slider_overview_line{top:5px;left:0px;position:absolute;width:100%;height:11px;border:1px solid #999;border-radius:4px}.o_slider_overview .o_slider_overview_point{position:absolute;width:10px;height:10px;background-color:#3b678a}.o_evaluation_editor_form{margin:10px 10px 0 10px}.o_evaluation_editor_form .o_slider_editor{margin-top:10px;position:relative}.o_evaluation_editor_form .o_evaluation_step_labels{display:inline-block}.o_evaluation_editor_form .o_evaluation_step_labels input{width:100%}.o_evaluation_editor_form .o_slider_editor_delete{padding-right:48px}.o_evaluation_editor_form .o_slider_editor_delete .o_slider_editor_delete_button{position:absolute;right:15px}.o_cit{position:relative;margin:10px 0}.o_cit blockquote.o_quote{color:#555;font-size:18px;margin-top:6px;padding:0 12px}.o_cit blockquote.o_quote p:last-child:after{content:'1)';top:-0.5em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}.o_cit .o_cit_bibinfo{font-size:90%;margin-left:1em;position:relative}.o_cit .o_cit_bibinfo>div:first-child:before{content:'1)';position:absolute;top:0.5em;left:-1em;font-size:75%;line-height:0;vertical-align:baseline}.o_cit .title,.o_cit .url,.o_cit .authors,.o_cit .pages,.o_cit .date,.o_cit .dateAdded,.o_cit .place,.o_cit .institution,.o_cit .issue,.o_cit .publisher,.o_cit .publicationTitle,.o_cit .edition,.o_cit .series,.o_cit .volume{margin-right:0.5em}.o_cit .title{font-style:italic}.o_cit .publicationTitle{color:black}.o_cit .links{padding-left:2em}.o_cit .notes{padding-left:2em;color:grey}.o_cit .note{font-style:italic}.o_cit .note p:first-child{margin-top:0}.o_cit .note p:first-child{margin-bottom:0}.o_cit .listing.web .item{padding-left:0;text-indent:0}.o_cit .listing.web .title{display:block;font-weight:bold;font-style:normal}.o_cit .listing.web .publicationTitle{display:block;font-style:italic}.o_cit .listing.web .url{display:block}.o_cit .listing.web .links{padding-left:0}.o_cit .listing.web .notes{padding-left:0}.o_cit .general-info{border-top:1px solid #eee;padding-top:30px;margin-top:30px}.o_cit .copyright{display:none}@media print{.cit{background-image:none;padding-top:0;max-width:100%}.cit #styles,.cit #refreshContainer{display:none}.cit #general-info a:after{content:" (" attr(href) ") ";font-size:0.8em;font-weight:normal}.cit #copyright{display:block;margin-top:30px}}.o_video_poster{position:relative;display:inline-block;width:400px;max-width:100%;height:225px;background-size:cover;background-repeat:no-repeat;border:1px solid #eee}.o_video_poster_select{text-align:center}.o_video_poster_select .o_video_poster{margin:5px}.o_video_poster_select .o_video_poster a{position:absolute;left:0;top:0;width:100%;height:100%}.o_video_poster_select .o_video_poster a span{position:absolute;bottom:0;width:100%;display:block;line-height:3em;background:#f8f8f8;opacity:0.8}.o_video_poster_select .o_video_poster a:hover{border:1px solid #bbb}.o_video_poster_select .o_video_poster a:hover span{opacity:0.9}.o_video_peekview{text-align:center}.o_video_listing .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_video_listing .o_video_entry{position:relative;display:inline-block;height:230px;width:250px;vertical-align:top;margin-right:10px}.o_video_listing .o_video_poster{width:250px;max-width:100%;height:140px;border:1px solid #eee}.o_video_listing .o_timecode{position:absolute;bottom:2px;right:3px;padding:3px 4px;background:#333;color:#fff;font-size:12px;line-height:12px}.o_video_listing .o_meta{padding:2px;font-size:11px}.o_video_listing .o_meta h5{font-size:14px;margin-top:0;margin-bottom:5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_video_listing .o_date{margin-left:10px;display:inline-block}.o_video_listing .o_date:before{content:'\002022';margin-right:10px;display:inline-block}.o_video_run .o_author{margin-top:0.5em;margin-bottom:1em;line-height:normal;font-size:90%;color:#3c763d}.o_video_run .o_ratings_and_comments{margin-top:2em;border-top:1px solid #eee;padding-top:1em}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector{visibility:visible !important;width:160px}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label{font-weight:normal;width:140px}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label:hover{color:#eee}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label .type{display:none}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input{visibility:hidden;margin:0;width:0}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input:checked+label{color:#d9534f}.mejs-controls .mejs-captions-button .mejs-captions-selector{right:-26px}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label{font-weight:normal}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label:hover{color:#eee}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label .type{display:none}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input{visibility:hidden;margin:0;width:0}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input:checked+label{color:#d9534f}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label{font-weight:normal;font-size:10px}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title,.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.o_userbulk_changedcell{font-style:italic;font-weight:bold}body.o_dmz{background:transparent}body.o_dmz #o_bg{position:absolute;top:0;left:0;width:100%;height:100%;border-top:50px solid transparent;border-bottom:70px solid transparent;background:url("images/learn-bg.jpg");background-size:cover;background-position:center center;background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=1 )}body.o_dmz #o_bg:after{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to right, rgba(255,255,255,0.1) 0.2%, rgba(255,255,255,0.6) 60%, rgba(255,255,255,0.8) 100%);background-size:cover;background-position:center center;background-repeat:no-repeat}body.o_dmz #o_toplink{display:none}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-bottom:20px;padding-left:10%;padding-right:10%;text-align:right}.o_login .o_login_intro{padding-left:10%}.o_login .o_login_intro h1{margin-bottom:40px;color:#3b678a}.o_login .o_login_intro .lead{color:#333}.o_login .o_login_intro .lead h1,.o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h3,.o_login .o_login_intro .lead h4,.o_login .o_login_intro .lead .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h5{margin-bottom:20px;color:#3b678a}.o_login .o_login_messages,.o_login .o_login_box{display:inline-block;width:400px;text-align:left}.o_login .o_login_messages .o_infomessage_wrapper{background:rgba(255,255,255,0.5);border:1px solid transparent;border-radius:4px;padding:6px 12px}.o_login .o_login_messages .o_infomessage_wrapper .o_info,.o_login .o_login_messages .o_infomessage_wrapper .o_warning,.o_login .o_login_messages .o_infomessage_wrapper .o_note{margin:0}.o_login .o_login_box{padding-top:10px}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_providers .o_icon_provider_olat{font-size:1em}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_form .o_form .o_desc{margin:0 0 30px 0;padding:0;border-left:0;background-color:transparent}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#5bc0de;border-color:#46b8da;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register.focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled.focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled].focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register.focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#5bc0de;border-color:#46b8da}.o_login .o_login_register .badge{color:#5bc0de;background-color:#fff}.o_login .o_login_register small{font-size:14px}.o_login .o_login_social{position:relative;padding:10px 12px}.o_login .o_login_social li{padding:10px 12px}.o_login .o_login_social li>a{display:block;line-height:2em;text-align:center;font-size:18px;border-radius:4px;padding:10px 12px}.o_login .o_login_social .btn-default.o_sel_auth_facebook{color:#fff;background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{color:#fff;background-color:#37538d;border-color:#2d4374}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled],.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook .badge{color:#4568b2;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_twitter{color:#fff;background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{color:#fff;background-color:#00b4f8;border-color:#009ad4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled],.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter .badge{color:#2cc5ff;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_google{color:#fff;background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.focus,.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{color:#fff;background-color:#d83825;border-color:#ba3120}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google.disabled,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled],.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google .badge{color:#e15f4f;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{color:#fff;background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{color:#fff;background-color:#015e8a;border-color:#014667}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled],.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin .badge{color:#0181bd;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_adfs{color:#fff;background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled],.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_adfs .badge{color:#3b678a;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect{color:#fff;background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled],.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active{background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect .badge{color:#3b678a;background-color:#fff}@media (max-width: 767px){body.o_dmz #o_bg{background:none;display:none}.o_login{padding:0}.o_login .o_login_intro{padding:0;text-align:left}.o_login .o_login_box_wrapper{text-align:center;padding:0}.o_login .o_login_box{padding-left:0;padding-right:0}.o_login .o_login_box .o_login_providers,.o_login .o_login_box .o_login_provider{-webkit-box-shadow:none;box-shadow:none}.o_login .o_login_messages,.o_login .o_login_box{width:100%;display:block}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px;margin-top:10px}.o_portlet{position:relative;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library_icon:before{content:""}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.o_library_overview .o_library_newest_files ul li{float:left;margin-right:15px}.o_library_item{margin-bottom:10px;position:relative}.o_library_item .o_library_visual,.o_library_item .o_library_extra,.o_library_item .o_library_meta{margin-top:15px}.o_library_item .o_library_visual{float:left;background-color:#fff;border-radius:4px;border:1px solid #ddd}.o_library_item .o_library_visual .o_thumbnail_available,.o_library_item .o_library_visual .o_thumbnail_unavailable{background-size:146px auto;width:150px !important;height:150px !important;background-repeat:no-repeat;background-position:50% 50%}.o_library_item .o_library_visual .o_thumbnail_available:before,.o_library_item .o_library_visual .o_thumbnail_unavailable:before{content:none}.o_library_item .o_library_visual .o_thumbnail_available{background-size:146px auto}.o_library_item .o_library_visual .o_thumbnail_unavailable{display:none}.o_library_item .o_library_extra{float:right;width:200px}.o_library_item .o_library_meta{clear:both}.o_library_item .o_library_meta .o_library_desc{padding-bottom:10px}.o_library_item .o_library_meta small{display:block;word-wrap:break-word}.o_library_item h4,.o_library_item .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal}.o_library_item .btn{display:block;margin-bottom:0.5em}.o_library_item .o_comments{display:inline-block}.o_library_item .table{table-layout:fixed;word-wrap:break-word;margin-bottom:0}.o_library_item p.o_library_show_more{text-align:right;margin:0;padding-top:20px}.o_library_item .o_library_more{padding-top:20px;display:none}.o_library_folder{margin-top:-20px}.o_library .o_ratings_and_comments .o_rating_title,.o_library .o_ratings_and_comments .o_rating_explanation{display:none}@media (min-width: 768px){.o_library_item .o_library_meta{clear:none;margin-left:150px;margin-right:200px;padding:0 10px}.o_library_item .o_library_more{display:none}.o_library_item .o_library_more table tbody{vertical-align:top}.o_library_item .o_library_more table tr,.o_library_item .o_library_more table th,.o_library_item .o_library_more table td{display:inline-block}.o_library_item .o_library_more table tr{width:49%}.o_library_item .o_library_more table th{width:30%}.o_library_item .o_library_more table td{width:70%}}.o_library_item_compact .o_library_extra{width:auto}.o_library_item_compact .o_library_meta{padding:0 10px 0 0;margin:0;overflow:hidden}.o_library_item_compact .btn{display:inline-block}.o_library_item_compact h4,.o_library_item_compact .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item_compact h2{overflow:hidden;margin-right:70px}.o_library_item_compact h4 a,.o_library_item_compact .o_cal .fc-header-title h2 a,.o_cal .fc-header-title .o_library_item_compact h2 a{text-overflow:ellipsis;white-space:nowrap}.o_library_item_compact p.o_library_show_more{padding:20px;position:absolute;top:0;right:0}span.o_translation_i18nitem{position:relative !important}span.o_translation_i18nitem a.o_translation_i18nitem_launcher{position:absolute !important;z-index:100 !important;width:18px !important;height:20px !important;top:0 !important;left:5px !important;background:#fff;border:1px solid #3b678a !important;border-radius:3px;text-align:center;padding:0 !important}.o_user_infos{position:relative}.o_user_infos .o_user_portrait{position:absolute;top:0;left:15px;width:100px;height:100px}.o_user_infos .o_user_infos_inner{margin:0 30px 0 100px}.o_user_infos .o_user_infos_inner table{margin:0 30px 15px 30px}div.o_skype_button{display:inline-block}div.o_skype_button p{margin:0 0 0 0}div.o_skype_button p a img{margin:0 !important;vertical-align:middle !important}.o_members_pagination{text-align:center}.o_bcard_logo{margin-left:10px;height:66px}.o_bcard_title_with_logo{clear:both;padding:20px 0 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:66px}.o_visitingcard .o_icon_visitingcard{display:none}.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:66px;height:66px;margin-right:10px}@media (max-width: 767px){.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:50px;height:50px;margin:5px 5px 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:50px}.o_visitingcard_logo,.o_bcard_logo{height:50px;margin:5px 0 0 5px}.o_visitingcard_logo img,.o_bcard_logo img{position:relative;transform:scale(.75758);top:-8px}}@media (max-width: 414px){.o_visitingcard_logo img{max-width:260px}}@media (max-width: 375px){.o_visitingcard_logo img{max-width:220px}}@media (max-width: 320px){.o_visitingcard_logo img{max-width:180px}.o_bcard_logo img{max-width:150px}}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-title{color:#3b678a;font-weight:500;font-family:inherit;line-height:1.1}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"ï€" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close span{display:none}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important;float:right}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px;overflow:auto;background:white !important}.ui-dialog .ui-dialog-titlebar{padding:4px 7px 4px 7px;background-color:#eee !important}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}.ui-slider.ui-slider-horizontal.ui-widget-content{border-color:#999}.ui-slider.ui-slider-horizontal.ui-widget-content.ui-state-disabled{opacity:0.65}.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:1px solid #3b678a;background-image:none;background-color:#3b678a}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"ï¡";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"ï ";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #335a78;background:#3b678a;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal}.o_richtext_mce_without_path .mce-statusbar{border:none}.o_richtext_mce_without_path .mce-path{display:none !important}.o_richtext_mce_without_path .mce-menubtn.mce-fixed-width span{width:auto}i.mce-ico.mce-i-media,i.mce-ico.mce-i-movie,i.mce-ico.mce-i-help,i.mce-ico.mce-i-gaptext,i.mce-ico.mce-i-gapnumerical,i.mce-ico.mce-i-hottext,i.mce-ico.mce-i-edit{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}i.mce-ico.mce-i-media:before{content:""}i.mce-ico.mce-i-movie:before{content:""}i.mce-ico.mce-i-gaptext:before{content:"ï…"}i.mce-ico.mce-i-gapnumerical:before{content:""}i.mce-ico.mce-i-hottext:before{content:"ï"}i.mce-ico.mce-i-math:before{content:'\03A3'}i.mce-ico.mce-i-edit:before{content:"ï„"}i.mce-ico.mce-i-help{width:9px;height:9px;padding-top:1px}i.mce-ico.mce-i-help:before{content:"ï™";color:white}.mce-tabs span.o_chelp_wrapper{float:right;margin:5px}div.o_table_search span.twitter-typeahead{display:table-cell;padding-top:3px}.tag.label.label-info{margin-right:3px}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{background:#fff;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important}.progress{-webkit-print-color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}body{margin:0}}.o_highscore .o_position{text-align:center;font-size:1.2em;font-weight:bold}.o_highscore .o_position h2{font-size:3em;font-weight:700;line-height:1.2em}@media screen and (-webkit-min-device-pixel-ratio: 0){.o_highscore .o_position h2{background:linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline}.o_highscore .o_position h2:after{content:"\A";white-space:pre}}.o_highscore .o_position_relative{font-size:1em;font-weight:normal}.o_highscore .o_podium{position:relative;vertical-align:bottom;height:300px;margin-bottom:50px}.o_highscore .o_rank{width:30%;position:absolute;bottom:0;text-shadow:rgba(102,102,102,0.5) 0 -1px 0,rgba(255,255,255,0.6) 0 2px 1px}.o_highscore .o_rank:before{position:absolute;bottom:0;left:0;width:100%;text-align:center}.o_highscore .o_rank .o_name{position:absolute;top:100%;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1em;text-shadow:none}.o_highscore .o_rank .o_score{color:#777;font-size:90%;width:100%;text-align:center;position:absolute;top:-20px;text-shadow:none}.o_highscore .o_rank .o_singleportrait{position:absolute;width:100%;text-align:center;top:-125px}.o_highscore .o_rank .o_rank_portraits{position:relative;left:0;top:-210px;height:180px;width:200px;text-align:center;vertical-align:bottom;display:table-cell}.o_highscore .o_rank .o_rank_portraits ul{display:inline-block}.o_highscore .o_rank .o_rank_portraits .o_portrait{margin:5px}.o_highscore .o_first{height:150px;left:30%;border:1px solid #d9d9d9;border-top-left-radius:4px;border-top-right-radius:4px;background:gold;background:-moz-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:-webkit-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 )}.o_highscore .o_first:before{content:"1";font-size:700%;line-height:150px;color:#666}.o_highscore .o_second{height:100px;left:0;background:silver;background:-moz-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-left-radius:4px}.o_highscore .o_second:before{content:"2";font-size:500%;line-height:100px;color:#666}.o_highscore .o_third{height:80px;left:60%;background:#cd7f32;background:-moz-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:-webkit-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-right:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-right-radius:4px}.o_highscore .o_third:before{content:"3";font-size:300%;line-height:80px;color:#666}.o_highscore .o_histogram{position:relative;bottom:-40px;margin-bottom:40px}.o_highscore .o_histogram .d3chart{width:100%;padding-top:50px;height:300px}.o_highscore .o_histogram .d3chart text{fill:#888}.o_highscore .o_histogram .d3chart .axis path,.o_highscore .o_histogram .d3chart .axis line{stroke:#888}.o_highscore .o_histogram .d3chart .o_myself{fill:#3b678a}.o_highscore .o_histogram .d3chart .o_myself:hover{fill:#4a82ae}.o_highscore .o_histogram .d3chart .o_other{fill:#777}.o_highscore .o_histogram .d3chart .o_other:hover{fill:#919191}.o_highscore .o_histogram .d3chart .o_empty{fill:#000}.o_listing .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_listing table th:nth-of-type(1),.o_listing table th :nth-of-type(2){width:5em}body.o_browser_ie7 #o_offcanvas_right,body.o_browser_ie8 #o_offcanvas_right{right:0px}.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-default.active,.btn-primary:active,.btn-primary.active,.btn-success:active,.btn-success.active,.btn-info:active,.btn-info.active,.btn-warning:active,.btn-warning.active,.btn-danger:active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);background-image:-o-linear-gradient(top, #fff 0%, #e0e0e0 100%);background-image:linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFE0E0E0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top, #3b678a 0%, #29475f 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #29475f 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #29475f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF29475F', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#264258}.btn-primary:hover,.btn-primary:focus{background-color:#29475f;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#29475f;border-color:#264258}.btn-primary:disabled,.btn-primary[disabled]{background-color:#29475f;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);background-image:-o-linear-gradient(top, #5cb85c 0%, #419641 100%);background-image:linear-gradient(to bottom, #5cb85c 0%, #419641 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5CB85C', endColorstr='#FF419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);background-image:-o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);background-image:linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5BC0DE', endColorstr='#FF2AABD2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:-o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF0AD4E', endColorstr='#FFEB9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);background-image:-o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);background-image:linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9534F', endColorstr='#FFC12E2A', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail,.o_form .o_filepreview img,.o_feed .o_media{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF5F5F5', endColorstr='#FFE8E8E8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #335a78 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF335A78', GradientType=0);background-color:#335a78}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF8F8F8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);background-image:-o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);background-image:linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDBDBDB', endColorstr='#FFE2E2E2', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);background-image:-o-linear-gradient(top, #3c3c3c 0%, #222 100%);background-image:linear-gradient(to bottom, #3c3c3c 0%, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3C3C3C', endColorstr='#FF222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #090909 0%, #0f0f0f 100%);background-image:-o-linear-gradient(top, #090909 0%, #0f0f0f 100%);background-image:linear-gradient(to bottom, #090909 0%, #0f0f0f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF090909', endColorstr='#FF0F0F0F', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width: 767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #335a78 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF335A78', GradientType=0)}}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);background-image:-o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);background-image:linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDFF0D8', endColorstr='#FFC8E5BC', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);background-image:-o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);background-image:linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9EDF7', endColorstr='#FFB9DEF0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);background-image:-o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);background-image:linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFCF8E3', endColorstr='#FFF8EFC0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);background-image:-o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);background-image:linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF2DEDE', endColorstr='#FFE7C3C3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);background-image:linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEBEBEB', endColorstr='#FFF5F5F5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #3b678a 0%, #2c4c66 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #2c4c66 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #2c4c66 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF2C4C66', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);background-image:-o-linear-gradient(top, #5cb85c 0%, #449d44 100%);background-image:linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5CB85C', endColorstr='#FF449D44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);background-image:-o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);background-image:linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5BC0DE', endColorstr='#FF31B0D5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);background-image:-o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);background-image:linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF0AD4E', endColorstr='#FFEC971F', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);background-image:-o-linear-gradient(top, #d9534f 0%, #c9302c 100%);background-image:linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9534F', endColorstr='#FFC9302C', GradientType=0)}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #2c4c66;background-image:-webkit-linear-gradient(top, #3b678a 0%, #30536f 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #30536f 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #30536f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF30536F', GradientType=0);border-color:#30536f}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF5F5F5', endColorstr='#FFE8E8E8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #335a78 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF335A78', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);background-image:-o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);background-image:linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDFF0D8', endColorstr='#FFD0E9C6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);background-image:-o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);background-image:linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9EDF7', endColorstr='#FFC4E3F3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);background-image:-o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);background-image:linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFCF8E3', endColorstr='#FFFAF2CC', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);background-image:-o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);background-image:linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF2DEDE', endColorstr='#FFEBCCCC', GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);background-image:linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFE8E8E8', endColorstr='#FFF5F5F5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}.o_button_dirty{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);background-image:-webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:-o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF0AD4E', endColorstr='#FFEB9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.o_button_dirty:active,.o_button_dirty.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.o_button_dirty:hover,.o_button_dirty:focus{background-color:#eb9316;background-position:0 -15px}.o_button_dirty:active,.o_button_dirty.active{background-color:#eb9316;border-color:#e38d13}.o_button_dirty:disabled,.o_button_dirty[disabled]{background-color:#eb9316;background-image:none}.o_login .o_login_social .btn-default{text-shadow:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook{background-image:-webkit-linear-gradient(top, #4568b2 0%, #344e86 100%);background-image:-o-linear-gradient(top, #4568b2 0%, #344e86 100%);background-image:linear-gradient(to bottom, #4568b2 0%, #344e86 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF4568B2', endColorstr='#FF344E86', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#314a7f}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus{background-color:#344e86;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#344e86;border-color:#314a7f}.o_login .o_login_social .btn-default.o_sel_auth_facebook:disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]{background-color:#344e86;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter{background-image:-webkit-linear-gradient(top, #2cc5ff 0%, #00acee 100%);background-image:-o-linear-gradient(top, #2cc5ff 0%, #00acee 100%);background-image:linear-gradient(to bottom, #2cc5ff 0%, #00acee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF2CC5FF', endColorstr='#FF00ACEE', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#00a5e4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus{background-color:#00acee;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#00acee;border-color:#00a5e4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]{background-color:#00acee;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google{background-image:-webkit-linear-gradient(top, #e15f4f 0%, #cf3623 100%);background-image:-o-linear-gradient(top, #e15f4f 0%, #cf3623 100%);background-image:linear-gradient(to bottom, #e15f4f 0%, #cf3623 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFE15F4F', endColorstr='#FFCF3623', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#c73422}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus{background-color:#cf3623;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#cf3623;border-color:#c73422}.o_login .o_login_social .btn-default.o_sel_auth_google:disabled,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]{background-color:#cf3623;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{background-image:-webkit-linear-gradient(top, #0181bd 0%, #015780 100%);background-image:-o-linear-gradient(top, #0181bd 0%, #015780 100%);background-image:linear-gradient(to bottom, #0181bd 0%, #015780 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF0181BD', endColorstr='#FF015780', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#015176}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus{background-color:#015780;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#015780;border-color:#015176}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]{background-color:#015780;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs{background-image:-webkit-linear-gradient(top, #1a1a1a 0%, #000 100%);background-image:-o-linear-gradient(top, #1a1a1a 0%, #000 100%);background-image:linear-gradient(to bottom, #1a1a1a 0%, #000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF1A1A1A', endColorstr='#FF000000', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#000}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus{background-color:#000;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#000;border-color:#000}.o_login .o_login_social .btn-default.o_sel_auth_adfs:disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]{background-color:#000;background-image:none}.btn-default.btn-success,.btn-default.btn-info,.btn-default.btn-warning,.btn-default.btn-danger,.btn-default.btn-primary,.btn-default.o_button_dirty{text-shadow:none}.o_navbar.o_navbar-default{background-image:-webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF8F8F8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.o_navbar.o_navbar-default .o_navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);background-image:-o-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);background-image:linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEBEBEB', endColorstr='#FFF3F3F3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.o_navbar.o_navbar-default .o_navbar-nav>.active>a.o_navbar_tab_close{background:none;-webkit-box-shadow:none;box-shadow:none}.o_navbar-brand,.o_navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.o_navbar-offcanvas .dropdown-menu>li>a:hover,.o_navbar-offcanvas .dropdown-menu>li>a:focus{background-image:none}.o_toolbar{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05)}.o_toolbar .o_breadcrumb .breadcrumb{background-image:-webkit-linear-gradient(top, #fff 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #fff 0%, #f5f5f5 100%);background-image:linear-gradient(to bottom, #fff 0%, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF5F5F5', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.o_toolbar .o_tools_container{background-image:-webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF8F8F8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{background-image:-webkit-linear-gradient(top, #fff 0%, #e2e2e2 100%);background-image:-o-linear-gradient(top, #fff 0%, #e2e2e2 100%);background-image:linear-gradient(to bottom, #fff 0%, #e2e2e2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFE2E2E2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.o_toolbar .o_tool_next :hover,.o_toolbar .o_tool_previous :hover{background-color:#e2e2e2}.o_tree{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05)}.o_navbar-brand{padding:15px 15px;font-size:28px;color:#3b678a !important}.o_navbar-brand:after{content:"\E600";font-family:openolat} +**//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff !important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#3b678a;text-decoration:none}a:hover,a:focus{color:#243f54;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail,.o_form .o_filepreview img,.o_feed .o_media{padding:4px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all 0.2s ease-in-out;-o-transition:all 0.2s ease-in-out;transition:all 0.2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,.o_cal .fc-header-title h2,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h1 .small,h2 small,h2 .small,h3 small,h3 .small,h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,h5 small,h5 .small,h6 small,h6 .small,.h1 small,.h1 .small,.h2 small,.h2 .small,.h3 small,.h3 .small,.h4 small,.h4 .small,.h5 small,.h5 .small,.h6 small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,h1 .small,.h1 small,.h1 .small,h2 small,h2 .small,.h2 small,.h2 .small,h3 small,h3 .small,.h3 small,.h3 .small{font-size:65%}h4,.o_cal .fc-header-title h2,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.o_cal .fc-header-title h2 small,h4 .small,.o_cal .fc-header-title h2 .small,.h4 small,.h4 .small,h5 small,h5 .small,.h5 small,.h5 .small,h6 small,h6 .small,.h6 small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.o_cal .fc-header-title h2,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width: 768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#3b678a}a.text-primary:hover{color:#2c4c66}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff}.bg-primary{background-color:#3b678a}a.bg-primary:hover{background-color:#2c4c66}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ul ol,ol ul,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857}dt{font-weight:bold}dd{margin-left:0}.dl-horizontal dd:before,.dl-horizontal dd:after{content:" ";display:table}.dl-horizontal dd:after{clear:both}@media (min-width: 768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,.blockquote-reverse small:before,.blockquote-reverse .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,.blockquote-reverse small:after,.blockquote-reverse .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container:before,.container:after{content:" ";display:table}.container:after{clear:both}@media (min-width: 768px){.container{width:750px}}@media (min-width: 992px){.container{width:970px}}@media (min-width: 1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.container-fluid:before,.container-fluid:after{content:" ";display:table}.container-fluid:after{clear:both}.row{margin-left:-15px;margin-right:-15px}.row:before,.row:after{content:" ";display:table}.row:after{clear:both}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-1{width:8.33333%}.col-xs-2{width:16.66667%}.col-xs-3{width:25%}.col-xs-4{width:33.33333%}.col-xs-5{width:41.66667%}.col-xs-6{width:50%}.col-xs-7{width:58.33333%}.col-xs-8{width:66.66667%}.col-xs-9{width:75%}.col-xs-10{width:83.33333%}.col-xs-11{width:91.66667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.33333%}.col-xs-pull-2{right:16.66667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.33333%}.col-xs-pull-5{right:41.66667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.33333%}.col-xs-pull-8{right:66.66667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.33333%}.col-xs-pull-11{right:91.66667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.33333%}.col-xs-push-2{left:16.66667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.33333%}.col-xs-push-5{left:41.66667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.33333%}.col-xs-push-8{left:66.66667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.33333%}.col-xs-push-11{left:91.66667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0%}.col-xs-offset-1{margin-left:8.33333%}.col-xs-offset-2{margin-left:16.66667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.33333%}.col-xs-offset-5{margin-left:41.66667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.33333%}.col-xs-offset-8{margin-left:66.66667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.33333%}.col-xs-offset-11{margin-left:91.66667%}.col-xs-offset-12{margin-left:100%}@media (min-width: 768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-1{width:8.33333%}.col-sm-2{width:16.66667%}.col-sm-3{width:25%}.col-sm-4{width:33.33333%}.col-sm-5{width:41.66667%}.col-sm-6{width:50%}.col-sm-7{width:58.33333%}.col-sm-8{width:66.66667%}.col-sm-9{width:75%}.col-sm-10{width:83.33333%}.col-sm-11{width:91.66667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.33333%}.col-sm-pull-2{right:16.66667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.33333%}.col-sm-pull-5{right:41.66667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.33333%}.col-sm-pull-8{right:66.66667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.33333%}.col-sm-pull-11{right:91.66667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.33333%}.col-sm-push-2{left:16.66667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.33333%}.col-sm-push-5{left:41.66667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.33333%}.col-sm-push-8{left:66.66667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.33333%}.col-sm-push-11{left:91.66667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0%}.col-sm-offset-1{margin-left:8.33333%}.col-sm-offset-2{margin-left:16.66667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.33333%}.col-sm-offset-5{margin-left:41.66667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.33333%}.col-sm-offset-8{margin-left:66.66667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.33333%}.col-sm-offset-11{margin-left:91.66667%}.col-sm-offset-12{margin-left:100%}}@media (min-width: 992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-1{width:8.33333%}.col-md-2{width:16.66667%}.col-md-3{width:25%}.col-md-4{width:33.33333%}.col-md-5{width:41.66667%}.col-md-6{width:50%}.col-md-7{width:58.33333%}.col-md-8{width:66.66667%}.col-md-9{width:75%}.col-md-10{width:83.33333%}.col-md-11{width:91.66667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.33333%}.col-md-pull-2{right:16.66667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.33333%}.col-md-pull-5{right:41.66667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.33333%}.col-md-pull-8{right:66.66667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.33333%}.col-md-pull-11{right:91.66667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.33333%}.col-md-push-2{left:16.66667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.33333%}.col-md-push-5{left:41.66667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.33333%}.col-md-push-8{left:66.66667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.33333%}.col-md-push-11{left:91.66667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0%}.col-md-offset-1{margin-left:8.33333%}.col-md-offset-2{margin-left:16.66667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.33333%}.col-md-offset-5{margin-left:41.66667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.33333%}.col-md-offset-8{margin-left:66.66667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.33333%}.col-md-offset-11{margin-left:91.66667%}.col-md-offset-12{margin-left:100%}}@media (min-width: 1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-1{width:8.33333%}.col-lg-2{width:16.66667%}.col-lg-3{width:25%}.col-lg-4{width:33.33333%}.col-lg-5{width:41.66667%}.col-lg-6{width:50%}.col-lg-7{width:58.33333%}.col-lg-8{width:66.66667%}.col-lg-9{width:75%}.col-lg-10{width:83.33333%}.col-lg-11{width:91.66667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.33333%}.col-lg-pull-2{right:16.66667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.33333%}.col-lg-pull-5{right:41.66667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.33333%}.col-lg-pull-8{right:66.66667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.33333%}.col-lg-pull-11{right:91.66667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.33333%}.col-lg-push-2{left:16.66667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.33333%}.col-lg-push-5{left:41.66667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.33333%}.col-lg-push-8{left:66.66667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.33333%}.col-lg-push-11{left:91.66667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0%}.col-lg-offset-1{margin-left:8.33333%}.col-lg-offset-2{margin-left:16.66667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.33333%}.col-lg-offset-5{margin-left:41.66667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.33333%}.col-lg-offset-8{margin-left:66.66667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.33333%}.col-lg-offset-11{margin-left:91.66667%}.col-lg-offset-12{margin-left:100%}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>thead>tr>td,.table>tbody>tr>th,.table>tbody>tr>td,.table>tfoot>tr>th,.table>tfoot>tr>td{padding:8px;line-height:1.42857;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>th,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>thead>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>thead>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>thead>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>thead>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>thead>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width: 767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;-o-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(102,175,233,0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#fafafa;opacity:1}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio: 0){input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"]{line-height:34px}input[type="date"].input-sm,.input-group-sm>input[type="date"].form-control,.input-group-sm>input[type="date"].input-group-addon,.input-group-sm>.input-group-btn>input[type="date"].btn,input[type="time"].input-sm,.input-group-sm>input[type="time"].form-control,.input-group-sm>input[type="time"].input-group-addon,.input-group-sm>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-sm,.input-group-sm>input[type="datetime-local"].form-control,.input-group-sm>input[type="datetime-local"].input-group-addon,.input-group-sm>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-sm,.input-group-sm>input[type="month"].form-control,.input-group-sm>input[type="month"].input-group-addon,.input-group-sm>.input-group-btn>input[type="month"].btn{line-height:30px}input[type="date"].input-lg,.input-group-lg>input[type="date"].form-control,.input-group-lg>input[type="date"].input-group-addon,.input-group-lg>.input-group-btn>input[type="date"].btn,input[type="time"].input-lg,.input-group-lg>input[type="time"].form-control,.input-group-lg>input[type="time"].input-group-addon,.input-group-lg>.input-group-btn>input[type="time"].btn,input[type="datetime-local"].input-lg,.input-group-lg>input[type="datetime-local"].form-control,.input-group-lg>input[type="datetime-local"].input-group-addon,.input-group-lg>.input-group-btn>input[type="datetime-local"].btn,input[type="month"].input-lg,.input-group-lg>input[type="month"].form-control,.input-group-lg>input[type="month"].input-group-addon,.input-group-lg>.input-group-btn>input[type="month"].btn{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="radio"].disabled,fieldset[disabled] input[type="radio"],input[type="checkbox"][disabled],input[type="checkbox"].disabled,fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,fieldset[disabled] .radio-inline,.checkbox-inline.disabled,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,fieldset[disabled] .radio label,.checkbox.disabled label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.input-group-lg>.form-control-static.form-control,.input-group-lg>.form-control-static.input-group-addon,.input-group-lg>.input-group-btn>.form-control-static.btn,.form-control-static.input-sm,.input-group-sm>.form-control-static.form-control,.input-group-sm>.form-control-static.input-group-addon,.input-group-sm>.input-group-btn>.form-control-static.btn{padding-left:0;padding-right:0}.input-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,.input-group-sm>select.form-control,.input-group-sm>select.input-group-addon,.input-group-sm>.input-group-btn>select.btn,.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,.input-group-sm>textarea.form-control,.input-group-sm>textarea.input-group-addon,.input-group-sm>.input-group-btn>textarea.btn,.form-group-sm .form-control,select[multiple].input-sm,.input-group-sm>select[multiple].form-control,.input-group-sm>select[multiple].input-group-addon,.input-group-sm>.input-group-btn>select[multiple].btn,.form-group-sm .form-control{height:auto}.input-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,.input-group-lg>select.form-control,.input-group-lg>select.input-group-addon,.input-group-lg>.input-group-btn>select.btn,.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,.input-group-lg>textarea.form-control,.input-group-lg>textarea.input-group-addon,.input-group-lg>.input-group-btn>textarea.btn,.form-group-lg .form-control,select[multiple].input-lg,.input-group-lg>select[multiple].form-control,.input-group-lg>select[multiple].input-group-addon,.input-group-lg>.input-group-btn>select[multiple].btn,.form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg>.form-control+.form-control-feedback,.input-group-lg>.input-group-addon+.form-control-feedback,.input-group-lg>.input-group-btn>.btn+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm>.form-control+.form-control-feedback,.input-group-sm>.input-group-addon+.form-control-feedback,.input-group-sm>.input-group-btn>.btn+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label ~ .form-control-feedback{top:25px}.has-feedback label.sr-only ~ .form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width: 768px){.form-inline .form-group,.o_navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control,.o_navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static,.o_navbar-form .form-control-static{display:inline-block}.form-inline .input-group,.o_navbar-form .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.o_navbar-form .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.o_navbar-form .input-group .input-group-btn,.form-inline .input-group .form-control,.o_navbar-form .input-group .form-control{width:auto}.form-inline .input-group>.form-control,.o_navbar-form .input-group>.form-control{width:100%}.form-inline .control-label,.o_navbar-form .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.o_navbar-form .radio,.form-inline .checkbox,.o_navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.o_navbar-form .radio label,.form-inline .checkbox label,.o_navbar-form .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.o_navbar-form .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"],.o_navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback,.o_navbar-form .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}.form-horizontal .form-group:before,.form-horizontal .form-group:after{content:" ";display:table}.form-horizontal .form-group:after{clear:both}@media (min-width: 768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width: 768px){.form-horizontal .form-group-lg .control-label{padding-top:14.3px}}@media (min-width: 768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn.focus,.btn:active:focus,.btn:active.focus,.btn.active:focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.btn-default.dropdown-toggle{background-image:none}.btn-default.disabled,.btn-default.disabled:hover,.btn-default.disabled:focus,.btn-default.disabled.focus,.btn-default.disabled:active,.btn-default.disabled.active,.btn-default[disabled],.btn-default[disabled]:hover,.btn-default[disabled]:focus,.btn-default[disabled].focus,.btn-default[disabled]:active,.btn-default[disabled].active,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default:hover,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default.active{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#3b678a;border-color:#335a78}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.btn-primary:active,.btn-primary.active,.open>.btn-primary.dropdown-toggle{background-image:none}.btn-primary.disabled,.btn-primary.disabled:hover,.btn-primary.disabled:focus,.btn-primary.disabled.focus,.btn-primary.disabled:active,.btn-primary.disabled.active,.btn-primary[disabled],.btn-primary[disabled]:hover,.btn-primary[disabled]:focus,.btn-primary[disabled].focus,.btn-primary[disabled]:active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary:hover,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary.active{background-color:#3b678a;border-color:#335a78}.btn-primary .badge{color:#3b678a;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.btn-success.dropdown-toggle{background-image:none}.btn-success.disabled,.btn-success.disabled:hover,.btn-success.disabled:focus,.btn-success.disabled.focus,.btn-success.disabled:active,.btn-success.disabled.active,.btn-success[disabled],.btn-success[disabled]:hover,.btn-success[disabled]:focus,.btn-success[disabled].focus,.btn-success[disabled]:active,.btn-success[disabled].active,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success:hover,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.btn-info.dropdown-toggle{background-image:none}.btn-info.disabled,.btn-info.disabled:hover,.btn-info.disabled:focus,.btn-info.disabled.focus,.btn-info.disabled:active,.btn-info.disabled.active,.btn-info[disabled],.btn-info[disabled]:hover,.btn-info[disabled]:focus,.btn-info[disabled].focus,.btn-info[disabled]:active,.btn-info[disabled].active,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info:hover,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.btn-warning.dropdown-toggle{background-image:none}.btn-warning.disabled,.btn-warning.disabled:hover,.btn-warning.disabled:focus,.btn-warning.disabled.focus,.btn-warning.disabled:active,.btn-warning.disabled.active,.btn-warning[disabled],.btn-warning[disabled]:hover,.btn-warning[disabled]:focus,.btn-warning[disabled].focus,.btn-warning[disabled]:active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning:hover,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.btn-danger.dropdown-toggle{background-image:none}.btn-danger.disabled,.btn-danger.disabled:hover,.btn-danger.disabled:focus,.btn-danger.disabled.focus,.btn-danger.disabled:active,.btn-danger.disabled.active,.btn-danger[disabled],.btn-danger[disabled]:hover,.btn-danger[disabled]:focus,.btn-danger[disabled].focus,.btn-danger[disabled]:active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger:hover,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#3b678a;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#243f54;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:hover,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:0.35s;transition-duration:0.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#3b678a}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width: 768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn:hover,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar:before,.btn-toolbar:after{content:" ";display:table}.btn-toolbar:after{clear:both}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle,.btn-group-lg.btn-group>.btn+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret,.btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret,.dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after{content:" ";display:table}.btn-group-vertical>.btn-group:after{clear:both}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.input-group-addon.btn{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav:before,.nav:after{content:" ";display:table}.nav:after{clear:both}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#3b678a}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#3b678a}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified,.nav-tabs.nav-justified{width:100%}.nav-justified>li,.nav-tabs.nav-justified>li{float:none}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width: 768px){.nav-justified>li,.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a,.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified,.nav-tabs.nav-justified{border-bottom:0}.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width: 768px){.nav-tabs-justified>li>a,.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs.nav-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}.navbar:before,.navbar:after{content:" ";display:table}.navbar:after{clear:both}@media (min-width: 768px){.navbar{border-radius:4px}}.navbar-header:before,.navbar-header:after{content:" ";display:table}.navbar-header:after{clear:both}@media (min-width: 768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse:before,.navbar-collapse:after{content:" ";display:table}.navbar-collapse:after{clear:both}.navbar-collapse.in{overflow-y:auto}@media (min-width: 768px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block !important;visibility:visible !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width: 480px) and (orientation: landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width: 768px){.container>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-header,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width: 768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width: 768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width: 768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width: 768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width: 767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width: 768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width: 768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width: 767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width: 768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm,.btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs,.btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width: 768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width: 768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right ~ .navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width: 767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:hover,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#090909}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#090909;color:#fff}@media (max-width: 767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#090909}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:hover,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/ ";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857;text-decoration:none;color:#3b678a;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>a:focus,.pagination>li>span:hover,.pagination>li>span:focus{color:#243f54;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:hover,.pagination>.active>a:focus,.pagination>.active>span,.pagination>.active>span:hover,.pagination>.active>span:focus{z-index:2;color:#fff;background-color:#3b678a;border-color:#3b678a;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager:before,.pager:after{content:" ";display:table}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label:empty{display:none}.btn .label{position:relative;top:-1px}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#3b678a}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#2c4c66}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#3b678a;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.jumbotron,.o_repo_details .o_lead{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{color:inherit}.jumbotron p,.o_repo_details .o_lead p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr,.o_repo_details .o_lead>hr{border-top-color:#d5d5d5}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{border-radius:6px}.jumbotron .container,.o_repo_details .o_lead .container{max-width:100%}@media screen and (min-width: 768px){.jumbotron,.o_repo_details .o_lead{padding:48px 0}.container .jumbotron,.container .o_repo_details .o_lead,.o_repo_details .container .o_lead,.container-fluid .jumbotron,.container-fluid .o_repo_details .o_lead,.o_repo_details .container-fluid .o_lead{padding-left:60px;padding-right:60px}.jumbotron h1,.o_repo_details .o_lead h1,.jumbotron .h1,.o_repo_details .o_lead .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border 0.2s ease-in-out;-o-transition:border 0.2s ease-in-out;transition:border 0.2s ease-in-out}.thumbnail>img,.thumbnail a>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#333}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#3b678a}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4,.alert .o_cal .fc-header-title h2,.o_cal .fc-header-title .alert h2{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#3b678a;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#3b678a;border-color:#3b678a}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#b3cbde}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-body:before,.panel-body:after{content:" ";display:table}.panel-body:after{clear:both}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table,.panel-collapse>.table,.panel-collapse>.table-responsive>.table,.panel-collapse>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption,.panel-collapse>.table caption,.panel-collapse>.table-responsive>.table caption,.panel-collapse>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child,.panel-collapse>.table:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel-collapse>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child,.panel-collapse>.table:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel-collapse>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body,.panel-collapse>.panel-body+.table,.panel-collapse>.panel-body+.table-responsive,.panel-collapse>.table+.panel-body,.panel-collapse>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td,.panel-collapse>.table>tbody:first-child>tr:first-child th,.panel-collapse>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered,.panel-collapse>.table-bordered,.panel-collapse>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-bordered>tfoot>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-bordered>tfoot>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-bordered>tbody>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-bordered>tfoot>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel-collapse>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive,.panel-collapse>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#3b678a}.panel-primary>.panel-heading{color:#fff;background-color:#3b678a;border-color:#3b678a}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#3b678a}.panel-primary>.panel-heading .badge{color:#3b678a;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#3b678a}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:0.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-moz-transition:-moz-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);background-clip:padding-box;outline:0}.modal-backdrop{position:absolute;top:0;right:0;left:0;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:0.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.42857px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer:before,.modal-footer:after{content:" ";display:table}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width: 768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width: 992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;visibility:visible;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:normal;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:0.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-weight:normal;line-height:1.42857;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.clearfix:before,.clearfix:after{content:" ";display:table}.clearfix:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important;visibility:hidden !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width: 767px){.visible-xs{display:block !important}table.visible-xs{display:table}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width: 767px){.visible-xs-block{display:block !important}}@media (max-width: 767px){.visible-xs-inline{display:inline !important}}@media (max-width: 767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm{display:block !important}table.visible-sm{display:table}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-block{display:block !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline{display:inline !important}}@media (min-width: 768px) and (max-width: 991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md{display:block !important}table.visible-md{display:table}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-block{display:block !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline{display:inline !important}}@media (min-width: 992px) and (max-width: 1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width: 1200px){.visible-lg{display:block !important}table.visible-lg{display:table}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width: 1200px){.visible-lg-block{display:block !important}}@media (min-width: 1200px){.visible-lg-inline{display:inline !important}}@media (min-width: 1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width: 767px){.hidden-xs{display:none !important}}@media (min-width: 768px) and (max-width: 991px){.hidden-sm{display:none !important}}@media (min-width: 992px) and (max-width: 1199px){.hidden-md{display:none !important}}@media (min-width: 1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}body .modal{position:absolute;overflow:visible}body div.tooltip-inner{max-width:400px}body div.popover{max-width:450px}body .modal-body.alert{border-radius:0}body .progress{margin-bottom:0}.panel-body:nth-child(n+2){border-top:1px solid #ddd}.panel .panel-heading[data-toggle="collapse"]{cursor:pointer}#o_ajax_busy_backdrop{bottom:0;z-index:1020}.form-control-feedback{top:10px}.form-horizontal .has-feedback .form-control-feedback{top:10px}.btn.btn-primary.o_disabled{color:#fff !important}body .progress-bar[aria-valuenow="1"],body .progress-bar[aria-valuenow="2"]{min-width:1px}td.text-left>div.form-inline>label.checkbox-inline>input[type='checkbox'],td.text-left>div.o_navbar-form>label.checkbox-inline>input[type='checkbox']{position:relative}@-moz-document url-prefix(){fieldset{display:table-cell}}@font-face{font-family:'openolat';src:url("../light/fonts/openolat/openolat.eot?4yacgg");src:url("../light/fonts/openolat/openolat.eot?#iefix4yacgg") format("embedded-opentype"),url("../light/fonts/openolat/openolat.woff?4yacgg") format("woff"),url("../light/fonts/openolat/openolat.ttf?4yacgg") format("truetype"),url("../light/fonts/openolat/openolat.svg?4yacgg#openolat") format("svg");font-weight:normal;font-style:normal}@font-face{font-family:'FontAwesome';src:url("../../font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0");src:url("../../font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0") format("embedded-opentype"),url("../../font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0") format("woff2"),url("../../font-awesome/fonts/fontawesome-webfont.woff?v=4.7.0") format("woff"),url("../../font-awesome/fonts/fontawesome-webfont.ttf?v=4.7.0") format("truetype"),url("../../font-awesome/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular") format("svg");font-weight:normal;font-style:normal}.o_icon{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_icon-lg{font-size:1.33333em;line-height:0.75em;vertical-align:-15%}.o_icon-2x{font-size:2em}.o_icon-3x{font-size:3em}.o_icon-4x{font-size:4em}.o_icon-5x{font-size:5em}.o_icon-fw{width:1.28571em;text-align:center}.o_icon-ul{padding-left:0;margin-left:2.14286em;list-style-type:none}.o_icon-ul>li{position:relative}.o_icon-li{position:absolute;left:-2.14286em;width:2.14286em;top:0.14286em;text-align:center}.o_icon-li.o_icon-lg{left:-1.85714em}.o_icon-border{padding:.2em .25em .15em;border:solid 0.08em #eee;border-radius:.1em}.o_icon-pull-left{float:left}.o_icon-pull-right{float:right}.o_icon.o_icon-pull-left{margin-right:.3em}.o_icon.o_icon-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.o_icon.pull-left{margin-right:.3em}.o_icon.pull-right{margin-left:.3em}.o_icon-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.o_icon-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.o_icon-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.o_icon-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.o_icon-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.o_icon-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.o_icon-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .o_icon-rotate-90,:root .o_icon-rotate-180,:root .o_icon-rotate-270,:root .o_icon-flip-horizontal,:root .o_icon-flip-vertical{filter:none}.o_icon-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.o_icon-stack-1x,.o_icon-stack-2x{position:absolute;left:0;width:100%;text-align:center}.o_icon-stack-1x{line-height:inherit}.o_icon-stack-2x{font-size:2em}.o_icon-inverse{color:#fff}.o_icon_accepted:before{content:"ï…¤"}.o_icon_accessibility:before{content:""}.o_icon_actions:before{content:"ï‚…"}.o_icon_add_html:before{content:"ï„¡"}.o_icon_archive_tool:before{content:""}.o_icon_assessment_mode:before{content:"ï„"}.o_icon_assessment_tool:before{content:"ï‚‘"}.o_icon_assignment:before{content:"";color:#d9534f}.o_icon_attempt_limit:before{content:""}.o_icon_accept:before{content:"";color:#5cb85c}.o_icon_add:before{content:"ï•"}.o_icon_add_member:before{content:""}.o_icon_add_search:before{content:""}.o_icon_audio:before{content:""}.o_icon_back:before{content:"ï“"}.o_icon_back_history:before{content:""}.o_icon_banned:before{content:"";color:#d9534f}.o_icon_bold:before{content:""}.o_icon_booking:before{content:"ïº"}.o_icon_bookmark:before{content:"";color:#bc2d0c}.o_icon_bookmark_add:before{content:"ï‚—"}.o_icon_bookmark_header:before{content:""}.o_icon_browse:before{content:""}.o_icon_brush:before{content:""}.o_icon_browsercheck:before{content:"ï…¤"}.o_icon_busy:before{content:"ï„"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_enabled:before{content:"ï†"}.o_icon_calendar_disabled:before{content:"ï‚–"}.o_icon_calendar:before{content:"ï³"}.o_icon_calendar_sync:before{content:""}.o_icon_caret:before{content:""}.o_icon_caret_right:before{content:""}.o_icon_catalog:before{content:""}.o_icon_catalog_sub:before{content:"ï»"}.o_icon_certificate:before{content:"ï‚£"}.o_icon_chat:before{content:""}.o_icon_check:before{content:""}.o_icon_check_off:before{content:"ï‚–"}.o_icon_check_on:before{content:"ï†"}.o_icon_checkbox:before{content:"ï‚–"}.o_icon_checkbox_checked:before{content:"ï…Š"}.o_icon_circle:before{content:""}.o_icon_circle_color:before{content:"ï„‘"}.o_icon_citation:before{content:"ï„"}.o_icon_cleanup:before{content:""}.o_icon_clear_all:before{content:""}.o_icon_close:before{content:"ï€"}.o_icon_close_resource:before{content:""}.o_icon_close_tab:before{content:"ï€"}.o_icon_close_tool:before{content:"ï€"}.o_icon_close_tree:before{content:""}.o_icon_close_togglebox:before,.o_togglebox_wrapper .o_opener.o_in i:before{content:""}.o_icon_code:before{content:"ï„¡"}.o_icon_color_picker:before{content:"ïƒ"}.o_icon_copy:before{content:""}.o_icon_courseareas:before{content:""}.o_icon_coursedb:before{content:""}.o_icon_courseeditor:before{content:"ï„"}.o_icon_coursefolder:before{content:"ï„”"}.o_icon_courserun:before{content:""}.o_icon_comments:before{content:""}.o_icon_comments_none:before{content:""}.o_icon_compress:before{content:"ï¦"}.o_icon_content_popup:before{content:""}.o_icon_correct_answer:before{content:"";color:#5cb85c}.o_icon_correction:before{content:"ï€"}.o_icon_customize:before{content:""}.o_icon_delete_item:before{content:""}.o_icon_delete:before{content:"ï–";color:#A87E7E}.o_icon_deleted:before{content:""}.o_icon_details:before{content:""}.o_icon_description:before{content:"ïš"}.o_icon_dev:before{content:""}.o_icon_disabled:before{content:""}.o_icon_download:before{content:""}.o_icon_edit:before{content:"ï„"}.o_icon_edit_file:before{content:"ï„"}.o_icon_edit_metadata:before{content:""}.o_icon_element_after:before{content:"ï£"}.o_icon_element_before:before{content:"ï¢"}.o_icon_enabled:before{content:"ï„‘"}.o_icon_enlarge:before{content:""}.o_icon_eportfolio_add:before{content:"ï„®"}.o_icon_eportfolio_link:before{content:"ï„®"}.o_icon_eraser:before{content:"ï„"}.o_icon_error:before{content:"ïª";color:#d9534f}.o_icon_expand:before{content:"ï¥"}.o_icon_expenditure:before{content:""}.o_icon_export:before{content:"ï…"}.o_icon_external_link:before{content:""}.o_icon_failed:before{content:"ï—"}.o_icon_files:before{content:""}.o_icon_filter:before{content:"ï‚°"}.o_icon_graduate:before{content:"ï†"}.o_icon_group:before,.o_BusinessGroup_icon:before{content:""}.o_icon_header:before{content:""}.o_icon_help:before{content:"ï™";cursor:help}.o_icon_home:before{content:""}.o_icon_image:before{content:""}.o_icon_impress:before{content:"ïš"}.o_icon_important:before{content:"ï±";color:#f0ad4e}.o_icon_import:before{content:"ï‚“"}.o_icon_info:before{content:"ïš";color:#5bc0de}.o_icon_info_msg:before{content:"ïª";color:#d9534f}.o_icon_info_resource:before{content:"ïš"}.o_icon_inline_editable:before{content:"ï„"}.o_icon_institution:before{content:""}.o_icon_italic:before{content:""}.o_icon_landingpage:before{content:"ï…€"}.o_icon_language:before{content:""}.o_icon_layout:before{content:""}.o_icon_line:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_link_extern:before{content:""}.o_icon_list:before{content:""}.o_icon_list_num:before{content:""}.o_icon_lifecycle:before{content:""}.o_icon_lifecycle_date:before{content:"ï³"}.o_icon_locked:before{content:""}.o_icon_login:before{content:"ï‚"}.o_icon_logout:before{content:"ï‚‹"}.o_icon_mandatory:before{content:"ï©";color:#f0ad4e}.o_icon_managed:before{content:"ï¹";color:#777}.o_icon_manual:before{content:"ï€";cursor:help}.o_icon_mail:before{content:""}.o_icon_math:before{content:"\03a3"}.o_icon_media:before{content:""}.o_icon_mediacenter:before{content:"ï¼"}.o_icon_membersmanagement:before{content:""}.o_icon_menuhandel:before{content:""}.o_icon_message:before{content:"ïƒ "}.o_icon_mobile:before{content:"ï„‹"}.o_icon_move:before{content:"ï‡"}.o_icon_move_down:before{content:""}.o_icon_move_left:before{content:"ï„€"}.o_icon_move_right:before{content:"ï„"}.o_icon_move_up:before{content:"ï„‚"}.o_icon_new:before{content:"ï©";color:#5cb85c}.o_icon_new_document:before{content:"ï…œ"}.o_icon_new_folder:before{content:"ï»"}.o_icon_new_portfolio:before{content:"ï€"}.o_icon_news:before{content:"ïš"}.o_icon_next:before{content:""}.o_icon_next_step:before{content:"ï„"}.o_icon_next_page:before{content:"ï„"}.o_icon_next_toolbar:before{content:""}.o_icon_node_after:before{content:"ï…µ"}.o_icon_node_before:before{content:"ï…¶"}.o_icon_node_under:before{content:"ï„’"}.o_icon_notes:before{content:""}.o_icon_notification:before{content:""}.o_icon_ok:before{content:"";color:#5cb85c}.o_icon_open_tree:before{content:""}.o_icon_open_togglebox:before,.o_togglebox_wrapper .o_opener i:before{content:""}.o_icon_openolat:before,.o_icon_provider_olat:before{content:"\E600";font-family:openolat;font-size:10px}.o_icon_options:before{content:""}.o_icon_others:before{content:""}.o_icon_pageing:before{content:"ï…"}.o_icon_paragraph:before{content:"ï‡"}.o_icon_passed:before{content:"ï˜"}.o_icon_password:before{content:""}.o_icon_pending:before{content:"ï„"}.o_icon_phone:before{content:"ï‚•"}.o_icon_post:before{content:""}.o_icon_preview:before{content:"ï®"}.o_icon_previous:before{content:"ï„·"}.o_icon_previous_page:before{content:"ï„€"}.o_icon_previous_step:before{content:"ï„€"}.o_icon_previous_toolbar:before{content:""}.o_icon_print:before{content:""}.o_icon_private:before{content:""}.o_icon_progress_success:before{content:"";color:#e5efe5}.o_icon_progress_danger:before{content:"ï€";color:#efe5e5}.o_icon_provider_adfs:before{content:"ï…º"}.o_icon_provider_facebook:before{content:""}.o_icon_provider_google:before{content:""}.o_icon_provider_guest:before{content:""}.o_icon_provider_ldap:before{content:""}.o_icon_provider_linkedin:before{content:""}.o_icon_provider_oauth:before{content:""}.o_icon_provider_openid:before{content:""}.o_icon_provider_performx:before{content:""}.o_icon_provider_shibboleth:before{content:""}.o_icon_provider_twitter:before{content:"ï‚™"}.o_icon_publish:before{content:"ï¤"}.o_icon_qrcode:before{content:""}.o_icon_quickview:before{content:"ï®"}.o_icon_radio_off:before{content:""}.o_icon_radio_on:before{content:"ï"}.o_icon_rating_on:before,.o_rating .o_rating_items.o_enabled .o_icon:hover:before{content:""}.o_icon_rating_off:before{content:""}.o_icon_read:before{content:""}.o_icon_readonly:before{content:"ï„";color:red}.o_icon_readwrite:before{content:"ï„"}.o_icon_recycle:before{content:""}.o_icon_rectangle:before{content:"ï‚–"}.o_icon_redo:before{content:""}.o_icon_refresh:before{content:""}.o_icon_reject:before{content:"ï€";color:#d9534f}.o_icon_rejected:before{content:"ï…¥"}.o_icon_reminder:before{content:""}.o_icon_remove:before{content:"ï€"}.o_icon_remove_filters:before{content:"ï—"}.o_icon_replace:before{content:""}.o_icon_reply:before{content:"ï„’"}.o_icon_reply_with_quote:before{content:"ï„¢"}.o_icon_response_feedback:before{content:""}.o_icon_restore:before{content:"ï…¤"}.o_icon_results_visible:before{content:"ï®"}.o_icon_results_hidden:before{content:"ï°"}.o_icon_review:before{content:"ï®"}.o_icon_reviewer:before{content:""}.o_icon_rss:before{content:""}.o_icon_rss_unsubscribe:before{content:"";color:#996633}.o_icon_rubric:before{content:""}.o_icon_save:before{content:""}.o_icon_search:before{content:""}.o_icon_select:before{content:""}.o_icon_send:before{content:"ïƒ "}.o_icon_settings:before{content:"ï‚…"}.o_icon_share:before{content:"ï¤"}.o_icon_show_more:before{content:"ï…"}.o_icon_show_less:before{content:"ï…‘"}.o_icon_show_send:before{content:""}.o_icon_sign_out:before{content:"ï‚‹"}.o_icon_slide_down:before{content:"ï¸"}.o_icon_slide_up:before{content:"ï·"}.o_icon_spacer:before{content:"ï¾"}.o_icon_split:before{content:"ï„§"}.o_icon_sort:before{content:""}.o_icon_sort_asc:before{content:""}.o_icon_sort_desc:before{content:"ïƒ"}.o_icon_sort_amount_asc:before{content:"ï… "}.o_icon_sort_amount_desc:before{content:"ï…¡"}.o_icon_sort_menu:before{content:"ï… "}.o_icon_start:before{content:"ï”"}.o_icon_status_available:before{content:"ï„‘";color:#063}.o_icon_status_chat:before{content:"ïµ"}.o_icon_status_dnd:before{content:"";color:#cc3}.o_icon_status_unavailable:before{content:"ïœ";color:#963}.o_icon_status_not_started:before{content:""}.o_icon_status_in_progress:before{content:"ï‹"}.o_icon_status_in_review:before{content:""}.o_icon_status_done:before{content:"ï˜"}.o_icon_statistics_tool:before{content:"ï‚€"}.o_icon_submit:before{content:""}.o_icon_table:before{content:""}.o_icon_table_custom:before{content:""}.o_icon_table_large:before{content:""}.o_icon_tags:before{content:""}.o_icon_textinput:before{content:""}.o_icon_timelimit:before{content:""}.o_icon_timelimit_start:before{content:""}.o_icon_timelimit_half:before{content:""}.o_icon_timelimit_end:before{content:""}.o_icon_toggle:before{content:"ï„‘"}.o_icon_toggle_on:before{content:""}.o_icon_toggle_off:before{content:""}.o_icon_to_read:before{content:"ï„‘"}.o_icon_tool:before{content:""}.o_icon_tools:before{content:"ï‚"}.o_icon_top:before{content:"ï·"}.o_icon_translation_item:before{content:""}.o_icon_translation_package:before{content:"ï„•"}.o_icon_undo:before{content:""}.o_icon_user:before{content:""}.o_icon_user_vip:before{content:"ï†"}.o_icon_user_anonymous:before{content:""}.o_icon_upload:before{content:"ï‚“"}.o_icon_version:before{content:""}.o_icon_video:before{content:""}.o_icon_visitingcard.o_icon_waiting:before{content:""}.o_icon_warn:before{content:"ï±";color:#f0ad4e}.o_icon_wizard:before{content:"ïƒ"}.o_icon_xing:before{content:"ï…¨";color:#cfdc00}.o_BinderTemplate_icon:before{content:""}.o_CourseModule_icon:before,.o_course_icon:before{content:""}.o_EPStructuredMapTemplate_icon:before{content:"ï„®"}.o_FileResource-BLOG_icon:before{content:"ï‚¡"}.o_FileResource-IMSCP_icon:before{content:""}.o_FileResource-FORM_icon:before{content:""}.o_FileResource-PODCAST_icon:before{content:""}.o_FileResource-SHAREDFOLDER:before{content:""}.o_FileResource-SCORMCP_icon:before{content:""}.o_FileResource-SURVEY_icon:before{content:""}.o_FileResource-TEST_icon:before{content:"ï„"}.o_FileResource-IMSQTI21_icon:before{content:"ï…‹"}.o_FileResource-WIKI_icon:before{content:""}.o_FileResource-SHAREDFOLDER_icon:before{content:"ï„•"}.o_FileResource-GLOSSARY_icon:before{content:"ï†"}.o_FileResource-PDF_icon:before{content:"ï‡"}.o_FileResource-XLS_icon:before{content:""}.o_FileResource-PPT_icon:before{content:""}.o_FileResource-DOC_icon:before{content:""}.o_FileResource-ANIM_icon:before{content:""}.o_FileResource-IMAGE_icon:before{content:""}.o_FileResource-SOUND_icon:before{content:""}.o_FileResource-MOVIE_icon:before{content:""}.o_FileResource-FILE_icon:before{content:""}.o_FileResource-VIDEO_icon:before{content:""}.o_CourseModule_icon_closed:before{content:"ïž"}.o_sp_icon:before{content:""}.o_st_icon:before{content:""}.o_tu_icon:before{content:""}.o_bc_icon:before{content:"ï„•"}.o_lti_icon:before{content:""}.o_cp_icon:before{content:""}.o_cp_item:before{content:""}.o_scorm_icon:before{content:""}.o_en_icon:before{content:"ï‚"}.o_fo_icon:before{content:""}.o_co_icon:before{content:""}.o_infomsg_icon:before{content:"ïš"}.o_cal_icon:before{content:"ï³"}.o_wiki_icon:before{content:""}.o_podcast_icon:before{content:""}.o_pf_icon:before{content:""}.o_blog_icon:before{content:"ï‚¡"}.o_ep_icon:before{content:""}.o_ep_icon_v1:before{content:"ï„®"}.o_iqtest_icon:before{content:"ï„"}.o_iqself_icon:before{content:"ï„"}.o_iqsurv_icon:before{content:""}.o_qtiassessment_icon:before{content:"ï…‹"}.o_ta_icon:before{content:"ï‚®"}.o_gta_icon:before{content:"ï‚®"}.o_ms_icon:before{content:""}.o_dialog_icon:before{content:""}.o_projectbroker_icon:before{content:""}.o_ll_icon:before{content:"ïƒ"}.o_den_icon:before{content:""}.o_cmembers_icon:before{content:""}.o_cl_icon:before{content:"ï†"}.o_vc_icon:before{content:""}.o_video_icon:before{content:""}.o_vitero_icon:before{content:""}.o_openmeetings_icon:before{content:""}.o_gotomeeting_icon:before{content:""}.o_card2brain_icon:before{content:""}.o_portlet_infomsg_icon:before{content:"ïš"}.o_portlet_quickstart_icon:before{content:""}.o_portlet_bookmark_icon:before{content:""}.o_portlet_groups_icon:before{content:""}.o_portlet_notes_icon:before{content:""}.o_portlet_noti_icon:before{content:""}.o_portlet_eff_icon:before{content:"ï‚£"}.o_portlet_repository_student_icon:before{content:""}.o_portlet_repository_teacher_icon:before{content:"ï†"}.o_portlet_iframe_icon:before{content:""}.o_portlet_sysinfo_icon:before{content:""}.o_portlet_dyk_icon:before{content:""}.o_portlet_infomessages_icon:before{content:""}.o_portlet_cal_icon:before{content:"ï³"}.o_portlet_institutions_icon:before{content:""}.o_portlet_links_icon:before{content:"ïƒ"}.o_portlet_shibboleth_icon:before{content:"ï‚"}.o_icon_qpool:before{content:""}.o_icon_pool_private:before{content:"ï‚–"}.o_icon_pool_public:before{content:"ï†"}.o_icon_pool_my_items:before{content:""}.o_icon_pool_favorits:before{content:""}.o_icon_pool_collection:before{content:""}.o_icon_pool_pool:before{content:""}.o_icon_pool_share:before{content:""}.o_forum_message_icon:before{content:""}.o_calendar_icon:before{content:"ï³"}.o_icon_pf_section_draft:before{content:"ï°";color:#f0ad4e}.o_icon_pf_section_progress:before{content:"";color:#f0ad4e}.o_icon_pf_section_submitted:before{content:"";color:#3b678a}.o_icon_pf_section_closed:before{content:"";color:#5cb85c}.o_icon_pf_binder:before{content:""}.o_icon_pf_entry:before{content:"ï…›"}.o_icon_pf_entry_draft:before{content:"ï„‘";color:#f0ad4e}.o_icon_pf_entry_published:before{content:"ï„‘";color:#3b678a}.o_icon_pf_entry_revision:before{content:"ï„‘";color:#d9534f}.o_icon_pf_entry_closed:before{content:"ï„‘";color:#5cb85c}.o_icon_pf_entry_deleted:before{content:"";color:#000}.o_icon_pf_history:before{content:""}.o_icon_pf_my_shares:before{content:"ï‡ "}.o_icon_pf_quick_links:before{content:"ï¤"}.o_icon_pf_page:before{content:""}.o_icon_pf_section:before{content:""}.o_icon_pf_shared_with_me:before{content:""}.o_forum_status_thread_icon:before{content:""}.o_forum_status_sticky_closed_icon:before{content:"ïž"}.o_forum_status_sticky_icon:before{content:""}.o_forum_status_closed_icon:before{content:"ïž";color:#a94442}.o_forum_status_opened_icon:before{content:"ïž";color:#3c763d}.o_forum_status_hidden_icon:before{content:"ï°";color:#a94442}.o_forum_status_visible_icon:before{content:"ï®";color:#3c763d}.o_forum_all_icon:before{content:""}.o_forum_all_flat_icon:before{content:""}.o_forum_one_icon:before{content:"ï®"}.o_forum_marked_icon:before{content:""}.o_forum_new_icon:before{content:"ï©"}.o_mi_qpool_import:before{content:""}.o_mi_qtidrawing:before{content:""}.o_mi_qtisection:before{content:""}.o_mi_qtisc:before{content:""}.o_mi_qtimatch:before{content:""}.o_mi_qtimatch_draganddrop:before{content:"ï‰"}.o_mi_qtimc:before{content:"ï†"}.o_mi_qtikprim:before{content:"ï…Š"}.o_mi_qtifib:before{content:"ï…"}.o_mi_qtinumerical:before{content:""}.o_mi_qtihotspot:before{content:""}.o_mi_qtihottext:before{content:"ï"}.o_mi_qtiessay:before{content:""}.o_mi_qtiunkown:before{content:""}.o_mi_qtiupload:before{content:"ï‚“"}.o_as_mode_leadtime:before{content:""}.o_as_mode_assessment:before{content:"ï‹"}.o_as_mode_followup:before{content:"ïž"}.o_as_mode_closed:before{content:'-'}.o_icon_qti_notPresented:before{content:"";color:#ddd}.o_icon_qti_notAnswered:before{content:"ï…„";color:#f0ad4e}.o_icon_qti_answered:before{content:"ï˜";color:#5cb85c}.o_icon_qti_ended:before{content:"ïž";color:#5bc0de}.o_icon_qti_invalid:before{content:"ïª";color:#d9534f}.o_icon_qti_review:before{content:"ï®";color:#5bc0de}.o_icon_qti_reviewNotSeen:before,.o_icon_qti_reviewNotAnswered:before,.o_icon_qti_reviewInvalid:before{content:"ï°";color:#5bc0de}.o_icon_qti_end_testpart:before{content:""}.o_icon_qti_close_test:before{content:"ï‹“"}.o_icon_qti_cancel:before{content:"ï"}.o_icon_qti_suspend:before{content:"ïŒ"}.o_icon_qti_close_results:before{content:"ï‹“"}.o_icon_qti_hint:before{content:"ï™"}.o_icon_qti_summary_notAnswered:before{content:"ï„‘";color:#f0ad4e}.o_icon_qti_summary_ended:before{content:"ï—";color:#d9534f}.o_icon_qti_summary_correct:before{content:"ï˜";color:#5cb85c}.o_black_led:before{content:"ï„‘";color:#3b678a}.o_green_led:before{content:"ï„‘";color:#5cb85c}.o_yellow_led:before{content:"ï„‘";color:#f0ad4e}.o_red_led:before{content:"ï„‘";color:#d9534f}.o_ac_token_icon:before{content:"ï‚„"}.o_ac_free_icon:before{content:"ï«"}.o_ac_group_icon:before{content:""}.o_ac_membersonly_icon:before{content:""}.o_ac_paypal_icon:before{content:""}.o_ac_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_status_new_icon:before{content:"ï©";color:#3b678a}.o_ac_status_success_icon:before{content:"";color:#5cb85c}.o_ac_status_waiting_icon:before{content:"";color:#3b678a}.o_ac_order_status_new_icon:before{content:"ï©";color:#3b678a}.o_ac_order_status_prepayment_icon:before{content:"";color:#5bc0de}.o_ac_order_status_payed_icon:before{content:"";color:#5cb85c}.o_ac_order_status_canceled_icon:before{content:"ï¨";color:#f0ad4e}.o_ac_order_status_error_icon:before{content:"ï€";color:#d9534f}.o_ac_order_status_warning_icon:before{content:"";color:#f0ad4e}.o_scorm_org:before{content:""}.o_scorm_item:before{content:""}.o_scorm_completed:before,.o_scorm_passed:before{content:"ï˜"}.o_scorm_failed:before{content:"ï±"}.o_scorm_incomplete:before{content:"ï±"}.o_scorm_not_attempted:before{background:none}.o_midpub:before{content:"ï˜"}.o_midwarn:before{content:"ï±"}.o_midlock:before{content:""}.o_miderr:before{content:"ïª"}.o_middel:before{content:"ï„"}.o_filetype_file:before,.o_filetype_ico:before{content:""}.o_filetype_folder:before{content:"ï„”"}.o_filetype_folder_open:before{content:"ï„•"}.o_filetype_zip:before,.o_filetype_gz:before,.o_filetype_tar:before,.o_filetype_tgz:before{content:""}.o_filetype_css:before,.o_filetype_js:before,.o_filetype_java:before,.o_filetype_numbers:before,.o_filetype_ods:before,.o_filetype_xml:before,.o_filetype_xsl:before{content:""}.o_filetype_bat_icon:before,.o_filetype_bat:before,.o_filetype_exe:before,.o_filetype_app:before,.o_filetype_sh:before{content:""}.o_filetype_xls:before,.o_filetype_xlsx:before{content:""}.o_filetype_png:before,.o_filetype_tiff:before,.o_filetype_webp:before,.o_filetype_gif:before,.o_filetype_ico:before,.o_filetype_jpeg:before,.o_filetype_bmp:before,.o_filetype_odg:before,.o_filetype_eps:before,.o_filetype_jpg:before{content:""}.o_filetype_psd:before,.o_filetype_avi:before,.o_filetype_dvi:before,.o_filetype_mp4:before,.o_filetype_m4v:before,.o_filetype_webm:before,.o_filetype_ogg:before,.o_filetype_video:before,.o_filetype_mov:before,.o_filetype_mpeg:before,.o_filetype_mpg:before,.o_filetype_qt:before,.o_filetype_ra:before,.o_filetype_ram:before,.o_filetype_swf:before,.o_filetype_flv:before{content:""}.o_filetype_midi:before,.o_filetype_audio:before,.o_filetype_mp3:before,.o_filetype_m3u:before,.o_filetype_wav:before{content:""}.o_filetype_ps:before,.o_filetype_pdf:before{content:"ï‡"}.o_filetype_key:before,.o_filetype_odp:before,.o_filetype_ppt:before,.o_filetype_pptx:before{content:""}.o_filetype_odf:before,.o_filetype_rtf:before,.o_filetype_readme:before,.o_filetype_README:before,.o_filetype_log:before,.o_filetype_txt:before,.o_filetype_htm:before,.o_filetype_html:before{content:""}.o_filetype_odt:before,.o_filetype_pages:before,.o_filetype_doc:before,.o_filetype_docx:before{content:""}.o_icon_share_social:before{content:"ï…"}.o_icon_apple:before{content:"ï…¹"}.o_icon_facebook:before{content:"ï‚‚"}.o_icon_twitter:before{content:"ï‚"}.o_icon_google:before{content:""}.o_icon_delicious:before{content:""}.o_icon_digg:before{content:""}.o_icon_mailto:before{content:""}.o_icon_link:before{content:"ïƒ"}.o_icon_yahoo:before{content:""}a.o_icon:hover,a.o_icon:focus{text-decoration:none}img.o_emoticons_angel{background:url(../light/images/emoticons/smiley-angel.png);width:16px;height:16px}img.o_emoticons_angry{background:url(../light/images/emoticons/smiley-mad.png);width:16px;height:16px}img.o_emoticons_blushing{background:url(../light/images/emoticons/smiley-red.png);width:16px;height:16px}img.o_emoticons_confused{background:url(../light/images/emoticons/smiley-confuse.png);width:16px;height:16px}img.o_emoticons_cool{background:url(../light/images/emoticons/smiley-cool.png);width:16px;height:16px}img.o_emoticons_cry{background:url(../light/images/emoticons/smiley-cry.png);width:16px;height:16px}img.o_emoticons_devil{background:url(../light/images/emoticons/smiley-evil.png);width:16px;height:16px}img.o_emoticons_grin{background:url(../light/images/emoticons/smiley-grin.png);width:16px;height:16px}img.o_emoticons_kiss{background:url(../light/images/emoticons/smiley-kiss.png);width:16px;height:16px}img.o_emoticons_ohoh{background:url(../light/images/emoticons/smiley-eek.png);width:16px;height:16px}img.o_emoticons_sad{background:url(../light/images/emoticons/smiley-sad.png);width:16px;height:16px}img.o_emoticons_sick{background:url(../light/images/emoticons/smiley-sad-blue.png);width:16px;height:16px}img.o_emoticons_smile{background:url(../light/images/emoticons/smiley.png);width:16px;height:16px}img.o_emoticons_tongue{background:url(../light/images/emoticons/smiley-razz.png);width:16px;height:16px}img.o_emoticons_ugly{background:url(../light/images/emoticons/smiley-money.png);width:16px;height:16px}img.o_emoticons_weird{background:url(../light/images/emoticons/smiley-nerd.png);width:16px;height:16px}img.o_emoticons_wink{background:url(../light/images/emoticons/smiley-wink.png);width:16px;height:16px}img.o_emoticons_worried{background:url(../light/images/emoticons/smiley-roll-blue.png);width:16px;height:16px}img.o_emoticons_up{background:url(../light/images/emoticons/thumb-up.png);width:16px;height:16px}img.o_emoticons_down{background:url(../light/images/emoticons/thumb.png);width:16px;height:16px}.o_block_bottom,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_pf_content .o_cit,.o_pf_content .o_file,.o_pf_content .o_forum,.o_pf_content .o_image,.o_pf_content .o_video,.o_header_with_buttons,.o_search_result{margin-bottom:1em}.o_block_top,.o_block,.o_button_group,.o_block_with_datecomp .o_content,.o_course_run .o_toc .o_entry,.o_pf_content .o_cit,.o_pf_content .o_file,.o_pf_content .o_forum,.o_pf_content .o_image,.o_pf_content .o_video{margin-top:1em}.o_block_large_bottom,.o_block_large,.o_block_with_datecomp,.o_login .o_login_footer_wrapper,.o_portlet{margin-bottom:2em}.o_block_large_top,.o_block_large,.o_block_with_datecomp,.o_login .o_login_footer_wrapper,.o_portlet{margin-top:2em}.o_block_inline,.o_block_inline_left,.o_block_inline_both,.o_block_inline_right{display:inline-block}.o_block_inline_left,.o_block_inline_both{margin-left:0.5em}.o_block_inline_right,.o_block_inline_both{margin-right:0.5em}.o_block_centered_wrapper{display:table;width:100%;height:100%}.o_block_centered_content{display:table-cell;vertical-align:middle;text-align:center}.o_block_imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.o_block_imagebg span{padding:2px;background-color:rgba(255,255,255,0.8)}.o_block_imagebg h1,.o_block_imagebg h2,.o_block_imagebg h3,.o_block_imagebg h4,.o_block_imagebg .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_block_imagebg h2,.o_block_imagebg h5,.o_block_imagebg p{padding:2px;background-color:rgba(255,255,255,0.8);display:inline-block}.o_block_imagebg h1:after,.o_block_imagebg h2:after,.o_block_imagebg h3:after,.o_block_imagebg h4:after,.o_block_imagebg .o_cal .fc-header-title h2:after,.o_cal .fc-header-title .o_block_imagebg h2:after,.o_block_imagebg h5:after,.o_block_imagebg p:after{content:' ';display:block}.o_scrollblock,div.b_scrollblock{overflow-x:auto;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_button_group{text-align:center}.o_button_group a,.o_button_group input,.o_button_group button,.o_button_group .btn-group{margin-right:5px;margin-bottom:0.5em}.o_button_group a:last-child,.o_button_group input:last-child,.o_button_group button:last-child,.o_button_group .btn-group:last-child{margin-right:0}.o_button_group .btn-group a,.o_button_group .btn-group input,.o_button_group .btn-group button{margin-right:0;margin-bottom:0}.o_button_group .dropdown-menu{text-align:left}.o_button_group_left{text-align:left}.o_button_group_right{text-align:right}.o_button_group_top{margin-top:0}.o_header_with_buttons:before,.o_header_with_buttons:after{content:" ";display:table}.o_header_with_buttons:after{clear:both}.o_header_with_buttons h1,.o_header_with_buttons h2,.o_header_with_buttons h3,.o_header_with_buttons h4,.o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_header_with_buttons h2,.o_header_with_buttons h5,.o_header_with_buttons h6{display:inline-block}.o_header_with_buttons .o_button_group{margin-bottom:0;float:right}.o_header_with_buttons h1+.o_button_group{margin-top:28px}.o_header_with_buttons h2+.o_button_group{margin-top:24px}.o_header_with_buttons h3+.o_button_group{margin-top:20px}.o_header_with_buttons h4+.o_button_group,.o_header_with_buttons .o_cal .fc-header-title h2+.o_button_group,.o_cal .fc-header-title .o_header_with_buttons h2+.o_button_group{margin-top:10px}.o_header_with_buttons h5+.o_button_group{margin-top:6.66667px}.o_header_with_buttons h6+.o_button_group{margin-top:5px}#o_main_center .o_header_with_buttons h2+.o_button_group{margin-top:0}.panel-heading.o_header_with_buttons{margin-bottom:0}.panel-imagebg{background-repeat:no-repeat;background-position:center;background-size:cover}.panel-imagebg.panel-default>.panel-heading{background-color:rgba(255,255,255,0.8);border-bottom:transparent}.panel-imagebg .panel-body span{padding:2px;background-color:rgba(255,255,255,0.8)}.panel-placeholder{border-width:2px;border-style:dashed;border-color:#6b9ac0;border-radius:10px}.panel-placeholder .panel-body{padding:10px}.panel-placeholder .panel-body:nth-child(n+2){border-top:none}.panel-placeholder .panel-body h3:nth-child(1),.panel-placeholder .panel-body h4:nth-child(1),.panel-placeholder .panel-body .o_cal .fc-header-title h2:nth-child(1),.o_cal .fc-header-title .panel-placeholder .panel-body h2:nth-child(1),.panel-placeholder .panel-body h5:nth-child(1){margin-top:0}.panel-placeholder .panel-body .o_button_group{margin-bottom:0}.panel-placeholder .panel-heading{border-top-right-radius:8px;border-top-left-radius:8px;border-width:2px;border-style:dashed;border-color:#6b9ac0;border-top:none;border-left:none;border-right:none;color:#3b678a;font-weight:bold}.panel-placeholder .panel-footer{border-bottom-right-radius:8px;border-bottom-left-radius:8px;border-width:2px;border-style:dashed;border-color:#6b9ac0;border-bottom:none;border-left:none;border-right:none}.o_xsmall,.b_xsmall,p.b_xsmall,div.b_xsmall{font-size:12px}.o_small,.b_small,p.b_small,div.b_small,.o_comments .o_comment_wrapper h5,.o_comments .o_comment_wrapper .o_comment,.o_bc_meta,.tooltip,.o_htmleditor .o_metadata .o_lastmodified,.o_noti,.o_block_with_datecomp .o_meta,.o_togglebox_wrapper div.o_togglebox_content .o_hide,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label,.o_course_run .o_toc .o_entry,.o_assessment_test_results .o_qti_to_overview{font-size:12px}.o_large,.b_large,p.b_large,div.b_large{font-size:18px}.o_xlarge,.b_xlarge,p.b_xlarge,div.b_xlarge{font-size:18px}.o_disabled,.b_disabled,p.b_disabled,div.b_disabled{color:#777 !important;cursor:default}.o_disabled:hover,.b_disabled:hover{color:#777 !important}.o_dimmed,.b_dimmed,p.b_dimmed,div.b_dimmed{opacity:0.4;filter:alpha(opacity=40)}.o_selected,.b_selected,p.b_selected,div.b_selected{font-weight:bold}.o_deleted,.b_deleted,p.b_deleted,div.b_deleted{text-decoration:line-through}.o_clickable{cursor:pointer}.o_ochre{color:#c8a959}.o_blue{color:#12223F}.o_undecorated:hover,.o_undecorated:focus,.o_disabled:hover,.b_disabled:hover,#o_main_wrapper #o_toplink:hover,#o_footer_powered a:hover,#o_share a:hover,#o_share_social_container a:hover,.o_toolbar .o_tools_container a:hover,.o_button_toggle:hover,.o_im_message_group .o_im_from:hover,.o_noti .o_label:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover,.o_catalog .o_level .o_meta .o_title a:hover,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover,.o_repo_details .o_social .o_comments:hover,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover,.o_login .o_login_register:hover,.o_disabled:focus,.b_disabled:focus,#o_main_wrapper #o_toplink:focus,#o_footer_powered a:focus,#o_share a:focus,#o_share_social_container a:focus,.o_toolbar .o_tools_container a:focus,.o_button_toggle:focus,.o_im_message_group .o_im_from:focus,.o_noti .o_label:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_comments:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:focus,.o_catalog .o_level .o_meta .o_title a:focus,.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:focus,.o_repo_details .o_social .o_comments:focus,.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:focus,.o_login .o_login_register:focus{text-decoration:none}.o_copy_code,.b_copy_code,p.b_copy_code,div.b_copy_code,code,pre{overflow-x:auto;overflow-y:auto;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}.o_nowrap,.b_copy_code,p.b_copy_code,div.b_copy_code,code{white-space:nowrap}.o_titled_wrapper .o_content{margin-top:20px}.o_video,.o_video video,.b_video,.o_video_wrapper{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image,.o_image img,img,.b_image{display:inline-block;max-width:100%;height:auto;max-width:100%}.o_image_vertical_center_helper{display:inline-block;height:100%;vertical-align:middle}.o_image_vertical_center_helper+.o_image img{vertical-align:middle}.o_with_hyphens{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}h1{color:#3b678a}h2{color:#3b678a}h3{color:#3b678a}h4,.o_cal .fc-header-title h2{color:#3b678a}h5{color:#3b678a}h5{color:#3b678a}fieldset legend{color:#333}.o_user_content_block a{color:#3b678a;text-decoration:none}.o_user_content_block a:hover,.o_user_content_block a:focus{color:#243f54;text-decoration:underline}.b_border_box,p.b_border_box,div.b_border_box{border:1px solid #777;padding:1em;border-top-right-radius:3px;border-top-left-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px}table td{vertical-align:top}table.b_grid{width:99.5%;background:transparent;border-collapse:separate}table.b_grid td,table.b_grid th{padding:1px 5px;border:1px solid #777}table.b_grid thead td,table.b_grid th{background:#eee;font-weight:bold}table.b_border{width:99.5%;background:transparent;border-collapse:collapse}table.b_border td,table.b_border th{padding:1px 5px;border:1px solid #777}table.b_border thead td,table.b_border th{background:#eee;font-weight:bold}table.b_borderless{width:99.5%;background:transparent;border-collapse:separate}table.b_borderless td,table.b_borderless th{padding:1px 5px;border:0;font-weight:bold}table.b_full{width:99.5%}table.b_middle{background:transparent}table.b_middle td{vertical-align:middle}table.b_gray{border-collapse:collapse}table.b_gray td,table.b_gray th{padding:1px 5px;background:#eee;border:1px solid #fff}table.b_gray thead td,table.b_gray th{background:#d5d5d5;font-weight:bold}table.b_blue{border-collapse:collapse}table.b_blue td,table.b_blue th{padding:1px 5px;background:#d9edf7;border:1px solid #fff}table.b_blue thead td,table.b_blue th{background:#afd9ee;font-weight:bold}table.b_green{border-collapse:collapse}table.b_green td,table.b_green th{padding:1px 5px;background:#dff0d8;border:1px solid #fff}table.b_green thead td,table.b_green th{background:#c1e2b3;font-weight:bold}table.b_yellow{border-collapse:collapse}table.b_yellow td,table.b_yellow th{padding:1px 5px;background:#fcf8e3;border:1px solid #fff}table.b_yellow thead td,table.b_yellow th{background:#f7ecb5;font-weight:bold}table.b_red{border-collapse:collapse}table.b_red td,table.b_red th{padding:1px 5px;background:#f2dede;border:1px solid #fff}table.b_red thead td,table.b_red th{background:#e4b9b9;font-weight:bold}.b_align_normal{text-align:left}.b_align_center{text-align:center}.b_align_inverse{text-align:right}.b_align_justified{text-align:justify}a.b_link_extern{color:#3b678a}a.b_link_extern:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_mailto{color:#3b678a}a.b_link_mailto:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}a.b_link_forward{color:#3b678a}a.b_link_forward:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:"ï¤"}img.b_float_left{float:left;margin:0 2em 2em 0}img.b_float_left_clear{clear:both;margin:0 2em 2em 0;display:block}img.b_float_right{float:right;margin:0 0 2em 2em}img.b_float_right_clear{clear:both;display:block;margin:0 0 2em auto}img.b_float_left_clear_nomargin{float:left;display:block;margin:0 0 0 0}img.b_centered{clear:both;display:block;margin:0 auto 2em auto}img.b_circle{border-radius:50%}img.b_with_border{border:1px solid #ddd;padding:3px;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}p.b_figure_title{margin:20px 0 5px 0;font-size:85%;font-family:inherit}p.b_figure_caption{clear:both;margin:5px 0 20px 0;font-size:85%;font-family:inherit}span.olatFlashMovieViewer{max-width:100% !important;border:none !important}.mejs__container,.mejs__mediaelement video,.mejs__layers div,.me_cannotplay{max-width:100%}.b_clear_float,p.b_clear_float,div.b_clear_float{clear:both}.radial-progress{margin:10px;width:120px;height:120px;background-color:#eee;border-radius:50%;display:inline-block;position:relative}.radial-progress .circle .mask,.radial-progress .circle .fill,.radial-progress .circle .shadow{width:100%;height:100%;position:absolute;border-radius:50%}.radial-progress .circle .shadow{box-shadow:none inset}.radial-progress .circle .mask,.radial-progress .circle .fill{-webkit-backface-visibility:hidden;transition:-webkit-transform 1s;transition:-ms-transform 1s;transition:transform 1s;border-radius:50%}.radial-progress .circle .mask{clip:rect(0px, 120px, 120px, 60px)}.radial-progress .circle .mask .fill{clip:rect(0px, 60px, 120px, 0px);background-color:#3b678a}.radial-progress .inset{width:90px;height:90px;position:absolute;border-radius:50%;margin-left:15px;margin-top:15px;overflow:hidden;background-color:#fff;box-shadow:none;font-size:21.6px}.radial-progress .inset .bgIcon{position:absolute;font-size:80px;top:5px;left:-5px;opacity:0;transition:opacity 0;transition-delay:1s}.radial-progress .inset .percentage{height:80%;width:80%;position:absolute;top:10%;left:10%;display:table;line-height:1}.radial-progress .inset .percentage .centeredWrapper{display:table-cell;vertical-align:middle;text-align:center}.radial-progress .inset .percentage .centeredWrapper .number{font-weight:800;color:#3b678a}.radial-progress .inset .percentage .centeredWrapper .addon{color:#777;margin-top:5px}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(1){font-size:0.55em;font-weight:bold}.radial-progress .inset .percentage .centeredWrapper .addon div:nth-of-type(2){margin-top:2px;font-size:0.45em}.radial-progress[data-progress="0"] .circle .mask.full,.radial-progress[data-progress="0"] .circle .fill{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="0"] .circle .fill.fix{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.radial-progress[data-progress="1"] .circle .mask.full,.radial-progress[data-progress="1"] .circle .fill{-webkit-transform:rotate(1.8deg);-ms-transform:rotate(1.8deg);transform:rotate(1.8deg)}.radial-progress[data-progress="1"] .circle .fill.fix{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .mask.full,.radial-progress[data-progress="2"] .circle .fill{-webkit-transform:rotate(3.6deg);-ms-transform:rotate(3.6deg);transform:rotate(3.6deg)}.radial-progress[data-progress="2"] .circle .fill.fix{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="3"] .circle .mask.full,.radial-progress[data-progress="3"] .circle .fill{-webkit-transform:rotate(5.4deg);-ms-transform:rotate(5.4deg);transform:rotate(5.4deg)}.radial-progress[data-progress="3"] .circle .fill.fix{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="4"] .circle .mask.full,.radial-progress[data-progress="4"] .circle .fill{-webkit-transform:rotate(7.2deg);-ms-transform:rotate(7.2deg);transform:rotate(7.2deg)}.radial-progress[data-progress="4"] .circle .fill.fix{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="5"] .circle .mask.full,.radial-progress[data-progress="5"] .circle .fill{-webkit-transform:rotate(9deg);-ms-transform:rotate(9deg);transform:rotate(9deg)}.radial-progress[data-progress="5"] .circle .fill.fix{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="6"] .circle .mask.full,.radial-progress[data-progress="6"] .circle .fill{-webkit-transform:rotate(10.8deg);-ms-transform:rotate(10.8deg);transform:rotate(10.8deg)}.radial-progress[data-progress="6"] .circle .fill.fix{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="7"] .circle .mask.full,.radial-progress[data-progress="7"] .circle .fill{-webkit-transform:rotate(12.6deg);-ms-transform:rotate(12.6deg);transform:rotate(12.6deg)}.radial-progress[data-progress="7"] .circle .fill.fix{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="8"] .circle .mask.full,.radial-progress[data-progress="8"] .circle .fill{-webkit-transform:rotate(14.4deg);-ms-transform:rotate(14.4deg);transform:rotate(14.4deg)}.radial-progress[data-progress="8"] .circle .fill.fix{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="9"] .circle .mask.full,.radial-progress[data-progress="9"] .circle .fill{-webkit-transform:rotate(16.2deg);-ms-transform:rotate(16.2deg);transform:rotate(16.2deg)}.radial-progress[data-progress="9"] .circle .fill.fix{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="10"] .circle .mask.full,.radial-progress[data-progress="10"] .circle .fill{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.radial-progress[data-progress="10"] .circle .fill.fix{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="11"] .circle .mask.full,.radial-progress[data-progress="11"] .circle .fill{-webkit-transform:rotate(19.8deg);-ms-transform:rotate(19.8deg);transform:rotate(19.8deg)}.radial-progress[data-progress="11"] .circle .fill.fix{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="12"] .circle .mask.full,.radial-progress[data-progress="12"] .circle .fill{-webkit-transform:rotate(21.6deg);-ms-transform:rotate(21.6deg);transform:rotate(21.6deg)}.radial-progress[data-progress="12"] .circle .fill.fix{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="13"] .circle .mask.full,.radial-progress[data-progress="13"] .circle .fill{-webkit-transform:rotate(23.4deg);-ms-transform:rotate(23.4deg);transform:rotate(23.4deg)}.radial-progress[data-progress="13"] .circle .fill.fix{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="14"] .circle .mask.full,.radial-progress[data-progress="14"] .circle .fill{-webkit-transform:rotate(25.2deg);-ms-transform:rotate(25.2deg);transform:rotate(25.2deg)}.radial-progress[data-progress="14"] .circle .fill.fix{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="15"] .circle .mask.full,.radial-progress[data-progress="15"] .circle .fill{-webkit-transform:rotate(27deg);-ms-transform:rotate(27deg);transform:rotate(27deg)}.radial-progress[data-progress="15"] .circle .fill.fix{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="16"] .circle .mask.full,.radial-progress[data-progress="16"] .circle .fill{-webkit-transform:rotate(28.8deg);-ms-transform:rotate(28.8deg);transform:rotate(28.8deg)}.radial-progress[data-progress="16"] .circle .fill.fix{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="17"] .circle .mask.full,.radial-progress[data-progress="17"] .circle .fill{-webkit-transform:rotate(30.6deg);-ms-transform:rotate(30.6deg);transform:rotate(30.6deg)}.radial-progress[data-progress="17"] .circle .fill.fix{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="18"] .circle .mask.full,.radial-progress[data-progress="18"] .circle .fill{-webkit-transform:rotate(32.4deg);-ms-transform:rotate(32.4deg);transform:rotate(32.4deg)}.radial-progress[data-progress="18"] .circle .fill.fix{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="19"] .circle .mask.full,.radial-progress[data-progress="19"] .circle .fill{-webkit-transform:rotate(34.2deg);-ms-transform:rotate(34.2deg);transform:rotate(34.2deg)}.radial-progress[data-progress="19"] .circle .fill.fix{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="20"] .circle .mask.full,.radial-progress[data-progress="20"] .circle .fill{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.radial-progress[data-progress="20"] .circle .fill.fix{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="21"] .circle .mask.full,.radial-progress[data-progress="21"] .circle .fill{-webkit-transform:rotate(37.8deg);-ms-transform:rotate(37.8deg);transform:rotate(37.8deg)}.radial-progress[data-progress="21"] .circle .fill.fix{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="22"] .circle .mask.full,.radial-progress[data-progress="22"] .circle .fill{-webkit-transform:rotate(39.6deg);-ms-transform:rotate(39.6deg);transform:rotate(39.6deg)}.radial-progress[data-progress="22"] .circle .fill.fix{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="23"] .circle .mask.full,.radial-progress[data-progress="23"] .circle .fill{-webkit-transform:rotate(41.4deg);-ms-transform:rotate(41.4deg);transform:rotate(41.4deg)}.radial-progress[data-progress="23"] .circle .fill.fix{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="24"] .circle .mask.full,.radial-progress[data-progress="24"] .circle .fill{-webkit-transform:rotate(43.2deg);-ms-transform:rotate(43.2deg);transform:rotate(43.2deg)}.radial-progress[data-progress="24"] .circle .fill.fix{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="25"] .circle .mask.full,.radial-progress[data-progress="25"] .circle .fill{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.radial-progress[data-progress="25"] .circle .fill.fix{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="26"] .circle .mask.full,.radial-progress[data-progress="26"] .circle .fill{-webkit-transform:rotate(46.8deg);-ms-transform:rotate(46.8deg);transform:rotate(46.8deg)}.radial-progress[data-progress="26"] .circle .fill.fix{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="27"] .circle .mask.full,.radial-progress[data-progress="27"] .circle .fill{-webkit-transform:rotate(48.6deg);-ms-transform:rotate(48.6deg);transform:rotate(48.6deg)}.radial-progress[data-progress="27"] .circle .fill.fix{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="28"] .circle .mask.full,.radial-progress[data-progress="28"] .circle .fill{-webkit-transform:rotate(50.4deg);-ms-transform:rotate(50.4deg);transform:rotate(50.4deg)}.radial-progress[data-progress="28"] .circle .fill.fix{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="29"] .circle .mask.full,.radial-progress[data-progress="29"] .circle .fill{-webkit-transform:rotate(52.2deg);-ms-transform:rotate(52.2deg);transform:rotate(52.2deg)}.radial-progress[data-progress="29"] .circle .fill.fix{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="30"] .circle .mask.full,.radial-progress[data-progress="30"] .circle .fill{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.radial-progress[data-progress="30"] .circle .fill.fix{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="31"] .circle .mask.full,.radial-progress[data-progress="31"] .circle .fill{-webkit-transform:rotate(55.8deg);-ms-transform:rotate(55.8deg);transform:rotate(55.8deg)}.radial-progress[data-progress="31"] .circle .fill.fix{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="32"] .circle .mask.full,.radial-progress[data-progress="32"] .circle .fill{-webkit-transform:rotate(57.6deg);-ms-transform:rotate(57.6deg);transform:rotate(57.6deg)}.radial-progress[data-progress="32"] .circle .fill.fix{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="33"] .circle .mask.full,.radial-progress[data-progress="33"] .circle .fill{-webkit-transform:rotate(59.4deg);-ms-transform:rotate(59.4deg);transform:rotate(59.4deg)}.radial-progress[data-progress="33"] .circle .fill.fix{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="34"] .circle .mask.full,.radial-progress[data-progress="34"] .circle .fill{-webkit-transform:rotate(61.2deg);-ms-transform:rotate(61.2deg);transform:rotate(61.2deg)}.radial-progress[data-progress="34"] .circle .fill.fix{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="35"] .circle .mask.full,.radial-progress[data-progress="35"] .circle .fill{-webkit-transform:rotate(63deg);-ms-transform:rotate(63deg);transform:rotate(63deg)}.radial-progress[data-progress="35"] .circle .fill.fix{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="36"] .circle .mask.full,.radial-progress[data-progress="36"] .circle .fill{-webkit-transform:rotate(64.8deg);-ms-transform:rotate(64.8deg);transform:rotate(64.8deg)}.radial-progress[data-progress="36"] .circle .fill.fix{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="37"] .circle .mask.full,.radial-progress[data-progress="37"] .circle .fill{-webkit-transform:rotate(66.6deg);-ms-transform:rotate(66.6deg);transform:rotate(66.6deg)}.radial-progress[data-progress="37"] .circle .fill.fix{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="38"] .circle .mask.full,.radial-progress[data-progress="38"] .circle .fill{-webkit-transform:rotate(68.4deg);-ms-transform:rotate(68.4deg);transform:rotate(68.4deg)}.radial-progress[data-progress="38"] .circle .fill.fix{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="39"] .circle .mask.full,.radial-progress[data-progress="39"] .circle .fill{-webkit-transform:rotate(70.2deg);-ms-transform:rotate(70.2deg);transform:rotate(70.2deg)}.radial-progress[data-progress="39"] .circle .fill.fix{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="40"] .circle .mask.full,.radial-progress[data-progress="40"] .circle .fill{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.radial-progress[data-progress="40"] .circle .fill.fix{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="41"] .circle .mask.full,.radial-progress[data-progress="41"] .circle .fill{-webkit-transform:rotate(73.8deg);-ms-transform:rotate(73.8deg);transform:rotate(73.8deg)}.radial-progress[data-progress="41"] .circle .fill.fix{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="42"] .circle .mask.full,.radial-progress[data-progress="42"] .circle .fill{-webkit-transform:rotate(75.6deg);-ms-transform:rotate(75.6deg);transform:rotate(75.6deg)}.radial-progress[data-progress="42"] .circle .fill.fix{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="43"] .circle .mask.full,.radial-progress[data-progress="43"] .circle .fill{-webkit-transform:rotate(77.4deg);-ms-transform:rotate(77.4deg);transform:rotate(77.4deg)}.radial-progress[data-progress="43"] .circle .fill.fix{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="44"] .circle .mask.full,.radial-progress[data-progress="44"] .circle .fill{-webkit-transform:rotate(79.2deg);-ms-transform:rotate(79.2deg);transform:rotate(79.2deg)}.radial-progress[data-progress="44"] .circle .fill.fix{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="45"] .circle .mask.full,.radial-progress[data-progress="45"] .circle .fill{-webkit-transform:rotate(81deg);-ms-transform:rotate(81deg);transform:rotate(81deg)}.radial-progress[data-progress="45"] .circle .fill.fix{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="46"] .circle .mask.full,.radial-progress[data-progress="46"] .circle .fill{-webkit-transform:rotate(82.8deg);-ms-transform:rotate(82.8deg);transform:rotate(82.8deg)}.radial-progress[data-progress="46"] .circle .fill.fix{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="47"] .circle .mask.full,.radial-progress[data-progress="47"] .circle .fill{-webkit-transform:rotate(84.6deg);-ms-transform:rotate(84.6deg);transform:rotate(84.6deg)}.radial-progress[data-progress="47"] .circle .fill.fix{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="48"] .circle .mask.full,.radial-progress[data-progress="48"] .circle .fill{-webkit-transform:rotate(86.4deg);-ms-transform:rotate(86.4deg);transform:rotate(86.4deg)}.radial-progress[data-progress="48"] .circle .fill.fix{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="49"] .circle .mask.full,.radial-progress[data-progress="49"] .circle .fill{-webkit-transform:rotate(88.2deg);-ms-transform:rotate(88.2deg);transform:rotate(88.2deg)}.radial-progress[data-progress="49"] .circle .fill.fix{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="50"] .circle .mask.full,.radial-progress[data-progress="50"] .circle .fill{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.radial-progress[data-progress="50"] .circle .fill.fix{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="51"] .circle .mask.full,.radial-progress[data-progress="51"] .circle .fill{-webkit-transform:rotate(91.8deg);-ms-transform:rotate(91.8deg);transform:rotate(91.8deg)}.radial-progress[data-progress="51"] .circle .fill.fix{-webkit-transform:rotate(183.6deg);-ms-transform:rotate(183.6deg);transform:rotate(183.6deg)}.radial-progress[data-progress="52"] .circle .mask.full,.radial-progress[data-progress="52"] .circle .fill{-webkit-transform:rotate(93.6deg);-ms-transform:rotate(93.6deg);transform:rotate(93.6deg)}.radial-progress[data-progress="52"] .circle .fill.fix{-webkit-transform:rotate(187.2deg);-ms-transform:rotate(187.2deg);transform:rotate(187.2deg)}.radial-progress[data-progress="53"] .circle .mask.full,.radial-progress[data-progress="53"] .circle .fill{-webkit-transform:rotate(95.4deg);-ms-transform:rotate(95.4deg);transform:rotate(95.4deg)}.radial-progress[data-progress="53"] .circle .fill.fix{-webkit-transform:rotate(190.8deg);-ms-transform:rotate(190.8deg);transform:rotate(190.8deg)}.radial-progress[data-progress="54"] .circle .mask.full,.radial-progress[data-progress="54"] .circle .fill{-webkit-transform:rotate(97.2deg);-ms-transform:rotate(97.2deg);transform:rotate(97.2deg)}.radial-progress[data-progress="54"] .circle .fill.fix{-webkit-transform:rotate(194.4deg);-ms-transform:rotate(194.4deg);transform:rotate(194.4deg)}.radial-progress[data-progress="55"] .circle .mask.full,.radial-progress[data-progress="55"] .circle .fill{-webkit-transform:rotate(99deg);-ms-transform:rotate(99deg);transform:rotate(99deg)}.radial-progress[data-progress="55"] .circle .fill.fix{-webkit-transform:rotate(198deg);-ms-transform:rotate(198deg);transform:rotate(198deg)}.radial-progress[data-progress="56"] .circle .mask.full,.radial-progress[data-progress="56"] .circle .fill{-webkit-transform:rotate(100.8deg);-ms-transform:rotate(100.8deg);transform:rotate(100.8deg)}.radial-progress[data-progress="56"] .circle .fill.fix{-webkit-transform:rotate(201.6deg);-ms-transform:rotate(201.6deg);transform:rotate(201.6deg)}.radial-progress[data-progress="57"] .circle .mask.full,.radial-progress[data-progress="57"] .circle .fill{-webkit-transform:rotate(102.6deg);-ms-transform:rotate(102.6deg);transform:rotate(102.6deg)}.radial-progress[data-progress="57"] .circle .fill.fix{-webkit-transform:rotate(205.2deg);-ms-transform:rotate(205.2deg);transform:rotate(205.2deg)}.radial-progress[data-progress="58"] .circle .mask.full,.radial-progress[data-progress="58"] .circle .fill{-webkit-transform:rotate(104.4deg);-ms-transform:rotate(104.4deg);transform:rotate(104.4deg)}.radial-progress[data-progress="58"] .circle .fill.fix{-webkit-transform:rotate(208.8deg);-ms-transform:rotate(208.8deg);transform:rotate(208.8deg)}.radial-progress[data-progress="59"] .circle .mask.full,.radial-progress[data-progress="59"] .circle .fill{-webkit-transform:rotate(106.2deg);-ms-transform:rotate(106.2deg);transform:rotate(106.2deg)}.radial-progress[data-progress="59"] .circle .fill.fix{-webkit-transform:rotate(212.4deg);-ms-transform:rotate(212.4deg);transform:rotate(212.4deg)}.radial-progress[data-progress="60"] .circle .mask.full,.radial-progress[data-progress="60"] .circle .fill{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.radial-progress[data-progress="60"] .circle .fill.fix{-webkit-transform:rotate(216deg);-ms-transform:rotate(216deg);transform:rotate(216deg)}.radial-progress[data-progress="61"] .circle .mask.full,.radial-progress[data-progress="61"] .circle .fill{-webkit-transform:rotate(109.8deg);-ms-transform:rotate(109.8deg);transform:rotate(109.8deg)}.radial-progress[data-progress="61"] .circle .fill.fix{-webkit-transform:rotate(219.6deg);-ms-transform:rotate(219.6deg);transform:rotate(219.6deg)}.radial-progress[data-progress="62"] .circle .mask.full,.radial-progress[data-progress="62"] .circle .fill{-webkit-transform:rotate(111.6deg);-ms-transform:rotate(111.6deg);transform:rotate(111.6deg)}.radial-progress[data-progress="62"] .circle .fill.fix{-webkit-transform:rotate(223.2deg);-ms-transform:rotate(223.2deg);transform:rotate(223.2deg)}.radial-progress[data-progress="63"] .circle .mask.full,.radial-progress[data-progress="63"] .circle .fill{-webkit-transform:rotate(113.4deg);-ms-transform:rotate(113.4deg);transform:rotate(113.4deg)}.radial-progress[data-progress="63"] .circle .fill.fix{-webkit-transform:rotate(226.8deg);-ms-transform:rotate(226.8deg);transform:rotate(226.8deg)}.radial-progress[data-progress="64"] .circle .mask.full,.radial-progress[data-progress="64"] .circle .fill{-webkit-transform:rotate(115.2deg);-ms-transform:rotate(115.2deg);transform:rotate(115.2deg)}.radial-progress[data-progress="64"] .circle .fill.fix{-webkit-transform:rotate(230.4deg);-ms-transform:rotate(230.4deg);transform:rotate(230.4deg)}.radial-progress[data-progress="65"] .circle .mask.full,.radial-progress[data-progress="65"] .circle .fill{-webkit-transform:rotate(117deg);-ms-transform:rotate(117deg);transform:rotate(117deg)}.radial-progress[data-progress="65"] .circle .fill.fix{-webkit-transform:rotate(234deg);-ms-transform:rotate(234deg);transform:rotate(234deg)}.radial-progress[data-progress="66"] .circle .mask.full,.radial-progress[data-progress="66"] .circle .fill{-webkit-transform:rotate(118.8deg);-ms-transform:rotate(118.8deg);transform:rotate(118.8deg)}.radial-progress[data-progress="66"] .circle .fill.fix{-webkit-transform:rotate(237.6deg);-ms-transform:rotate(237.6deg);transform:rotate(237.6deg)}.radial-progress[data-progress="67"] .circle .mask.full,.radial-progress[data-progress="67"] .circle .fill{-webkit-transform:rotate(120.6deg);-ms-transform:rotate(120.6deg);transform:rotate(120.6deg)}.radial-progress[data-progress="67"] .circle .fill.fix{-webkit-transform:rotate(241.2deg);-ms-transform:rotate(241.2deg);transform:rotate(241.2deg)}.radial-progress[data-progress="68"] .circle .mask.full,.radial-progress[data-progress="68"] .circle .fill{-webkit-transform:rotate(122.4deg);-ms-transform:rotate(122.4deg);transform:rotate(122.4deg)}.radial-progress[data-progress="68"] .circle .fill.fix{-webkit-transform:rotate(244.8deg);-ms-transform:rotate(244.8deg);transform:rotate(244.8deg)}.radial-progress[data-progress="69"] .circle .mask.full,.radial-progress[data-progress="69"] .circle .fill{-webkit-transform:rotate(124.2deg);-ms-transform:rotate(124.2deg);transform:rotate(124.2deg)}.radial-progress[data-progress="69"] .circle .fill.fix{-webkit-transform:rotate(248.4deg);-ms-transform:rotate(248.4deg);transform:rotate(248.4deg)}.radial-progress[data-progress="70"] .circle .mask.full,.radial-progress[data-progress="70"] .circle .fill{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.radial-progress[data-progress="70"] .circle .fill.fix{-webkit-transform:rotate(252deg);-ms-transform:rotate(252deg);transform:rotate(252deg)}.radial-progress[data-progress="71"] .circle .mask.full,.radial-progress[data-progress="71"] .circle .fill{-webkit-transform:rotate(127.8deg);-ms-transform:rotate(127.8deg);transform:rotate(127.8deg)}.radial-progress[data-progress="71"] .circle .fill.fix{-webkit-transform:rotate(255.6deg);-ms-transform:rotate(255.6deg);transform:rotate(255.6deg)}.radial-progress[data-progress="72"] .circle .mask.full,.radial-progress[data-progress="72"] .circle .fill{-webkit-transform:rotate(129.6deg);-ms-transform:rotate(129.6deg);transform:rotate(129.6deg)}.radial-progress[data-progress="72"] .circle .fill.fix{-webkit-transform:rotate(259.2deg);-ms-transform:rotate(259.2deg);transform:rotate(259.2deg)}.radial-progress[data-progress="73"] .circle .mask.full,.radial-progress[data-progress="73"] .circle .fill{-webkit-transform:rotate(131.4deg);-ms-transform:rotate(131.4deg);transform:rotate(131.4deg)}.radial-progress[data-progress="73"] .circle .fill.fix{-webkit-transform:rotate(262.8deg);-ms-transform:rotate(262.8deg);transform:rotate(262.8deg)}.radial-progress[data-progress="74"] .circle .mask.full,.radial-progress[data-progress="74"] .circle .fill{-webkit-transform:rotate(133.2deg);-ms-transform:rotate(133.2deg);transform:rotate(133.2deg)}.radial-progress[data-progress="74"] .circle .fill.fix{-webkit-transform:rotate(266.4deg);-ms-transform:rotate(266.4deg);transform:rotate(266.4deg)}.radial-progress[data-progress="75"] .circle .mask.full,.radial-progress[data-progress="75"] .circle .fill{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.radial-progress[data-progress="75"] .circle .fill.fix{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.radial-progress[data-progress="76"] .circle .mask.full,.radial-progress[data-progress="76"] .circle .fill{-webkit-transform:rotate(136.8deg);-ms-transform:rotate(136.8deg);transform:rotate(136.8deg)}.radial-progress[data-progress="76"] .circle .fill.fix{-webkit-transform:rotate(273.6deg);-ms-transform:rotate(273.6deg);transform:rotate(273.6deg)}.radial-progress[data-progress="77"] .circle .mask.full,.radial-progress[data-progress="77"] .circle .fill{-webkit-transform:rotate(138.6deg);-ms-transform:rotate(138.6deg);transform:rotate(138.6deg)}.radial-progress[data-progress="77"] .circle .fill.fix{-webkit-transform:rotate(277.2deg);-ms-transform:rotate(277.2deg);transform:rotate(277.2deg)}.radial-progress[data-progress="78"] .circle .mask.full,.radial-progress[data-progress="78"] .circle .fill{-webkit-transform:rotate(140.4deg);-ms-transform:rotate(140.4deg);transform:rotate(140.4deg)}.radial-progress[data-progress="78"] .circle .fill.fix{-webkit-transform:rotate(280.8deg);-ms-transform:rotate(280.8deg);transform:rotate(280.8deg)}.radial-progress[data-progress="79"] .circle .mask.full,.radial-progress[data-progress="79"] .circle .fill{-webkit-transform:rotate(142.2deg);-ms-transform:rotate(142.2deg);transform:rotate(142.2deg)}.radial-progress[data-progress="79"] .circle .fill.fix{-webkit-transform:rotate(284.4deg);-ms-transform:rotate(284.4deg);transform:rotate(284.4deg)}.radial-progress[data-progress="80"] .circle .mask.full,.radial-progress[data-progress="80"] .circle .fill{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.radial-progress[data-progress="80"] .circle .fill.fix{-webkit-transform:rotate(288deg);-ms-transform:rotate(288deg);transform:rotate(288deg)}.radial-progress[data-progress="81"] .circle .mask.full,.radial-progress[data-progress="81"] .circle .fill{-webkit-transform:rotate(145.8deg);-ms-transform:rotate(145.8deg);transform:rotate(145.8deg)}.radial-progress[data-progress="81"] .circle .fill.fix{-webkit-transform:rotate(291.6deg);-ms-transform:rotate(291.6deg);transform:rotate(291.6deg)}.radial-progress[data-progress="82"] .circle .mask.full,.radial-progress[data-progress="82"] .circle .fill{-webkit-transform:rotate(147.6deg);-ms-transform:rotate(147.6deg);transform:rotate(147.6deg)}.radial-progress[data-progress="82"] .circle .fill.fix{-webkit-transform:rotate(295.2deg);-ms-transform:rotate(295.2deg);transform:rotate(295.2deg)}.radial-progress[data-progress="83"] .circle .mask.full,.radial-progress[data-progress="83"] .circle .fill{-webkit-transform:rotate(149.4deg);-ms-transform:rotate(149.4deg);transform:rotate(149.4deg)}.radial-progress[data-progress="83"] .circle .fill.fix{-webkit-transform:rotate(298.8deg);-ms-transform:rotate(298.8deg);transform:rotate(298.8deg)}.radial-progress[data-progress="84"] .circle .mask.full,.radial-progress[data-progress="84"] .circle .fill{-webkit-transform:rotate(151.2deg);-ms-transform:rotate(151.2deg);transform:rotate(151.2deg)}.radial-progress[data-progress="84"] .circle .fill.fix{-webkit-transform:rotate(302.4deg);-ms-transform:rotate(302.4deg);transform:rotate(302.4deg)}.radial-progress[data-progress="85"] .circle .mask.full,.radial-progress[data-progress="85"] .circle .fill{-webkit-transform:rotate(153deg);-ms-transform:rotate(153deg);transform:rotate(153deg)}.radial-progress[data-progress="85"] .circle .fill.fix{-webkit-transform:rotate(306deg);-ms-transform:rotate(306deg);transform:rotate(306deg)}.radial-progress[data-progress="86"] .circle .mask.full,.radial-progress[data-progress="86"] .circle .fill{-webkit-transform:rotate(154.8deg);-ms-transform:rotate(154.8deg);transform:rotate(154.8deg)}.radial-progress[data-progress="86"] .circle .fill.fix{-webkit-transform:rotate(309.6deg);-ms-transform:rotate(309.6deg);transform:rotate(309.6deg)}.radial-progress[data-progress="87"] .circle .mask.full,.radial-progress[data-progress="87"] .circle .fill{-webkit-transform:rotate(156.6deg);-ms-transform:rotate(156.6deg);transform:rotate(156.6deg)}.radial-progress[data-progress="87"] .circle .fill.fix{-webkit-transform:rotate(313.2deg);-ms-transform:rotate(313.2deg);transform:rotate(313.2deg)}.radial-progress[data-progress="88"] .circle .mask.full,.radial-progress[data-progress="88"] .circle .fill{-webkit-transform:rotate(158.4deg);-ms-transform:rotate(158.4deg);transform:rotate(158.4deg)}.radial-progress[data-progress="88"] .circle .fill.fix{-webkit-transform:rotate(316.8deg);-ms-transform:rotate(316.8deg);transform:rotate(316.8deg)}.radial-progress[data-progress="89"] .circle .mask.full,.radial-progress[data-progress="89"] .circle .fill{-webkit-transform:rotate(160.2deg);-ms-transform:rotate(160.2deg);transform:rotate(160.2deg)}.radial-progress[data-progress="89"] .circle .fill.fix{-webkit-transform:rotate(320.4deg);-ms-transform:rotate(320.4deg);transform:rotate(320.4deg)}.radial-progress[data-progress="90"] .circle .mask.full,.radial-progress[data-progress="90"] .circle .fill{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.radial-progress[data-progress="90"] .circle .fill.fix{-webkit-transform:rotate(324deg);-ms-transform:rotate(324deg);transform:rotate(324deg)}.radial-progress[data-progress="91"] .circle .mask.full,.radial-progress[data-progress="91"] .circle .fill{-webkit-transform:rotate(163.8deg);-ms-transform:rotate(163.8deg);transform:rotate(163.8deg)}.radial-progress[data-progress="91"] .circle .fill.fix{-webkit-transform:rotate(327.6deg);-ms-transform:rotate(327.6deg);transform:rotate(327.6deg)}.radial-progress[data-progress="92"] .circle .mask.full,.radial-progress[data-progress="92"] .circle .fill{-webkit-transform:rotate(165.6deg);-ms-transform:rotate(165.6deg);transform:rotate(165.6deg)}.radial-progress[data-progress="92"] .circle .fill.fix{-webkit-transform:rotate(331.2deg);-ms-transform:rotate(331.2deg);transform:rotate(331.2deg)}.radial-progress[data-progress="93"] .circle .mask.full,.radial-progress[data-progress="93"] .circle .fill{-webkit-transform:rotate(167.4deg);-ms-transform:rotate(167.4deg);transform:rotate(167.4deg)}.radial-progress[data-progress="93"] .circle .fill.fix{-webkit-transform:rotate(334.8deg);-ms-transform:rotate(334.8deg);transform:rotate(334.8deg)}.radial-progress[data-progress="94"] .circle .mask.full,.radial-progress[data-progress="94"] .circle .fill{-webkit-transform:rotate(169.2deg);-ms-transform:rotate(169.2deg);transform:rotate(169.2deg)}.radial-progress[data-progress="94"] .circle .fill.fix{-webkit-transform:rotate(338.4deg);-ms-transform:rotate(338.4deg);transform:rotate(338.4deg)}.radial-progress[data-progress="95"] .circle .mask.full,.radial-progress[data-progress="95"] .circle .fill{-webkit-transform:rotate(171deg);-ms-transform:rotate(171deg);transform:rotate(171deg)}.radial-progress[data-progress="95"] .circle .fill.fix{-webkit-transform:rotate(342deg);-ms-transform:rotate(342deg);transform:rotate(342deg)}.radial-progress[data-progress="96"] .circle .mask.full,.radial-progress[data-progress="96"] .circle .fill{-webkit-transform:rotate(172.8deg);-ms-transform:rotate(172.8deg);transform:rotate(172.8deg)}.radial-progress[data-progress="96"] .circle .fill.fix{-webkit-transform:rotate(345.6deg);-ms-transform:rotate(345.6deg);transform:rotate(345.6deg)}.radial-progress[data-progress="97"] .circle .mask.full,.radial-progress[data-progress="97"] .circle .fill{-webkit-transform:rotate(174.6deg);-ms-transform:rotate(174.6deg);transform:rotate(174.6deg)}.radial-progress[data-progress="97"] .circle .fill.fix{-webkit-transform:rotate(349.2deg);-ms-transform:rotate(349.2deg);transform:rotate(349.2deg)}.radial-progress[data-progress="98"] .circle .mask.full,.radial-progress[data-progress="98"] .circle .fill{-webkit-transform:rotate(176.4deg);-ms-transform:rotate(176.4deg);transform:rotate(176.4deg)}.radial-progress[data-progress="98"] .circle .fill.fix{-webkit-transform:rotate(352.8deg);-ms-transform:rotate(352.8deg);transform:rotate(352.8deg)}.radial-progress[data-progress="99"] .circle .mask.full,.radial-progress[data-progress="99"] .circle .fill{-webkit-transform:rotate(178.2deg);-ms-transform:rotate(178.2deg);transform:rotate(178.2deg)}.radial-progress[data-progress="99"] .circle .fill.fix{-webkit-transform:rotate(356.4deg);-ms-transform:rotate(356.4deg);transform:rotate(356.4deg)}.radial-progress[data-progress="100"] .circle .mask.full,.radial-progress[data-progress="100"] .circle .fill{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.radial-progress[data-progress="100"] .circle .fill.fix{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg)}.radial-progress:not([data-progress="0"]) .inset .bgIcon{opacity:1}.radial-progress.radial-progress-success .circle .mask .fill{background-color:#5cb85c}.radial-progress.radial-progress-success .inset .percentage .number span{color:#5cb85c}.radial-progress.radial-progress-info .circle .mask .fill{background-color:#5bc0de}.radial-progress.radial-progress-info .inset .percentage .number span{color:#5bc0de}.radial-progress.radial-progress-danger .circle .mask .fill{background-color:#d9534f}.radial-progress.radial-progress-danger .inset .percentage .number span{color:#d9534f}.radial-progress.radial-progress-warning .circle .mask .fill{background-color:#f0ad4e}.radial-progress.radial-progress-warning .inset .percentage .number span{color:#f0ad4e}.radial-progress.radial-progress-sm{width:80px;height:80px}.radial-progress.radial-progress-sm .circle .mask{clip:rect(0px, 80px, 80px, 40px)}.radial-progress.radial-progress-sm .circle .mask .fill{clip:rect(0px, 40px, 80px, 0px)}.radial-progress.radial-progress-sm .inset{width:60px;height:60px;margin-left:10px;margin-top:10px;font-size:14.4px}.radial-progress.radial-progress-sm .inset .bgIcon{position:absolute;font-size:50px;top:5px;left:-2px}.radial-progress.radial-progress-lg{width:180px;height:180px}.radial-progress.radial-progress-lg .circle .mask{clip:rect(0px, 180px, 180px, 90px)}.radial-progress.radial-progress-lg .circle .mask .fill{clip:rect(0px, 90px, 180px, 0px)}.radial-progress.radial-progress-lg .inset{width:135px;height:135px;margin-left:22.5px;margin-top:22.5px;font-size:32.4px}.radial-progress.radial-progress-lg .inset .bgIcon{position:absolute;font-size:115px;top:5px;left:-6px}html{position:relative;min-height:100%}body{min-height:100%;margin-bottom:80px}#o_main_wrapper{background:#fff;z-index:3}#o_main_wrapper #o_main_container{background:#fff}#o_main_wrapper #o_main_container #o_main_left{float:left;z-index:2;position:relative;background:#fff}#o_main_wrapper #o_main_container #o_main_left #o_main_left_content{padding:0 0 0 15px}#o_main_wrapper #o_main_container #o_main_left #o_main_left_toggle{position:absolute;display:none;right:0;top:70px;margin-right:-30px;font-size:25px;line-height:35px;text-align:center;width:30px;height:35px;z-index:3;border:1px solid #ddd;border-left:none;border-bottom-right-radius:4px;border-top-right-radius:4px;background-color:#fbfbfb;-webkit-box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);box-shadow:2px 0px 4px 1px rgba(0,0,0,0.15);color:#3b678a}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas{background:#fbfbfb;-webkit-box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);box-shadow:0px 0px 6px 1px rgba(0,0,0,0.2);min-width:250px}#o_main_wrapper #o_main_container #o_main_left.o_offcanvas #o_main_left_content{padding:0 0 0 0}#o_main_wrapper #o_main_container #o_main_right{float:right;z-index:2;position:relative;background:inherit}#o_main_wrapper #o_main_container #o_main_right #o_main_right_content{padding:0 15px 0 0}#o_main_wrapper #o_main_container #o_main_center{position:relative;z-index:1;background:inherit}#o_main_wrapper #o_main_container #o_main_center h2:first-child{margin-top:0}@media screen and (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center{margin-left:0 !important}}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:0 15px}#o_main_wrapper #o_main_container #o_main_center #o_main_center_content #o_main_center_content_inner{padding-bottom:15px}#o_main_wrapper #o_toplink{position:absolute;bottom:0;right:15px;text-align:center;z-index:3}@media (max-width: 767px){#o_main_wrapper #o_main_container #o_main_center #o_main_center_content{padding:15px}}#o_back_wrapper,#o_preview_wrapper{margin-top:10px}#o_back_wrapper.o_toolbar .o_breadcrumb .breadcrumb,#o_preview_wrapper.o_toolbar .o_breadcrumb .breadcrumb{font-size:14px}body.o_message #o_main_center_content_inner{min-height:150px;max-width:500px;padding:15px;margin:60px auto}#o_footer_wrapper{position:absolute;bottom:0;width:100%;height:70px;overflow:hidden;background-color:#f5f5f5;color:#999;line-height:16px;font-size:12px}#o_footer_wrapper a{color:#999}#o_footer_wrapper a:hover{color:#000}#o_footer_container{position:relative;padding-top:10px;min-height:70px;background:#f5f5f5;z-index:1}#o_footer_user{position:absolute;left:15px;top:10px;z-index:1}#o_footer_user #o_counter{white-space:nowrap}#o_footer_user #o_username{white-space:nowrap;margin-right:1em}#o_footer_version{position:absolute;right:15px;top:10px;text-align:right;z-index:1}@media (max-width: 767px){#o_footer_version{padding-top:10px;text-align:left}}#o_footer_powered{position:absolute;top:30px;right:15px;z-index:1}#o_footer_powered img{opacity:0.6;filter:alpha(opacity=60)}#o_footer_powered img:hover{opacity:1;filter:alpha(opacity=100)}#o_footer_impressum{position:absolute;top:10px;width:100%;text-align:center;z-index:-1}#o_footer_impressum i{display:none}#o_footer_textline{position:absolute;top:30px;width:100%;text-align:center;z-index:-1}#o_share{margin-top:10px}#o_share a{opacity:0.6;filter:alpha(opacity=60)}#o_share a:hover{opacity:1;filter:alpha(opacity=100)}#o_share a,#o_share_social_container a{color:#999;margin:0 0.25em 0 0}#o_share a:hover,#o_share_social_container a:hover{color:#000}@media (max-width: 767px){#o_counter,#o_footer_version,#o_share{display:none}#o_footer_impressum{top:30px;text-align:left}#o_footer_textline{top:50px;text-align:left}#o_footer_powered{top:10px}#o_footer_powered a:after{content:"\221E";font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:bold;font-size:14px}#o_footer_powered img{display:none}}#o_navbar_wrapper{z-index:4;border-top:1px solid #e7e7e7;box-shadow:inset 0 1px 0 rgba(255,255,255,0.1)}#o_navbar_wrapper #o_navbar_container{position:relative}a.o_disabled.navbar-text{margin:0}.o_navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid #e7e7e7;background-color:#f8f8f8}.o_navbar:before,.o_navbar:after{content:" ";display:table}.o_navbar:after{clear:both}.o_navbar .o_navbar_tabs li{max-width:150px}.o_navbar .o_navbar_tabs li a{padding-right:30px}.o_navbar .o_navbar_tabs li a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_navbar .o_navbar_tabs .o_icon-fw{position:absolute;top:15px;left:0.5em;padding-top:3px;width:1em;height:1em;display:none}.o_navbar .o_navbar_tabs .o_navbar_tab_close{position:absolute;top:15px;right:0.5em;padding:0;width:1em;height:1em}.o_navbar .o_navbar_tabs .o_navbar_tab_close i:before{color:#d9534f}.o_navbar .o_navbar_tabs .o_navbar_tab_close:hover i:before{color:#c9302c}.o_navbar .o_custom_navbar-brand{background-position:5px 0;background-repeat:no-repeat;height:50px;width:120px}.o_navbar #o_navbar_langchooser{color:#777;padding:7px 15px}.o_navbar #o_navbar_langchooser form span+div{display:inline}.o_navbar #o_navbar_tools_permanent #o_navbar_print a,.o_navbar #o_navbar_tools_permanent #o_navbar_impress a,.o_navbar #o_navbar_tools_permanent #o_navbar_help a{color:#777;padding-right:0}.o_navbar #o_navbar_tools_permanent #o_navbar_login a{color:#f0ad4e}.o_navbar .o_navbar_tools>#o_navbar_tools_permanent>li>a>span{display:none}@media (min-width: 768px){.o_navbar .o_navbar_tools li.o_portrait>a>span{display:inline}}.o_navbar #o_navbar_tools_personal .o_navbar_tool a,.o_navbar #o_navbar_tools_permanent .o_navbar_tool a{padding-right:5px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu a{padding-left:45px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .dropdown-menu a,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .dropdown-menu a{padding-left:15px}.o_navbar #o_navbar_tools_personal #o_navbar_my_menu .o_portrait,.o_navbar #o_navbar_tools_permanent #o_navbar_my_menu .o_portrait{position:absolute;left:7px;top:10px}.o_navbar #o_navbar_tools_personal .o_logout,.o_navbar #o_navbar_tools_permanent .o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar_tab_close{top:10px;right:10px}.o_navbar.o_navbar-offcanvas .o_navbar-right a{padding:3px 20px;color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-right a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a:focus{color:#fff;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout{color:#d9534f}.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:hover,.o_navbar.o_navbar-offcanvas .o_navbar-right a.o_logout:focus{color:#c9302c}.o_navbar.o_navbar-offcanvas .o_navbar-right a .o_icon-lg{font-size:1.0em;vertical-align:baseline}.o_navbar.o_navbar-offcanvas .o_navbar-right .divider{height:1px;margin:9px 0;overflow:hidden;background-color:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-header{padding-left:15px}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-toggle{display:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu{box-shadow:none;position:relative;top:0;left:0;display:block;float:none;background-color:#222;color:#9d9d9d;font-size:14px;border:none}.o_navbar.o_navbar-offcanvas .o_navbar-right .dropdown-menu .divider{background:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a{color:#9d9d9d;text-shadow:none}.o_navbar.o_navbar-offcanvas .o_navbar-nav a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav a:focus{background-color:transparent;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .active a:focus{background-color:#090909;color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link{color:#9d9d9d}.o_navbar.o_navbar-offcanvas .o_navbar-nav .o_navbar-link:hover{color:#fff}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a{color:#777}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:hover,.o_navbar.o_navbar-offcanvas .o_navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}#o_navbar_impress a span,#o_navbar_search_opener a span{display:none}body.o_dmz #o_navbar_print a span,body.o_dmz #o_navbar_impress a span,body.o_dmz #o_navbar_help a span,body.o_dmz #o_navbar_search_opener a span{display:inline}.o_navbar-collapse{max-height:340px;overflow-x:visible;padding-right:15px;padding-left:15px;-webkit-overflow-scrolling:touch}.o_navbar-collapse:before,.o_navbar-collapse:after{content:" ";display:table}.o_navbar-collapse:after{clear:both}.o_navbar-collapse.o_collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.o_navbar-offcanvas .o_navbar-collapse{width:auto;box-shadow:none;margin-top:10px;margin-right:-15px;margin-left:-15px}.o_navbar-brand{float:left;font-size:18px;line-height:20px;height:50px;color:#777}.o_navbar-brand:hover,.o_navbar-brand:focus{text-decoration:none;color:#5e5e5e;background-color:transparent}.o_navbar-toggle{position:relative;margin-right:15px;margin-left:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;border:1px solid #ddd;border-radius:4px;background-color:transparent;background-image:none}.o_navbar-toggle:hover,.o_navbar-toggle:focus{outline:none;background-color:#ddd}.o_navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px;background-color:#888}.o_navbar-toggle .icon-bar+.icon-bar{margin-top:4px}#o_navbar_left-toggle{float:left}#o_navbar_right-toggle{float:right}.o_navbar-link{color:#777}.o_navbar-link:hover{color:#333}.o_navbar-nav{margin:7.5px -15px}.o_navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px;color:#777}.o_navbar-nav>li>a:hover,.o_navbar-nav>li>a:focus{color:#333;background-color:transparent}.o_navbar-nav>.active>a,.o_navbar-nav>.active>a:hover,.o_navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.o_navbar-nav>.disabled>a,.o_navbar-nav>.disabled>a:hover,.o_navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.o_navbar-nav>.open>a,.o_navbar-nav>.open>a:hover,.o_navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}.o_collapse .o_navbar-nav{float:left;margin:0}.o_collapse .o_navbar-nav>li{float:left}.o_collapse .o_navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.o_collapse .o_navbar-nav.o_navbar-right:last-child{margin-right:-15px}.o_collapse.o_navbar-collapse .o_navbar-left{float:left !important}.o_collapse.o_navbar-collapse .o_navbar-right{float:right !important}.o_navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid #e7e7e7;border-bottom:1px solid #e7e7e7;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (max-width: 767px){.o_navbar-form .form-group{margin-bottom:5px}}.o_collapse .o_navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.o_collapse .o_navbar-form.o_navbar-right:last-child{margin-right:-15px}.o_navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.o_navbar-fixed-bottom .o_navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.o_navbar-btn{margin-top:8px;margin-bottom:8px}.o_navbar-btn.btn-sm,.btn-group-sm>.o_navbar-btn.btn{margin-top:10px;margin-bottom:10px}.o_navbar-btn.btn-xs,.btn-group-xs>.o_navbar-btn.btn{margin-top:14px;margin-bottom:14px}.o_navbar-text{margin-top:15px;margin-bottom:15px;color:#777}.o_collapse .o_navbar-text{float:left;margin-left:15px;margin-right:15px}.o_collapse .o_navbar-text.o_navbar-right:last-child{margin-right:0}.o_dropdown_tab{position:relative}.o_dropdown_tab>a:first-child{padding-right:30px}.o_dropdown_tab>a:first-child .o_icon-fw{display:none;position:absolute;top:0;left:10px;padding-top:3px;line-height:20px}.o_dropdown_tab>a:first-child span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.o_dropdown_tab .o_navbar_tab_close{position:absolute;top:0px;right:10px;padding-left:0px;padding-right:0px;color:#d9534f;background-color:inherit}.o_dropdown_tab .o_navbar_tab_close:focus,.o_dropdown_tab .o_navbar_tab_close:hover{color:#c9302c;background-color:inherit}#o_navbar_more .dropdown-menu .divider:last-child{display:none}@media (min-width: 768px){#o_navbar_more .dropdown-menu{max-width:300px}}@media (max-width: 767px){#o_navbar_more>li{position:inherit}#o_navbar_more .dropdown-menu{left:0px;right:0px}#o_navbar_more .dropdown-menu a,#o_navbar_more .dropdown-menu i{line-height:30px}#o_navbar_more .dropdown-menu .o_navbar_tab_close{line-height:inherit}}.o_body_popup #o_topnav_printview{display:inline-block}.o_body_popup #o_topnav_close{float:right}.o_body_popup #o_topnav_close span{display:block}.o_body_popup #o_navbar_tools_permanent li>a{background-color:transparent}.o_toolbar{position:relative;margin-bottom:20px;margin-top:-10px;border:1px solid #e7e7e7}.o_toolbar:before,.o_toolbar:after{content:" ";display:table}.o_toolbar:after{clear:both}@media (min-width: 768px){.o_toolbar{border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}}.o_toolbar .o_breadcrumb:before,.o_toolbar .o_breadcrumb:after{content:" ";display:table}.o_toolbar .o_breadcrumb:after{clear:both}.o_toolbar .o_breadcrumb .breadcrumb{margin-bottom:0;padding:5px 9px;font-size:11px;line-height:15px;border-radius:0;background:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close a span{display:none}.o_toolbar .o_breadcrumb .breadcrumb .o_breadcrumb_close:before{content:none}.o_toolbar .o_tools_container{text-align:center;min-height:37px;position:relative;background-color:#f8f8f8;border-bottom-right-radius:4px;border-bottom-left-radius:4px;border-top:1px solid #e7e7e7}.o_toolbar .o_tools_container:before,.o_toolbar .o_tools_container:after{content:" ";display:table}.o_toolbar .o_tools_container:after{clear:both}@media (max-width: 991px){.o_toolbar .o_tools_container{min-height:35px}}@media (max-width: 767px){.o_toolbar .o_tools_container{min-height:22px;text-align:left}}.o_toolbar .o_tools_container span.o_tool_text{color:#777;display:inline-block}.o_toolbar .o_tools_container a{color:#777;display:inline-block}.o_toolbar .o_tools_container a:hover{color:#333}.o_toolbar .o_tools_container a.o_disabled{color:#aaa !important}.o_toolbar .o_tools_container a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tools_container a.active{color:#3b678a;background-color:transparent}.o_toolbar .o_tools_container a.btn-primary{color:#fff}.o_toolbar .o_tools_container .dropdown-menu a{display:block}.o_toolbar .o_tools_container .dropdown-menu a.active{color:#3b678a;background-color:transparent}.o_toolbar .o_tools{margin-top:8px;margin-bottom:5px}.o_toolbar .o_tool,.o_toolbar .o_text{position:relative;margin:0 10px}.o_toolbar .o_tool:first-child,.o_toolbar .o_text:first-child{margin-left:0}.o_toolbar .o_tool:last-child,.o_toolbar .o_text:last-child{margin-right:0}.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:18px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:block;font-size:12px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{position:absolute;right:50%;top:-18px;margin-right:-12px;font-size:13px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:16px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{font-size:11px}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{top:-16.5px;margin-right:-11px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool a i,.o_toolbar .o_tool .o_disabled i,.o_toolbar .o_text a i,.o_toolbar .o_text .o_disabled i{font-size:20px}.o_toolbar .o_tool a span,.o_toolbar .o_tool .o_disabled span,.o_toolbar .o_text a span,.o_toolbar .o_text .o_disabled span{display:none}.o_toolbar .o_tool a span.badge,.o_toolbar .o_tool .o_disabled span.badge,.o_toolbar .o_text a span.badge,.o_toolbar .o_text .o_disabled span.badge{display:block;position:relative;top:0;left:0;margin-right:0}}.o_toolbar .o_tool .o_chelp,.o_toolbar .o_text .o_chelp{position:relative;top:-1em;vertical-align:top;color:#fff}.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{padding:0;margin-top:5px;border:1px solid #ccc;background-color:#eee}.o_toolbar .o_tool_next a,.o_toolbar .o_tool_previous a{color:#777}.o_toolbar .o_tool_next a:hover,.o_toolbar .o_tool_previous a:hover{color:#333}.o_toolbar .o_tool_next a.o_disabled,.o_toolbar .o_tool_previous a.o_disabled{color:#aaa !important}.o_toolbar .o_tool_next a.o_disabled:hover,.o_toolbar .o_tool_previous a.o_disabled:hover{color:#aaa !important}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:21px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:4px}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:18px}}@media (max-width: 767px){.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{margin-top:0}.o_toolbar .o_tool_next i,.o_toolbar .o_tool_previous i{font-size:20px}}.o_toolbar .o_tool_previous{margin-left:10px;border-bottom-left-radius:4px;border-top-left-radius:4px;border-right:0}.o_toolbar .o_tool_next{border-bottom-right-radius:4px;border-top-right-radius:4px}.o_toolbar .o_tool_dropdown{margin:0 10px}.o_toolbar .o_tool_dropdown:first-child{margin-left:0}.o_toolbar .o_tool_dropdown:last-child{margin-right:0}.o_toolbar .o_tool_dropdown a.dropdown-toggle{position:relative}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:18px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span{display:block;font-size:12px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{position:absolute;right:50%;top:4px;margin-right:-20px;font-size:14px}@media (min-width: 767px) and (max-width: 991px){.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:16px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span,.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{font-size:11px}.o_toolbar .o_tool_dropdown a.dropdown-toggle .o_icon_caret{top:4px;margin-right:-18px;font-size:12px}}@media (max-width: 767px){.o_toolbar .o_tool_dropdown a.dropdown-toggle{padding:0 10px 0 5px}.o_toolbar .o_tool_dropdown a.dropdown-toggle i{font-size:20px}.o_toolbar .o_tool_dropdown a.dropdown-toggle span{display:none}}.o_toolbar .o_tool_dropdown .dropdown-menu{text-align:left}.o_toolbar .o_tools_left{float:left}.o_toolbar .o_tools_right{float:right}.o_toolbar .o_tools_right_edge{float:right}.o_toolbar .o_tools_center{float:both;width:50%;margin-left:auto;margin-right:auto}.o_toolbar .o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_segments.o_tools_segments_alone{margin-top:1.5em}@media (max-width: 991px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tool span{max-width:10em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_toolbar .o_tools_segments .o_tool span{display:block}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 5px}}@media (max-width: 767px){.o_toolbar .o_tools{margin-top:6px;margin-bottom:4px}.o_toolbar .o_tools .o_chelp{top:0;vertical-align:top}.o_toolbar .o_tools.o_tools_segments{margin:0 auto -1.1em auto}.o_toolbar .o_tools_center{float:left}.o_toolbar .o_tool,.o_toolbar .o_text,.o_toolbar .o_tool_dropdown{margin:0 0;position:static}.o_toolbar .o_tool_dropdown .dropdown-menu{left:0px;right:0px}.o_toolbar .o_tool_dropdown .dropdown-menu a,.o_toolbar .o_tool_dropdown .dropdown-menu i{line-height:30px}.o_toolbar .o_tool_dropdown .dropdown-menu .o_navbar_tab_close{line-height:inherit}}#o_main_container .o_toolbar_message{display:table;margin:0 auto 20px auto}#o_main_container .o_toolbar_message.o_warning{padding-top:5px;padding-bottom:5px;border:1px solid #8a6d3b;border-radius:3px}.o_edit_mode .o_toolbar .o_tools_container{background:repeating-linear-gradient(300deg, #fff0d9, #fff0d9 10px, #fcfcfc 10px, #fcfcfc 20px)}.o_edit_mode .o_toolbar .o_edit_mode .o_tools_container{background:#f8f8f8}body{overflow-x:hidden}.o_container_offcanvas{position:relative;max-width:1324px;-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;-m-transition:all .25s ease-in-out;transition:all .25s ease-in-out}#o_offcanvas_right{position:absolute;top:0;right:-250px;width:250px;padding:15px 15px;background-color:#222;color:#9d9d9d;border:1px solid #090909;-webkit-box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);box-shadow:0px 0px 4px 3px rgba(0,0,0,0.25);min-height:100%;z-index:10;display:none}#o_offcanvas_right:before,#o_offcanvas_right:after{content:" ";display:table}#o_offcanvas_right:after{clear:both}@media screen and (max-width: 767px){.row-offcanvas{position:relative;-webkit-transition:all .25s ease-out;-moz-transition:all .25s ease-out;transition:all .25s ease-out}.row-offcanvas-right{right:0}.row-offcanvas-right .sidebar-offcanvas{right:-50%}.row-offcanvas-right.active{right:50%}.row-offcanvas-left{left:0}.row-offcanvas-left .sidebar-offcanvas{left:-50%}.row-offcanvas-left.active{left:50%}.sidebar-offcanvas{position:absolute;top:0;width:50%}}.o_info,.b_info,p.b_info,div.b_info,.o_form .o_info,.o_togglebox_wrapper div.o_togglebox_content,div.o_qti_item_itemfeedback,.o_assessmentitem_wrapper .modalFeedback .o_info{margin:20px 0;padding:20px;border-left:3px solid #777;background-color:#eee}.o_info h2,.o_info h3,.o_info h4,.o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_info h2,.o_info h5,.b_info h2,.o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h3,.o_form .o_info h3,.o_togglebox_wrapper div.o_togglebox_content h3,div.o_qti_item_itemfeedback h3,.o_assessmentitem_wrapper .modalFeedback .o_info h3,.b_info h4,.o_form .o_info h4,.o_togglebox_wrapper div.o_togglebox_content h4,div.o_qti_item_itemfeedback h4,.o_assessmentitem_wrapper .modalFeedback .o_info h4,.b_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_info h2,.o_form .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_info h2,.o_togglebox_wrapper div.o_togglebox_content .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_togglebox_wrapper div.o_togglebox_content h2,div.o_qti_item_itemfeedback .o_cal .fc-header-title h2,.o_cal .fc-header-title div.o_qti_item_itemfeedback h2,.o_assessmentitem_wrapper .modalFeedback .o_info .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info h2,.b_info h5,.o_form .o_info h5,.o_togglebox_wrapper div.o_togglebox_content h5,div.o_qti_item_itemfeedback h5,.o_assessmentitem_wrapper .modalFeedback .o_info h5{color:#777}.o_note,.b_note,p.b_note,div.b_note,.o_form .o_desc,.o_course_run .o_statusinfo,.o_course_stats .o_desc,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:20px 0;padding:20px;border-left:3px solid #31708f;background-color:#d9edf7}.o_note h2,.o_note h3,.o_note h4,.o_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_note h2,.o_note h5,.b_note h2,.o_form .o_desc h2,.o_course_run .o_statusinfo h2,.o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h3,.o_form .o_desc h3,.o_course_run .o_statusinfo h3,.o_course_stats .o_desc h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h3,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h3,.b_note h4,.o_form .o_desc h4,.o_course_run .o_statusinfo h4,.o_course_stats .o_desc h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.b_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_note h2,.o_form .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_desc h2,.o_course_run .o_statusinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_statusinfo h2,.o_course_stats .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h5,.o_form .o_desc h5,.o_course_run .o_statusinfo h5,.o_course_stats .o_desc h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h5,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important,.o_bc_empty,.o_course_run .o_no_scoreinfo{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_important h2,.o_important h5,.b_important h2,.o_bc_empty h2,.o_course_run .o_no_scoreinfo h2,.b_important h3,.o_bc_empty h3,.o_course_run .o_no_scoreinfo h3,.b_important h4,.o_bc_empty h4,.o_course_run .o_no_scoreinfo h4,.b_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_important h2,.o_bc_empty .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_bc_empty h2,.o_course_run .o_no_scoreinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_no_scoreinfo h2,.b_important h5,.o_bc_empty h5,.o_course_run .o_no_scoreinfo h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_success h2,.o_success h5,.b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h3,.b_success h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h4,.b_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning,.o_form .o_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_warning h2,.o_warning h5,.b_warning h2,.o_form .o_warning h2,.b_warning h3,.o_form .o_warning h3,.b_warning h4,.o_form .o_warning h4,.b_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_warning h2,.o_form .o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_warning h2,.b_warning h5,.o_form .o_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_error h2,.o_error h5,.b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h3,.b_error h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h4,.b_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4,.modal .modal-header .o_cal .fc-header-title h2,.o_cal .fc-header-title .modal .modal-header h2{color:#3b678a;font-weight:500;font-family:inherit;line-height:1.1}.o_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_tree a{color:#777;background-color:none}.o_tree a:hover,.o_tree a:focus{color:#333}.o_tree .o_tree_link{background-color:none}.o_tree .o_tree_link:hover,.o_tree .o_tree_link:focus{background-color:#f8f8f8}.o_tree .o_tree_link:first-child{background-color:transparent}.o_tree .o_tree_link:last-child:hover,.o_tree .o_tree_link:last-child:focus{background-color:#f8f8f8}.o_tree .o_insertion_point>a>span{padding:5px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_insertion_source>a>span.o_tree_item,.o_tree .o_insertion_source>a>span.o_dnd_item{border-bottom:solid #f90 4px;background-color:#fefbf6}.o_tree ul{margin:0;padding:0;list-style-type:none}.o_tree ul li{margin:0;padding:0;white-space:nowrap}.o_tree ul li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_tree ul li div.popover{position:absolute;left:auto;right:0}.o_tree ul li div a.o_tree_oc_l0{position:absolute;top:10px;left:-4px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l0,.o_tree ul .o_tree_level_close.b_tree_oc_l0{z-index:10}.o_tree ul li div a.o_tree_oc_l1{position:absolute;top:10px;left:11px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l1,.o_tree ul .o_tree_level_close.b_tree_oc_l1{z-index:10}.o_tree ul li div a.o_tree_oc_l2{position:absolute;top:10px;left:26px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l2,.o_tree ul .o_tree_level_close.b_tree_oc_l2{z-index:10}.o_tree ul li div a.o_tree_oc_l3{position:absolute;top:10px;left:41px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l3,.o_tree ul .o_tree_level_close.b_tree_oc_l3{z-index:10}.o_tree ul li div a.o_tree_oc_l4{position:absolute;top:10px;left:56px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l4,.o_tree ul .o_tree_level_close.b_tree_oc_l4{z-index:10}.o_tree ul li div a.o_tree_oc_l5{position:absolute;top:10px;left:71px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l5,.o_tree ul .o_tree_level_close.b_tree_oc_l5{z-index:10}.o_tree ul li div a.o_tree_oc_l6{position:absolute;top:10px;left:86px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l6,.o_tree ul .o_tree_level_close.b_tree_oc_l6{z-index:10}.o_tree ul li div a.o_tree_oc_l7{position:absolute;top:10px;left:101px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l7,.o_tree ul .o_tree_level_close.b_tree_oc_l7{z-index:10}.o_tree ul li div a.o_tree_oc_l8{position:absolute;top:10px;left:116px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l8,.o_tree ul .o_tree_level_close.b_tree_oc_l8{z-index:10}.o_tree ul li div a.o_tree_oc_l9{position:absolute;top:10px;left:131px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l9,.o_tree ul .o_tree_level_close.b_tree_oc_l9{z-index:10}.o_tree ul li div a.o_tree_oc_l10{position:absolute;top:10px;left:146px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l10,.o_tree ul .o_tree_level_close.b_tree_oc_l10{z-index:10}.o_tree ul li div a.o_tree_oc_l11{position:absolute;top:10px;left:161px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l11,.o_tree ul .o_tree_level_close.b_tree_oc_l11{z-index:10}.o_tree ul li div span.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_tree ul li div span.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_tree ul li div span.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_tree ul li div span.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_tree ul li div span.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_tree ul li div span.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_tree ul li div span.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_tree ul li div span.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_tree ul li div span.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_tree ul li div span.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_tree ul li div span.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_tree ul li div span.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_tree ul span.o_tree_leaf{display:none}.o_tree ul span.o_tree_link>input[type=checkbox]{margin-right:5px}.o_tree ul li .badge{position:absolute;font-size:70%}.o_tree ul li .badge:before{content:none}.o_tree ul li .badge.o_badge_1{top:3px;right:1px}.o_tree ul li .badge.o_badge_2{bottom:3px;right:1px}.o_tree ul li .badge.o_badge_3{top:3px;right:25px}.o_tree ul li .badge.o_badge_4{bottom:3px;right:25px}.o_tree ul li div.o_dnd_sibling{margin:0;padding:0;border-bottom:none}.o_tree ul li .active.o_tree_link{background-color:none;font-weight:bold}.o_tree ul li .active.o_tree_link a{color:#3b678a}.o_tree ul li .active.o_tree_link:hover,.o_tree ul li .active.o_tree_link:focus{background-color:#eee}.o_tree ul li .active.o_tree_link:hover a,.o_tree ul li .active.o_tree_link:focus a{color:#243f54}.o_tree ul li .active_parent.o_tree_link{font-weight:bold}.o_tree ul li .active_parent.o_tree_link a{color:#777}.o_tree ul li .active_parent.o_tree_link a:hover,.o_tree ul li .active_parent.o_tree_link a:focus{color:#333}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l0{left:6px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l1{left:21px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l2{left:36px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l3{left:51px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l4{left:66px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l5{left:81px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l6{left:96px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l7{left:111px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l8{left:126px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l9{left:141px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l10{left:156px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l11{left:171px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l0{padding:10px 2px 10px 20px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l1{padding:10px 2px 10px 35px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l2{padding:10px 2px 10px 50px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l3{padding:10px 2px 10px 65px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l4{padding:10px 2px 10px 80px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l5{padding:10px 2px 10px 95px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l6{padding:10px 2px 10px 110px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l7{padding:10px 2px 10px 125px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l8{padding:10px 2px 10px 140px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l9{padding:10px 2px 10px 155px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l10{padding:10px 2px 10px 170px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l11{padding:10px 2px 10px 185px}.o_tree .o_dnd_item{cursor:move;z-index:100}.o_tree .o_dnd_proxy{opacity:0.4;filter:alpha(opacity=40);background-color:#f0ad4e;padding:5px 10px 5px 10px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_dnd_item.o_dnd_over{background-color:#ffff60}.o_tree .o_dnd_sibling{height:7px;width:100%}.o_tree .o_dnd_sibling.o_dnd_over{background:transparent url(../light/images/arrow_dd.png) top left no-repeat}.o_tree .o_dnd_l1{margin-left:0 !important}.o_tree .o_dnd_l2{margin-left:1em !important}.o_tree .o_dnd_l3{margin-left:2em !important}.o_tree .o_dnd_l4{margin-left:3em !important}.o_tree .o_dnd_l5{margin-left:4em !important}.o_tree .o_dnd_l6{margin-left:5em !important}.o_tree .o_dnd_l7{margin-left:6em !important}.o_tree .o_dnd_l8{margin-left:7em !important}.o_tree .o_dnd_l9{margin-left:8em !important}.o_tree .o_dnd_l10{margin-left:9em !important}.o_tree .o_dnd_l11{margin-left:10em !important}.o_tree.o_tree_insert_tool span.o_tree_link a{display:block}.o_offcanvas .o_tree{border:0}.o_selection_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_selection_tree ul{margin:0;padding:0;list-style-type:none}.o_selection_tree li{margin:0;padding:0;white-space:nowrap}.o_selection_tree li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_selection_tree li>div>span.o_tree_l0,.o_selection_tree li>div>div.checkbox.o_tree_l0,.o_selection_tree li>div>div.radio.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_selection_tree li>div>span.o_tree_l1,.o_selection_tree li>div>div.checkbox.o_tree_l1,.o_selection_tree li>div>div.radio.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_selection_tree li>div>span.o_tree_l2,.o_selection_tree li>div>div.checkbox.o_tree_l2,.o_selection_tree li>div>div.radio.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_selection_tree li>div>span.o_tree_l3,.o_selection_tree li>div>div.checkbox.o_tree_l3,.o_selection_tree li>div>div.radio.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_selection_tree li>div>span.o_tree_l4,.o_selection_tree li>div>div.checkbox.o_tree_l4,.o_selection_tree li>div>div.radio.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_selection_tree li>div>span.o_tree_l5,.o_selection_tree li>div>div.checkbox.o_tree_l5,.o_selection_tree li>div>div.radio.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_selection_tree li>div>span.o_tree_l6,.o_selection_tree li>div>div.checkbox.o_tree_l6,.o_selection_tree li>div>div.radio.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_selection_tree li>div>span.o_tree_l7,.o_selection_tree li>div>div.checkbox.o_tree_l7,.o_selection_tree li>div>div.radio.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_selection_tree li>div>span.o_tree_l8,.o_selection_tree li>div>div.checkbox.o_tree_l8,.o_selection_tree li>div>div.radio.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_selection_tree li>div>span.o_tree_l9,.o_selection_tree li>div>div.checkbox.o_tree_l9,.o_selection_tree li>div>div.radio.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_selection_tree li>div>span.o_tree_l10,.o_selection_tree li>div>div.checkbox.o_tree_l10,.o_selection_tree li>div>div.radio.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_selection_tree li>div>span.o_tree_l11,.o_selection_tree li>div>div.checkbox.o_tree_l11,.o_selection_tree li>div>div.radio.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_breadcrumb{position:relative}.o_breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_breadcrumb .o_breadcrumb_close a span{display:none}.o_breadcrumb .o_breadcrumb_close:before{content:none}.o_form .o_icon_mandatory{margin-right:0.25em}.o_form .o_form_chelp{padding-left:0.25em;margin-right:-1.25em}.o_form .o_form_example{font-size:90%}.o_form .o_error{margin-top:1px;margin-bottom:0;padding:10px}.o_form hr.o_spacer_noline{border-top:1px solid transparent}.o_form hr.o_spacer.form,.o_form hr.o_spacer_noline.form{margin-top:0px;margin-bottom:0px}.o_form .form-group.o_omit_margin{margin-bottom:0}.o_form .o_date{position:relative;padding-right:34px}.o_form .o_date.form-inline .form-group,.o_form .o_date.o_navbar-form .form-group{margin-left:0}.o_form input.o_date_ms{width:3em}.o_form .o_date.form-inline .o_date_ms.form-group,.o_form .o_date.o_navbar-form .o_date_ms.form-group{margin-left:25px}.o_form .has-feedback .o_date.form-inline .form-control.o_date_ms,.o_form .has-feedback .o_date.o_navbar-form .form-control.o_date_ms{padding-right:0}.o_form .o_form_element.form-inline .o_form_element.form-group,.o_form .o_form_element.o_navbar-form .o_form_element.form-group{margin-left:25px}.o_form .input-group.o_date_picker{width:16em}.o_form .o_filepreview{margin-bottom:10px}.o_form .o_fileinput{cursor:pointer;position:relative}.o_form .o_fileinput .o_fakechooser{position:relative;z-index:1}.o_form .o_fileinput .o_realchooser{position:absolute;top:0;right:0;z-index:2;opacity:0;filter:alpha(opacity=0)}.o_form .o_fileinput .o_realchooser.o_chooser_with_delete{right:38px}.o_form .has-feedback.has-error .o_fileinput .o_fakechooser{margin-right:30px}.o_form .form-control.textarea_disabled{resize:both;overflow:auto;white-space:pre-wrap;background:#fafafa}.o_centered_form{text-align:center}.o_centered_form fieldset.o_form{display:inline-block;text-align:left}.o_choice_checkrow,.o_choice_textrow{vertical-align:text-top;padding-bottom:2px}.o_choice_textrow{padding-left:1em}.o_togglecheck a{white-space:nowrap}.o_catalog .o_catalog_delete_img{position:relative;top:-0.5em}.o_button_dirty{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_button_dirty:hover,.o_button_dirty:focus,.o_button_dirty.focus,.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{background-image:none}.o_button_dirty.disabled,.o_button_dirty.disabled:hover,.o_button_dirty.disabled:focus,.o_button_dirty.disabled.focus,.o_button_dirty.disabled:active,.o_button_dirty.disabled.active,.o_button_dirty[disabled],.o_button_dirty[disabled]:hover,.o_button_dirty[disabled]:focus,.o_button_dirty[disabled].focus,.o_button_dirty[disabled]:active,.o_button_dirty[disabled].active,fieldset[disabled] .o_button_dirty,fieldset[disabled] .o_button_dirty:hover,fieldset[disabled] .o_button_dirty:focus,fieldset[disabled] .o_button_dirty.focus,fieldset[disabled] .o_button_dirty:active,fieldset[disabled] .o_button_dirty.active{background-color:#f0ad4e;border-color:#eea236}.o_button_dirty .badge{color:#f0ad4e;background-color:#fff}.o_button_toggle{border:1px solid #777;border-top-right-radius:9px;border-top-left-radius:9px;border-bottom-right-radius:9px;border-bottom-left-radius:9px;background:#eee;display:inline-block;height:18px;line-height:16px;font-size:16px;text-align:left;padding:0 0.5em 0 0;margin:0}.o_button_toggle i{color:#777;text-shadow:1px 0 2px rgba(0,0,0,0.25)}.o_button_toggle span{line-height:16px;vertical-align:top;font-size:60%;color:#777;text-transform:uppercase}.o_button_toggle.o_on{text-align:right;padding:0 0 0 0.5em}.o_button_toggle.o_on i{color:#3b678a;text-shadow:-1px 0 2px rgba(0,0,0,0.25)}.o_table_wrapper{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_table_wrapper.o_table_flexi .o_table_body{margin-top:20px}.o_table_wrapper.o_table_flexi .table{margin-top:20px}.o_table_wrapper.o_table_flexi .table td ul{margin:0}.o_table_wrapper.o_table_flexi.o_table_no_margin .table{margin:0}.o_table_wrapper.o_table_edit table tbody{border-top:solid #f90 4px;background-color:#fefbf6}.o_table_wrapper .o_table_search{max-width:50em}.o_table_wrapper .o_table_footer .o_table_pagination{text-align:center}.o_table_wrapper .o_table_rows_infos{float:left;padding-left:0;padding-right:20px;margin:20px 0}.o_table_wrapper .o_row_selected td{background-color:#dff0d8 !important}.o_table_wrapper .o_table{margin-bottom:0}.o_table_wrapper .o_marked{font-weight:bold}.o_table_wrapper .table{margin-bottom:0}.o_table_wrapper th a,.o_table_wrapper th a:hover{color:#333;text-decoration:none}.o_table_search a.btn.o_reset_quick_search{width:38px;margin-left:-38px;z-index:5;color:grey}@media (max-width: 767px){.o_table_wrapper .o_table_rows_infos{clear:both}}a.o_orderby,a.o_orderby:hover{color:#333;text-decoration:none}a.o_orderby.o_orderby_asc,a.o_orderby.o_orderby_desc,a.o_orderby:hover.o_orderby_asc,a.o_orderby:hover.o_orderby_desc{border-bottom:1px solid #ddd}.o_table_row_count{padding-top:6px;padding-bottom:6px;vertical-align:middle}.o_table_row_details td{background-color:white !important}.o_table_config{font-size:12px}.o_table_buttons{text-align:center}.o_table_buttons input{margin-right:1em}.o_table_buttons input:last-child{margin-right:0}.o_table_tools{margin-left:6px}.o_table_tools_indications{margin-left:10px;padding-top:3px;font-size:80%}.o_table_tools_indications a{color:#d9534f}.o_table_toolbar_left .o_table_tools_indications{text-align:right}.o_table_count{max-width:20em;float:left;padding:0 15px}.o_info .table-bordered td,o_note .table-bordered td,o_important .table-bordered td,o_warning .table-bordered td,o_error .table-bordered td{border-color:#333}.panel .o_table_layout{border-top:1px solid #ddd;padding-top:6px}.panel .o_table_count{padding:0 15px}#o_navbar_imclient .o_im_messages{float:left}#o_navbar_imclient #o_im_message,#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_summary{float:left;position:relative;padding:15px 3px}#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_message{padding-left:15px}#o_navbar_imclient #o_im_summary .badge{color:#fff;background-color:#777}#o_navbar_imclient #o_im_status li>a>span{display:inline}#o_navbar_imclient #o_im_status div.o_chelp_wrapper{right:0.5em}#o_navbar_imclient #o_im_message a:hover,#o_navbar_imclient #o_im_message a:focus{text-decoration:none}#o_navbar_imclient #o_im_message .o_icon_message{color:#d9534f}#o_navbar_imclient #o_im_message .o_icon_message:hover{color:#f4c37d}.o_im_load_history{margin-bottom:6px}.o_im_load_history .o_label{font-size:12px;padding-right:0.5em;line-height:1.5em;color:#777}.o_im_chat_history{height:170px;font-size:90%;border:1px solid #eee;margin:0 0 1em 0;overflow:scroll;overflow-x:auto}.o_im_message_group{padding:3px 3px 3px 40px;min-height:40px;position:relative;border-top:1px solid #eee;background:#fff}.o_im_message_group.o_odd{background:#F4F4F4}.o_im_message_group .o_portrait{position:absolute;top:3px;left:3px}.o_im_message_group .o_im_from{color:#777;font-size:12px;font-weight:bold}.o_im_message_group .o_im_from:hover{color:#5e5e5e}.o_im_message_group div.o_im_body{padding:3px 0 3px 0;font-size:12px}.o_im_message_group div.o_im_body .o_date{float:right;color:#777;font-size:9px}.o_groupchat_roster{font-size:12px}.o_groupchat_roster li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.o_groupchat_roster li.o_vip{color:#3c763d}.o_groupchat_roster li.o_anonymous{color:#31708f}.o_im_buddieslist .o_im_buddieslist_toggler .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_im_buddieslist ul{font-size:12px}.o_im_buddieslist ul ul{padding-left:1em}.o_im_buddieslist ul a{color:#3b678a}.o_im_buddieslist ul a:hover{color:#243f54}.o_flag{position:relative;top:1px;display:inline-block;line-height:1;width:16px;height:16px;background-repeat:no-repeat;background-position:0 100%}option.o_with_flag{padding-left:23px;min-height:16px;background-repeat:no-repeat;background-position:2px 50%}.o_flag_en{background-image:url("../light/images/flags/gb.png")}.o_flag_de{background-image:url("../light/images/flags/de.png")}.o_flag_fr{background-image:url("../light/images/flags/fr.png")}.o_flag_it{background-image:url("../light/images/flags/it.png")}.o_flag_es{background-image:url("../light/images/flags/es.png")}.o_flag_da{background-image:url("../light/images/flags/dk.png")}.o_flag_cs{background-image:url("../light/images/flags/cz.png")}.o_flag_el{background-image:url("../light/images/flags/gr.png")}.o_flag_ee{background-image:url("../light/images/flags/ee.png")}.o_flag_ru{background-image:url("../light/images/flags/ru.png")}.o_flag_pl{background-image:url("../light/images/flags/pl.png")}.o_flag_zh_CN{background-image:url("../light/images/flags/cn.png")}.o_flag_zh_TW{background-image:url("../light/images/flags/tw.png")}.o_flag_lt{background-image:url("../light/images/flags/lt.png")}.o_flag_fa{background-image:url("../light/images/flags/ir.png")}.o_flag_pt_PT{background-image:url("../light/images/flags/pt.png")}.o_flag_pt_BR{background-image:url("../light/images/flags/br.png")}.o_flag_tr{background-image:url("../light/images/flags/tr.png")}.o_flag_hu{background-image:url("../light/images/flags/hu.png")}.o_flag_sq{background-image:url("../light/images/flags/al.png")}.o_flag_in{background-image:url("../light/images/flags/id.png")}.o_flag_ar{background-image:url("../light/images/flags/eg.png")}.o_flag_rm{background-image:url("../light/images/flags/rm.png")}.o_flag_af{background-image:url("../light/images/flags/za.png")}.o_flag_vi{background-image:url("../light/images/flags/vn.png")}.o_flag_mn{background-image:url("../light/images/flags/mn.png")}.o_flag_iw{background-image:url("../light/images/flags/il.png")}.o_flag_ko{background-image:url("../light/images/flags/kr.png")}.o_flag_nl_NL{background-image:url("../light/images/flags/nl.png")}.o_flag_jp{background-image:url("../light/images/flags/jp.png")}.o_flag_nb_NO{background-image:url("../light/images/flags/no.png")}.o_flag_et_EE{background-image:url("../light/images/flags/ee.png")}.o_flag_bg{background-image:url("../light/images/flags/bg.png")}.o_flag_hi_IN_ASIA{background-image:url("../light/images/flags/in.png")}.o_flag_ar_LB{background-image:url("../light/images/flags/lb.png")}.o_flag_gl_ES{background-image:url("../light/images/flags/galicia.png")}.o_flag_sk{background-image:url("../light/images/flags/sk.png")}.o_rating .o_rating_title{font-size:12px}.o_rating .o_rating_items{white-space:nowrap}.o_rating .o_rating_items .o_icon{color:#f0ad4e}.o_rating .o_rating_items .o_icon:hover{color:#3b678a}.o_rating .o_rating_items .o_legend{margin-left:1em;font-size:12px;line-height:normal}.o_rating .o_rating_explanation{font-size:12px;color:#777}@media (max-width: 991px){.o_rating .o_rating_title,.o_rating .o_rating_explanation{display:none}}.o_comments .o_comment_wrapper .o_avatar{float:left;margin:0 1em 0 0}.o_comments .o_comment_wrapper .o_reply,.o_comments .o_comment_wrapper .o_delete{float:right}.o_comments .o_comment_wrapper .o_comment_wrapper{margin-left:16px}.o_ratings_and_comments .o_rating_wrapper{vertical-align:middle;display:inline-block}.o_ratings_and_comments a.o_comments{margin-left:10px;position:relative;top:0.1em}.d3chart .bar{shape-rendering:crispEdges}.d3chart .bar_default_light{fill:#598eb8}.d3chart .bar_default,.d3chart .bubble_default{fill:#3b678a}.d3chart .bar_default_dark{fill:#243f54}.d3chart .axis{font:12px sans-serif}.d3chart .axis path,.d3chart .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_forum_peekview .o_quote_wrapper,.o_forum_peekview .b_quote_wrapper{display:none}.o_forum_thread_sticky{font-weight:bold}.o_forum_switch{font-size:12px}.o_forum_toolbar{margin-bottom:6px;float:left}.o_forum_fulltextsearch{float:right}@media (max-width: 767px){.o_forum_fulltextsearch{float:left}.o_forum_toolbar .o_forum_tool span{display:none}}.o_forum{padding-bottom:50px}.o_forum .o_mark,.o_forum .o_ep_collect{float:right;position:relative;width:2em;margin-left:12px}.o_forum .o_portrait{float:left;margin-right:16px}.o_forum .o_portrait_avatar{width:70px;height:70px}.o_forum .o_newindicator{font-size:10px;color:#5cb85c;text-transform:uppercase;padding-left:1em;vertical-align:text-top;white-space:nowrap}.o_forum .o_author,.o_forum .o_date{display:inline-block;color:#777}.o_forum .o_date{font-size:12px}.o_forum .o_modified{color:#8a6d3b;font-size:12px;font-style:italic}.o_forum .o_forum_message{margin-bottom:20px;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_forum .o_forum_message_new{-webkit-box-shadow:0 1px 10px rgba(92,184,92,0.3);box-shadow:0 1px 10px rgba(92,184,92,0.3)}.o_forum .o_forum_message_highlight{-webkit-box-shadow:0 1px 10px rgba(240,173,78,0.5);box-shadow:0 1px 10px rgba(240,173,78,0.5)}.o_forum .o_forum_message_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:3px;border-top-left-radius:3px}.o_forum .o_forum_message_title{margin-top:0}.o_forum .o_forum_message_body{padding:10px 15px}.o_forum .o_forum_message_attachments{border-top:1px solid #ddd;padding:10px 15px;font-size:12px;background-color:#f7f7f9}.o_forum .o_attachment{position:relative;max-width:250px;vertical-align:top;margin:6px 12px 10px 0}.o_forum .o_attachment img{margin-top:6px}.o_forum .o_filename{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_forum .o_icon_enlarge{position:absolute;left:1em;bottom:1em;text-shadow:1px 1px 2px #fff, -1px 1px 2px #fff, 1px -1px 2px #fff, -1px -1px 2px #fff}@media (min-width: 768px) and (max-width: 991px){.o_forum .o_attachments{font-size:10px}.o_forum .o_attachment{max-width:200px}.o_forum .o_attachment img{max-width:150px}.o_forum .o_filename{max-width:200px}}@media (max-width: 767px){.o_forum .o_attachments{font-size:9px}.o_forum .o_attachment{max-width:150px}.o_forum .o_attachment img{max-width:100px}.o_forum .o_filename{max-width:150px}}.o_quote_wrapper,.b_quote_wrapper{position:relative;margin:10px 0}.o_quote_author,.b_quote_author{color:#777;font-size:12px}.o_quote_author:before,.b_quote_author:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";font-size:21px;padding-right:0.5em}blockquote.o_quote,blockquote.b_quote{color:#555;font-size:12px;margin-top:6px;padding:0 12px}a.o_chelp{display:inline-block;padding:1px 3px;text-align:center;vertical-align:middle;white-space:nowrap;font-size:10px;font-weight:normal;line-height:15px;color:#fff;background-color:#3b678a;border:1px solid #335a78;border-radius:2px;cursor:help;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}a.o_chelp:active,a.o_chelp:hover,a.o_chelp:focus{text-decoration:none;color:#fff;background-color:#2f526d;border-color:#213a4d}a.o_chelp i{font-size:10px !important}.o_chelp_wrapper{position:relative;float:right;display:inline-block;line-height:normal;margin-bottom:10px;margin-left:10px}.o_form_chelp,.o_chelp_tooltip{color:#737373}.o_draw_circle{border:4px solid #3b678a;border-radius:50%;position:absolute !important}.o_draw_rectangle{border:4px solid #3b678a;position:absolute !important}.o_iframedisplay iframe{width:100%}.o_singlepage .o_edit{position:absolute;top:10px;right:37px}.o_content_popup{position:absolute;top:10px;right:12px}.o_module_cp_wrapper .o_tools{position:absolute;top:10px;right:12px;text-align:right;vertical-align:middle}.o_module_cp_wrapper .o_tools .o_search_wrapper{display:inline-block;position:relative;top:-2px}ul.o_dropdown{margin:-5px -14px}ul.o_dropdown .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}ul.o_dropdown>li>a{display:block;padding:5px 14px;clear:both;font-weight:normal;line-height:1.42857;color:#333;background:#fff;white-space:nowrap}ul.o_dropdown>li>a:hover,ul.o_dropdown>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.badge.o_scorm_completed{background-color:#3c763d}.badge.o_scorm_failed{background-color:#a94442}.badge.o_scorm_incomplete{background-color:#8a6d3b}.badge.o_scorm_not_attempted{background:none}.o_bc_meta h5,.o_bc_meta .o_author,.o_bc_meta .o_comment,.tooltip h5,.tooltip .o_author,.tooltip .o_comment{color:#fff;margin:5px 0}.o_bc_meta .o_thumbnail,.tooltip .o_thumbnail{width:200px;height:200px;display:inline-block;background-color:#fff;margin:0 -5px}.o_htmleditor .o_metadata{border:1px solid #999;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:0;background:#eee;position:relative;top:1px;padding:5px}.o_htmleditor .o_metadata #o_filename{float:left}.o_htmleditor .o_metadata .o_lastmodified{float:right;color:#777;line-height:1.42857}.o_htmleditor #o_save{margin-top:10px;text-align:center}.o_htmleditor #o_save input{margin-right:1em}.o_htmleditor #o_save input:last-child{margin-right:0}.o_notifications_news_wrapper .o_notifications_news_subscription{margin:10px 0}.o_notifications_news_wrapper .o_notifications_news_subscription h4 i,.o_notifications_news_wrapper .o_notifications_news_subscription .o_cal .fc-header-title h2 i,.o_cal .fc-header-title .o_notifications_news_wrapper .o_notifications_news_subscription h2 i{display:none}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_context{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content{margin-left:1.5em;position:relative}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_icon{position:absolute;left:-1.5em;line-height:1.5em;top:0}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_date{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_url{margin-left:1.5em}.o_noti{margin:6px 0 6px 12px;float:right;color:#777}.o_noti .o_label{color:#777;cursor:help}@media (max-width: 767px){.o_noti .o_label span{display:none}}.panel-body .o_noti{margin:0}.o_portrait{display:inline-block}.o_portrait img{border-radius:50%;border:none;background-color:#eee;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.o_portrait_name{margin-top:6px}.o_block_inline .o_portait,.o_block_inline .o_portrait_name,.o_block_inline .o_portrait_image,.o_block_inline_right .o_portait,.o_block_inline_right .o_portrait_name,.o_block_inline_right .o_portrait_image,.o_block_inline_left .o_portait,.o_block_inline_left .o_portrait_name,.o_block_inline_left .o_portrait_image,.o_block_inline_both .o_portait,.o_block_inline_both .o_portrait_name,.o_block_inline_both .o_portrait_image{display:inline-block}.o_portrait_avatar,.o_portrait_dummy,.o_portrait_dummy_female_big,.o_portrait_dummy_male_big,.o_portrait_anonymous{width:100px;height:100px}.o_portrait_dummy{background-image:url("../light/images/portrait/dummy.png")}.o_portrait_dummy_female_big{background-image:url("../light/images/portrait/dummy_female_big.png")}.o_portrait_dummy_male_big{background-image:url("../light/images/portrait/dummy_male_big.png")}.o_portrait_anonymous{background-image:url("../light/images/portrait/anonymous.png")}.o_portrait_avatar_small,.o_portrait_dummy_small,.o_portrait_dummy_female_small,.o_portrait_dummy_male_small,.o_portrait_anonymous_small{width:30px;height:30px}.o_portrait_dummy_small{background-image:url("../light/images/portrait/dummy_small.png")}.o_portrait_dummy_female_small{background-image:url("../light/images/portrait/dummy_female_small.png")}.o_portrait_dummy_male_small{background-image:url("../light/images/portrait/dummy_male_small.png")}.o_portrait_anonymous_small{background-image:url("../light/images/portrait/anonymous_small.png")}.o_datecomp{position:relative;width:40px;height:52px;border:1px solid #555;margin-right:12px;text-align:center;vertical-align:middle}.o_datecomp div.o_year{position:absolute;left:0;width:100%;top:-20px;height:20px;line-height:20px;font-size:10px}.o_datecomp div.o_month{height:20px;line-height:20px;font-size:12px;background-color:#3b678a;color:#fff}.o_datecomp div.o_day{height:30px;line-height:30px;font-size:18px;border-top:1px solid #555;background-color:#fff;color:#333}.o_block_with_datecomp .o_head{position:relative;padding-left:52px}.o_block_with_datecomp .o_datecomp{position:absolute;top:0.2em;left:0}.o_block_with_datecomp .o_title{margin-top:0}.o_block_with_datecomp .o_meta{color:#777}.o_block_with_datecomp .o_content{border-left:5px solid #eee;padding:0 20px}.o_block_with_datecomp .o_block_footer{padding-left:25px}ul.o_certificates li{padding:5px 0}ul.o_certificates li a.o_sel_certificate_delete{padding-left:2em}.o_cal_toptoolbar{margin-bottom:6px}.o_cal_toptoolbar .o_cal_toptoolbar_help{float:left;margin-right:12px}.o_cal_toptoolbar .o_noti{margin-top:0}.o_feed .o_date,.o_feed .o_author{color:#777}.o_feed .o_subscription a{margin-right:1.5em}.o_feed .o_subscription .form-group{margin-bottom:5px}.o_feed .o_subscription .form-control{border:0;background:none;padding:0;height:auto;-webkit-box-shadow:none;box-shadow:none}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper{float:left}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_title,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_explanation,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_legend{display:none}.o_feed .o_blog_posts .o_ratings_and_comments a.o_comments span{display:none}.o_feed .o_content:before,.o_feed .o_content:after{content:" ";display:table}.o_feed .o_content:after{clear:both}.o_glossary .o_register{text-align:center}.o_glossary .o_meta{font-size:90%;color:#777;font-style:italic}.o_glossary dl dt:first-letter{font-size:21px}.o_glossary dl dt small{color:#777}.o_tm_glossary{border-bottom:1px dotted #666699 !important}.o_tm_yellow{background-color:#FFFF66}.o_tm_blue{background-color:#33FFFF}.o_tm_red{background-color:#FF3333}.o_tm_green{background-color:#99FF00}.o_coaching div#o_main_toolbar.o_toolbar{margin-top:0px}.o_eff_statement_details .o_user_infos{margin-top:20px}div.o_assessment_user_type_filter{display:inline-block;padding:0.5em;border:1px solid #eee;border-radius:4px}div.o_assessment_user_type_filter div.form-inline,div.o_assessment_user_type_filter div.o_navbar-form{margin-left:5px;display:inline-block}.vitero_iframe{width:100%;height:100%;border:none;min-height:60em}.o_reminder_rule{padding:5px 0}.o_segments.btn-group a span{overflow:hidden;display:block;text-overflow:ellipsis}.o_segments_content{margin-top:20px}.o_tabbed_pane .o_tabbed_pane_content{padding:20px 0 6px 0}.o_togglebox_wrapper .o_opener{position:relative;left:-0.5em}.o_togglebox_wrapper div.o_togglebox_content{position:relative;margin:0}.o_togglebox_wrapper div.o_togglebox_content .o_hide{position:absolute;bottom:0.5em;right:1em}.o_toolboxes ul{margin:0 0 1.5em 0;padding:0 0 0 1.5em}.o_qrcode{width:256px;height:256px}#o_ajax_busy{position:absolute;left:50%;top:20em;margin-left:-2.5em;height:5em;width:5em;color:#fff;z-index:1201;display:none}#o_body.o_ajax_busy{cursor:busy}.o_exception .o_visual{position:relative;background-image:url("../light/images/lion-500x333.jpg");filter:grayscale(50%);-webkit-filter:grayscale(50%);-moz-filter:grayscale(50%);-ms-filter:grayscale(50%);-o-filter:grayscale(50%);width:500px;height:333px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;margin:0 0 10px 16px}@media (min-width: 768px) and (max-width: 991px){.o_exception .o_visual{width:375px;height:249px}}@media (min-width: 500px) and (max-width: 767px){.o_exception .o_visual{width:250px;height:166px}}@media (max-width: 500px){.o_exception .o_visual{background-size:cover}}.o_exception .jumbotron h1,.o_exception .o_repo_details .o_lead h1,.o_repo_details .o_exception .o_lead h1{color:#d9534f}ul.o_assessment_docs{margin-bottom:0}ul.o_assessment_docs>li{margin-bottom:0.33em}ul.o_assessment_docs>li:last-child{margin-bottom:0em}.o_mail_message .o_mail_meta{background:#fafafa;border:1px solid #eee;padding:5px 10px}.o_mail_message .o_mail_meta h3{margin-top:0}.o_mail_message .o_mail_date,.o_mail_message .o_mail_from,.o_mail_message .o_mail_recipients{color:#777;font-size:90%}.o_mail_message .o_mail_date .o_label,.o_mail_message .o_mail_from .o_label,.o_mail_message .o_mail_recipients .o_label{font-weight:bold;margin-right:1em}.o_mail_message .o_mail_date .o_group span,.o_mail_message .o_mail_from .o_group span,.o_mail_message .o_mail_recipients .o_group span{font-weight:bold}.o_mail_message .o_mail_date .o_group span:after,.o_mail_message .o_mail_from .o_group span:after,.o_mail_message .o_mail_recipients .o_group span:after{content:':';margin-right:0.5em}.o_mail_message .o_mail_date i,.o_mail_message .o_mail_from i,.o_mail_message .o_mail_recipients i{margin-left:1em}.o_mail_message .o_mail_date ul.list-inline,.o_mail_message .o_mail_from ul.list-inline,.o_mail_message .o_mail_recipients ul.list-inline{display:inline}.o_mail_message .o_mail_date ul.list-inline li,.o_mail_message .o_mail_from ul.list-inline li,.o_mail_message .o_mail_recipients ul.list-inline li{padding-right:0;padding-left:0}.o_mail_message .o_more{margin-left:1em}.o_mail_message .o_showAllLink{float:right;font-size:80%}.progress .o_progress_marker{position:absolute;height:100%;top:0;width:3px;background:red}.o_web_content{padding-bottom:15px}.tt-input{width:400px}.tt-menu{width:400px;margin-top:6px;padding:0 0 0;color:#555;background-color:#fff;border:1px solid #66afe9;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 0 8px rgba(102,175,233,0.6);box-shadow:0 0 8px rgba(102,175,233,0.6)}.tt-suggestion{padding:6px 12px;font-size:14px;line-height:1.42857}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;background-color:#3b678a}.tt-suggestion p{margin:0}.tt-menu div.o_icon_error:before{content:''}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_highlight{font-weight:bold;background-color:#fcf8e3}.o_search_result_context{color:#3c763d}.o_search_result_excerpt{color:#555}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}@media (max-width: 767px){.o_search_result_details{display:none}}.wizard{border:1px solid #d4d4d4;border-radius:2px;background-color:#f9f9f9;position:relative;overflow:hidden;margin-bottom:15px}.wizard ul{list-style:none outside none;padding:0;margin:0;width:4000px}.wizard ul li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#333;font-size:16px;cursor:default}.wizard ul li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.wizard ul li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.wizard ul li.active{background:#f1f6fc;color:#333}.wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.wizard ul li .badge{margin-right:8px}.wizard ul li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.o_process{position:relative;padding-left:25px}.o_process .o_step{position:relative;height:auto;padding-top:10px;padding-left:30px;padding-bottom:10px}.o_process .o_bar{position:absolute;top:10px;left:8px;height:100%;border-left:4px solid #777}.o_process .o_bar:after{position:absolute;top:0;left:-10px;height:16px;width:16px;border:4px solid #777;border-radius:16px;background:#fff;content:" "}.o_process .o_title{margin-top:-1px;color:#777 !important}.o_process .o_title:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:-24px}.o_process .o_title a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";width:1em}.o_process .o_title a.collapsed:before{content:""}.o_process .o_step.o_active .o_bar,.o_process .o_step.o_active .o_bar:after{border-color:#3b678a}.o_process .o_step.o_active .o_title{color:#3b678a !important}.o_process .o_step.o_active .o_title:before{content:"";color:#3b678a}.o_process .o_step.o_done .o_bar,.o_process .o_step.o_done .o_bar:after{border-color:#4a82ae}.o_process .o_step.o_done .o_title{color:#4a82ae !important}.o_process .o_step.o_done .o_title:before{content:"";color:#5cb85c}.o_process .o_meta{color:#777;font-size:12px;margin-top:-0.5em}.o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5D5D5D !important}.o_cal_class.o_cal_orange{border-left:20px solid #ffc266}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#FFF !important}.o_cal_class.o_cal_green{border-left:20px solid #66c266}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#FFF !important}.o_cal_class.o_cal_blue{border-left:20px solid #4d6e9f}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5D5D5D !important}.o_cal_class.o_cal_yellow{border-left:20px solid #ffe066}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#FFF !important}.o_cal_class.o_cal_red{border-left:20px solid #c26666}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#FFF !important}.o_cal_class.o_cal_rebeccapurple{border-left:20px solid #639}.o_cal_fuchsia{background:#FF00FF;border-color:#dd00dd;color:#FFF}.o_cal_fuchsia .o_cal_wv_event_header{background:#FF00FF}.o_cal_fuchsia a{color:#FFF !important}.o_cal_class.o_cal_fuchsia{border-left:20px solid #f0f}.o_cal_olive{background:#808000;border-color:#636300;color:#FFF}.o_cal_olive .o_cal_wv_event_header{background:#808000}.o_cal_olive a{color:#FFF !important}.o_cal_class.o_cal_olive{border-left:20px solid olive}.o_cal_navy{background:#000080;border-color:#000057;color:#FFF}.o_cal_navy .o_cal_wv_event_header{background:#000080}.o_cal_navy a{color:#FFF !important}.o_cal_class.o_cal_navy{border-left:20px solid navy}.o_cal_maroon{background:#800000;border-color:#740000;color:#FFF}.o_cal_maroon .o_cal_wv_event_header{background:#800000}.o_cal_maroon a{color:#FFF !important}.o_cal_class.o_cal_maroon{border-left:20px solid maroon}.o_cal_lime{background:#00FF00;border-color:#00e200;color:#004d00}.o_cal_lime .o_cal_wv_event_header{background:#00FF00}.o_cal_lime a{color:#004d00 !important}.o_cal_class.o_cal_lime{border-left:20px solid lime}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#FFF !important}.o_cal_class.o_cal_grey{border-left:20px solid #DDDAAA}.o_sel_calendar_print_chooser{padding-right:4em}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_config_color{display:block;width:16px;height:16px;border-radius:8px}.o_cal_colorchooser_selected:before{content:""}#o_cal_colorchooser div{border:1px solid #3b678a;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_cal_embedded_course_container .o_content_popup{top:0}.fc-button{color:#333;background-color:#fff;border-color:#ccc}.fc-button:hover,.fc-button:focus,.fc-button.focus,.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{background-image:none}.fc-button.disabled,.fc-button.disabled:hover,.fc-button.disabled:focus,.fc-button.disabled.focus,.fc-button.disabled:active,.fc-button.disabled.active,.fc-button[disabled],.fc-button[disabled]:hover,.fc-button[disabled]:focus,.fc-button[disabled].focus,.fc-button[disabled]:active,.fc-button[disabled].active,fieldset[disabled] .fc-button,fieldset[disabled] .fc-button:hover,fieldset[disabled] .fc-button:focus,fieldset[disabled] .fc-button.focus,fieldset[disabled] .fc-button:active,fieldset[disabled] .fc-button.active{background-color:#fff;border-color:#ccc}.fc-button .badge{color:#fff;background-color:#333}.fc-button.fc-state-default{text-shadow:none}.fc-button.fc-state-active{color:#fff;background-color:#3b678a;border-color:#335a78}.fc-button.fc-state-active:hover,.fc-button.fc-state-active:focus,.fc-button.fc-state-active.focus,.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{background-image:none}.fc-button.fc-state-active.disabled,.fc-button.fc-state-active.disabled:hover,.fc-button.fc-state-active.disabled:focus,.fc-button.fc-state-active.disabled.focus,.fc-button.fc-state-active.disabled:active,.fc-button.fc-state-active.disabled.active,.fc-button.fc-state-active[disabled],.fc-button.fc-state-active[disabled]:hover,.fc-button.fc-state-active[disabled]:focus,.fc-button.fc-state-active[disabled].focus,.fc-button.fc-state-active[disabled]:active,.fc-button.fc-state-active[disabled].active,fieldset[disabled] .fc-button.fc-state-active,fieldset[disabled] .fc-button.fc-state-active:hover,fieldset[disabled] .fc-button.fc-state-active:focus,fieldset[disabled] .fc-button.fc-state-active.focus,fieldset[disabled] .fc-button.fc-state-active:active,fieldset[disabled] .fc-button.fc-state-active.active{background-color:#3b678a;border-color:#335a78}.fc-button.fc-state-active .badge{color:#3b678a;background-color:#fff}body.o_cal_print fieldset{border:none;margin-bottom:2em}body.o_cal_print legend{font-size:2em;font-weight:bold}body.o_cal_print legend span{display:block;font-size:14px;font-weight:normal}body.o_cal_print ul.o_cal_wv_list{list-style-type:none;padding:0}body.o_cal_print ul.o_cal_wv_list>li{page-break-inside:avoid;margin-bottom:2em}body.o_cal_print ul.o_cal_wv_list .o_cal_date{font-size:1.25em;font-weight:bold;padding:0.5em 0 0.5em 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events{list-style-type:none;padding:0.5em 0 0 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event{position:relative;left:30px;page-break-inside:avoid;clear:both;margin-bottom:1.5em;padding-right:30px}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_time{float:left;font-weight:bold;margin-right:1em}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject{font-weight:bold}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject p{margin:0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_location,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_description,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{clear:both}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{font-style:italic}body.o_cal_print .o_cal_class{position:absolute;left:-30px;width:20px}body.o_cal_print #o_cal_config legend{font-size:1.25em}body.o_cal_print #o_cal_config .o_cal_config_calendar{margin:0;padding:0}body.o_cal_print #o_cal_config .o_cal_config_calendar{position:relative;left:30px;float:none;padding-right:30px}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #3b678a;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{box-sizing:content-box;border-right:1px solid #3b678a}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #3b678a;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#5bc0de}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#3b678a;border-color:#335a78}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#3b678a;border-color:#335a78}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#3b678a;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#f0ad4e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#3b678a}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#2c4c66}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:normal;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;font-size:90%;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{border-right:37px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;width:37px;line-height:50px;color:#fff;background-color:#3b678a}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #3b678a;border-bottom:1px solid #3b678a}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#3b678a}.o_catalog .o_level .o_meta .o_title a:hover{color:#2c4c66}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels_list .o_sublevel{position:relative;border:1px solid #3b678a;margin-bottom:10px}.o_catalog .o_sublevels_list .o_sublevel .o_visual{height:75px;width:75px}.o_catalog .o_sublevels_list .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels_list .o_sublevel .o_title{margin:0}.o_catalog .o_sublevels_list .o_sublevel .o_meta{border-left:1px solid #3b678a;min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em;overflow:hidden}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_title{line-height:75px}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_desc{display:none}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a{font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a>i,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a>i,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a>i{display:none}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels{border:1px solid transparent}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels .o_meta{border-left:1px solid transparent}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #3b678a;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #3b678a;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#3b678a;font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#2c4c66}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (min-width: 768px){.o_catalog .o_sublevels_list,.o_catalog .o_sublevels_compact{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2;columns:2}}.o_repo_details{position:relative}.o_repo_details .o_lead{margin-bottom:10px}.o_repo_details .o_lead .o_author{margin-top:0.5em;margin-bottom:1em;font-size:120%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead .o_media.o_desc_empty{float:none;margin-left:0;margin-bottom:0}.o_repo_details .o_lead h1{font-size:37px}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start_wrapper{clear:both;margin:2em 0 -10px 0;text-align:right}.o_repo_details .o_start_wrapper .o_start_inner{display:inline-block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:400px;display:inline-block}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-left:0;float:none;text-align:center}.o_repo_details .o_start_wrapper{text-align:center}.o_repo_details .o_start_wrapper .o_start_inner{display:block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:100%;display:block}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}}.o_meta .o_closed{padding:2px 5px;margin:5px 0}.o_overview .o_closed{padding:12px 15px;margin:15px 0}.o_ac_configuration span.o_ac_infos{font-weight:normal;color:grey}tr.o_entry_closed,tr.o_entry_closed td,tr.o_entry_closed td span,tr.o_entry_unpublished,tr.o_entry_unpublished td,tr.o_entry_unpublished td span{text-decoration:line-through}.badge.o_midpub{background-color:#3c763d}.badge.o_midwarn{background-color:#8a6d3b}.badge.o_midlock{background-color:#31708f}.badge.o_miderr{background-color:#a94442}.badge.o_middel{background-color:#777}.o_course_editor_legend .badge{font-size:80%}.o_course_editor_legend .badge:before{content:none}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#333}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#66512c}.o_failed th{color:#333}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#333}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_course_run .o_in_review{font-style:italic;position:relative}.o_course_run.o_titled_wrapper>h2 i{display:none}.o_course_run .o_cal_toptoolbar{margin-right:26px}.o_course_run .o_titled_wrapper .o_cal_toptoolbar{margin-right:0px}.o_tree.o_course_menu div.o_tree_l0>a:first-child{background-color:none}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_ll_container h5{margin-bottom:5px}.o_ll_container h5 a.o_desc{color:#3b678a}.o_ll_container h5 a.o_desc small{display:none}.o_ll_container h5 a.o_desc:hover{color:#2c4c66;text-decoration:none}.o_ll_container h5 a.o_desc:hover small{color:#5e5e5e;display:inline}.o_ll_container div.o_comment{color:#777}.o_cmembers .o_cmember{margin:12px 0}.o_cmembers .o_cmember .o_portrait{margin-right:10px}.o_cmembers .o_cmember .o_portrait img{width:50px;height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper{line-height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_cmembers .o_cmember a.o_mail{display:none}.o_cmembers .o_cmember:hover a.o_mail{display:inline}.o_cmembers_print{color:#000}.o_cmembers_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_cmembers_print #o_print_brand img{width:100%}.o_cmembers_print .o_portrait{width:100px;height:100px;position:relative}.o_cmembers_print .o_portrait img{border-radius:0px;margin:auto;display:block;max-width:100px;max-height:100px}.o_cmembers_print .o_cmember{padding-left:0px;padding-right:15px;margin-bottom:20px}.o_cmembers_print .o_cmember .o_cmember_info_wrapper{word-wrap:break-word}.o_cmembers_print .o_cmember .o_prop.o_zipCode{float:left;padding-right:0.5em}.o_cmembers_print h1{font-size:18pt;color:#000}.o_cmembers_print h3{font-size:14pt;margin-top:5px;font-weight:normal;color:#000}.o_cmembers_print h4,.o_cmembers_print .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_cmembers_print h2{font-size:11pt;font-weight:strong;color:#000;padding-bottom:10px;border-bottom:1px solid #eee}.o_cmembers_print .o_cmember_info_wrapper{font-size:7pt;color:#000}.o_cmembers_print .o_cmember_info_wrapper strong{font-size:8pt}.tag.label.label-info{margin-right:3px}.input-group.o_tag_inputgroup .form-control{height:auto}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#3b678a}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #3b678a}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #3b678a !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid #3b678a}.o_gap_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}div.hotspotInteraction{overflow-x:auto}#itemBody .extendedTextInteraction{margin:15px 0}#itemBody .extendedTextInteraction textarea{resize:vertical !important}#itemBody .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-color:#3b678a}.progress-striped #o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_questioninfo .progress-bar{background-color:#3b678a}.progress-striped #o_qti_run_infos #o_qti_questioninfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_results_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 0 1em 0}#o_qti_results_infos .progress{background-color:#eee}#o_qti_results_infos #o_qti_run_scoreinfo,#o_qti_results_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}.o_qti_hotspot_label{padding-left:48%}.o_info.o_assessmentsection_rubrics{margin:0 0 0.5em 0}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d9534f;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d9534f}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d9534f}.o_assessmentitem div.orderInteraction div.box{background-color:#eee}.o_assessmentitem div.orderInteraction div.box span.info{margin-left:1em;color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction div.box.horizontal{margin:0.5em 0;width:100%}.o_assessmentitem div.orderInteraction ul.horizontal{float:left;margin:0 1em;padding:1em 0;width:100%}.o_assessmentitem div.orderInteraction div.box.vertical{margin:1em 0;width:49%}.o_assessmentitem div.orderInteraction div.box.vertical.source{float:left}.o_assessmentitem div.orderInteraction div.box.vertical.target{float:right}.o_assessmentitem div.orderInteraction ul.vertical{margin:0 1em;padding:1em 0;width:auto}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0;width:60%}.o_assessmentitem div.orderInteraction ul li{margin:0 3px 3px 3px;padding:0.4em;padding-left:1.5em;font-size:1em}.o_assessmentitem div.orderInteraction ul li span.ui-icon{position:absolute;margin-left:-1.3em}.o_assessmentitem div.orderInteraction ul.horizontal li{float:left;width:auto}.o_assessmentitem div.orderInteraction br{clear:both}.o_assessmentitem .hottext{position:relative;margin:-2px 0.15em -2px 0.15em;white-space:nowrap}.o_assessmentitem .hottext input{margin:0 3px 0 2px;position:absolute;top:0.1em;left:0.05em}.o_assessmentitem .hottext input+label{display:inline;padding:0 0.1em 0 1.2em;background:#f8f8f8;border:1px solid #e7e7e7;border-radius:2px;color:#333;font-weight:normal;white-space:normal}.o_assessmentitem .hottext input:checked+label{color:#fff;background:#5bc0de;border:1px solid #31b0d5}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem .textEntryInteraction input{margin:-1px 2px;line-height:90%;vertical-align:middle;font-size:98%;border:0.5px solid #999;background:#fff;padding:0.5px 1px;color:#333}.o_assessmentitem .textEntryInteraction input:valid,.o_assessmentitem .textEntryInteraction input:disabled{color:#fff;-webkit-text-fill-color:#fff;background:#5bc0de;border:0.5px solid #31b0d5}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em}.o_assessmentitem_wrapper #itemBody{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;line-height:1.5em}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type,.o_assessmentitem_wrapper .modalFeedback .o_cal .fc-header-title h2:first-of-type,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback h2:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4,.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h2{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d9534f}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#5cb85c}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f0ad4e}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#5bc0de;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}#itemBody{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}.o_assessment_test_results .o_sel_assessment_item_hint{display:none}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction label{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#5cb85c}.matchInteraction div.bar_red{background-color:#d9534f}.source-left,.target-left,.source-right,.target-right{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_match_dnd_sources{padding:10px 10px 0 10px;min-height:60px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_match_dnd_sources.oo-accepted{border-color:#1f7e9a}.o_match_dnd_source{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;cursor:move;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.o_match_dnd_source:before,.o_match_dnd_source:after{content:" ";display:table}.o_match_dnd_source:after{clear:both}.o_match_dnd_source.oo-selected{border:2px dashed #f0ad4e;background:#fae3c4}.o_match_dnd_source.oo-drag{border:2px dashed #f0ad4e !important}.source-bottom .o_match_dnd_source,.source-top .o_match_dnd_source{margin:0 0 10px 0}.o_match_dnd_targets .oo-accepted{border:2px solid #1f7e9a;border-radius:4px}.o_match_dnd_target{padding:10px 10px 0 10px;margin:0 0 10px 10px;border:2px solid #5bc0de;border-radius:4px;background:#d9edf7}.o_match_dnd_target:before,.o_match_dnd_target:after{content:" ";display:table}.o_match_dnd_target:after{clear:both}.o_match_dnd_target .o_match_dnd_target_drop_zone{margin:0;padding:5px 0 0 15px;min-height:30px}.o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{border:2px dashed #777}.target-bottom .o_match_dnd_target,.target-top .o_match_dnd_target{margin:0 0 10px 0}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone{padding-left:0px}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{padding-left:15px}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#5cb85c}.o_assessmentitem div.failure{background-color:#f0ad4e}.o_assessmentitem div.error{background-color:#d9534f}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:10px;border-bottom:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#3b678a;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#243f54;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f0ad4e}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#5bc0de}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}.o_assessment_test_results .o_qti_assessment_title{border-bottom:1px solid #ddd}.o_assessment_test_results table th{width:40%}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section{text-align:center}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section .o_qti_section_sublisting{padding:0 10%;min-height:3em}.o_assessment_test_results .o_qti_sections .o_qti_section{margin-top:40px}.o_assessment_test_results .o_qti_sections .o_qti_section h3{margin-bottom:20px}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_id{display:none}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:0;padding:5px 10px 10px 5px;border-top:1px solid #ddd;broder-bottom:1px solid #ddd}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2{font-size:100%;font-weight:bold;color:inherit}.o_assessment_test_results .o_qti_to_overview{text-align:right}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}div.o_wiki_wrapper a.wikiimg{text-decoration:none;color:inherit;font-weight:inherit}div.o_wiki_wrapper div.imgcaption{padding:0.3em 0em 0.2em 0.3em}div.o_wiki_wrapper div.imgleft{clear:left;float:left;margin:0.3em 0.3em 0.3em 0em}div.o_wiki_wrapper div.imgright{clear:right;float:right;margin:0.3em 0em 0.3em 0.3em}div.o_wiki_wrapper div.imgcenter{clear:both;overflow:hidden;text-align:center;margin:0.3em 0em 0.3em 0em}div.o_wiki_wrapper div.imgthumb{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper table.gallery{border:1px solid #ccc;margin:2px;padding:2px;background-color:white}div.o_wiki_wrapper table.gallery tr{vertical-align:middle}div.o_wiki_wrapper table.gallery td{background-color:#f9f9f9;border:solid 2px white;text-align:center;vertical-align:middle;width:150px}div.o_wiki_wrapper img.gallery{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper a.edit{font-style:italic;color:red}div.o_wiki_wrapper a.externallink:before{padding-right:2px}div.o_wiki_wrapper a.externallink:before:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}.o_ep_icon_map:before{content:""}.o_ep_icon_collection:before{content:""}.o_ep_icon_page:before{content:""}.o_ep_icon_struct:before{content:""}.o_ep_icon_liveblog:before{content:"ï‚¡"}.o_artefact_closed:before{content:""}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.o_eportfolio_page .o_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.panel-footer .o_ep_options{display:inline-block}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ECF69A;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99E44D;background:#99E44D -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99E44D), to(#CBF1A5));background:#99E44D -moz-linear-gradient(43% 71% 101deg, #CBF1A5, #99E44D);background:#99E44D -o-linear-gradient(#99E44D, #CBF1A5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99E44D', EndColorStr='#CBF1A5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#DFF0C1;background:#DFF0C1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DFF0C1), to(#A0D346));background:#DFF0C1 -moz-linear-gradient(43% 71% 101deg, #A0D346, #DFF0C1);background:#DFF0C1 -o-linear-gradient(#DFF0C1, #A0D346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DFF0C1', EndColorStr='#A0D346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#D7DBB5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#FFBA71;background:#FFBA71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFBA71), to(#FFBA99));background:#FFBA71 -moz-linear-gradient(43% 71% 101deg, #FFBA99, #FFBA71);background:#FFBA71 -o-linear-gradient(#FFBA71, #FFBA99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFBA71', EndColorStr='#FFBA99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#FF9772;background:#FF9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FF9772), to(#FF9780));background:#FF9772 -moz-linear-gradient(43% 71% 101deg, #FF9780, #FF9772);background:#FF9772 -o-linear-gradient(#FF9772, #FF9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF9772', EndColorStr='#FF9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#E8AFBB;background:#E8AFBB -webkit-gradient(linear, 37% 20%, 53% 100%, from(#E8AFBB), to(#E8AFA0));background:#E8AFBB -moz-linear-gradient(43% 71% 101deg, #E8AFA0, #E8AFBB);background:#E8AFBB -o-linear-gradient(#E8AFBB, #E8AFA0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#E8AFBB', EndColorStr='#E8AFA0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#FFA800;background:#FFA800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFA800), to(#FFAF00));background:#FFA800 -moz-linear-gradient(43% 71% 101deg, #FFAF00, #FFA800);background:#FFA800 -o-linear-gradient(#FFA800, #FFAF00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFA800', EndColorStr='#FFAF00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00D2F8;background:#00D2F8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00D2F8), to(#4A9EAD));background:#00D2F8 -moz-linear-gradient(43% 71% 101deg, #4A9EAD, #00D2F8);background:#00D2F8 -o-linear-gradient(#00D2F8, #4A9EAD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00D2F8', EndColorStr='#4A9EAD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#C4F6FF;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#B3E2F7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#DEE7F7;background:#DEE7F7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DEE7F7), to(#C1E9FD));background:#DEE7F7 -moz-linear-gradient(43% 71% 101deg, #C1E9FD, #DEE7F7);background:#DEE7F7 -o-linear-gradient(#DEE7F7, #C1E9FD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DEE7F7', EndColorStr='#C1E9FD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_portfolio div#o_main_toolbar.o_toolbar{margin-top:0px}.o_section_lead,.o_page_lead,.o_assignment_lead{padding:10px 10px;margin-bottom:10px;background-color:#f2f2f2;border-radius:3px;border:1px #d9d9d9 solid}.o_section_lead.o_assignment_2_instantiate{border-radius:3px 3px 0px 0px;border-bottom:none;padding-bottom:1px;margin-bottom:0px}.o_assignment_2_instantiate{padding:10px 10px 0px 10px;background-color:#f2f2f2;border-left:1px #d9d9d9 solid;border-right:1px #d9d9d9 solid}.o_assignment_2_instantiate.last{padding-bottom:10px;border-bottom:1px #d9d9d9 solid;border-radius:0px 0px 3px 3px}.o_page_lead{padding:20px}.o_page_lead h2{margin-bottom:5px}.o_page_lead .o_portfolio_page_meta{margin-bottom:5px}.o_page_lead .o_page_summary{font-size:18px}.o_page_lead .o_media.o_media_right,.o_page_lead .o_media.o_media_right_large{float:right;margin-left:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_left_large{float:left;margin-right:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_right{max-height:200px;max-width:50%}.o_page_lead .o_media.o_media_left img,.o_page_lead .o_media.o_media_right img{max-height:200px}.o_page_lead .o_media.o_media_right_large,.o_page_lead .o_media.o_media_left_large{max-height:300px;max-width:75%}.o_page_lead .o_media.o_media_right_large img,.o_page_lead .o_media.o_media_left_large img{max-height:300px}.o_page_lead .o_media.o_desc_empty{max-height:300px;text-align:center}.o_page_lead .o_media.o_desc_empty img{max-height:300px}.o_page_lead .o_media img{border-radius:3px;border:1px #d9d9d9 solid;background:#fff}.o_page_lead .o_portfolio_status_block{border-top:1px solid #d9d9d9;padding-top:1em;margin-bottom:-1em}.o_page_lead .o_portfolio_status{display:inline-block;padding-right:2em}.o_page_lead.o_block_imagebg .o_portfolio_status{padding:2px;background-color:rgba(255,255,255,0.8)}.o_page_assignment{font-size:12px}.o_page_assignment.o_togglebox_wrapper div.o_togglebox_content{margin:10px 0 20px 0;padding:20px;border-left:3px solid #d9534f;background-color:#f2dede}.o_page_assignment .o_page_assignement_info{position:relative;left:-1em}.o_portfolio_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry{position:relative;display:inline-block;height:230px;width:400px;vertical-align:top;margin-right:10px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry ul{padding-left:2em}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul{margin:0;padding:0;list-style-type:none}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul li{padding:2px}.o_binder.o_portfolio_assignments .panel-heading,.o_binder.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.panel-default.o_portfolio_assignments .panel-heading,.panel-default.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_meta_wrapper,.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_summary{padding-left:10px}.o_portfolio_page_summary .o_media.o_media_right,.o_portfolio_page_summary .o_media.o_media_right_large{float:right;margin-left:0.5em;margin-bottom:0.5em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_left_large{float:left;margin-right:0.5em;margin-bottom:0.5em}.o_portfolio_categories .tag{font-size:80%;font-weight:normal}.o_portfolio_last_modified+.o_portfolio_categories,.o_portfolio_page_meta+.o_portfolio_categories{margin-left:1em}.o_rendertype_classic .o_pf_page,.o_rendertype_classic .o_pf_assignment{padding-left:1em}.o_portfolio_timeline .o_timeline_up{text-align:center}.o_portfolio_timeline .o_timeline_down{text-align:center}.o_portfolio_timeline .axis path,.o_portfolio_timeline .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_portfolio_timeline .x.axis line,.o_portfolio_timeline .x.axis path{display:none}.o_portfolio_timeline path.o_timeline_curve{fill:none;stroke:#ccc;shape-rendering:crispEdges}.o_portfolio_timeline .y.axis .tick line,.o_portfolio_timeline .y.axis path.domain{stroke:#ddd}.o_portfolio_timeline text{fill:#888;stroke:none;font-size:10px}.o_portfolio_timeline .dot.o_pf_status_draft{fill:#f0ad4e}.o_portfolio_timeline .dot.o_pf_status_published{fill:#3b678a}.o_portfolio_timeline .dot.o_pf_status_inrevision{fill:#d9534f}.o_portfolio_timeline .dot.o_pf_status_closed{fill:#5cb85c}.o_portfolio_timeline .dot.o_pf_status_deleted{fill:#000}.o_portfolio_title_help_helper{display:inline-block;float:right;position:relative;top:1em;right:1em}.o_pf_comments{margin-top:2em}.o_pf_content .o_cit,.o_pf_content .o_file{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_forum{border:1px #f8f8f8 solid;padding:10px;border-radius:10px}.o_pf_content .o_image,.o_pf_content .o_video{padding:10px;text-align:center;width:100%}.o_pf_content .o_image img,.o_pf_content .o_video img{border:1px #f8f8f8 solid;border-radius:10px}.o_pf_content_editor .o_toolbar{border:none}.o_pf_content_editor .o_page_part{border:2px solid transparent}.o_pf_content_editor .o_page_part:hover{border:2px dotted #6b9ac0}.o_pf_content_editor .o_page_fragment_edit{position:relative}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above{height:25px;width:100%;background:#6b9ac0;position:absolute;z-index:3;left:0;top:-25px;box-shadow:3px -8px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_add_above{position:absolute;left:0;top:-25px;height:25px;border-left:2px dashed #6b9ac0;border-top:2px dashed #6b9ac0;border-right:2px dashed #6b9ac0;border-radius:10px 10px 0 0;box-shadow:0 -5px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_sel_add_element_above{display:inline-block;padding:5px 5px 0 5px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above{padding-right:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above .o_page_type{display:none}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a{float:right;color:#fff;padding-right:1em}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd{position:absolute;z-index:4;top:0;right:0;width:25px;height:100%;background:#6b9ac0}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a{position:absolute;display:inline-block;width:25px;height:25px;line-height:25px;text-align:center;vertical-align:middle;color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_up_element{z-index:4;top:-25px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_down_element{bottom:0}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit{padding-right:25px;border:2px solid #6b9ac0;box-shadow:5px 5px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit:hover{border:2px solid #6b9ac0}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar{position:absolute;z-index:5;left:5px;top:-25px;display:inline-block;height:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a{color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_title .o_page_edit_toolbar li{font-weight:bold}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_richtext_mce textarea{border:0}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below{position:absolute;z-index:3;left:0;bottom:-25px;height:25px;border-left:2px dashed #6b9ac0;border-bottom:2px dashed #6b9ac0;border-right:2px dashed #6b9ac0;border-radius:0 0 10px 10px;box-shadow:3px 8px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below .o_sel_add_element_below{display:inline-block;padding:0 5px 5px 5px}.o_pf_content_editor .o_pf_add_contents{margin-top:30px}.o_portfolio_add_callout a span{display:none}.o_portfolio_add_callout ul.list-inline{margin-bottom:0}.o_portfolio_image_options{clear:both;width:300px;padding:5px}.o_binder_page_listing .o_portfolio_page_links{background-color:#f8f8f8;border-radius:4px}.o_binder_page_listing .o_portfolio_page_links .o_portfolio_comment{float:right}.o_portfolio_toc{padding-bottom:6em}.o_portfolio_toc .o_portfolio_section_meta{font-size:80%;color:#777;position:relative;top:-15px}.o_portfolio_toc .o_section{position:relative}.o_portfolio_toc .o_section .o_header_with_buttons h4,.o_portfolio_toc .o_section .o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_portfolio_toc .o_section .o_header_with_buttons h2{padding-right:0.5em}.o_portfolio_toc .o_section_actions{position:absolute;top:0;right:0}.o_portfolio_toc .o_section_actions .o_section_move_up_and_down{display:inline-block}.o_portfolio_toc .o_section_actions .o_section_dropdown{display:inline-block;position:relative;top:-0.5em;padding-left:0.5em}.o_portfolio_toc ul>li>ul{padding-left:1.5em}.o_portfolio_content .o_portfolio_toc.o_portfolio_toc_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_page_meta_wrapper{background-position:left top;background-repeat:no-repeat}.o_portfolio_rights table .o_portfolio_section td:first-child{padding-left:1.5em}.o_portfolio_rights table .o_portfolio_page td:first-child{padding-left:2.5em}.o_portfolio_publication table{padding-bottom:10px}.o_portfolio_publication table td{padding:5px 5px 5px 0}.o_portfolio_publication .o_portfolio_ac{font-size:90%}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(2){width:200px;white-space:nowrap}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(3){width:40px;white-space:nowrap}.o_portfolio_publication ul ul{margin-left:2em;margin-bottom:5px}.o_portfolio_publication ul li{background:#fbfbfb;padding:3px;margin-bottom:2px}.o_portfolio_publication ul li li{background:#f2f2f2}.o_portfolio_publication ul li li li{background:#eee}.o_portfolio_publication ul li li .table{margin-bottom:0px}@media (max-width: 767px){.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:100%;float:none}.o_portfolio_content .o_sel_timeline_off,.o_portfolio_content .o_sel_timeline_on,.o_portfolio_content .o_portfolio_timeline{display:none}.o_portfolio_content .o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline{width:100%;float:none}}.o_portfolio_media_browser .o_portfolio_medias{position:relative;margin-bottom:20px;margin-top:20px}.o_portfolio_media_browser .o_portfolio_medias:before,.o_portfolio_media_browser .o_portfolio_medias:after{content:" ";display:table}.o_portfolio_media_browser .o_portfolio_medias:after{clear:both}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media:last-child{margin-right:0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{border:1px solid #3b678a;position:relative;height:180px;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon span.o_visual_not_available{background-image:none}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:6em;text-align:center;color:#eee;line-height:140px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #3b678a;border-top:0;background-color:rgba(255,255,255,0.8)}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a{display:block;color:#3b678a;font-family:inherit;font-weight:inherit}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover{color:#2c4c66}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 10px 10px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}@media (max-width: 767px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 1px 1px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}.o_evaluation_form .o_evaluation_step_labels{margin-bottom:8px}.o_evaluation_form .o_evaluation_step_labels div,.o_evaluation_form .o_evaluation_step_labels span{display:inline-block;text-align:center}.o_evaluation_form .o_slider{margin-bottom:8px}.o_evaluation_form .o_slider.hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels{position:relative}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:first-child{position:absolute;left:0px;text-align:left}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div{display:inline-block;text-align:center}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:last-child{position:absolute;right:0px;text-align:right}.o_evaluation_form .o_evaluation_discrete_radio .o_slider input[type='radio']{padding:0;margin:0;position:relative}.o_evaluation_form .o_evaluation_discrete_radio .o_slider label{padding:0;margin:0;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps div.radio{display:inline-block;text-align:center}.o_evaluation_form .o_slider .ui-slider.ui-slider-horizontal.ui-widget-content{margin-top:0.3em}.o_evaluation_form .o_evaluation_left_label{text-align:right}.o_evaluation_form .o_evaluation_right_label{text-align:left}.o_evaluation_form .o_evaluation_textinput .o_evaluation_legend{padding-left:0.5em;margin-bottom:0.5em}@media (max-width: 768px){.o_evaluation_form .o_evaluation_left_label{text-align:left}.o_evaluation_form .o_evaluation_right_label{text-align:right}}.o_slider_overview{width:100%;height:20px;position:relative}.o_slider_overview .o_slider_overview_line{top:5px;left:0px;position:absolute;width:100%;height:11px;border:1px solid #999;border-radius:4px}.o_slider_overview .o_slider_overview_point{position:absolute;width:10px;height:10px;background-color:#3b678a}.o_evaluation_editor_form{margin:10px 10px 0 10px}.o_evaluation_editor_form .o_slider_editor{margin-top:10px;position:relative}.o_evaluation_editor_form .o_evaluation_step_labels{display:inline-block}.o_evaluation_editor_form .o_evaluation_step_labels input{width:100%}.o_evaluation_editor_form .o_slider_editor_delete{padding-right:48px}.o_evaluation_editor_form .o_slider_editor_delete .o_slider_editor_delete_button{position:absolute;right:15px}.o_cit{position:relative;margin:10px 0}.o_cit blockquote.o_quote{color:#555;font-size:18px;margin-top:6px;padding:0 12px}.o_cit blockquote.o_quote p:last-child:after{content:'1)';top:-0.5em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}.o_cit .o_cit_bibinfo{font-size:90%;margin-left:1em;position:relative}.o_cit .o_cit_bibinfo>div:first-child:before{content:'1)';position:absolute;top:0.5em;left:-1em;font-size:75%;line-height:0;vertical-align:baseline}.o_cit .title,.o_cit .url,.o_cit .authors,.o_cit .pages,.o_cit .date,.o_cit .dateAdded,.o_cit .place,.o_cit .institution,.o_cit .issue,.o_cit .publisher,.o_cit .publicationTitle,.o_cit .edition,.o_cit .series,.o_cit .volume{margin-right:0.5em}.o_cit .title{font-style:italic}.o_cit .publicationTitle{color:black}.o_cit .links{padding-left:2em}.o_cit .notes{padding-left:2em;color:grey}.o_cit .note{font-style:italic}.o_cit .note p:first-child{margin-top:0}.o_cit .note p:first-child{margin-bottom:0}.o_cit .listing.web .item{padding-left:0;text-indent:0}.o_cit .listing.web .title{display:block;font-weight:bold;font-style:normal}.o_cit .listing.web .publicationTitle{display:block;font-style:italic}.o_cit .listing.web .url{display:block}.o_cit .listing.web .links{padding-left:0}.o_cit .listing.web .notes{padding-left:0}.o_cit .general-info{border-top:1px solid #eee;padding-top:30px;margin-top:30px}.o_cit .copyright{display:none}@media print{.cit{background-image:none;padding-top:0;max-width:100%}.cit #styles,.cit #refreshContainer{display:none}.cit #general-info a:after{content:" (" attr(href) ") ";font-size:0.8em;font-weight:normal}.cit #copyright{display:block;margin-top:30px}}.o_video_poster{position:relative;display:inline-block;width:400px;max-width:100%;height:225px;background-size:cover;background-repeat:no-repeat;border:1px solid #eee}.o_video_poster_select{text-align:center}.o_video_poster_select .o_video_poster{margin:5px}.o_video_poster_select .o_video_poster a{position:absolute;left:0;top:0;width:100%;height:100%}.o_video_poster_select .o_video_poster a span{position:absolute;bottom:0;width:100%;display:block;line-height:3em;background:#f8f8f8;opacity:0.8}.o_video_poster_select .o_video_poster a:hover{border:1px solid #bbb}.o_video_poster_select .o_video_poster a:hover span{opacity:0.9}.o_video_peekview{text-align:center}.o_video_listing .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_video_listing .o_video_entry{position:relative;display:inline-block;height:230px;width:250px;vertical-align:top;margin-right:10px}.o_video_listing .o_video_poster{width:250px;max-width:100%;height:140px;border:1px solid #eee}.o_video_listing .o_timecode{position:absolute;bottom:2px;right:3px;padding:3px 4px;background:#333;color:#fff;font-size:12px;line-height:12px}.o_video_listing .o_meta{padding:2px;font-size:11px}.o_video_listing .o_meta h5{font-size:14px;margin-top:0;margin-bottom:5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_video_listing .o_date{margin-left:10px;display:inline-block}.o_video_listing .o_date:before{content:'\002022';margin-right:10px;display:inline-block}.o_video_run .o_author{margin-top:0.5em;margin-bottom:1em;line-height:normal;font-size:90%;color:#3c763d}.o_video_run .o_ratings_and_comments{margin-top:2em;border-top:1px solid #eee;padding-top:1em}.mejs__controls .mejs__sourcechooser-button>button{background:transparent;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.mejs__controls .mejs__sourcechooser-button>button:before{content:"";color:white;font-size:18px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector{visibility:visible !important;width:170px;padding-left:10px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label{font-weight:normal;font-size:10px;width:140px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label:hover{color:#eee}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label .type{display:none}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input:checked+label{color:#d9534f}.mejs__controls .mejs__captions-button .mejs__captions-selector{right:-26px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label{font-weight:normal;font-size:10px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label:hover{color:#eee}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label .type{display:none}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input:checked+label{color:#d9534f}.mejs__button.mejs__speed-button{width:36px}.mejs__controls .mejs__speed-button>button{background:transparent;width:36px;margin:11px 0 0 0;font-size:11px;line-height:normal;color:#ffffff}.mejs__controls .mejs__speed-button .mejs__speed-selector{height:150px;top:auto;bottom:40px}.mejs__controls .mejs__speed-button .mejs__speed-selector ul li label{font-weight:normal;font-size:10px}.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-title,.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.o_userbulk_changedcell{font-style:italic;font-weight:bold}body.o_dmz{background:transparent}body.o_dmz #o_bg{position:absolute;top:0;left:0;width:100%;height:100%;border-top:50px solid transparent;border-bottom:70px solid transparent;background:url("images/learn-bg.jpg");background-size:cover;background-position:center center;background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=1 )}body.o_dmz #o_bg:after{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to right, rgba(255,255,255,0.1) 0.2%, rgba(255,255,255,0.6) 60%, rgba(255,255,255,0.8) 100%);background-size:cover;background-position:center center;background-repeat:no-repeat}body.o_dmz #o_toplink{display:none}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-bottom:20px;padding-left:10%;padding-right:10%;text-align:right}.o_login .o_login_intro{padding-left:10%}.o_login .o_login_intro h1{margin-bottom:40px;color:#3b678a}.o_login .o_login_intro .lead{color:#333}.o_login .o_login_intro .lead h1,.o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h3,.o_login .o_login_intro .lead h4,.o_login .o_login_intro .lead .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h5{margin-bottom:20px;color:#3b678a}.o_login .o_login_messages,.o_login .o_login_box{display:inline-block;width:400px;text-align:left}.o_login .o_login_messages .o_infomessage_wrapper{background:rgba(255,255,255,0.5);border:1px solid transparent;border-radius:4px;padding:6px 12px}.o_login .o_login_messages .o_infomessage_wrapper .o_info,.o_login .o_login_messages .o_infomessage_wrapper .o_warning,.o_login .o_login_messages .o_infomessage_wrapper .o_note{margin:0}.o_login .o_login_box{padding-top:10px}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_providers .o_icon_provider_olat{font-size:1em}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_form .o_form .o_desc{margin:0 0 30px 0;padding:0;border-left:0;background-color:transparent}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#5bc0de;border-color:#46b8da;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register.focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled.focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled].focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register.focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#5bc0de;border-color:#46b8da}.o_login .o_login_register .badge{color:#5bc0de;background-color:#fff}.o_login .o_login_register small{font-size:14px}.o_login .o_login_social{position:relative;padding:10px 12px}.o_login .o_login_social li{padding:10px 12px}.o_login .o_login_social li>a{display:block;line-height:2em;text-align:center;font-size:18px;border-radius:4px;padding:10px 12px}.o_login .o_login_social .btn-default.o_sel_auth_facebook{color:#fff;background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{color:#fff;background-color:#37538d;border-color:#2d4374}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled],.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook .badge{color:#4568b2;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_twitter{color:#fff;background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{color:#fff;background-color:#00b4f8;border-color:#009ad4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled],.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter .badge{color:#2cc5ff;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_google{color:#fff;background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.focus,.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{color:#fff;background-color:#d83825;border-color:#ba3120}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google.disabled,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled],.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google .badge{color:#e15f4f;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{color:#fff;background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{color:#fff;background-color:#015e8a;border-color:#014667}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled],.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin .badge{color:#0181bd;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_adfs{color:#fff;background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled],.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_adfs .badge{color:#3b678a;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect{color:#fff;background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled],.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active{background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect .badge{color:#3b678a;background-color:#fff}@media (max-width: 767px){body.o_dmz #o_bg{background:none;display:none}.o_login{padding:0}.o_login .o_login_intro{padding:0;text-align:left}.o_login .o_login_box_wrapper{text-align:center;padding:0}.o_login .o_login_box{padding-left:0;padding-right:0}.o_login .o_login_box .o_login_providers,.o_login .o_login_box .o_login_provider{-webkit-box-shadow:none;box-shadow:none}.o_login .o_login_messages,.o_login .o_login_box{width:100%;display:block}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px;margin-top:10px}.o_portlet{position:relative;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library_icon:before{content:""}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.o_library_overview .o_library_newest_files ul li{float:left;margin-right:15px}.o_library_item{margin-bottom:10px;position:relative}.o_library_item .o_library_visual,.o_library_item .o_library_extra,.o_library_item .o_library_meta{margin-top:15px}.o_library_item .o_library_visual{float:left;background-color:#fff;border-radius:4px;border:1px solid #ddd}.o_library_item .o_library_visual .o_thumbnail_available,.o_library_item .o_library_visual .o_thumbnail_unavailable{background-size:146px auto;width:150px !important;height:150px !important;background-repeat:no-repeat;background-position:50% 50%}.o_library_item .o_library_visual .o_thumbnail_available:before,.o_library_item .o_library_visual .o_thumbnail_unavailable:before{content:none}.o_library_item .o_library_visual .o_thumbnail_available{background-size:146px auto}.o_library_item .o_library_visual .o_thumbnail_unavailable{display:none}.o_library_item .o_library_extra{float:right;width:200px}.o_library_item .o_library_meta{clear:both}.o_library_item .o_library_meta .o_library_desc{padding-bottom:10px}.o_library_item .o_library_meta small{display:block;word-wrap:break-word}.o_library_item h4,.o_library_item .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal}.o_library_item .btn{display:block;margin-bottom:0.5em}.o_library_item .o_comments{display:inline-block}.o_library_item .table{table-layout:fixed;word-wrap:break-word;margin-bottom:0}.o_library_item p.o_library_show_more{text-align:right;margin:0;padding-top:20px}.o_library_item .o_library_more{padding-top:20px;display:none}.o_library_folder{margin-top:-20px}.o_library .o_ratings_and_comments .o_rating_title,.o_library .o_ratings_and_comments .o_rating_explanation{display:none}@media (min-width: 768px){.o_library_item .o_library_meta{clear:none;margin-left:150px;margin-right:200px;padding:0 10px}.o_library_item .o_library_more{display:none}.o_library_item .o_library_more table tbody{vertical-align:top}.o_library_item .o_library_more table tr,.o_library_item .o_library_more table th,.o_library_item .o_library_more table td{display:inline-block}.o_library_item .o_library_more table tr{width:49%}.o_library_item .o_library_more table th{width:30%}.o_library_item .o_library_more table td{width:70%}}.o_library_item_compact .o_library_extra{width:auto}.o_library_item_compact .o_library_meta{padding:0 10px 0 0;margin:0;overflow:hidden}.o_library_item_compact .btn{display:inline-block}.o_library_item_compact h4,.o_library_item_compact .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item_compact h2{overflow:hidden;margin-right:70px}.o_library_item_compact h4 a,.o_library_item_compact .o_cal .fc-header-title h2 a,.o_cal .fc-header-title .o_library_item_compact h2 a{text-overflow:ellipsis;white-space:nowrap}.o_library_item_compact p.o_library_show_more{padding:20px;position:absolute;top:0;right:0}span.o_translation_i18nitem{position:relative !important}span.o_translation_i18nitem a.o_translation_i18nitem_launcher{position:absolute !important;z-index:100 !important;width:18px !important;height:20px !important;top:0 !important;left:5px !important;background:#fff;border:1px solid #3b678a !important;border-radius:3px;text-align:center;padding:0 !important}.o_user_infos{position:relative}.o_user_infos .o_user_portrait{position:absolute;top:0;left:15px;width:100px;height:100px}.o_user_infos .o_user_infos_inner{margin:0 30px 0 100px}.o_user_infos .o_user_infos_inner table{margin:0 30px 15px 30px}div.o_skype_button{display:inline-block}div.o_skype_button p{margin:0 0 0 0}div.o_skype_button p a img{margin:0 !important;vertical-align:middle !important}.o_members_pagination{text-align:center}.o_bcard_logo{margin-left:10px;height:66px}.o_bcard_title_with_logo{clear:both;padding:20px 0 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:66px}.o_visitingcard .o_icon_visitingcard{display:none}.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:66px;height:66px;margin-right:10px}@media (max-width: 767px){.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:50px;height:50px;margin:5px 5px 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:50px}.o_visitingcard_logo,.o_bcard_logo{height:50px;margin:5px 0 0 5px}.o_visitingcard_logo img,.o_bcard_logo img{position:relative;transform:scale(0.75758);top:-8px}}@media (max-width: 414px){.o_visitingcard_logo img{max-width:260px}}@media (max-width: 375px){.o_visitingcard_logo img{max-width:220px}}@media (max-width: 320px){.o_visitingcard_logo img{max-width:180px}.o_bcard_logo img{max-width:150px}}.o_c2b_peekview{height:182px;width:302px;border-style:solid;border-width:0.1px}.o_c2b_cover{height:180px;width:300px;position:absolute;z-index:2;background:transparent;cursor:pointer}.o_c2b_iframe{height:180px;width:300px;position:absolute;z-index:1}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-title{color:#3b678a;font-weight:500;font-family:inherit;line-height:1.1}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"ï€" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close span{display:none}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important;float:right}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px;overflow:auto;background:white !important}.ui-dialog .ui-dialog-titlebar{padding:4px 7px 4px 7px;background-color:#eee !important}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}.ui-slider.ui-slider-horizontal.ui-widget-content{border-color:#999}.ui-slider.ui-slider-horizontal.ui-widget-content.ui-state-disabled{opacity:0.65}.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:1px solid #3b678a;background-image:none;background-color:#3b678a}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"ï¡";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"ï ";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #335a78;background:#3b678a;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal}.o_richtext_mce_without_path .mce-statusbar{border:none}.o_richtext_mce_without_path .mce-path{display:none !important}.o_richtext_mce_without_path .mce-menubtn.mce-fixed-width span{width:auto}i.mce-ico.mce-i-media,i.mce-ico.mce-i-movie,i.mce-ico.mce-i-help,i.mce-ico.mce-i-gaptext,i.mce-ico.mce-i-gapnumerical,i.mce-ico.mce-i-hottext,i.mce-ico.mce-i-edit{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}i.mce-ico.mce-i-media:before{content:""}i.mce-ico.mce-i-movie:before{content:""}i.mce-ico.mce-i-gaptext:before{content:"ï…"}i.mce-ico.mce-i-gapnumerical:before{content:""}i.mce-ico.mce-i-hottext:before{content:"ï"}i.mce-ico.mce-i-math:before{content:'\03A3'}i.mce-ico.mce-i-edit:before{content:"ï„"}i.mce-ico.mce-i-help{width:9px;height:9px;padding-top:1px}i.mce-ico.mce-i-help:before{content:"ï™";color:white}.mce-tabs span.o_chelp_wrapper{float:right;margin:5px}div.o_table_search span.twitter-typeahead{display:table-cell;padding-top:3px}.tag.label.label-info{margin-right:3px}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fff !important;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important;-webkit-print-color-adjust:exact;color-adjust:exact}.modal-dialog{margin:0 !important;width:100% !important;height:100% !important;background:#fff !important;-webkit-print-color-adjust:exact;color-adjust:exact}.progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}.radial-progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#eee !important}.radial-progress .circle .mask .fill{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#000 !important}.radial-progress .inset{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#fff !important}body{margin:0}}.o_highscore .o_position{text-align:center;font-size:1.2em;font-weight:bold}.o_highscore .o_position h2{font-size:3em;font-weight:700;line-height:1.2em}@media screen and (-webkit-min-device-pixel-ratio: 0){.o_highscore .o_position h2{background:linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline}.o_highscore .o_position h2:after{content:"\A";white-space:pre}}.o_highscore .o_position_relative{font-size:1em;font-weight:normal}.o_highscore .o_podium{position:relative;vertical-align:bottom;height:300px;margin-bottom:50px}.o_highscore .o_rank{width:30%;position:absolute;bottom:0;text-shadow:rgba(102,102,102,0.5) 0 -1px 0,rgba(255,255,255,0.6) 0 2px 1px}.o_highscore .o_rank:before{position:absolute;bottom:0;left:0;width:100%;text-align:center}.o_highscore .o_rank .o_name{position:absolute;top:100%;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1em;text-shadow:none}.o_highscore .o_rank .o_score{color:#777;font-size:90%;width:100%;text-align:center;position:absolute;top:-20px;text-shadow:none}.o_highscore .o_rank .o_singleportrait{position:absolute;width:100%;text-align:center;top:-125px}.o_highscore .o_rank .o_rank_portraits{position:relative;left:0;top:-210px;height:180px;width:200px;text-align:center;vertical-align:bottom;display:table-cell}.o_highscore .o_rank .o_rank_portraits ul{display:inline-block}.o_highscore .o_rank .o_rank_portraits .o_portrait{margin:5px}.o_highscore .o_first{height:150px;left:30%;border:1px solid #d9d9d9;border-top-left-radius:4px;border-top-right-radius:4px;background:gold;background:-moz-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:-webkit-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 )}.o_highscore .o_first:before{content:"1";font-size:700%;line-height:150px;color:#666}.o_highscore .o_second{height:100px;left:0;background:silver;background:-moz-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-left-radius:4px}.o_highscore .o_second:before{content:"2";font-size:500%;line-height:100px;color:#666}.o_highscore .o_third{height:80px;left:60%;background:#cd7f32;background:-moz-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:-webkit-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-right:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-right-radius:4px}.o_highscore .o_third:before{content:"3";font-size:300%;line-height:80px;color:#666}.o_highscore .o_histogram{position:relative;bottom:-40px;margin-bottom:40px}.o_highscore .o_histogram .d3chart{width:100%;padding-top:50px;height:300px}.o_highscore .o_histogram .d3chart text{fill:#888}.o_highscore .o_histogram .d3chart .axis path,.o_highscore .o_histogram .d3chart .axis line{stroke:#888}.o_highscore .o_histogram .d3chart .o_myself{fill:#3b678a}.o_highscore .o_histogram .d3chart .o_myself:hover{fill:#4a82ae}.o_highscore .o_histogram .d3chart .o_other{fill:#777}.o_highscore .o_histogram .d3chart .o_other:hover{fill:#919191}.o_highscore .o_histogram .d3chart .o_empty{fill:#000}.o_listing .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_listing table th:nth-of-type(1),.o_listing table th :nth-of-type(2){width:5em}body.o_browser_ie7 #o_offcanvas_right,body.o_browser_ie8 #o_offcanvas_right{right:0px}.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-default.active,.btn-primary:active,.btn-primary.active,.btn-success:active,.btn-success.active,.btn-info:active,.btn-info.active,.btn-warning:active,.btn-warning.active,.btn-danger:active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);background-image:-o-linear-gradient(top, #fff 0%, #e0e0e0 100%);background-image:linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFE0E0E0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top, #3b678a 0%, #29475f 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #29475f 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #29475f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF29475F', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#264258}.btn-primary:hover,.btn-primary:focus{background-color:#29475f;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#29475f;border-color:#264258}.btn-primary:disabled,.btn-primary[disabled]{background-color:#29475f;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);background-image:-o-linear-gradient(top, #5cb85c 0%, #419641 100%);background-image:linear-gradient(to bottom, #5cb85c 0%, #419641 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5CB85C', endColorstr='#FF419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);background-image:-o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);background-image:linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5BC0DE', endColorstr='#FF2AABD2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:-o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF0AD4E', endColorstr='#FFEB9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);background-image:-o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);background-image:linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9534F', endColorstr='#FFC12E2A', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail,.o_form .o_filepreview img,.o_feed .o_media{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF5F5F5', endColorstr='#FFE8E8E8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #335a78 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF335A78', GradientType=0);background-color:#335a78}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF8F8F8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);background-image:-o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);background-image:linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDBDBDB', endColorstr='#FFE2E2E2', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);background-image:-o-linear-gradient(top, #3c3c3c 0%, #222 100%);background-image:linear-gradient(to bottom, #3c3c3c 0%, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3C3C3C', endColorstr='#FF222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #090909 0%, #0f0f0f 100%);background-image:-o-linear-gradient(top, #090909 0%, #0f0f0f 100%);background-image:linear-gradient(to bottom, #090909 0%, #0f0f0f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF090909', endColorstr='#FF0F0F0F', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width: 767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #335a78 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF335A78', GradientType=0)}}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);background-image:-o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);background-image:linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDFF0D8', endColorstr='#FFC8E5BC', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);background-image:-o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);background-image:linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9EDF7', endColorstr='#FFB9DEF0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);background-image:-o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);background-image:linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFCF8E3', endColorstr='#FFF8EFC0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);background-image:-o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);background-image:linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF2DEDE', endColorstr='#FFE7C3C3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);background-image:linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEBEBEB', endColorstr='#FFF5F5F5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #3b678a 0%, #2c4c66 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #2c4c66 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #2c4c66 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF2C4C66', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);background-image:-o-linear-gradient(top, #5cb85c 0%, #449d44 100%);background-image:linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5CB85C', endColorstr='#FF449D44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);background-image:-o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);background-image:linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5BC0DE', endColorstr='#FF31B0D5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);background-image:-o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);background-image:linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF0AD4E', endColorstr='#FFEC971F', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);background-image:-o-linear-gradient(top, #d9534f 0%, #c9302c 100%);background-image:linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9534F', endColorstr='#FFC9302C', GradientType=0)}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #2c4c66;background-image:-webkit-linear-gradient(top, #3b678a 0%, #30536f 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #30536f 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #30536f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF30536F', GradientType=0);border-color:#30536f}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF5F5F5', endColorstr='#FFE8E8E8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #335a78 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF335A78', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);background-image:-o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);background-image:linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDFF0D8', endColorstr='#FFD0E9C6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);background-image:-o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);background-image:linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9EDF7', endColorstr='#FFC4E3F3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);background-image:-o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);background-image:linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFCF8E3', endColorstr='#FFFAF2CC', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);background-image:-o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);background-image:linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF2DEDE', endColorstr='#FFEBCCCC', GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);background-image:linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFE8E8E8', endColorstr='#FFF5F5F5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}.o_button_dirty{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);background-image:-webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:-o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF0AD4E', endColorstr='#FFEB9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.o_button_dirty:active,.o_button_dirty.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.o_button_dirty:hover,.o_button_dirty:focus{background-color:#eb9316;background-position:0 -15px}.o_button_dirty:active,.o_button_dirty.active{background-color:#eb9316;border-color:#e38d13}.o_button_dirty:disabled,.o_button_dirty[disabled]{background-color:#eb9316;background-image:none}.o_login .o_login_social .btn-default{text-shadow:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook{background-image:-webkit-linear-gradient(top, #4568b2 0%, #344e86 100%);background-image:-o-linear-gradient(top, #4568b2 0%, #344e86 100%);background-image:linear-gradient(to bottom, #4568b2 0%, #344e86 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF4568B2', endColorstr='#FF344E86', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#314a7f}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus{background-color:#344e86;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#344e86;border-color:#314a7f}.o_login .o_login_social .btn-default.o_sel_auth_facebook:disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]{background-color:#344e86;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter{background-image:-webkit-linear-gradient(top, #2cc5ff 0%, #00acee 100%);background-image:-o-linear-gradient(top, #2cc5ff 0%, #00acee 100%);background-image:linear-gradient(to bottom, #2cc5ff 0%, #00acee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF2CC5FF', endColorstr='#FF00ACEE', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#00a5e4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus{background-color:#00acee;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#00acee;border-color:#00a5e4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]{background-color:#00acee;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google{background-image:-webkit-linear-gradient(top, #e15f4f 0%, #cf3623 100%);background-image:-o-linear-gradient(top, #e15f4f 0%, #cf3623 100%);background-image:linear-gradient(to bottom, #e15f4f 0%, #cf3623 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFE15F4F', endColorstr='#FFCF3623', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#c73422}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus{background-color:#cf3623;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#cf3623;border-color:#c73422}.o_login .o_login_social .btn-default.o_sel_auth_google:disabled,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]{background-color:#cf3623;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{background-image:-webkit-linear-gradient(top, #0181bd 0%, #015780 100%);background-image:-o-linear-gradient(top, #0181bd 0%, #015780 100%);background-image:linear-gradient(to bottom, #0181bd 0%, #015780 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF0181BD', endColorstr='#FF015780', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#015176}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus{background-color:#015780;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#015780;border-color:#015176}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]{background-color:#015780;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs{background-image:-webkit-linear-gradient(top, #1a1a1a 0%, #000 100%);background-image:-o-linear-gradient(top, #1a1a1a 0%, #000 100%);background-image:linear-gradient(to bottom, #1a1a1a 0%, #000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF1A1A1A', endColorstr='#FF000000', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#000}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus{background-color:#000;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#000;border-color:#000}.o_login .o_login_social .btn-default.o_sel_auth_adfs:disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]{background-color:#000;background-image:none}.btn-default.btn-success,.btn-default.btn-info,.btn-default.btn-warning,.btn-default.btn-danger,.btn-default.btn-primary,.btn-default.o_button_dirty{text-shadow:none}.o_navbar.o_navbar-default{background-image:-webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF8F8F8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.o_navbar.o_navbar-default .o_navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);background-image:-o-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);background-image:linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEBEBEB', endColorstr='#FFF3F3F3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.o_navbar.o_navbar-default .o_navbar-nav>.active>a.o_navbar_tab_close{background:none;-webkit-box-shadow:none;box-shadow:none}.o_navbar-brand,.o_navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.o_navbar-offcanvas .dropdown-menu>li>a:hover,.o_navbar-offcanvas .dropdown-menu>li>a:focus{background-image:none}.o_toolbar{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05)}.o_toolbar .o_breadcrumb .breadcrumb{background-image:-webkit-linear-gradient(top, #fff 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #fff 0%, #f5f5f5 100%);background-image:linear-gradient(to bottom, #fff 0%, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF5F5F5', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.o_toolbar .o_tools_container{background-image:-webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF8F8F8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{background-image:-webkit-linear-gradient(top, #fff 0%, #e2e2e2 100%);background-image:-o-linear-gradient(top, #fff 0%, #e2e2e2 100%);background-image:linear-gradient(to bottom, #fff 0%, #e2e2e2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFE2E2E2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.o_toolbar .o_tool_next :hover,.o_toolbar .o_tool_previous :hover{background-color:#e2e2e2}.o_tree{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05)}.o_navbar-brand{padding:15px 15px;font-size:28px;color:#3b678a !important}.o_navbar-brand:after{content:"\E600";font-family:openolat} /*# sourceMappingURL=theme.css.map */ diff --git a/src/main/webapp/static/themes/openolat/theme.css.map b/src/main/webapp/static/themes/openolat/theme.css.map index f296771a24351643753160c86c7d63f2faf8c1ab..0eec2c787458c8dbde7ad4434f581a0a2ab3788b 100644 --- a/src/main/webapp/static/themes/openolat/theme.css.map +++ b/src/main/webapp/static/themes/openolat/theme.css.map @@ -1,7 +1,7 @@ { "version": 3, -"mappings": "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", -"sources": ["../light/_license.scss","../../bootstrap/stylesheets/bootstrap/_normalize.scss","../../bootstrap/stylesheets/bootstrap/_print.scss","../../bootstrap/stylesheets/bootstrap/_scaffolding.scss","../../bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss","../light/_config.scss","../../bootstrap/stylesheets/bootstrap/_variables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss","../../bootstrap/stylesheets/bootstrap/mixins/_image.scss","../../bootstrap/stylesheets/bootstrap/_type.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss","../../bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss","../../bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss","../../bootstrap/stylesheets/bootstrap/_code.scss","../../bootstrap/stylesheets/bootstrap/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid-framework.scss","../../bootstrap/stylesheets/bootstrap/_tables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_table-row.scss","../../bootstrap/stylesheets/bootstrap/_forms.scss","../../bootstrap/stylesheets/bootstrap/mixins/_forms.scss","../../bootstrap/stylesheets/bootstrap/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_opacity.scss","../../bootstrap/stylesheets/bootstrap/_component-animations.scss","../../bootstrap/stylesheets/bootstrap/_dropdowns.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-divider.scss","../../bootstrap/stylesheets/bootstrap/mixins/_reset-filter.scss","../../bootstrap/stylesheets/bootstrap/_button-groups.scss","../../bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss","../../bootstrap/stylesheets/bootstrap/_input-groups.scss","../../bootstrap/stylesheets/bootstrap/_navs.scss","../../bootstrap/stylesheets/bootstrap/_navbar.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-vertical-align.scss","../../bootstrap/stylesheets/bootstrap/_breadcrumbs.scss","../../bootstrap/stylesheets/bootstrap/_pagination.scss","../../bootstrap/stylesheets/bootstrap/mixins/_pagination.scss","../../bootstrap/stylesheets/bootstrap/_pager.scss","../../bootstrap/stylesheets/bootstrap/_labels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_labels.scss","../../bootstrap/stylesheets/bootstrap/_badges.scss","../../bootstrap/stylesheets/bootstrap/_jumbotron.scss","../../bootstrap/stylesheets/bootstrap/_thumbnails.scss","../../bootstrap/stylesheets/bootstrap/_alerts.scss","../../bootstrap/stylesheets/bootstrap/mixins/_alerts.scss","../../bootstrap/stylesheets/bootstrap/_progress-bars.scss","../../bootstrap/stylesheets/bootstrap/mixins/_gradients.scss","../../bootstrap/stylesheets/bootstrap/mixins/_progress-bar.scss","../../bootstrap/stylesheets/bootstrap/_media.scss","../../bootstrap/stylesheets/bootstrap/_list-group.scss","../../bootstrap/stylesheets/bootstrap/mixins/_list-group.scss","../../bootstrap/stylesheets/bootstrap/_panels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_panels.scss","../../bootstrap/stylesheets/bootstrap/_responsive-embed.scss","../../bootstrap/stylesheets/bootstrap/_wells.scss","../../bootstrap/stylesheets/bootstrap/_close.scss","../../bootstrap/stylesheets/bootstrap/_modals.scss","../../bootstrap/stylesheets/bootstrap/_tooltip.scss","../../bootstrap/stylesheets/bootstrap/_popovers.scss","../../bootstrap/stylesheets/bootstrap/_utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_center-block.scss","../../bootstrap/stylesheets/bootstrap/mixins/_hide-text.scss","../../bootstrap/stylesheets/bootstrap/_responsive-utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_responsive-visibility.scss","../light/modules/_bootstrap.scss","../light/modules/_fonts.scss","../../font-awesome/scss/_path.scss","../../font-awesome/scss/_core.scss","../../font-awesome/scss/_larger.scss","../../font-awesome/scss/_fixed-width.scss","../../font-awesome/scss/_list.scss","../../font-awesome/scss/_variables.scss","../../font-awesome/scss/_bordered-pulled.scss","../../font-awesome/scss/_animated.scss","../../font-awesome/scss/_rotated-flipped.scss","../../font-awesome/scss/_mixins.scss","../../font-awesome/scss/_stacked.scss","../light/modules/_icons.scss","../light/modules/_emoticons.scss","../light/modules/_helpers.scss","../light/modules/_type.scss","../light/modules/_content_embedded.scss","../light/modules/_mixins.scss","../light/modules/_layout.scss","../light/modules/_main.scss","../light/modules/_footer.scss","../light/modules/_navbar.scss","../light/modules/_toolbar.scss","../light/modules/_offcanvas.scss","../light/modules/_dialog.scss","../light/modules/_tree.scss","../light/modules/_breadcrumb.scss","../light/modules/_form.scss","../light/modules/_table.scss","../light/modules/_im.scss","../light/modules/_flags.scss","../light/modules/_rating_and_comments.scss","../light/modules/_chart.scss","../light/modules/_forum.scss","../light/modules/_various_modules.scss","../light/modules/_autocomplete.scss","../light/modules/_search.scss","../light/modules/_wizard.scss","../light/modules/_process.scss","../light/modules/_cal.scss","../light/modules/_coursesite.scss","../light/modules/_repository.scss","../light/modules/_course.scss","../light/modules/_qti.scss","../light/modules/_qti21.scss","../light/modules/_devel.scss","../light/modules/_wiki.scss","../light/modules/_portfolio.scss","../light/modules/_portfoliomaps/_epmst_default.scss","../light/modules/_portfoliomaps/_mixins.scss","../light/modules/_portfoliomaps/_epmst_comic.scss","../light/modules/_portfoliomaps/_epmst_leather.scss","../light/modules/_portfoliomaps/_epmst_green.scss","../light/modules/_portfoliomaps/_epmst_green2.scss","../light/modules/_portfoliomaps/_epmst_green3.scss","../light/modules/_portfoliomaps/_epmst_green4.scss","../light/modules/_portfoliomaps/_epmst_red.scss","../light/modules/_portfoliomaps/_epmst_red2.scss","../light/modules/_portfoliomaps/_epmst_red3.scss","../light/modules/_portfoliomaps/_epmst_red4.scss","../light/modules/_portfoliomaps/_epmst_blue.scss","../light/modules/_portfoliomaps/_epmst_blue2.scss","../light/modules/_portfoliomaps/_epmst_blue3.scss","../light/modules/_portfoliomaps/_epmst_blue4.scss","../light/modules/_portfolio_v2.scss","../light/modules/_evaluation_form.scss","../light/modules/_citation.scss","../light/modules/_video.scss","../light/modules/_admin.scss","../light/modules/_dmz.scss","../light/modules/_portal.scss","../light/modules/_library.scss","../light/modules/_translationtool.scss","../light/modules/_user.scss","../light/modules/_members.scss","../light/modules/_thirdparty.scss","../light/modules/_print.scss","../light/modules/_highscore.scss","../light/_patches.scss","../../bootstrap/stylesheets/bootstrap/_theme.scss","../light/styles/_realistic.scss","_openolat_theme.scss"], +"mappings": "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", +"sources": ["../../bootstrap/stylesheets/bootstrap/_normalize.scss","../../bootstrap/stylesheets/bootstrap/_print.scss","../../bootstrap/stylesheets/bootstrap/_scaffolding.scss","../../bootstrap/stylesheets/bootstrap/mixins/_vendor-prefixes.scss","../light/_config.scss","../../bootstrap/stylesheets/bootstrap/_variables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_tab-focus.scss","../../bootstrap/stylesheets/bootstrap/mixins/_image.scss","../../bootstrap/stylesheets/bootstrap/_type.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-emphasis.scss","../../bootstrap/stylesheets/bootstrap/mixins/_background-variant.scss","../../bootstrap/stylesheets/bootstrap/mixins/_clearfix.scss","../../bootstrap/stylesheets/bootstrap/mixins/_text-overflow.scss","../../bootstrap/stylesheets/bootstrap/_code.scss","../../bootstrap/stylesheets/bootstrap/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid.scss","../../bootstrap/stylesheets/bootstrap/mixins/_grid-framework.scss","../../bootstrap/stylesheets/bootstrap/_tables.scss","../../bootstrap/stylesheets/bootstrap/mixins/_table-row.scss","../../bootstrap/stylesheets/bootstrap/_forms.scss","../../bootstrap/stylesheets/bootstrap/mixins/_forms.scss","../../bootstrap/stylesheets/bootstrap/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_buttons.scss","../../bootstrap/stylesheets/bootstrap/mixins/_opacity.scss","../../bootstrap/stylesheets/bootstrap/_component-animations.scss","../../bootstrap/stylesheets/bootstrap/_dropdowns.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-divider.scss","../../bootstrap/stylesheets/bootstrap/mixins/_reset-filter.scss","../../bootstrap/stylesheets/bootstrap/_button-groups.scss","../../bootstrap/stylesheets/bootstrap/mixins/_border-radius.scss","../../bootstrap/stylesheets/bootstrap/_input-groups.scss","../../bootstrap/stylesheets/bootstrap/_navs.scss","../../bootstrap/stylesheets/bootstrap/_navbar.scss","../../bootstrap/stylesheets/bootstrap/mixins/_nav-vertical-align.scss","../../bootstrap/stylesheets/bootstrap/_breadcrumbs.scss","../../bootstrap/stylesheets/bootstrap/_pagination.scss","../../bootstrap/stylesheets/bootstrap/mixins/_pagination.scss","../../bootstrap/stylesheets/bootstrap/_pager.scss","../../bootstrap/stylesheets/bootstrap/_labels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_labels.scss","../../bootstrap/stylesheets/bootstrap/_badges.scss","../../bootstrap/stylesheets/bootstrap/_jumbotron.scss","../../bootstrap/stylesheets/bootstrap/_thumbnails.scss","../../bootstrap/stylesheets/bootstrap/_alerts.scss","../../bootstrap/stylesheets/bootstrap/mixins/_alerts.scss","../../bootstrap/stylesheets/bootstrap/_progress-bars.scss","../../bootstrap/stylesheets/bootstrap/mixins/_gradients.scss","../../bootstrap/stylesheets/bootstrap/mixins/_progress-bar.scss","../../bootstrap/stylesheets/bootstrap/_media.scss","../../bootstrap/stylesheets/bootstrap/_list-group.scss","../../bootstrap/stylesheets/bootstrap/mixins/_list-group.scss","../../bootstrap/stylesheets/bootstrap/_panels.scss","../../bootstrap/stylesheets/bootstrap/mixins/_panels.scss","../../bootstrap/stylesheets/bootstrap/_responsive-embed.scss","../../bootstrap/stylesheets/bootstrap/_wells.scss","../../bootstrap/stylesheets/bootstrap/_close.scss","../../bootstrap/stylesheets/bootstrap/_modals.scss","../../bootstrap/stylesheets/bootstrap/_tooltip.scss","../../bootstrap/stylesheets/bootstrap/_popovers.scss","../../bootstrap/stylesheets/bootstrap/_utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_center-block.scss","../../bootstrap/stylesheets/bootstrap/mixins/_hide-text.scss","../../bootstrap/stylesheets/bootstrap/_responsive-utilities.scss","../../bootstrap/stylesheets/bootstrap/mixins/_responsive-visibility.scss","../light/modules/_bootstrap.scss","../light/modules/_fonts.scss","../../font-awesome/scss/_path.scss","../../font-awesome/scss/_core.scss","../../font-awesome/scss/_larger.scss","../../font-awesome/scss/_fixed-width.scss","../../font-awesome/scss/_list.scss","../../font-awesome/scss/_variables.scss","../../font-awesome/scss/_bordered-pulled.scss","../../font-awesome/scss/_animated.scss","../../font-awesome/scss/_rotated-flipped.scss","../../font-awesome/scss/_mixins.scss","../../font-awesome/scss/_stacked.scss","../light/modules/_icons.scss","../light/modules/_emoticons.scss","../light/modules/_helpers.scss","../light/modules/_type.scss","../light/modules/_content_embedded.scss","../light/modules/_mixins.scss","../light/modules/_radial-progress.scss","../light/modules/_layout.scss","../light/modules/_main.scss","../light/modules/_footer.scss","../light/modules/_navbar.scss","../light/modules/_toolbar.scss","../light/modules/_offcanvas.scss","../light/modules/_dialog.scss","../light/modules/_tree.scss","../light/modules/_breadcrumb.scss","../light/modules/_form.scss","../light/modules/_table.scss","../light/modules/_im.scss","../light/modules/_flags.scss","../light/modules/_rating_and_comments.scss","../light/modules/_chart.scss","../light/modules/_forum.scss","../light/modules/_various_modules.scss","../light/modules/_autocomplete.scss","../light/modules/_search.scss","../light/modules/_wizard.scss","../light/modules/_process.scss","../light/modules/_cal.scss","../light/modules/_coursesite.scss","../light/modules/_repository.scss","../light/modules/_course.scss","../light/modules/_qti.scss","../light/modules/_qti21.scss","../light/modules/_devel.scss","../light/modules/_wiki.scss","../light/modules/_portfolio.scss","../light/modules/_portfoliomaps/_epmst_default.scss","../light/modules/_portfoliomaps/_mixins.scss","../light/modules/_portfoliomaps/_epmst_comic.scss","../light/modules/_portfoliomaps/_epmst_leather.scss","../light/modules/_portfoliomaps/_epmst_green.scss","../light/modules/_portfoliomaps/_epmst_green2.scss","../light/modules/_portfoliomaps/_epmst_green3.scss","../light/modules/_portfoliomaps/_epmst_green4.scss","../light/modules/_portfoliomaps/_epmst_red.scss","../light/modules/_portfoliomaps/_epmst_red2.scss","../light/modules/_portfoliomaps/_epmst_red3.scss","../light/modules/_portfoliomaps/_epmst_red4.scss","../light/modules/_portfoliomaps/_epmst_blue.scss","../light/modules/_portfoliomaps/_epmst_blue2.scss","../light/modules/_portfoliomaps/_epmst_blue3.scss","../light/modules/_portfoliomaps/_epmst_blue4.scss","../light/modules/_portfolio_v2.scss","../light/modules/_evaluation_form.scss","../light/modules/_citation.scss","../light/modules/_video.scss","../light/modules/_admin.scss","../light/modules/_dmz.scss","../light/modules/_portal.scss","../light/modules/_library.scss","../light/modules/_translationtool.scss","../light/modules/_user.scss","../light/modules/_members.scss","../light/modules/_card2brain.scss","../light/modules/_thirdparty.scss","../light/modules/_print.scss","../light/modules/_highscore.scss","../light/_patches.scss","../../bootstrap/stylesheets/bootstrap/_theme.scss","../light/styles/_realistic.scss","_openolat_theme.scss"], "names": [], "file": "theme.css" } \ No newline at end of file diff --git a/src/main/webapp/static/themes/openolat/theme_ie_completions.css b/src/main/webapp/static/themes/openolat/theme_ie_completions.css index 276240f7c9c2e604e4d66cf9d650256a25bbb801..0861368f486ea265e48dfd216d37700f69794122 100644 --- a/src/main/webapp/static/themes/openolat/theme_ie_completions.css +++ b/src/main/webapp/static/themes/openolat/theme_ie_completions.css @@ -1 +1 @@ -.o_button_dirty.disabled,.o_button_dirty.disabled:hover,.o_button_dirty.disabled:focus,.o_button_dirty.disabled.focus,.o_button_dirty.disabled:active,.o_button_dirty.disabled.active,.o_button_dirty[disabled],.o_button_dirty[disabled]:hover,.o_button_dirty[disabled]:focus,.o_button_dirty[disabled].focus,.o_button_dirty[disabled]:active,.o_button_dirty[disabled].active,fieldset[disabled] .o_button_dirty,fieldset[disabled] .o_button_dirty:hover,fieldset[disabled] .o_button_dirty:focus,fieldset[disabled] .o_button_dirty.focus,fieldset[disabled] .o_button_dirty:active,fieldset[disabled] .o_button_dirty.active{background-color:#f0ad4e;border-color:#eea236}.o_button_dirty .badge{color:#f0ad4e;background-color:#fff}.o_button_toggle{border:1px solid #777;border-top-right-radius:9px;border-top-left-radius:9px;border-bottom-right-radius:9px;border-bottom-left-radius:9px;background:#eee;display:inline-block;height:18px;line-height:16px;font-size:16px;text-align:left;padding:0 0.5em 0 0;margin:0}.o_button_toggle i{color:#777;text-shadow:1px 0 2px rgba(0,0,0,0.25)}.o_button_toggle span{line-height:16px;vertical-align:top;font-size:60%;color:#777;text-transform:uppercase}.o_button_toggle.o_on{text-align:right;padding:0 0 0 0.5em}.o_button_toggle.o_on i{color:#3b678a;text-shadow:-1px 0 2px rgba(0,0,0,0.25)}.o_table_wrapper{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_table_wrapper.o_table_flexi .o_table_body{margin-top:20px}.o_table_wrapper.o_table_flexi .table{margin-top:20px}.o_table_wrapper.o_table_flexi .table td ul{margin:0}.o_table_wrapper.o_table_flexi.o_table_no_margin .table{margin:0}.o_table_wrapper.o_table_edit table tbody{border-top:solid #f90 4px;background-color:#fefbf6}.o_table_wrapper .o_table_search{max-width:50em}.o_table_wrapper .o_table_footer .o_table_pagination{text-align:center}.o_table_wrapper .o_table_rows_infos{float:left;padding-left:0;padding-right:20px;margin:20px 0}.o_table_wrapper .o_row_selected td{background-color:#dff0d8 !important}.o_table_wrapper .o_table{margin-bottom:0}.o_table_wrapper .o_marked{font-weight:bold}.o_table_wrapper .table{margin-bottom:0}.o_table_wrapper th a,.o_table_wrapper th a:hover{color:#333;text-decoration:none}.o_table_search a.btn.o_reset_quick_search{width:38px;margin-left:-38px;z-index:5;color:grey}@media (max-width: 767px){.o_table_wrapper .o_table_rows_infos{clear:both}}a.o_orderby,a.o_orderby:hover{color:#333;text-decoration:none}a.o_orderby.o_orderby_asc,a.o_orderby.o_orderby_desc,a.o_orderby:hover.o_orderby_asc,a.o_orderby:hover.o_orderby_desc{border-bottom:1px solid #ddd}.o_table_row_count{padding-top:6px;padding-bottom:6px;vertical-align:middle}.o_table_row_details td{background-color:white !important}.o_table_config{font-size:12px}.o_table_buttons{text-align:center}.o_table_buttons input{margin-right:1em}.o_table_buttons input:last-child{margin-right:0}.o_table_tools{margin-left:6px}.o_table_tools_indications{margin-left:10px;padding-top:3px;font-size:80%}.o_table_tools_indications a{color:#d9534f}.o_table_toolbar_left .o_table_tools_indications{text-align:right}.o_table_count{max-width:20em;float:left;padding:0 15px}.o_info .table-bordered td,o_note .table-bordered td,o_important .table-bordered td,o_warning .table-bordered td,o_error .table-bordered td{border-color:#333}.panel .o_table_layout{border-top:1px solid #ddd;padding-top:6px}.panel .o_table_count{padding:0 15px}#o_navbar_imclient .o_im_messages{float:left}#o_navbar_imclient #o_im_message,#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_summary{float:left;position:relative;padding:15px 3px}#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_message{padding-left:15px}#o_navbar_imclient #o_im_summary .badge{color:#fff;background-color:#777}#o_navbar_imclient #o_im_status li>a>span{display:inline}#o_navbar_imclient #o_im_status div.o_chelp_wrapper{right:0.5em}#o_navbar_imclient #o_im_message a:hover,#o_navbar_imclient #o_im_message a:focus{text-decoration:none}#o_navbar_imclient #o_im_message .o_icon_message{color:#d9534f}#o_navbar_imclient #o_im_message .o_icon_message:hover{color:#f4c37d}.o_im_load_history{margin-bottom:6px}.o_im_load_history .o_label{font-size:12px;padding-right:0.5em;line-height:1.5em;color:#777}.o_im_chat_history{height:170px;font-size:90%;border:1px solid #eee;margin:0 0 1em 0;overflow:scroll;overflow-x:auto}.o_im_message_group{padding:3px 3px 3px 40px;min-height:40px;position:relative;border-top:1px solid #eee;background:#fff}.o_im_message_group.o_odd{background:#F4F4F4}.o_im_message_group .o_portrait{position:absolute;top:3px;left:3px}.o_im_message_group .o_im_from{color:#777;font-size:12px;font-weight:bold}.o_im_message_group .o_im_from:hover{color:#5e5e5e}.o_im_message_group div.o_im_body{padding:3px 0 3px 0;font-size:12px}.o_im_message_group div.o_im_body .o_date{float:right;color:#777;font-size:9px}.o_groupchat_roster{font-size:12px}.o_groupchat_roster li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.o_groupchat_roster li.o_vip{color:#3c763d}.o_groupchat_roster li.o_anonymous{color:#31708f}.o_im_buddieslist .o_im_buddieslist_toggler .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_im_buddieslist ul{font-size:12px}.o_im_buddieslist ul ul{padding-left:1em}.o_im_buddieslist ul a{color:#3b678a}.o_im_buddieslist ul a:hover{color:#243f54}.o_flag{position:relative;top:1px;display:inline-block;line-height:1;width:16px;height:16px;background-repeat:no-repeat;background-position:0 100%}option.o_with_flag{padding-left:23px;min-height:16px;background-repeat:no-repeat;background-position:2px 50%}.o_flag_en{background-image:url("../light/images/flags/gb.png")}.o_flag_de{background-image:url("../light/images/flags/de.png")}.o_flag_fr{background-image:url("../light/images/flags/fr.png")}.o_flag_it{background-image:url("../light/images/flags/it.png")}.o_flag_es{background-image:url("../light/images/flags/es.png")}.o_flag_da{background-image:url("../light/images/flags/dk.png")}.o_flag_cs{background-image:url("../light/images/flags/cz.png")}.o_flag_el{background-image:url("../light/images/flags/gr.png")}.o_flag_ee{background-image:url("../light/images/flags/ee.png")}.o_flag_ru{background-image:url("../light/images/flags/ru.png")}.o_flag_pl{background-image:url("../light/images/flags/pl.png")}.o_flag_zh_CN{background-image:url("../light/images/flags/cn.png")}.o_flag_zh_TW{background-image:url("../light/images/flags/tw.png")}.o_flag_lt{background-image:url("../light/images/flags/lt.png")}.o_flag_fa{background-image:url("../light/images/flags/ir.png")}.o_flag_pt_PT{background-image:url("../light/images/flags/pt.png")}.o_flag_pt_BR{background-image:url("../light/images/flags/br.png")}.o_flag_tr{background-image:url("../light/images/flags/tr.png")}.o_flag_hu{background-image:url("../light/images/flags/hu.png")}.o_flag_sq{background-image:url("../light/images/flags/al.png")}.o_flag_in{background-image:url("../light/images/flags/id.png")}.o_flag_ar{background-image:url("../light/images/flags/eg.png")}.o_flag_rm{background-image:url("../light/images/flags/rm.png")}.o_flag_af{background-image:url("../light/images/flags/za.png")}.o_flag_vi{background-image:url("../light/images/flags/vn.png")}.o_flag_mn{background-image:url("../light/images/flags/mn.png")}.o_flag_iw{background-image:url("../light/images/flags/il.png")}.o_flag_ko{background-image:url("../light/images/flags/kr.png")}.o_flag_nl_NL{background-image:url("../light/images/flags/nl.png")}.o_flag_jp{background-image:url("../light/images/flags/jp.png")}.o_flag_nb_NO{background-image:url("../light/images/flags/no.png")}.o_flag_et_EE{background-image:url("../light/images/flags/ee.png")}.o_flag_bg{background-image:url("../light/images/flags/bg.png")}.o_flag_hi_IN_ASIA{background-image:url("../light/images/flags/in.png")}.o_flag_ar_LB{background-image:url("../light/images/flags/lb.png")}.o_flag_gl_ES{background-image:url("../light/images/flags/galicia.png")}.o_flag_sk{background-image:url("../light/images/flags/sk.png")}.o_rating .o_rating_title{font-size:12px}.o_rating .o_rating_items{white-space:nowrap}.o_rating .o_rating_items .o_icon{color:#f0ad4e}.o_rating .o_rating_items .o_icon:hover{color:#3b678a}.o_rating .o_rating_items .o_legend{margin-left:1em;font-size:12px;line-height:normal}.o_rating .o_rating_explanation{font-size:12px;color:#777}@media (max-width: 991px){.o_rating .o_rating_title,.o_rating .o_rating_explanation{display:none}}.o_comments .o_comment_wrapper .o_avatar{float:left;margin:0 1em 0 0}.o_comments .o_comment_wrapper .o_reply,.o_comments .o_comment_wrapper .o_delete{float:right}.o_comments .o_comment_wrapper .o_comment_wrapper{margin-left:16px}.o_ratings_and_comments .o_rating_wrapper{vertical-align:middle;display:inline-block}.o_ratings_and_comments a.o_comments{margin-left:10px;position:relative;top:0.1em}.d3chart .bar{shape-rendering:crispEdges}.d3chart .bar_default_light{fill:#598eb8}.d3chart .bar_default,.d3chart .bubble_default{fill:#3b678a}.d3chart .bar_default_dark{fill:#243f54}.d3chart .axis{font:12px sans-serif}.d3chart .axis path,.d3chart .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_forum_peekview .o_quote_wrapper,.o_forum_peekview .b_quote_wrapper{display:none}.o_forum_thread_sticky{font-weight:bold}.o_forum_switch{font-size:12px}.o_forum_toolbar{margin-bottom:6px;float:left}.o_forum_fulltextsearch{float:right}@media (max-width: 767px){.o_forum_fulltextsearch{float:left}.o_forum_toolbar .o_forum_tool span{display:none}}.o_forum{padding-bottom:50px}.o_forum .o_mark,.o_forum .o_ep_collect{float:right;position:relative;width:2em;margin-left:12px}.o_forum .o_portrait{float:left;margin-right:16px}.o_forum .o_portrait_avatar{width:70px;height:70px}.o_forum .o_newindicator{font-size:10px;color:#5cb85c;text-transform:uppercase;padding-left:1em;vertical-align:text-top;white-space:nowrap}.o_forum .o_author,.o_forum .o_date{display:inline-block;color:#777}.o_forum .o_date{font-size:12px}.o_forum .o_modified{color:#8a6d3b;font-size:12px;font-style:italic}.o_forum .o_forum_message{margin-bottom:20px;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_forum .o_forum_message_new{-webkit-box-shadow:0 1px 10px rgba(92,184,92,0.3);box-shadow:0 1px 10px rgba(92,184,92,0.3)}.o_forum .o_forum_message_highlight{-webkit-box-shadow:0 1px 10px rgba(240,173,78,0.5);box-shadow:0 1px 10px rgba(240,173,78,0.5)}.o_forum .o_forum_message_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:3px;border-top-left-radius:3px}.o_forum .o_forum_message_title{margin-top:0}.o_forum .o_forum_message_body{padding:10px 15px}.o_forum .o_forum_message_attachments{border-top:1px solid #ddd;padding:10px 15px;font-size:12px;background-color:#f7f7f9}.o_forum .o_attachment{position:relative;max-width:250px;vertical-align:top;margin:6px 12px 10px 0}.o_forum .o_attachment img{margin-top:6px}.o_forum .o_filename{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_forum .o_icon_enlarge{position:absolute;left:1em;bottom:1em;text-shadow:1px 1px 2px #fff, -1px 1px 2px #fff, 1px -1px 2px #fff, -1px -1px 2px #fff}@media (min-width: 768px) and (max-width: 991px){.o_forum .o_attachments{font-size:10px}.o_forum .o_attachment{max-width:200px}.o_forum .o_attachment img{max-width:150px}.o_forum .o_filename{max-width:200px}}@media (max-width: 767px){.o_forum .o_attachments{font-size:9px}.o_forum .o_attachment{max-width:150px}.o_forum .o_attachment img{max-width:100px}.o_forum .o_filename{max-width:150px}}.o_quote_wrapper,.b_quote_wrapper{position:relative;margin:10px 0}.o_quote_author,.b_quote_author{color:#777;font-size:12px}.o_quote_author:before,.b_quote_author:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";font-size:21px;padding-right:0.5em}blockquote.o_quote,blockquote.b_quote{color:#555;font-size:12px;margin-top:6px;padding:0 12px}a.o_chelp{display:inline-block;padding:1px 3px;text-align:center;vertical-align:middle;white-space:nowrap;font-size:10px;font-weight:normal;line-height:15px;color:#fff;background-color:#3b678a;border:1px solid #335a78;border-radius:2px;cursor:help;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}a.o_chelp:active,a.o_chelp:hover,a.o_chelp:focus{text-decoration:none;color:#fff;background-color:#2f526d;border-color:#213a4d}a.o_chelp i{font-size:10px !important}.o_chelp_wrapper{position:relative;float:right;display:inline-block;line-height:normal;margin-bottom:10px;margin-left:10px}.o_form_chelp,.o_chelp_tooltip{color:#737373}.o_draw_circle{border:4px solid #3b678a;border-radius:50%;position:absolute !important}.o_draw_rectangle{border:4px solid #3b678a;position:absolute !important}.o_iframedisplay iframe{width:100%}.o_singlepage .o_edit{position:absolute;top:10px;right:37px}.o_content_popup{position:absolute;top:10px;right:12px}.o_module_cp_wrapper .o_tools{position:absolute;top:10px;right:12px;text-align:right;vertical-align:middle}.o_module_cp_wrapper .o_tools .o_search_wrapper{display:inline-block;position:relative;top:-2px}ul.o_dropdown{margin:-5px -14px}ul.o_dropdown .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}ul.o_dropdown>li>a{display:block;padding:5px 14px;clear:both;font-weight:normal;line-height:1.42857;color:#333;background:#fff;white-space:nowrap}ul.o_dropdown>li>a:hover,ul.o_dropdown>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.badge.o_scorm_completed{background-color:#3c763d}.badge.o_scorm_failed{background-color:#a94442}.badge.o_scorm_incomplete{background-color:#8a6d3b}.badge.o_scorm_not_attempted{background:none}.o_bc_meta h5,.o_bc_meta .o_author,.o_bc_meta .o_comment,.tooltip h5,.tooltip .o_author,.tooltip .o_comment{color:#fff;margin:5px 0}.o_bc_meta .o_thumbnail,.tooltip .o_thumbnail{width:200px;height:200px;display:inline-block;background-color:#fff;margin:0 -5px}.o_htmleditor .o_metadata{border:1px solid #999;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:0;background:#eee;position:relative;top:1px;padding:5px}.o_htmleditor .o_metadata #o_filename{float:left}.o_htmleditor .o_metadata .o_lastmodified{float:right;color:#777;line-height:1.42857}.o_htmleditor #o_save{margin-top:10px;text-align:center}.o_htmleditor #o_save input{margin-right:1em}.o_htmleditor #o_save input:last-child{margin-right:0}.o_notifications_news_wrapper .o_notifications_news_subscription{margin:10px 0}.o_notifications_news_wrapper .o_notifications_news_subscription h4 i,.o_notifications_news_wrapper .o_notifications_news_subscription .o_cal .fc-header-title h2 i,.o_cal .fc-header-title .o_notifications_news_wrapper .o_notifications_news_subscription h2 i{display:none}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_context{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content{margin-left:1.5em;position:relative}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_icon{position:absolute;left:-1.5em;line-height:1.5em;top:0}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_date{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_url{margin-left:1.5em}.o_noti{margin:6px 0 6px 12px;float:right;color:#777}.o_noti .o_label{color:#777;cursor:help}@media (max-width: 767px){.o_noti .o_label span{display:none}}.panel-body .o_noti{margin:0}.o_portrait{display:inline-block}.o_portrait img{border-radius:50%;border:none;background-color:#eee;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.o_portrait_name{margin-top:6px}.o_block_inline .o_portait,.o_block_inline .o_portrait_name,.o_block_inline .o_portrait_image,.o_block_inline_right .o_portait,.o_block_inline_right .o_portrait_name,.o_block_inline_right .o_portrait_image,.o_block_inline_left .o_portait,.o_block_inline_left .o_portrait_name,.o_block_inline_left .o_portrait_image,.o_block_inline_both .o_portait,.o_block_inline_both .o_portrait_name,.o_block_inline_both .o_portrait_image{display:inline-block}.o_portrait_avatar,.o_portrait_dummy,.o_portrait_dummy_female_big,.o_portrait_dummy_male_big,.o_portrait_anonymous{width:100px;height:100px}.o_portrait_dummy{background-image:url("../light/images/portrait/dummy.png")}.o_portrait_dummy_female_big{background-image:url("../light/images/portrait/dummy_female_big.png")}.o_portrait_dummy_male_big{background-image:url("../light/images/portrait/dummy_male_big.png")}.o_portrait_anonymous{background-image:url("../light/images/portrait/anonymous.png")}.o_portrait_avatar_small,.o_portrait_dummy_small,.o_portrait_dummy_female_small,.o_portrait_dummy_male_small,.o_portrait_anonymous_small{width:30px;height:30px}.o_portrait_dummy_small{background-image:url("../light/images/portrait/dummy_small.png")}.o_portrait_dummy_female_small{background-image:url("../light/images/portrait/dummy_female_small.png")}.o_portrait_dummy_male_small{background-image:url("../light/images/portrait/dummy_male_small.png")}.o_portrait_anonymous_small{background-image:url("../light/images/portrait/anonymous_small.png")}.o_datecomp{position:relative;width:40px;height:52px;border:1px solid #555;margin-right:12px;text-align:center;vertical-align:middle}.o_datecomp div.o_year{position:absolute;left:0;width:100%;top:-20px;height:20px;line-height:20px;font-size:10px}.o_datecomp div.o_month{height:20px;line-height:20px;font-size:12px;background-color:#3b678a;color:#fff}.o_datecomp div.o_day{height:30px;line-height:30px;font-size:18px;border-top:1px solid #555;background-color:#fff;color:#333}.o_block_with_datecomp .o_head{position:relative;padding-left:52px}.o_block_with_datecomp .o_datecomp{position:absolute;top:0.2em;left:0}.o_block_with_datecomp .o_title{margin-top:0}.o_block_with_datecomp .o_meta{color:#777}.o_block_with_datecomp .o_content{border-left:5px solid #eee;padding:0 20px}.o_block_with_datecomp .o_block_footer{padding-left:25px}ul.o_certificates li{padding:5px 0}ul.o_certificates li a.o_sel_certificate_delete{padding-left:2em}.o_cal_toptoolbar{margin-bottom:6px}.o_cal_toptoolbar .o_cal_toptoolbar_help{float:left;margin-right:12px}.o_cal_toptoolbar .o_noti{margin-top:0}.o_feed .o_date,.o_feed .o_author{color:#777}.o_feed .o_subscription a{margin-right:1.5em}.o_feed .o_subscription .form-group{margin-bottom:5px}.o_feed .o_subscription .form-control{border:0;background:none;padding:0;height:auto;-webkit-box-shadow:none;box-shadow:none}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper{float:left}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_title,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_explanation,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_legend{display:none}.o_feed .o_blog_posts .o_ratings_and_comments a.o_comments span{display:none}.o_feed .o_content:before,.o_feed .o_content:after{content:" ";display:table}.o_feed .o_content:after{clear:both}.o_glossary .o_register{text-align:center}.o_glossary .o_meta{font-size:90%;color:#777;font-style:italic}.o_glossary dl dt:first-letter{font-size:21px}.o_glossary dl dt small{color:#777}.o_tm_glossary{border-bottom:1px dotted #666699 !important}.o_tm_yellow{background-color:#FFFF66}.o_tm_blue{background-color:#33FFFF}.o_tm_red{background-color:#FF3333}.o_tm_green{background-color:#99FF00}.o_coaching div#o_main_toolbar.o_toolbar{margin-top:0px}.o_eff_statement_details .o_user_infos{margin-top:20px}div.o_assessment_user_type_filter{display:inline-block;padding:0.5em;border:1px solid #eee;border-radius:4px}div.o_assessment_user_type_filter div.form-inline,div.o_assessment_user_type_filter div.o_navbar-form{margin-left:5px;display:inline-block}.vitero_iframe{width:100%;height:100%;border:none;min-height:60em}.o_reminder_rule{padding:5px 0}.o_segments.btn-group a span{overflow:hidden;display:block;text-overflow:ellipsis}.o_segments_content{margin-top:20px}.o_tabbed_pane .o_tabbed_pane_content{padding:20px 0 6px 0}.o_togglebox_wrapper .o_opener{position:relative;left:-0.5em}.o_togglebox_wrapper div.o_togglebox_content{position:relative;margin:0}.o_togglebox_wrapper div.o_togglebox_content .o_hide{position:absolute;bottom:0.5em;right:1em}.o_toolboxes ul{margin:0 0 1.5em 0;padding:0 0 0 1.5em}.o_qrcode{width:256px;height:256px}#o_ajax_busy{position:absolute;left:50%;top:20em;margin-left:-2.5em;height:5em;width:5em;color:#fff;z-index:1201;display:none}#o_body.o_ajax_busy{cursor:busy}.o_exception .o_visual{position:relative;background-image:url("../light/images/lion-500x333.jpg");filter:grayscale(50%);-webkit-filter:grayscale(50%);-moz-filter:grayscale(50%);-ms-filter:grayscale(50%);-o-filter:grayscale(50%);width:500px;height:333px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;margin:0 0 10px 16px}@media (min-width: 768px) and (max-width: 991px){.o_exception .o_visual{width:375px;height:249px}}@media (min-width: 500px) and (max-width: 767px){.o_exception .o_visual{width:250px;height:166px}}@media (max-width: 500px){.o_exception .o_visual{background-size:cover}}.o_exception .jumbotron h1,.o_exception .o_repo_details .o_lead h1,.o_repo_details .o_exception .o_lead h1{color:#d9534f}.o_mail_message .o_mail_meta{background:#fafafa;border:1px solid #eee;padding:5px 10px}.o_mail_message .o_mail_meta h3{margin-top:0}.o_mail_message .o_mail_date,.o_mail_message .o_mail_from,.o_mail_message .o_mail_recipients{color:#777;font-size:90%}.o_mail_message .o_mail_date .o_label,.o_mail_message .o_mail_from .o_label,.o_mail_message .o_mail_recipients .o_label{font-weight:bold;margin-right:1em}.o_mail_message .o_mail_date .o_group span,.o_mail_message .o_mail_from .o_group span,.o_mail_message .o_mail_recipients .o_group span{font-weight:bold}.o_mail_message .o_mail_date .o_group span:after,.o_mail_message .o_mail_from .o_group span:after,.o_mail_message .o_mail_recipients .o_group span:after{content:':';margin-right:0.5em}.o_mail_message .o_mail_date i,.o_mail_message .o_mail_from i,.o_mail_message .o_mail_recipients i{margin-left:1em}.o_mail_message .o_mail_date ul.list-inline,.o_mail_message .o_mail_from ul.list-inline,.o_mail_message .o_mail_recipients ul.list-inline{display:inline}.o_mail_message .o_mail_date ul.list-inline li,.o_mail_message .o_mail_from ul.list-inline li,.o_mail_message .o_mail_recipients ul.list-inline li{padding-right:0;padding-left:0}.o_mail_message .o_more{margin-left:1em}.o_mail_message .o_showAllLink{float:right;font-size:80%}.tt-input{width:400px}.tt-menu{width:400px;margin-top:6px;padding:0 0 0;color:#555;background-color:#fff;border:1px solid #66afe9;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 0 8px rgba(102,175,233,0.6);box-shadow:0 0 8px rgba(102,175,233,0.6)}.tt-suggestion{padding:6px 12px;font-size:14px;line-height:1.42857}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;background-color:#3b678a}.tt-suggestion p{margin:0}.tt-menu div.o_icon_error:before{content:''}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_highlight{font-weight:bold;background-color:#fcf8e3}.o_search_result_context{color:#3c763d}.o_search_result_excerpt{color:#555}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}@media (max-width: 767px){.o_search_result_details{display:none}}.wizard{border:1px solid #d4d4d4;border-radius:2px;background-color:#f9f9f9;position:relative;overflow:hidden;margin-bottom:15px}.wizard ul{list-style:none outside none;padding:0;margin:0;width:4000px}.wizard ul li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#333;font-size:16px;cursor:default}.wizard ul li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.wizard ul li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.wizard ul li.active{background:#f1f6fc;color:#333}.wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.wizard ul li .badge{margin-right:8px}.wizard ul li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.o_process{position:relative;padding-left:25px}.o_process .o_step{position:relative;height:auto;padding-top:10px;padding-left:30px;padding-bottom:10px}.o_process .o_bar{position:absolute;top:10px;left:8px;height:100%;border-left:4px solid #777}.o_process .o_bar:after{position:absolute;top:0;left:-10px;height:16px;width:16px;border:4px solid #777;border-radius:16px;background:#fff;content:" "}.o_process .o_title{margin-top:-1px;color:#777 !important}.o_process .o_title:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:-24px}.o_process .o_title a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";width:1em}.o_process .o_title a.collapsed:before{content:""}.o_process .o_step.o_active .o_bar,.o_process .o_step.o_active .o_bar:after{border-color:#3b678a}.o_process .o_step.o_active .o_title{color:#3b678a !important}.o_process .o_step.o_active .o_title:before{content:"";color:#3b678a}.o_process .o_step.o_done .o_bar,.o_process .o_step.o_done .o_bar:after{border-color:#4a82ae}.o_process .o_step.o_done .o_title{color:#4a82ae !important}.o_process .o_step.o_done .o_title:before{content:"";color:#5cb85c}.o_process .o_meta{color:#777;font-size:12px;margin-top:-0.5em}.o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5D5D5D !important}.o_cal_class.o_cal_orange{border-left:20px solid #ffc266}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#FFF !important}.o_cal_class.o_cal_green{border-left:20px solid #66c266}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#FFF !important}.o_cal_class.o_cal_blue{border-left:20px solid #4d6e9f}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5D5D5D !important}.o_cal_class.o_cal_yellow{border-left:20px solid #ffe066}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#FFF !important}.o_cal_class.o_cal_red{border-left:20px solid #c26666}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#FFF !important}.o_cal_class.o_cal_rebeccapurple{border-left:20px solid #639}.o_cal_fuchsia{background:#FF00FF;border-color:#dd00dd;color:#FFF}.o_cal_fuchsia .o_cal_wv_event_header{background:#FF00FF}.o_cal_fuchsia a{color:#FFF !important}.o_cal_class.o_cal_fuchsia{border-left:20px solid #f0f}.o_cal_olive{background:#808000;border-color:#636300;color:#FFF}.o_cal_olive .o_cal_wv_event_header{background:#808000}.o_cal_olive a{color:#FFF !important}.o_cal_class.o_cal_olive{border-left:20px solid olive}.o_cal_navy{background:#000080;border-color:#000057;color:#FFF}.o_cal_navy .o_cal_wv_event_header{background:#000080}.o_cal_navy a{color:#FFF !important}.o_cal_class.o_cal_navy{border-left:20px solid navy}.o_cal_maroon{background:#800000;border-color:#740000;color:#FFF}.o_cal_maroon .o_cal_wv_event_header{background:#800000}.o_cal_maroon a{color:#FFF !important}.o_cal_class.o_cal_maroon{border-left:20px solid maroon}.o_cal_lime{background:#00FF00;border-color:#00e200;color:#004d00}.o_cal_lime .o_cal_wv_event_header{background:#00FF00}.o_cal_lime a{color:#004d00 !important}.o_cal_class.o_cal_lime{border-left:20px solid lime}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#FFF !important}.o_cal_class.o_cal_grey{border-left:20px solid #DDDAAA}.o_sel_calendar_print_chooser{padding-right:4em}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_config_color{display:block;width:16px;height:16px;border-radius:8px}.o_cal_colorchooser_selected:before{content:""}#o_cal_colorchooser div{border:1px solid #3b678a;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_cal_embedded_course_container .o_content_popup{top:0}.fc-button{color:#333;background-color:#fff;border-color:#ccc}.fc-button:hover,.fc-button:focus,.fc-button.focus,.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{background-image:none}.fc-button.disabled,.fc-button.disabled:hover,.fc-button.disabled:focus,.fc-button.disabled.focus,.fc-button.disabled:active,.fc-button.disabled.active,.fc-button[disabled],.fc-button[disabled]:hover,.fc-button[disabled]:focus,.fc-button[disabled].focus,.fc-button[disabled]:active,.fc-button[disabled].active,fieldset[disabled] .fc-button,fieldset[disabled] .fc-button:hover,fieldset[disabled] .fc-button:focus,fieldset[disabled] .fc-button.focus,fieldset[disabled] .fc-button:active,fieldset[disabled] .fc-button.active{background-color:#fff;border-color:#ccc}.fc-button .badge{color:#fff;background-color:#333}.fc-button.fc-state-default{text-shadow:none}.fc-button.fc-state-active{color:#fff;background-color:#3b678a;border-color:#335a78}.fc-button.fc-state-active:hover,.fc-button.fc-state-active:focus,.fc-button.fc-state-active.focus,.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{background-image:none}.fc-button.fc-state-active.disabled,.fc-button.fc-state-active.disabled:hover,.fc-button.fc-state-active.disabled:focus,.fc-button.fc-state-active.disabled.focus,.fc-button.fc-state-active.disabled:active,.fc-button.fc-state-active.disabled.active,.fc-button.fc-state-active[disabled],.fc-button.fc-state-active[disabled]:hover,.fc-button.fc-state-active[disabled]:focus,.fc-button.fc-state-active[disabled].focus,.fc-button.fc-state-active[disabled]:active,.fc-button.fc-state-active[disabled].active,fieldset[disabled] .fc-button.fc-state-active,fieldset[disabled] .fc-button.fc-state-active:hover,fieldset[disabled] .fc-button.fc-state-active:focus,fieldset[disabled] .fc-button.fc-state-active.focus,fieldset[disabled] .fc-button.fc-state-active:active,fieldset[disabled] .fc-button.fc-state-active.active{background-color:#3b678a;border-color:#335a78}.fc-button.fc-state-active .badge{color:#3b678a;background-color:#fff}body.o_cal_print fieldset{border:none;margin-bottom:2em}body.o_cal_print legend{font-size:2em;font-weight:bold}body.o_cal_print legend span{display:block;font-size:14px;font-weight:normal}body.o_cal_print ul.o_cal_wv_list{list-style-type:none;padding:0}body.o_cal_print ul.o_cal_wv_list>li{page-break-inside:avoid;margin-bottom:2em}body.o_cal_print ul.o_cal_wv_list .o_cal_date{font-size:1.25em;font-weight:bold;padding:0.5em 0 0.5em 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events{list-style-type:none;padding:0.5em 0 0 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event{position:relative;left:30px;page-break-inside:avoid;clear:both;margin-bottom:1.5em;padding-right:30px}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_time{float:left;font-weight:bold;margin-right:1em}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject{font-weight:bold}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject p{margin:0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_location,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_description,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{clear:both}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{font-style:italic}body.o_cal_print .o_cal_class{position:absolute;left:-30px;width:20px}body.o_cal_print #o_cal_config legend{font-size:1.25em}body.o_cal_print #o_cal_config .o_cal_config_calendar{margin:0;padding:0}body.o_cal_print #o_cal_config .o_cal_config_calendar{position:relative;left:30px;float:none;padding-right:30px}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #3b678a;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{box-sizing:content-box;border-right:1px solid #3b678a}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #3b678a;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#5bc0de}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#3b678a;border-color:#335a78}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#3b678a;border-color:#335a78}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#3b678a;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#f0ad4e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#3b678a}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#2c4c66}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:normal;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;font-size:90%;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{border-right:37px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;width:37px;line-height:50px;color:#fff;background-color:#3b678a}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #3b678a;border-bottom:1px solid #3b678a}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#3b678a}.o_catalog .o_level .o_meta .o_title a:hover{color:#2c4c66}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels_list .o_sublevel{position:relative;border:1px solid #3b678a;margin-bottom:10px}.o_catalog .o_sublevels_list .o_sublevel .o_visual{height:75px;width:75px}.o_catalog .o_sublevels_list .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels_list .o_sublevel .o_title{margin:0}.o_catalog .o_sublevels_list .o_sublevel .o_meta{border-left:1px solid #3b678a;min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em;overflow:hidden}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_title{line-height:75px}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_desc{display:none}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a{font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a>i,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a>i,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a>i{display:none}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels{border:1px solid transparent}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels .o_meta{border-left:1px solid transparent}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #3b678a;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #3b678a;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#3b678a;font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#2c4c66}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (min-width: 768px){.o_catalog .o_sublevels_list,.o_catalog .o_sublevels_compact{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2;columns:2}}.o_repo_details{position:relative}.o_repo_details .o_lead{margin-bottom:10px}.o_repo_details .o_lead .o_author{margin-top:0.5em;margin-bottom:1em;font-size:120%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead .o_media.o_desc_empty{float:none;margin-left:0;margin-bottom:0}.o_repo_details .o_lead h1{font-size:37px}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start_wrapper{clear:both;margin:2em 0 -10px 0;text-align:right}.o_repo_details .o_start_wrapper .o_start_inner{display:inline-block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:400px;display:inline-block}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-left:0;float:none;text-align:center}.o_repo_details .o_start_wrapper{text-align:center}.o_repo_details .o_start_wrapper .o_start_inner{display:block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:100%;display:block}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}}.o_meta .o_closed{padding:2px 5px;margin:5px 0}.o_overview .o_closed{padding:12px 15px;margin:15px 0}.o_ac_configuration span.o_ac_infos{font-weight:normal;color:grey}tr.o_entry_closed,tr.o_entry_closed td,tr.o_entry_closed td span,tr.o_entry_unpublished,tr.o_entry_unpublished td,tr.o_entry_unpublished td span{text-decoration:line-through}.badge.o_midpub{background-color:#3c763d}.badge.o_midwarn{background-color:#8a6d3b}.badge.o_midlock{background-color:#31708f}.badge.o_miderr{background-color:#a94442}.badge.o_middel{background-color:#777}.o_course_editor_legend .badge{font-size:80%}.o_course_editor_legend .badge:before{content:none}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#333}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#66512c}.o_failed th{color:#333}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#333}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_course_run.o_titled_wrapper>h2 i{display:none}.o_course_run .o_cal_toptoolbar{margin-right:26px}.o_course_run .o_titled_wrapper .o_cal_toptoolbar{margin-right:0px}.o_tree.o_course_menu div.o_tree_l0>a:first-child{background-color:none}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_ll_container h5{margin-bottom:5px}.o_ll_container h5 a.o_desc{color:#3b678a}.o_ll_container h5 a.o_desc small{display:none}.o_ll_container h5 a.o_desc:hover{color:#2c4c66;text-decoration:none}.o_ll_container h5 a.o_desc:hover small{color:#5e5e5e;display:inline}.o_ll_container div.o_comment{color:#777}.o_cmembers .o_cmember{margin:12px 0}.o_cmembers .o_cmember .o_portrait{margin-right:10px}.o_cmembers .o_cmember .o_portrait img{width:50px;height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper{line-height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_cmembers .o_cmember a.o_mail{display:none}.o_cmembers .o_cmember:hover a.o_mail{display:inline}.o_cmembers_print{color:#000}.o_cmembers_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_cmembers_print #o_print_brand img{width:100%}.o_cmembers_print .o_portrait{width:100px;height:100px;position:relative}.o_cmembers_print .o_portrait img{border-radius:0px;margin:auto;display:block;max-width:100px;max-height:100px}.o_cmembers_print .o_cmember{padding-left:0px;padding-right:15px;margin-bottom:20px}.o_cmembers_print .o_cmember .o_cmember_info_wrapper{word-wrap:break-word}.o_cmembers_print .o_cmember .o_prop.o_zipCode{float:left;padding-right:0.5em}.o_cmembers_print h1{font-size:18pt;color:#000}.o_cmembers_print h3{font-size:14pt;margin-top:5px;font-weight:normal;color:#000}.o_cmembers_print h4,.o_cmembers_print .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_cmembers_print h2{font-size:11pt;font-weight:strong;color:#000;padding-bottom:10px;border-bottom:1px solid #eee}.o_cmembers_print .o_cmember_info_wrapper{font-size:7pt;color:#000}.o_cmembers_print .o_cmember_info_wrapper strong{font-size:8pt}.tag.label.label-info{margin-right:3px}.input-group.o_tag_inputgroup .form-control{height:auto}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#3b678a}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #3b678a}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #3b678a !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid grey}.o_gap_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}div.hotspotInteraction{overflow-x:auto}#itemBody .extendedTextInteraction{margin:15px 0}#itemBody .extendedTextInteraction textarea{resize:vertical !important}#itemBody .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}.o_qti_hotspot_label{padding-left:48%}.o_info.o_assessmentsection_rubrics{margin:0 0 0.5em 0}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d9534f;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d9534f}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d9534f}.o_assessmentitem div.orderInteraction div.box{background-color:#eee}.o_assessmentitem div.orderInteraction div.box span.info{margin-left:1em;color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction div.box.horizontal{margin:0.5em 0;width:100%}.o_assessmentitem div.orderInteraction ul.horizontal{float:left;margin:0 1em;padding:1em 0;width:100%}.o_assessmentitem div.orderInteraction div.box.vertical{margin:1em 0;width:49%}.o_assessmentitem div.orderInteraction div.box.vertical.source{float:left}.o_assessmentitem div.orderInteraction div.box.vertical.target{float:right}.o_assessmentitem div.orderInteraction ul.vertical{margin:0 1em;padding:1em 0;width:auto}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0;width:60%}.o_assessmentitem div.orderInteraction ul li{margin:0 3px 3px 3px;padding:0.4em;padding-left:1.5em;font-size:1em}.o_assessmentitem div.orderInteraction ul li span.ui-icon{position:absolute;margin-left:-1.3em}.o_assessmentitem div.orderInteraction ul.horizontal li{float:left;width:auto}.o_assessmentitem div.orderInteraction br{clear:both}.o_assessmentitem .hottext{font-weight:bold}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em}.o_assessmentitem_wrapper #itemBody{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type,.o_assessmentitem_wrapper .modalFeedback .o_cal .fc-header-title h2:first-of-type,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback h2:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4,.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h2{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d9534f}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#5cb85c}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f0ad4e}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#5bc0de;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}#itemBody{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#5cb85c}.matchInteraction div.bar_red{background-color:#d9534f}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#5cb85c}.o_assessmentitem div.failure{background-color:#f0ad4e}.o_assessmentitem div.error{background-color:#d9534f}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:10px;border-bottom:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#3b678a;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#243f54;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f0ad4e}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#5bc0de}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}div.o_wiki_wrapper a.wikiimg{text-decoration:none;color:inherit;font-weight:inherit}div.o_wiki_wrapper div.imgcaption{padding:0.3em 0em 0.2em 0.3em}div.o_wiki_wrapper div.imgleft{clear:left;float:left;margin:0.3em 0.3em 0.3em 0em}div.o_wiki_wrapper div.imgright{clear:right;float:right;margin:0.3em 0em 0.3em 0.3em}div.o_wiki_wrapper div.imgcenter{clear:both;overflow:hidden;text-align:center;margin:0.3em 0em 0.3em 0em}div.o_wiki_wrapper div.imgthumb{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper table.gallery{border:1px solid #ccc;margin:2px;padding:2px;background-color:white}div.o_wiki_wrapper table.gallery tr{vertical-align:middle}div.o_wiki_wrapper table.gallery td{background-color:#f9f9f9;border:solid 2px white;text-align:center;vertical-align:middle;width:150px}div.o_wiki_wrapper img.gallery{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper a.edit{font-style:italic;color:red}div.o_wiki_wrapper a.externallink:before{padding-right:2px}div.o_wiki_wrapper a.externallink:before:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}.o_ep_icon_map:before{content:""}.o_ep_icon_collection:before{content:""}.o_ep_icon_page:before{content:""}.o_ep_icon_struct:before{content:""}.o_ep_icon_liveblog:before{content:"ï‚¡"}.o_artefact_closed:before{content:""}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.o_eportfolio_page .o_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.panel-footer .o_ep_options{display:inline-block}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ECF69A;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99E44D;background:#99E44D -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99E44D), to(#CBF1A5));background:#99E44D -moz-linear-gradient(43% 71% 101deg, #CBF1A5, #99E44D);background:#99E44D -o-linear-gradient(#99E44D, #CBF1A5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99E44D', EndColorStr='#CBF1A5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#DFF0C1;background:#DFF0C1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DFF0C1), to(#A0D346));background:#DFF0C1 -moz-linear-gradient(43% 71% 101deg, #A0D346, #DFF0C1);background:#DFF0C1 -o-linear-gradient(#DFF0C1, #A0D346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DFF0C1', EndColorStr='#A0D346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#D7DBB5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#FFBA71;background:#FFBA71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFBA71), to(#FFBA99));background:#FFBA71 -moz-linear-gradient(43% 71% 101deg, #FFBA99, #FFBA71);background:#FFBA71 -o-linear-gradient(#FFBA71, #FFBA99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFBA71', EndColorStr='#FFBA99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#FF9772;background:#FF9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FF9772), to(#FF9780));background:#FF9772 -moz-linear-gradient(43% 71% 101deg, #FF9780, #FF9772);background:#FF9772 -o-linear-gradient(#FF9772, #FF9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF9772', EndColorStr='#FF9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#E8AFBB;background:#E8AFBB -webkit-gradient(linear, 37% 20%, 53% 100%, from(#E8AFBB), to(#E8AFA0));background:#E8AFBB -moz-linear-gradient(43% 71% 101deg, #E8AFA0, #E8AFBB);background:#E8AFBB -o-linear-gradient(#E8AFBB, #E8AFA0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#E8AFBB', EndColorStr='#E8AFA0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#FFA800;background:#FFA800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFA800), to(#FFAF00));background:#FFA800 -moz-linear-gradient(43% 71% 101deg, #FFAF00, #FFA800);background:#FFA800 -o-linear-gradient(#FFA800, #FFAF00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFA800', EndColorStr='#FFAF00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00D2F8;background:#00D2F8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00D2F8), to(#4A9EAD));background:#00D2F8 -moz-linear-gradient(43% 71% 101deg, #4A9EAD, #00D2F8);background:#00D2F8 -o-linear-gradient(#00D2F8, #4A9EAD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00D2F8', EndColorStr='#4A9EAD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#C4F6FF;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#B3E2F7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#DEE7F7;background:#DEE7F7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DEE7F7), to(#C1E9FD));background:#DEE7F7 -moz-linear-gradient(43% 71% 101deg, #C1E9FD, #DEE7F7);background:#DEE7F7 -o-linear-gradient(#DEE7F7, #C1E9FD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DEE7F7', EndColorStr='#C1E9FD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_portfolio div#o_main_toolbar.o_toolbar{margin-top:0px}.o_section_lead,.o_page_lead,.o_assignment_lead{padding:10px 10px;margin-bottom:10px;background-color:#f2f2f2;border-radius:3px;border:1px #d9d9d9 solid}.o_section_lead.o_assignment_2_instantiate{border-radius:3px 3px 0px 0px;border-bottom:none;padding-bottom:1px;margin-bottom:0px}.o_assignment_2_instantiate{padding:10px 10px 0px 10px;background-color:#f2f2f2;border-left:1px #d9d9d9 solid;border-right:1px #d9d9d9 solid}.o_assignment_2_instantiate.last{padding-bottom:10px;border-bottom:1px #d9d9d9 solid;border-radius:0px 0px 3px 3px}.o_page_lead{padding:20px}.o_page_lead .o_page_summary{font-size:18px}.o_page_lead .o_media.o_media_right,.o_page_lead .o_media.o_media_right_large{float:right;margin-left:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_left_large{float:left;margin-right:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_right{max-height:200px;max-width:50%}.o_page_lead .o_media.o_media_left img,.o_page_lead .o_media.o_media_right img{max-height:200px}.o_page_lead .o_media.o_media_right_large,.o_page_lead .o_media.o_media_left_large{max-height:300px;max-width:75%}.o_page_lead .o_media.o_media_right_large img,.o_page_lead .o_media.o_media_left_large img{max-height:300px}.o_page_lead .o_media.o_desc_empty{max-height:300px;text-align:center}.o_page_lead .o_media.o_desc_empty img{max-height:300px}.o_page_lead .o_media img{border-radius:3px;border:1px #d9d9d9 solid;background:#fff}.o_page_lead .o_portfolio_status_block{border-top:1px solid #d9d9d9;padding-top:1em;margin-bottom:-1em}.o_page_lead .o_portfolio_status{display:inline-block;padding-right:2em}.o_page_lead.o_block_imagebg .o_portfolio_status{padding:2px;background-color:rgba(255,255,255,0.8)}.o_page_assignment{font-size:12px}.o_page_assignment.o_togglebox_wrapper div.o_togglebox_content{margin:10px 0 20px 0;padding:20px;border-left:3px solid #d9534f;background-color:#f2dede}.o_page_assignment .o_page_assignement_info{position:relative;left:-1em}.o_portfolio_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry{position:relative;display:inline-block;height:230px;width:400px;vertical-align:top;margin-right:10px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry ul{padding-left:2em}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul{margin:0;padding:0;list-style-type:none}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul li{padding:2px}.o_binder.o_portfolio_assignments .panel-heading,.o_binder.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.panel-default.o_portfolio_assignments .panel-heading,.panel-default.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_meta_wrapper,.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_summary{padding-left:10px}.o_portfolio_page_summary .o_media.o_media_right,.o_portfolio_page_summary .o_media.o_media_right_large{float:right;margin-left:0.5em;margin-bottom:0.5em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_left_large{float:left;margin-right:0.5em;margin-bottom:0.5em}.o_rendertype_classic .o_pf_page,.o_rendertype_classic .o_pf_assignment{padding-left:1em}.o_portfolio_timeline .o_timeline_up{text-align:center}.o_portfolio_timeline .o_timeline_down{text-align:center}.o_portfolio_timeline .axis path,.o_portfolio_timeline .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_portfolio_timeline .x.axis line,.o_portfolio_timeline .x.axis path{display:none}.o_portfolio_timeline path.o_timeline_curve{fill:none;stroke:#ccc;shape-rendering:crispEdges}.o_portfolio_timeline .y.axis .tick line,.o_portfolio_timeline .y.axis path.domain{stroke:#ddd}.o_portfolio_timeline text{fill:#888;stroke:none;font-size:10px}.o_portfolio_timeline .dot.o_pf_status_draft{fill:#f0ad4e}.o_portfolio_timeline .dot.o_pf_status_published{fill:#3b678a}.o_portfolio_timeline .dot.o_pf_status_inrevision{fill:#d9534f}.o_portfolio_timeline .dot.o_pf_status_closed{fill:#5cb85c}.o_portfolio_timeline .dot.o_pf_status_deleted{fill:#000}.o_portfolio_title_help_helper{display:inline-block;float:right;position:relative;top:1em;right:1em}.o_pf_comments{margin-top:2em}.o_pf_content .o_cit,.o_pf_content .o_file{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_forum{border:1px #f8f8f8 solid;padding:10px;border-radius:10px}.o_pf_content .o_image,.o_pf_content .o_video{padding:10px;text-align:center;width:100%}.o_pf_content .o_image img,.o_pf_content .o_video img{border:1px #f8f8f8 solid;border-radius:10px}.o_pf_content_editor .o_toolbar{border:none}.o_pf_content_editor .o_page_part{border:2px solid transparent}.o_pf_content_editor .o_page_part:hover{border:2px dotted #6b9ac0}.o_pf_content_editor .o_page_fragment_edit{position:relative}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above{height:25px;width:100%;background:#6b9ac0;position:absolute;z-index:3;left:0;top:-25px;box-shadow:3px -8px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_add_above{position:absolute;left:0;top:-25px;height:25px;border-left:2px dashed #6b9ac0;border-top:2px dashed #6b9ac0;border-right:2px dashed #6b9ac0;border-radius:10px 10px 0 0;box-shadow:0 -5px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_sel_add_element_above{display:inline-block;padding:5px 5px 0 5px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above{padding-right:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above .o_page_type{display:none}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a{float:right;color:#fff;padding-right:1em}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd{position:absolute;z-index:4;top:0;right:0;width:25px;height:100%;background:#6b9ac0}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a{position:absolute;display:inline-block;width:25px;height:25px;line-height:25px;text-align:center;vertical-align:middle;color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_up_element{z-index:4;top:-25px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_down_element{bottom:0}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit{padding-right:25px;border:2px solid #6b9ac0;box-shadow:5px 5px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit:hover{border:2px solid #6b9ac0}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar{position:absolute;z-index:5;left:5px;top:-25px;display:inline-block;height:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a{color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_title .o_page_edit_toolbar li{font-weight:bold}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_richtext_mce textarea{border:0}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below{position:absolute;z-index:3;left:0;bottom:-25px;height:25px;border-left:2px dashed #6b9ac0;border-bottom:2px dashed #6b9ac0;border-right:2px dashed #6b9ac0;border-radius:0 0 10px 10px;box-shadow:3px 8px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below .o_sel_add_element_below{display:inline-block;padding:0 5px 5px 5px}.o_pf_content_editor .o_pf_add_contents{margin-top:30px}.o_portfolio_add_callout a span{display:none}.o_portfolio_add_callout ul.list-inline{margin-bottom:0}.o_portfolio_image_options{clear:both;width:300px;padding:5px}.o_binder_page_listing .o_portfolio_page_links{background-color:#f8f8f8;border-radius:4px}.o_binder_page_listing .o_portfolio_page_links .o_portfolio_comment{float:right}.o_portfolio_toc{padding-bottom:6em}.o_portfolio_toc .o_portfolio_section_meta{font-size:80%;color:#777;position:relative;top:-15px}.o_portfolio_toc .o_section{position:relative}.o_portfolio_toc .o_section .o_header_with_buttons h4,.o_portfolio_toc .o_section .o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_portfolio_toc .o_section .o_header_with_buttons h2{padding-right:0.5em}.o_portfolio_toc .o_section_actions{position:absolute;top:0;right:0}.o_portfolio_toc .o_section_actions .o_section_move_up_and_down{display:inline-block}.o_portfolio_toc .o_section_actions .o_section_dropdown{display:inline-block;position:relative;top:-0.5em;padding-left:0.5em}.o_portfolio_toc ul>li>ul{padding-left:1.5em}.o_portfolio_content .o_portfolio_toc.o_portfolio_toc_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_page_meta_wrapper{background-position:left top;background-repeat:no-repeat}.o_portfolio_rights table .o_portfolio_section td:first-child{padding-left:1.5em}.o_portfolio_rights table .o_portfolio_page td:first-child{padding-left:2.5em}.o_portfolio_publication table{padding-bottom:10px}.o_portfolio_publication table td{padding:5px 5px 5px 0}.o_portfolio_publication .o_portfolio_ac{font-size:90%}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(2){width:200px;white-space:nowrap}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(3){width:40px;white-space:nowrap}.o_portfolio_publication ul ul{margin-left:2em;margin-bottom:5px}.o_portfolio_publication ul li{background:#fbfbfb;padding:3px;margin-bottom:2px}.o_portfolio_publication ul li li{background:#f2f2f2}.o_portfolio_publication ul li li li{background:#eee}.o_portfolio_publication ul li li .table{margin-bottom:0px}@media (max-width: 767px){.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:100%;float:none}.o_portfolio_content .o_sel_timeline_off,.o_portfolio_content .o_sel_timeline_on,.o_portfolio_content .o_portfolio_timeline{display:none}.o_portfolio_content .o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline{width:100%;float:none}}.o_portfolio_media_browser .o_portfolio_medias{position:relative;margin-bottom:20px;margin-top:20px}.o_portfolio_media_browser .o_portfolio_medias:before,.o_portfolio_media_browser .o_portfolio_medias:after{content:" ";display:table}.o_portfolio_media_browser .o_portfolio_medias:after{clear:both}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media:last-child{margin-right:0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{border:1px solid #3b678a;position:relative;height:180px;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon span.o_visual_not_available{background-image:none}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:6em;text-align:center;color:#eee;line-height:140px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #3b678a;border-top:0;background-color:rgba(255,255,255,0.8)}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a{display:block;color:#3b678a;font-family:inherit;font-weight:inherit}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover{color:#2c4c66}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 10px 10px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}@media (max-width: 767px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 1px 1px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}.o_evaluation_form .o_evaluation_step_labels{margin-bottom:8px}.o_evaluation_form .o_evaluation_step_labels div,.o_evaluation_form .o_evaluation_step_labels span{display:inline-block;text-align:center}.o_evaluation_form .o_slider{margin-bottom:8px}.o_evaluation_form .o_slider.hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels{position:relative}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:first-child{position:absolute;left:0px;text-align:left}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div{display:inline-block;text-align:center}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:last-child{position:absolute;right:0px;text-align:right}.o_evaluation_form .o_evaluation_discrete_radio .o_slider input[type='radio']{padding:0;margin:0;position:relative}.o_evaluation_form .o_evaluation_discrete_radio .o_slider label{padding:0;margin:0;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps div.radio{display:inline-block;text-align:center}.o_evaluation_form .o_slider .ui-slider.ui-slider-horizontal.ui-widget-content{margin-top:0.3em}.o_evaluation_form .o_evaluation_left_label{text-align:right}.o_evaluation_form .o_evaluation_right_label{text-align:left}.o_evaluation_form .o_evaluation_textinput .o_evaluation_legend{padding-left:0.5em;margin-bottom:0.5em}@media (max-width: 768px){.o_evaluation_form .o_evaluation_left_label{text-align:left}.o_evaluation_form .o_evaluation_right_label{text-align:right}}.o_slider_overview{width:100%;height:20px;position:relative}.o_slider_overview .o_slider_overview_line{top:5px;left:0px;position:absolute;width:100%;height:11px;border:1px solid #999;border-radius:4px}.o_slider_overview .o_slider_overview_point{position:absolute;width:10px;height:10px;background-color:#3b678a}.o_evaluation_editor_form{margin:10px 10px 0 10px}.o_evaluation_editor_form .o_slider_editor{margin-top:10px;position:relative}.o_evaluation_editor_form .o_evaluation_step_labels{display:inline-block}.o_evaluation_editor_form .o_evaluation_step_labels input{width:100%}.o_evaluation_editor_form .o_slider_editor_delete{padding-right:48px}.o_evaluation_editor_form .o_slider_editor_delete .o_slider_editor_delete_button{position:absolute;right:15px}.o_cit{position:relative;margin:10px 0}.o_cit blockquote.o_quote{color:#555;font-size:18px;margin-top:6px;padding:0 12px}.o_cit blockquote.o_quote p:last-child:after{content:'1)';top:-0.5em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}.o_cit .o_cit_bibinfo{font-size:90%;margin-left:1em;position:relative}.o_cit .o_cit_bibinfo>div:first-child:before{content:'1)';position:absolute;top:0.5em;left:-1em;font-size:75%;line-height:0;vertical-align:baseline}.o_cit .title,.o_cit .url,.o_cit .authors,.o_cit .pages,.o_cit .date,.o_cit .dateAdded,.o_cit .place,.o_cit .institution,.o_cit .issue,.o_cit .publisher,.o_cit .publicationTitle,.o_cit .edition,.o_cit .series,.o_cit .volume{margin-right:0.5em}.o_cit .title{font-style:italic}.o_cit .publicationTitle{color:black}.o_cit .links{padding-left:2em}.o_cit .notes{padding-left:2em;color:grey}.o_cit .note{font-style:italic}.o_cit .note p:first-child{margin-top:0}.o_cit .note p:first-child{margin-bottom:0}.o_cit .listing.web .item{padding-left:0;text-indent:0}.o_cit .listing.web .title{display:block;font-weight:bold;font-style:normal}.o_cit .listing.web .publicationTitle{display:block;font-style:italic}.o_cit .listing.web .url{display:block}.o_cit .listing.web .links{padding-left:0}.o_cit .listing.web .notes{padding-left:0}.o_cit .general-info{border-top:1px solid #eee;padding-top:30px;margin-top:30px}.o_cit .copyright{display:none}@media print{.cit{background-image:none;padding-top:0;max-width:100%}.cit #styles,.cit #refreshContainer{display:none}.cit #general-info a:after{content:" (" attr(href) ") ";font-size:0.8em;font-weight:normal}.cit #copyright{display:block;margin-top:30px}}.o_video_poster{position:relative;display:inline-block;width:400px;max-width:100%;height:225px;background-size:cover;background-repeat:no-repeat;border:1px solid #eee}.o_video_poster_select{text-align:center}.o_video_poster_select .o_video_poster{margin:5px}.o_video_poster_select .o_video_poster a{position:absolute;left:0;top:0;width:100%;height:100%}.o_video_poster_select .o_video_poster a span{position:absolute;bottom:0;width:100%;display:block;line-height:3em;background:#f8f8f8;opacity:0.8}.o_video_poster_select .o_video_poster a:hover{border:1px solid #bbb}.o_video_poster_select .o_video_poster a:hover span{opacity:0.9}.o_video_peekview{text-align:center}.o_video_listing .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_video_listing .o_video_entry{position:relative;display:inline-block;height:230px;width:250px;vertical-align:top;margin-right:10px}.o_video_listing .o_video_poster{width:250px;max-width:100%;height:140px;border:1px solid #eee}.o_video_listing .o_timecode{position:absolute;bottom:2px;right:3px;padding:3px 4px;background:#333;color:#fff;font-size:12px;line-height:12px}.o_video_listing .o_meta{padding:2px;font-size:11px}.o_video_listing .o_meta h5{font-size:14px;margin-top:0;margin-bottom:5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_video_listing .o_date{margin-left:10px;display:inline-block}.o_video_listing .o_date:before{content:'\002022';margin-right:10px;display:inline-block}.o_video_run .o_author{margin-top:0.5em;margin-bottom:1em;line-height:normal;font-size:90%;color:#3c763d}.o_video_run .o_ratings_and_comments{margin-top:2em;border-top:1px solid #eee;padding-top:1em}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector{visibility:visible !important;width:160px}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label{font-weight:normal;width:140px}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label:hover{color:#eee}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li label .type{display:none}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input{visibility:hidden;margin:0;width:0}.mejs-controls .mejs-sourcechooser-button .mejs-sourcechooser-selector ul li input:checked+label{color:#d9534f}.mejs-controls .mejs-captions-button .mejs-captions-selector{right:-26px}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label{font-weight:normal}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label:hover{color:#eee}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li label .type{display:none}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input{visibility:hidden;margin:0;width:0}.mejs-controls .mejs-captions-button .mejs-captions-selector ul li input:checked+label{color:#d9534f}.mejs-controls .mejs-speed-button .mejs-speed-selector ul li label{font-weight:normal;font-size:10px}.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-title,.mejs-chapters .mejs-chapter .mejs-chapter-block .ch-time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.o_userbulk_changedcell{font-style:italic;font-weight:bold}body.o_dmz{background:transparent}body.o_dmz #o_bg{position:absolute;top:0;left:0;width:100%;height:100%;border-top:50px solid transparent;border-bottom:70px solid transparent;background:url("images/learn-bg.jpg");background-size:cover;background-position:center center;background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=1 )}body.o_dmz #o_bg:after{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to right, rgba(255,255,255,0.1) 0.2%, rgba(255,255,255,0.6) 60%, rgba(255,255,255,0.8) 100%);background-size:cover;background-position:center center;background-repeat:no-repeat}body.o_dmz #o_toplink{display:none}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-bottom:20px;padding-left:10%;padding-right:10%;text-align:right}.o_login .o_login_intro{padding-left:10%}.o_login .o_login_intro h1{margin-bottom:40px;color:#3b678a}.o_login .o_login_intro .lead{color:#333}.o_login .o_login_intro .lead h1,.o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h3,.o_login .o_login_intro .lead h4,.o_login .o_login_intro .lead .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h5{margin-bottom:20px;color:#3b678a}.o_login .o_login_messages,.o_login .o_login_box{display:inline-block;width:400px;text-align:left}.o_login .o_login_messages .o_infomessage_wrapper{background:rgba(255,255,255,0.5);border:1px solid transparent;border-radius:4px;padding:6px 12px}.o_login .o_login_messages .o_infomessage_wrapper .o_info,.o_login .o_login_messages .o_infomessage_wrapper .o_warning,.o_login .o_login_messages .o_infomessage_wrapper .o_note{margin:0}.o_login .o_login_box{padding-top:10px}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_providers .o_icon_provider_olat{font-size:1em}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_form .o_form .o_desc{margin:0 0 30px 0;padding:0;border-left:0;background-color:transparent}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#5bc0de;border-color:#46b8da;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register.focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled.focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled].focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register.focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#5bc0de;border-color:#46b8da}.o_login .o_login_register .badge{color:#5bc0de;background-color:#fff}.o_login .o_login_register small{font-size:14px}.o_login .o_login_social{position:relative;padding:10px 12px}.o_login .o_login_social li{padding:10px 12px}.o_login .o_login_social li>a{display:block;line-height:2em;text-align:center;font-size:18px;border-radius:4px;padding:10px 12px}.o_login .o_login_social .btn-default.o_sel_auth_facebook{color:#fff;background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{color:#fff;background-color:#37538d;border-color:#2d4374}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled],.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook .badge{color:#4568b2;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_twitter{color:#fff;background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{color:#fff;background-color:#00b4f8;border-color:#009ad4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled],.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter .badge{color:#2cc5ff;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_google{color:#fff;background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.focus,.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{color:#fff;background-color:#d83825;border-color:#ba3120}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google.disabled,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled],.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google .badge{color:#e15f4f;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{color:#fff;background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{color:#fff;background-color:#015e8a;border-color:#014667}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled],.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin .badge{color:#0181bd;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_adfs{color:#fff;background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled],.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_adfs .badge{color:#3b678a;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect{color:#fff;background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled],.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active{background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect .badge{color:#3b678a;background-color:#fff}@media (max-width: 767px){body.o_dmz #o_bg{background:none;display:none}.o_login{padding:0}.o_login .o_login_intro{padding:0;text-align:left}.o_login .o_login_box_wrapper{text-align:center;padding:0}.o_login .o_login_box{padding-left:0;padding-right:0}.o_login .o_login_box .o_login_providers,.o_login .o_login_box .o_login_provider{-webkit-box-shadow:none;box-shadow:none}.o_login .o_login_messages,.o_login .o_login_box{width:100%;display:block}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px;margin-top:10px}.o_portlet{position:relative;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library_icon:before{content:""}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.o_library_overview .o_library_newest_files ul li{float:left;margin-right:15px}.o_library_item{margin-bottom:10px;position:relative}.o_library_item .o_library_visual,.o_library_item .o_library_extra,.o_library_item .o_library_meta{margin-top:15px}.o_library_item .o_library_visual{float:left;background-color:#fff;border-radius:4px;border:1px solid #ddd}.o_library_item .o_library_visual .o_thumbnail_available,.o_library_item .o_library_visual .o_thumbnail_unavailable{background-size:146px auto;width:150px !important;height:150px !important;background-repeat:no-repeat;background-position:50% 50%}.o_library_item .o_library_visual .o_thumbnail_available:before,.o_library_item .o_library_visual .o_thumbnail_unavailable:before{content:none}.o_library_item .o_library_visual .o_thumbnail_available{background-size:146px auto}.o_library_item .o_library_visual .o_thumbnail_unavailable{display:none}.o_library_item .o_library_extra{float:right;width:200px}.o_library_item .o_library_meta{clear:both}.o_library_item .o_library_meta .o_library_desc{padding-bottom:10px}.o_library_item .o_library_meta small{display:block;word-wrap:break-word}.o_library_item h4,.o_library_item .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal}.o_library_item .btn{display:block;margin-bottom:0.5em}.o_library_item .o_comments{display:inline-block}.o_library_item .table{table-layout:fixed;word-wrap:break-word;margin-bottom:0}.o_library_item p.o_library_show_more{text-align:right;margin:0;padding-top:20px}.o_library_item .o_library_more{padding-top:20px;display:none}.o_library_folder{margin-top:-20px}.o_library .o_ratings_and_comments .o_rating_title,.o_library .o_ratings_and_comments .o_rating_explanation{display:none}@media (min-width: 768px){.o_library_item .o_library_meta{clear:none;margin-left:150px;margin-right:200px;padding:0 10px}.o_library_item .o_library_more{display:none}.o_library_item .o_library_more table tbody{vertical-align:top}.o_library_item .o_library_more table tr,.o_library_item .o_library_more table th,.o_library_item .o_library_more table td{display:inline-block}.o_library_item .o_library_more table tr{width:49%}.o_library_item .o_library_more table th{width:30%}.o_library_item .o_library_more table td{width:70%}}.o_library_item_compact .o_library_extra{width:auto}.o_library_item_compact .o_library_meta{padding:0 10px 0 0;margin:0;overflow:hidden}.o_library_item_compact .btn{display:inline-block}.o_library_item_compact h4,.o_library_item_compact .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item_compact h2{overflow:hidden;margin-right:70px}.o_library_item_compact h4 a,.o_library_item_compact .o_cal .fc-header-title h2 a,.o_cal .fc-header-title .o_library_item_compact h2 a{text-overflow:ellipsis;white-space:nowrap}.o_library_item_compact p.o_library_show_more{padding:20px;position:absolute;top:0;right:0}span.o_translation_i18nitem{position:relative !important}span.o_translation_i18nitem a.o_translation_i18nitem_launcher{position:absolute !important;z-index:100 !important;width:18px !important;height:20px !important;top:0 !important;left:5px !important;background:#fff;border:1px solid #3b678a !important;border-radius:3px;text-align:center;padding:0 !important}.o_user_infos{position:relative}.o_user_infos .o_user_portrait{position:absolute;top:0;left:15px;width:100px;height:100px}.o_user_infos .o_user_infos_inner{margin:0 30px 0 100px}.o_user_infos .o_user_infos_inner table{margin:0 30px 15px 30px}div.o_skype_button{display:inline-block}div.o_skype_button p{margin:0 0 0 0}div.o_skype_button p a img{margin:0 !important;vertical-align:middle !important}.o_members_pagination{text-align:center}.o_bcard_logo{margin-left:10px;height:66px}.o_bcard_title_with_logo{clear:both;padding:20px 0 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:66px}.o_visitingcard .o_icon_visitingcard{display:none}.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:66px;height:66px;margin-right:10px}@media (max-width: 767px){.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:50px;height:50px;margin:5px 5px 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:50px}.o_visitingcard_logo,.o_bcard_logo{height:50px;margin:5px 0 0 5px}.o_visitingcard_logo img,.o_bcard_logo img{position:relative;transform:scale(.75758);top:-8px}}@media (max-width: 414px){.o_visitingcard_logo img{max-width:260px}}@media (max-width: 375px){.o_visitingcard_logo img{max-width:220px}}@media (max-width: 320px){.o_visitingcard_logo img{max-width:180px}.o_bcard_logo img{max-width:150px}}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-title{color:#3b678a;font-weight:500;font-family:inherit;line-height:1.1}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"ï€" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close span{display:none}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important;float:right}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px;overflow:auto;background:white !important}.ui-dialog .ui-dialog-titlebar{padding:4px 7px 4px 7px;background-color:#eee !important}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}.ui-slider.ui-slider-horizontal.ui-widget-content{border-color:#999}.ui-slider.ui-slider-horizontal.ui-widget-content.ui-state-disabled{opacity:0.65}.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:1px solid #3b678a;background-image:none;background-color:#3b678a}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"ï¡";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"ï ";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #335a78;background:#3b678a;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal}.o_richtext_mce_without_path .mce-statusbar{border:none}.o_richtext_mce_without_path .mce-path{display:none !important}.o_richtext_mce_without_path .mce-menubtn.mce-fixed-width span{width:auto}i.mce-ico.mce-i-media,i.mce-ico.mce-i-movie,i.mce-ico.mce-i-help,i.mce-ico.mce-i-gaptext,i.mce-ico.mce-i-gapnumerical,i.mce-ico.mce-i-hottext,i.mce-ico.mce-i-edit{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}i.mce-ico.mce-i-media:before{content:""}i.mce-ico.mce-i-movie:before{content:""}i.mce-ico.mce-i-gaptext:before{content:"ï…"}i.mce-ico.mce-i-gapnumerical:before{content:""}i.mce-ico.mce-i-hottext:before{content:"ï"}i.mce-ico.mce-i-math:before{content:'\03A3'}i.mce-ico.mce-i-edit:before{content:"ï„"}i.mce-ico.mce-i-help{width:9px;height:9px;padding-top:1px}i.mce-ico.mce-i-help:before{content:"ï™";color:white}.mce-tabs span.o_chelp_wrapper{float:right;margin:5px}div.o_table_search span.twitter-typeahead{display:table-cell;padding-top:3px}.tag.label.label-info{margin-right:3px}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{background:#fff;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important}.progress{-webkit-print-color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}body{margin:0}}.o_highscore .o_position{text-align:center;font-size:1.2em;font-weight:bold}.o_highscore .o_position h2{font-size:3em;font-weight:700;line-height:1.2em}@media screen and (-webkit-min-device-pixel-ratio: 0){.o_highscore .o_position h2{background:linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline}.o_highscore .o_position h2:after{content:"\A";white-space:pre}}.o_highscore .o_position_relative{font-size:1em;font-weight:normal}.o_highscore .o_podium{position:relative;vertical-align:bottom;height:300px;margin-bottom:50px}.o_highscore .o_rank{width:30%;position:absolute;bottom:0;text-shadow:rgba(102,102,102,0.5) 0 -1px 0,rgba(255,255,255,0.6) 0 2px 1px}.o_highscore .o_rank:before{position:absolute;bottom:0;left:0;width:100%;text-align:center}.o_highscore .o_rank .o_name{position:absolute;top:100%;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1em;text-shadow:none}.o_highscore .o_rank .o_score{color:#777;font-size:90%;width:100%;text-align:center;position:absolute;top:-20px;text-shadow:none}.o_highscore .o_rank .o_singleportrait{position:absolute;width:100%;text-align:center;top:-125px}.o_highscore .o_rank .o_rank_portraits{position:relative;left:0;top:-210px;height:180px;width:200px;text-align:center;vertical-align:bottom;display:table-cell}.o_highscore .o_rank .o_rank_portraits ul{display:inline-block}.o_highscore .o_rank .o_rank_portraits .o_portrait{margin:5px}.o_highscore .o_first{height:150px;left:30%;border:1px solid #d9d9d9;border-top-left-radius:4px;border-top-right-radius:4px;background:gold;background:-moz-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:-webkit-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 )}.o_highscore .o_first:before{content:"1";font-size:700%;line-height:150px;color:#666}.o_highscore .o_second{height:100px;left:0;background:silver;background:-moz-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-left-radius:4px}.o_highscore .o_second:before{content:"2";font-size:500%;line-height:100px;color:#666}.o_highscore .o_third{height:80px;left:60%;background:#cd7f32;background:-moz-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:-webkit-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-right:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-right-radius:4px}.o_highscore .o_third:before{content:"3";font-size:300%;line-height:80px;color:#666}.o_highscore .o_histogram{position:relative;bottom:-40px;margin-bottom:40px}.o_highscore .o_histogram .d3chart{width:100%;padding-top:50px;height:300px}.o_highscore .o_histogram .d3chart text{fill:#888}.o_highscore .o_histogram .d3chart .axis path,.o_highscore .o_histogram .d3chart .axis line{stroke:#888}.o_highscore .o_histogram .d3chart .o_myself{fill:#3b678a}.o_highscore .o_histogram .d3chart .o_myself:hover{fill:#4a82ae}.o_highscore .o_histogram .d3chart .o_other{fill:#777}.o_highscore .o_histogram .d3chart .o_other:hover{fill:#919191}.o_highscore .o_histogram .d3chart .o_empty{fill:#000}.o_listing .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_listing table th:nth-of-type(1),.o_listing table th :nth-of-type(2){width:5em}body.o_browser_ie7 #o_offcanvas_right,body.o_browser_ie8 #o_offcanvas_right{right:0px}.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-default.active,.btn-primary:active,.btn-primary.active,.btn-success:active,.btn-success.active,.btn-info:active,.btn-info.active,.btn-warning:active,.btn-warning.active,.btn-danger:active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);background-image:-o-linear-gradient(top, #fff 0%, #e0e0e0 100%);background-image:linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFE0E0E0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top, #3b678a 0%, #29475f 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #29475f 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #29475f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF29475F', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#264258}.btn-primary:hover,.btn-primary:focus{background-color:#29475f;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#29475f;border-color:#264258}.btn-primary:disabled,.btn-primary[disabled]{background-color:#29475f;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);background-image:-o-linear-gradient(top, #5cb85c 0%, #419641 100%);background-image:linear-gradient(to bottom, #5cb85c 0%, #419641 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5CB85C', endColorstr='#FF419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);background-image:-o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);background-image:linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5BC0DE', endColorstr='#FF2AABD2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:-o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF0AD4E', endColorstr='#FFEB9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);background-image:-o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);background-image:linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9534F', endColorstr='#FFC12E2A', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail,.o_form .o_filepreview img,.o_feed .o_media{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF5F5F5', endColorstr='#FFE8E8E8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #335a78 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF335A78', GradientType=0);background-color:#335a78}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF8F8F8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);background-image:-o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);background-image:linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDBDBDB', endColorstr='#FFE2E2E2', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);background-image:-o-linear-gradient(top, #3c3c3c 0%, #222 100%);background-image:linear-gradient(to bottom, #3c3c3c 0%, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3C3C3C', endColorstr='#FF222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #090909 0%, #0f0f0f 100%);background-image:-o-linear-gradient(top, #090909 0%, #0f0f0f 100%);background-image:linear-gradient(to bottom, #090909 0%, #0f0f0f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF090909', endColorstr='#FF0F0F0F', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width: 767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #335a78 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF335A78', GradientType=0)}}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);background-image:-o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);background-image:linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDFF0D8', endColorstr='#FFC8E5BC', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);background-image:-o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);background-image:linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9EDF7', endColorstr='#FFB9DEF0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);background-image:-o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);background-image:linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFCF8E3', endColorstr='#FFF8EFC0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);background-image:-o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);background-image:linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF2DEDE', endColorstr='#FFE7C3C3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);background-image:linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEBEBEB', endColorstr='#FFF5F5F5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #3b678a 0%, #2c4c66 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #2c4c66 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #2c4c66 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF2C4C66', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);background-image:-o-linear-gradient(top, #5cb85c 0%, #449d44 100%);background-image:linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5CB85C', endColorstr='#FF449D44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);background-image:-o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);background-image:linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5BC0DE', endColorstr='#FF31B0D5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);background-image:-o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);background-image:linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF0AD4E', endColorstr='#FFEC971F', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);background-image:-o-linear-gradient(top, #d9534f 0%, #c9302c 100%);background-image:linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9534F', endColorstr='#FFC9302C', GradientType=0)}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #2c4c66;background-image:-webkit-linear-gradient(top, #3b678a 0%, #30536f 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #30536f 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #30536f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF30536F', GradientType=0);border-color:#30536f}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF5F5F5', endColorstr='#FFE8E8E8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #335a78 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF335A78', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);background-image:-o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);background-image:linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDFF0D8', endColorstr='#FFD0E9C6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);background-image:-o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);background-image:linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9EDF7', endColorstr='#FFC4E3F3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);background-image:-o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);background-image:linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFCF8E3', endColorstr='#FFFAF2CC', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);background-image:-o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);background-image:linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF2DEDE', endColorstr='#FFEBCCCC', GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);background-image:linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFE8E8E8', endColorstr='#FFF5F5F5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}.o_button_dirty{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);background-image:-webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:-o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF0AD4E', endColorstr='#FFEB9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.o_button_dirty:active,.o_button_dirty.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.o_button_dirty:hover,.o_button_dirty:focus{background-color:#eb9316;background-position:0 -15px}.o_button_dirty:active,.o_button_dirty.active{background-color:#eb9316;border-color:#e38d13}.o_button_dirty:disabled,.o_button_dirty[disabled]{background-color:#eb9316;background-image:none}.o_login .o_login_social .btn-default{text-shadow:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook{background-image:-webkit-linear-gradient(top, #4568b2 0%, #344e86 100%);background-image:-o-linear-gradient(top, #4568b2 0%, #344e86 100%);background-image:linear-gradient(to bottom, #4568b2 0%, #344e86 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF4568B2', endColorstr='#FF344E86', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#314a7f}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus{background-color:#344e86;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#344e86;border-color:#314a7f}.o_login .o_login_social .btn-default.o_sel_auth_facebook:disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]{background-color:#344e86;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter{background-image:-webkit-linear-gradient(top, #2cc5ff 0%, #00acee 100%);background-image:-o-linear-gradient(top, #2cc5ff 0%, #00acee 100%);background-image:linear-gradient(to bottom, #2cc5ff 0%, #00acee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF2CC5FF', endColorstr='#FF00ACEE', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#00a5e4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus{background-color:#00acee;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#00acee;border-color:#00a5e4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]{background-color:#00acee;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google{background-image:-webkit-linear-gradient(top, #e15f4f 0%, #cf3623 100%);background-image:-o-linear-gradient(top, #e15f4f 0%, #cf3623 100%);background-image:linear-gradient(to bottom, #e15f4f 0%, #cf3623 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFE15F4F', endColorstr='#FFCF3623', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#c73422}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus{background-color:#cf3623;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#cf3623;border-color:#c73422}.o_login .o_login_social .btn-default.o_sel_auth_google:disabled,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]{background-color:#cf3623;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{background-image:-webkit-linear-gradient(top, #0181bd 0%, #015780 100%);background-image:-o-linear-gradient(top, #0181bd 0%, #015780 100%);background-image:linear-gradient(to bottom, #0181bd 0%, #015780 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF0181BD', endColorstr='#FF015780', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#015176}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus{background-color:#015780;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#015780;border-color:#015176}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]{background-color:#015780;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs{background-image:-webkit-linear-gradient(top, #1a1a1a 0%, #000 100%);background-image:-o-linear-gradient(top, #1a1a1a 0%, #000 100%);background-image:linear-gradient(to bottom, #1a1a1a 0%, #000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF1A1A1A', endColorstr='#FF000000', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#000}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus{background-color:#000;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#000;border-color:#000}.o_login .o_login_social .btn-default.o_sel_auth_adfs:disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]{background-color:#000;background-image:none}.btn-default.btn-success,.btn-default.btn-info,.btn-default.btn-warning,.btn-default.btn-danger,.btn-default.btn-primary,.btn-default.o_button_dirty{text-shadow:none}.o_navbar.o_navbar-default{background-image:-webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF8F8F8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.o_navbar.o_navbar-default .o_navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);background-image:-o-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);background-image:linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEBEBEB', endColorstr='#FFF3F3F3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.o_navbar.o_navbar-default .o_navbar-nav>.active>a.o_navbar_tab_close{background:none;-webkit-box-shadow:none;box-shadow:none}.o_navbar-brand,.o_navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.o_navbar-offcanvas .dropdown-menu>li>a:hover,.o_navbar-offcanvas .dropdown-menu>li>a:focus{background-image:none}.o_toolbar{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05)}.o_toolbar .o_breadcrumb .breadcrumb{background-image:-webkit-linear-gradient(top, #fff 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #fff 0%, #f5f5f5 100%);background-image:linear-gradient(to bottom, #fff 0%, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF5F5F5', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.o_toolbar .o_tools_container{background-image:-webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF8F8F8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{background-image:-webkit-linear-gradient(top, #fff 0%, #e2e2e2 100%);background-image:-o-linear-gradient(top, #fff 0%, #e2e2e2 100%);background-image:linear-gradient(to bottom, #fff 0%, #e2e2e2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFE2E2E2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.o_toolbar .o_tool_next :hover,.o_toolbar .o_tool_previous :hover{background-color:#e2e2e2}.o_tree{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05)}.o_navbar-brand{padding:15px 15px;font-size:28px;color:#3b678a !important}.o_navbar-brand:after{content:"\E600";font-family:openolat} \ No newline at end of file +.o_note h2,.o_note h3,.o_note h4,.o_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_note h2,.o_note h5,.b_note h2,.o_form .o_desc h2,.o_course_run .o_statusinfo h2,.o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h3,.o_form .o_desc h3,.o_course_run .o_statusinfo h3,.o_course_stats .o_desc h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h3,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h3,.b_note h4,.o_form .o_desc h4,.o_course_run .o_statusinfo h4,.o_course_stats .o_desc h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.b_note .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_note h2,.o_form .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_desc h2,.o_course_run .o_statusinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_statusinfo h2,.o_course_stats .o_desc .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_stats .o_desc h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h2,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2,.b_note h5,.o_form .o_desc h5,.o_course_run .o_statusinfo h5,.o_course_stats .o_desc h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback h5,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h5{color:#31708f}.o_important,.b_important,p.b_important,div.b_important,.o_bc_empty,.o_course_run .o_no_scoreinfo{margin:20px 0;padding:20px;border-left:3px solid #F4D000;background-color:#FFF1A4}.o_important h2,.o_important h3,.o_important h4,.o_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_important h2,.o_important h5,.b_important h2,.o_bc_empty h2,.o_course_run .o_no_scoreinfo h2,.b_important h3,.o_bc_empty h3,.o_course_run .o_no_scoreinfo h3,.b_important h4,.o_bc_empty h4,.o_course_run .o_no_scoreinfo h4,.b_important .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_important h2,.o_bc_empty .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_bc_empty h2,.o_course_run .o_no_scoreinfo .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_course_run .o_no_scoreinfo h2,.b_important h5,.o_bc_empty h5,.o_course_run .o_no_scoreinfo h5{color:#F4D000}.o_success,.b_success,p.b_success,div.b_success,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #3c763d;background-color:#dff0d8}.o_success h2,.o_success h3,.o_success h4,.o_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_success h2,.o_success h5,.b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h3,.b_success h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h4,.b_success .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_success h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h2,.b_success h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback h5{color:#3c763d}.o_warning,.b_warning,p.b_warning,div.b_warning,.o_form .o_warning{margin:20px 0;padding:20px;border-left:3px solid #8a6d3b;background-color:#fcf8e3}.o_warning h2,.o_warning h3,.o_warning h4,.o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_warning h2,.o_warning h5,.b_warning h2,.o_form .o_warning h2,.b_warning h3,.o_form .o_warning h3,.b_warning h4,.o_form .o_warning h4,.b_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_warning h2,.o_form .o_warning .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_form .o_warning h2,.b_warning h5,.o_form .o_warning h5{color:#8a6d3b}.o_error,.b_error,p.b_error,div.b_error,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin:20px 0;padding:20px;border-left:3px solid #a94442;background-color:#f2dede}.o_error h2,.o_error h3,.o_error h4,.o_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_error h2,.o_error h5,.b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h3,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h3,.b_error h4,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h4,.b_error .o_cal .fc-header-title h2,.o_cal .fc-header-title .b_error h2,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h2,.b_error h5,.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback h5{color:#a94442}div.o_callout_overlay{position:fixed;top:0;left:0;width:100%;height:100%;zoom:1;background:#000;opacity:0;filter:alpha(opacity=0)}.o_alert_info{position:fixed;top:-100%;left:0;display:none;z-index:2000;width:100%;text-align:center}.o_alert_info .alert{position:relative;width:auto;margin:0 auto;text-align:left;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.o_alert_info .alert .o_alert_close{float:right;color:#777}.o_alert_info .alert .o_alert_close:hover{color:#555}@media (min-width: 768px){.o_alert_info .alert{width:600px}}#o_msg_sticky,#o_msg_sticky_preview{position:relative;color:#a94442;background-color:#f2dede;border:1px solid #ebccd1;padding:10px 16px 10px 60px;min-height:40px;margin:-20px 0 20px 0}#o_msg_sticky .o_icon_info_msg,#o_msg_sticky_preview .o_icon_info_msg{position:absolute;left:10px;top:5px;font-size:40px}#o_msg_sticky.o_msg_sticky_fullscreen,#o_msg_sticky_preview.o_msg_sticky_fullscreen{margin-top:0}@media (min-width: 768px){.modal .o_modal_fullwidth{width:90%}}@media (min-width: 992px){.modal .o_modal_fullwidth{width:80%}}.modal .modal-header h4,.modal .modal-header .o_cal .fc-header-title h2,.o_cal .fc-header-title .modal .modal-header h2{color:#3b678a;font-weight:500;font-family:inherit;line-height:1.1}.o_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_tree a{color:#777;background-color:none}.o_tree a:hover,.o_tree a:focus{color:#333}.o_tree .o_tree_link{background-color:none}.o_tree .o_tree_link:hover,.o_tree .o_tree_link:focus{background-color:#f8f8f8}.o_tree .o_tree_link:first-child{background-color:transparent}.o_tree .o_tree_link:last-child:hover,.o_tree .o_tree_link:last-child:focus{background-color:#f8f8f8}.o_tree .o_insertion_point>a>span{padding:5px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_insertion_source>a>span.o_tree_item,.o_tree .o_insertion_source>a>span.o_dnd_item{border-bottom:solid #f90 4px;background-color:#fefbf6}.o_tree ul{margin:0;padding:0;list-style-type:none}.o_tree ul li{margin:0;padding:0;white-space:nowrap}.o_tree ul li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_tree ul li div.popover{position:absolute;left:auto;right:0}.o_tree ul li div a.o_tree_oc_l0{position:absolute;top:10px;left:-4px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l0,.o_tree ul .o_tree_level_close.b_tree_oc_l0{z-index:10}.o_tree ul li div a.o_tree_oc_l1{position:absolute;top:10px;left:11px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l1,.o_tree ul .o_tree_level_close.b_tree_oc_l1{z-index:10}.o_tree ul li div a.o_tree_oc_l2{position:absolute;top:10px;left:26px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l2,.o_tree ul .o_tree_level_close.b_tree_oc_l2{z-index:10}.o_tree ul li div a.o_tree_oc_l3{position:absolute;top:10px;left:41px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l3,.o_tree ul .o_tree_level_close.b_tree_oc_l3{z-index:10}.o_tree ul li div a.o_tree_oc_l4{position:absolute;top:10px;left:56px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l4,.o_tree ul .o_tree_level_close.b_tree_oc_l4{z-index:10}.o_tree ul li div a.o_tree_oc_l5{position:absolute;top:10px;left:71px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l5,.o_tree ul .o_tree_level_close.b_tree_oc_l5{z-index:10}.o_tree ul li div a.o_tree_oc_l6{position:absolute;top:10px;left:86px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l6,.o_tree ul .o_tree_level_close.b_tree_oc_l6{z-index:10}.o_tree ul li div a.o_tree_oc_l7{position:absolute;top:10px;left:101px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l7,.o_tree ul .o_tree_level_close.b_tree_oc_l7{z-index:10}.o_tree ul li div a.o_tree_oc_l8{position:absolute;top:10px;left:116px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l8,.o_tree ul .o_tree_level_close.b_tree_oc_l8{z-index:10}.o_tree ul li div a.o_tree_oc_l9{position:absolute;top:10px;left:131px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l9,.o_tree ul .o_tree_level_close.b_tree_oc_l9{z-index:10}.o_tree ul li div a.o_tree_oc_l10{position:absolute;top:10px;left:146px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l10,.o_tree ul .o_tree_level_close.b_tree_oc_l10{z-index:10}.o_tree ul li div a.o_tree_oc_l11{position:absolute;top:10px;left:161px;z-index:9}.o_tree ul .o_tree_level_open.b_tree_oc_l11,.o_tree ul .o_tree_level_close.b_tree_oc_l11{z-index:10}.o_tree ul li div span.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_tree ul li div span.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_tree ul li div span.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_tree ul li div span.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_tree ul li div span.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_tree ul li div span.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_tree ul li div span.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_tree ul li div span.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_tree ul li div span.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_tree ul li div span.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_tree ul li div span.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_tree ul li div span.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_tree ul span.o_tree_leaf{display:none}.o_tree ul span.o_tree_link>input[type=checkbox]{margin-right:5px}.o_tree ul li .badge{position:absolute;font-size:70%}.o_tree ul li .badge:before{content:none}.o_tree ul li .badge.o_badge_1{top:3px;right:1px}.o_tree ul li .badge.o_badge_2{bottom:3px;right:1px}.o_tree ul li .badge.o_badge_3{top:3px;right:25px}.o_tree ul li .badge.o_badge_4{bottom:3px;right:25px}.o_tree ul li div.o_dnd_sibling{margin:0;padding:0;border-bottom:none}.o_tree ul li .active.o_tree_link{background-color:none;font-weight:bold}.o_tree ul li .active.o_tree_link a{color:#3b678a}.o_tree ul li .active.o_tree_link:hover,.o_tree ul li .active.o_tree_link:focus{background-color:#eee}.o_tree ul li .active.o_tree_link:hover a,.o_tree ul li .active.o_tree_link:focus a{color:#243f54}.o_tree ul li .active_parent.o_tree_link{font-weight:bold}.o_tree ul li .active_parent.o_tree_link a{color:#777}.o_tree ul li .active_parent.o_tree_link a:hover,.o_tree ul li .active_parent.o_tree_link a:focus{color:#333}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l0{left:6px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l1{left:21px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l2{left:36px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l3{left:51px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l4{left:66px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l5{left:81px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l6{left:96px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l7{left:111px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l8{left:126px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l9{left:141px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l10{left:156px}.o_tree.o_tree_root_hidden ul li div .o_tree_oc_l11{left:171px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l0{padding:10px 2px 10px 20px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l1{padding:10px 2px 10px 35px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l2{padding:10px 2px 10px 50px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l3{padding:10px 2px 10px 65px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l4{padding:10px 2px 10px 80px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l5{padding:10px 2px 10px 95px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l6{padding:10px 2px 10px 110px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l7{padding:10px 2px 10px 125px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l8{padding:10px 2px 10px 140px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l9{padding:10px 2px 10px 155px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l10{padding:10px 2px 10px 170px}.o_tree.o_tree_root_hidden ul li div span.o_tree_l11{padding:10px 2px 10px 185px}.o_tree .o_dnd_item{cursor:move;z-index:100}.o_tree .o_dnd_proxy{opacity:0.4;filter:alpha(opacity=40);background-color:#f0ad4e;padding:5px 10px 5px 10px;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.o_tree .o_dnd_item.o_dnd_over{background-color:#ffff60}.o_tree .o_dnd_sibling{height:7px;width:100%}.o_tree .o_dnd_sibling.o_dnd_over{background:transparent url(../light/images/arrow_dd.png) top left no-repeat}.o_tree .o_dnd_l1{margin-left:0 !important}.o_tree .o_dnd_l2{margin-left:1em !important}.o_tree .o_dnd_l3{margin-left:2em !important}.o_tree .o_dnd_l4{margin-left:3em !important}.o_tree .o_dnd_l5{margin-left:4em !important}.o_tree .o_dnd_l6{margin-left:5em !important}.o_tree .o_dnd_l7{margin-left:6em !important}.o_tree .o_dnd_l8{margin-left:7em !important}.o_tree .o_dnd_l9{margin-left:8em !important}.o_tree .o_dnd_l10{margin-left:9em !important}.o_tree .o_dnd_l11{margin-left:10em !important}.o_tree.o_tree_insert_tool span.o_tree_link a{display:block}.o_offcanvas .o_tree{border:0}.o_selection_tree{position:relative;display:block;background-color:none;border:1px solid #ddd;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;overflow:hidden;font-size:14px}.o_selection_tree ul{margin:0;padding:0;list-style-type:none}.o_selection_tree li{margin:0;padding:0;white-space:nowrap}.o_selection_tree li div{position:relative;margin-bottom:-1px;border-bottom:1px solid #ddd}.o_selection_tree li>div>span.o_tree_l0,.o_selection_tree li>div>div.checkbox.o_tree_l0,.o_selection_tree li>div>div.radio.o_tree_l0{display:block;padding:10px 2px 10px 10px;z-index:9}.o_selection_tree li>div>span.o_tree_l1,.o_selection_tree li>div>div.checkbox.o_tree_l1,.o_selection_tree li>div>div.radio.o_tree_l1{display:block;padding:10px 2px 10px 25px;z-index:9}.o_selection_tree li>div>span.o_tree_l2,.o_selection_tree li>div>div.checkbox.o_tree_l2,.o_selection_tree li>div>div.radio.o_tree_l2{display:block;padding:10px 2px 10px 40px;z-index:9}.o_selection_tree li>div>span.o_tree_l3,.o_selection_tree li>div>div.checkbox.o_tree_l3,.o_selection_tree li>div>div.radio.o_tree_l3{display:block;padding:10px 2px 10px 55px;z-index:9}.o_selection_tree li>div>span.o_tree_l4,.o_selection_tree li>div>div.checkbox.o_tree_l4,.o_selection_tree li>div>div.radio.o_tree_l4{display:block;padding:10px 2px 10px 70px;z-index:9}.o_selection_tree li>div>span.o_tree_l5,.o_selection_tree li>div>div.checkbox.o_tree_l5,.o_selection_tree li>div>div.radio.o_tree_l5{display:block;padding:10px 2px 10px 85px;z-index:9}.o_selection_tree li>div>span.o_tree_l6,.o_selection_tree li>div>div.checkbox.o_tree_l6,.o_selection_tree li>div>div.radio.o_tree_l6{display:block;padding:10px 2px 10px 100px;z-index:9}.o_selection_tree li>div>span.o_tree_l7,.o_selection_tree li>div>div.checkbox.o_tree_l7,.o_selection_tree li>div>div.radio.o_tree_l7{display:block;padding:10px 2px 10px 115px;z-index:9}.o_selection_tree li>div>span.o_tree_l8,.o_selection_tree li>div>div.checkbox.o_tree_l8,.o_selection_tree li>div>div.radio.o_tree_l8{display:block;padding:10px 2px 10px 130px;z-index:9}.o_selection_tree li>div>span.o_tree_l9,.o_selection_tree li>div>div.checkbox.o_tree_l9,.o_selection_tree li>div>div.radio.o_tree_l9{display:block;padding:10px 2px 10px 145px;z-index:9}.o_selection_tree li>div>span.o_tree_l10,.o_selection_tree li>div>div.checkbox.o_tree_l10,.o_selection_tree li>div>div.radio.o_tree_l10{display:block;padding:10px 2px 10px 160px;z-index:9}.o_selection_tree li>div>span.o_tree_l11,.o_selection_tree li>div>div.checkbox.o_tree_l11,.o_selection_tree li>div>div.radio.o_tree_l11{display:block;padding:10px 2px 10px 175px;z-index:9}.o_breadcrumb{position:relative}.o_breadcrumb .o_breadcrumb_close{float:right;position:relative;margin:0 0 0 15px;vertical-align:middle}.o_breadcrumb .o_breadcrumb_close a{line-height:15px;color:#d9534f}.o_breadcrumb .o_breadcrumb_close a:hover{color:#b52b27}.o_breadcrumb .o_breadcrumb_close a i{font-size:16px}.o_breadcrumb .o_breadcrumb_close a span{display:none}.o_breadcrumb .o_breadcrumb_close:before{content:none}.o_form .o_icon_mandatory{margin-right:0.25em}.o_form .o_form_chelp{padding-left:0.25em;margin-right:-1.25em}.o_form .o_form_example{font-size:90%}.o_form .o_error{margin-top:1px;margin-bottom:0;padding:10px}.o_form hr.o_spacer_noline{border-top:1px solid transparent}.o_form hr.o_spacer.form,.o_form hr.o_spacer_noline.form{margin-top:0px;margin-bottom:0px}.o_form .form-group.o_omit_margin{margin-bottom:0}.o_form .o_date{position:relative;padding-right:34px}.o_form .o_date.form-inline .form-group,.o_form .o_date.o_navbar-form .form-group{margin-left:0}.o_form input.o_date_ms{width:3em}.o_form .o_date.form-inline .o_date_ms.form-group,.o_form .o_date.o_navbar-form .o_date_ms.form-group{margin-left:25px}.o_form .has-feedback .o_date.form-inline .form-control.o_date_ms,.o_form .has-feedback .o_date.o_navbar-form .form-control.o_date_ms{padding-right:0}.o_form .o_form_element.form-inline .o_form_element.form-group,.o_form .o_form_element.o_navbar-form .o_form_element.form-group{margin-left:25px}.o_form .input-group.o_date_picker{width:16em}.o_form .o_filepreview{margin-bottom:10px}.o_form .o_fileinput{cursor:pointer;position:relative}.o_form .o_fileinput .o_fakechooser{position:relative;z-index:1}.o_form .o_fileinput .o_realchooser{position:absolute;top:0;right:0;z-index:2;opacity:0;filter:alpha(opacity=0)}.o_form .o_fileinput .o_realchooser.o_chooser_with_delete{right:38px}.o_form .has-feedback.has-error .o_fileinput .o_fakechooser{margin-right:30px}.o_form .form-control.textarea_disabled{resize:both;overflow:auto;white-space:pre-wrap;background:#fafafa}.o_centered_form{text-align:center}.o_centered_form fieldset.o_form{display:inline-block;text-align:left}.o_choice_checkrow,.o_choice_textrow{vertical-align:text-top;padding-bottom:2px}.o_choice_textrow{padding-left:1em}.o_togglecheck a{white-space:nowrap}.o_catalog .o_catalog_delete_img{position:relative;top:-0.5em}.o_button_dirty{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_button_dirty:hover,.o_button_dirty:focus,.o_button_dirty.focus,.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_button_dirty:active,.o_button_dirty.active,.open>.o_button_dirty.dropdown-toggle{background-image:none}.o_button_dirty.disabled,.o_button_dirty.disabled:hover,.o_button_dirty.disabled:focus,.o_button_dirty.disabled.focus,.o_button_dirty.disabled:active,.o_button_dirty.disabled.active,.o_button_dirty[disabled],.o_button_dirty[disabled]:hover,.o_button_dirty[disabled]:focus,.o_button_dirty[disabled].focus,.o_button_dirty[disabled]:active,.o_button_dirty[disabled].active,fieldset[disabled] .o_button_dirty,fieldset[disabled] .o_button_dirty:hover,fieldset[disabled] .o_button_dirty:focus,fieldset[disabled] .o_button_dirty.focus,fieldset[disabled] .o_button_dirty:active,fieldset[disabled] .o_button_dirty.active{background-color:#f0ad4e;border-color:#eea236}.o_button_dirty .badge{color:#f0ad4e;background-color:#fff}.o_button_toggle{border:1px solid #777;border-top-right-radius:9px;border-top-left-radius:9px;border-bottom-right-radius:9px;border-bottom-left-radius:9px;background:#eee;display:inline-block;height:18px;line-height:16px;font-size:16px;text-align:left;padding:0 0.5em 0 0;margin:0}.o_button_toggle i{color:#777;text-shadow:1px 0 2px rgba(0,0,0,0.25)}.o_button_toggle span{line-height:16px;vertical-align:top;font-size:60%;color:#777;text-transform:uppercase}.o_button_toggle.o_on{text-align:right;padding:0 0 0 0.5em}.o_button_toggle.o_on i{color:#3b678a;text-shadow:-1px 0 2px rgba(0,0,0,0.25)}.o_table_wrapper{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:-ms-autohiding-scrollbar;-webkit-overflow-scrolling:touch}.o_table_wrapper.o_table_flexi .o_table_body{margin-top:20px}.o_table_wrapper.o_table_flexi .table{margin-top:20px}.o_table_wrapper.o_table_flexi .table td ul{margin:0}.o_table_wrapper.o_table_flexi.o_table_no_margin .table{margin:0}.o_table_wrapper.o_table_edit table tbody{border-top:solid #f90 4px;background-color:#fefbf6}.o_table_wrapper .o_table_search{max-width:50em}.o_table_wrapper .o_table_footer .o_table_pagination{text-align:center}.o_table_wrapper .o_table_rows_infos{float:left;padding-left:0;padding-right:20px;margin:20px 0}.o_table_wrapper .o_row_selected td{background-color:#dff0d8 !important}.o_table_wrapper .o_table{margin-bottom:0}.o_table_wrapper .o_marked{font-weight:bold}.o_table_wrapper .table{margin-bottom:0}.o_table_wrapper th a,.o_table_wrapper th a:hover{color:#333;text-decoration:none}.o_table_search a.btn.o_reset_quick_search{width:38px;margin-left:-38px;z-index:5;color:grey}@media (max-width: 767px){.o_table_wrapper .o_table_rows_infos{clear:both}}a.o_orderby,a.o_orderby:hover{color:#333;text-decoration:none}a.o_orderby.o_orderby_asc,a.o_orderby.o_orderby_desc,a.o_orderby:hover.o_orderby_asc,a.o_orderby:hover.o_orderby_desc{border-bottom:1px solid #ddd}.o_table_row_count{padding-top:6px;padding-bottom:6px;vertical-align:middle}.o_table_row_details td{background-color:white !important}.o_table_config{font-size:12px}.o_table_buttons{text-align:center}.o_table_buttons input{margin-right:1em}.o_table_buttons input:last-child{margin-right:0}.o_table_tools{margin-left:6px}.o_table_tools_indications{margin-left:10px;padding-top:3px;font-size:80%}.o_table_tools_indications a{color:#d9534f}.o_table_toolbar_left .o_table_tools_indications{text-align:right}.o_table_count{max-width:20em;float:left;padding:0 15px}.o_info .table-bordered td,o_note .table-bordered td,o_important .table-bordered td,o_warning .table-bordered td,o_error .table-bordered td{border-color:#333}.panel .o_table_layout{border-top:1px solid #ddd;padding-top:6px}.panel .o_table_count{padding:0 15px}#o_navbar_imclient .o_im_messages{float:left}#o_navbar_imclient #o_im_message,#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_summary{float:left;position:relative;padding:15px 3px}#o_navbar_imclient #o_im_status,#o_navbar_imclient #o_im_message{padding-left:15px}#o_navbar_imclient #o_im_summary .badge{color:#fff;background-color:#777}#o_navbar_imclient #o_im_status li>a>span{display:inline}#o_navbar_imclient #o_im_status div.o_chelp_wrapper{right:0.5em}#o_navbar_imclient #o_im_message a:hover,#o_navbar_imclient #o_im_message a:focus{text-decoration:none}#o_navbar_imclient #o_im_message .o_icon_message{color:#d9534f}#o_navbar_imclient #o_im_message .o_icon_message:hover{color:#f4c37d}.o_im_load_history{margin-bottom:6px}.o_im_load_history .o_label{font-size:12px;padding-right:0.5em;line-height:1.5em;color:#777}.o_im_chat_history{height:170px;font-size:90%;border:1px solid #eee;margin:0 0 1em 0;overflow:scroll;overflow-x:auto}.o_im_message_group{padding:3px 3px 3px 40px;min-height:40px;position:relative;border-top:1px solid #eee;background:#fff}.o_im_message_group.o_odd{background:#F4F4F4}.o_im_message_group .o_portrait{position:absolute;top:3px;left:3px}.o_im_message_group .o_im_from{color:#777;font-size:12px;font-weight:bold}.o_im_message_group .o_im_from:hover{color:#5e5e5e}.o_im_message_group div.o_im_body{padding:3px 0 3px 0;font-size:12px}.o_im_message_group div.o_im_body .o_date{float:right;color:#777;font-size:9px}.o_groupchat_roster{font-size:12px}.o_groupchat_roster li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333}.o_groupchat_roster li.o_vip{color:#3c763d}.o_groupchat_roster li.o_anonymous{color:#31708f}.o_im_buddieslist .o_im_buddieslist_toggler .btn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_im_buddieslist ul{font-size:12px}.o_im_buddieslist ul ul{padding-left:1em}.o_im_buddieslist ul a{color:#3b678a}.o_im_buddieslist ul a:hover{color:#243f54}.o_flag{position:relative;top:1px;display:inline-block;line-height:1;width:16px;height:16px;background-repeat:no-repeat;background-position:0 100%}option.o_with_flag{padding-left:23px;min-height:16px;background-repeat:no-repeat;background-position:2px 50%}.o_flag_en{background-image:url("../light/images/flags/gb.png")}.o_flag_de{background-image:url("../light/images/flags/de.png")}.o_flag_fr{background-image:url("../light/images/flags/fr.png")}.o_flag_it{background-image:url("../light/images/flags/it.png")}.o_flag_es{background-image:url("../light/images/flags/es.png")}.o_flag_da{background-image:url("../light/images/flags/dk.png")}.o_flag_cs{background-image:url("../light/images/flags/cz.png")}.o_flag_el{background-image:url("../light/images/flags/gr.png")}.o_flag_ee{background-image:url("../light/images/flags/ee.png")}.o_flag_ru{background-image:url("../light/images/flags/ru.png")}.o_flag_pl{background-image:url("../light/images/flags/pl.png")}.o_flag_zh_CN{background-image:url("../light/images/flags/cn.png")}.o_flag_zh_TW{background-image:url("../light/images/flags/tw.png")}.o_flag_lt{background-image:url("../light/images/flags/lt.png")}.o_flag_fa{background-image:url("../light/images/flags/ir.png")}.o_flag_pt_PT{background-image:url("../light/images/flags/pt.png")}.o_flag_pt_BR{background-image:url("../light/images/flags/br.png")}.o_flag_tr{background-image:url("../light/images/flags/tr.png")}.o_flag_hu{background-image:url("../light/images/flags/hu.png")}.o_flag_sq{background-image:url("../light/images/flags/al.png")}.o_flag_in{background-image:url("../light/images/flags/id.png")}.o_flag_ar{background-image:url("../light/images/flags/eg.png")}.o_flag_rm{background-image:url("../light/images/flags/rm.png")}.o_flag_af{background-image:url("../light/images/flags/za.png")}.o_flag_vi{background-image:url("../light/images/flags/vn.png")}.o_flag_mn{background-image:url("../light/images/flags/mn.png")}.o_flag_iw{background-image:url("../light/images/flags/il.png")}.o_flag_ko{background-image:url("../light/images/flags/kr.png")}.o_flag_nl_NL{background-image:url("../light/images/flags/nl.png")}.o_flag_jp{background-image:url("../light/images/flags/jp.png")}.o_flag_nb_NO{background-image:url("../light/images/flags/no.png")}.o_flag_et_EE{background-image:url("../light/images/flags/ee.png")}.o_flag_bg{background-image:url("../light/images/flags/bg.png")}.o_flag_hi_IN_ASIA{background-image:url("../light/images/flags/in.png")}.o_flag_ar_LB{background-image:url("../light/images/flags/lb.png")}.o_flag_gl_ES{background-image:url("../light/images/flags/galicia.png")}.o_flag_sk{background-image:url("../light/images/flags/sk.png")}.o_rating .o_rating_title{font-size:12px}.o_rating .o_rating_items{white-space:nowrap}.o_rating .o_rating_items .o_icon{color:#f0ad4e}.o_rating .o_rating_items .o_icon:hover{color:#3b678a}.o_rating .o_rating_items .o_legend{margin-left:1em;font-size:12px;line-height:normal}.o_rating .o_rating_explanation{font-size:12px;color:#777}@media (max-width: 991px){.o_rating .o_rating_title,.o_rating .o_rating_explanation{display:none}}.o_comments .o_comment_wrapper .o_avatar{float:left;margin:0 1em 0 0}.o_comments .o_comment_wrapper .o_reply,.o_comments .o_comment_wrapper .o_delete{float:right}.o_comments .o_comment_wrapper .o_comment_wrapper{margin-left:16px}.o_ratings_and_comments .o_rating_wrapper{vertical-align:middle;display:inline-block}.o_ratings_and_comments a.o_comments{margin-left:10px;position:relative;top:0.1em}.d3chart .bar{shape-rendering:crispEdges}.d3chart .bar_default_light{fill:#598eb8}.d3chart .bar_default,.d3chart .bubble_default{fill:#3b678a}.d3chart .bar_default_dark{fill:#243f54}.d3chart .axis{font:12px sans-serif}.d3chart .axis path,.d3chart .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_forum_peekview .o_quote_wrapper,.o_forum_peekview .b_quote_wrapper{display:none}.o_forum_thread_sticky{font-weight:bold}.o_forum_switch{font-size:12px}.o_forum_toolbar{margin-bottom:6px;float:left}.o_forum_fulltextsearch{float:right}@media (max-width: 767px){.o_forum_fulltextsearch{float:left}.o_forum_toolbar .o_forum_tool span{display:none}}.o_forum{padding-bottom:50px}.o_forum .o_mark,.o_forum .o_ep_collect{float:right;position:relative;width:2em;margin-left:12px}.o_forum .o_portrait{float:left;margin-right:16px}.o_forum .o_portrait_avatar{width:70px;height:70px}.o_forum .o_newindicator{font-size:10px;color:#5cb85c;text-transform:uppercase;padding-left:1em;vertical-align:text-top;white-space:nowrap}.o_forum .o_author,.o_forum .o_date{display:inline-block;color:#777}.o_forum .o_date{font-size:12px}.o_forum .o_modified{color:#8a6d3b;font-size:12px;font-style:italic}.o_forum .o_forum_message{margin-bottom:20px;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_forum .o_forum_message_new{-webkit-box-shadow:0 1px 10px rgba(92,184,92,0.3);box-shadow:0 1px 10px rgba(92,184,92,0.3)}.o_forum .o_forum_message_highlight{-webkit-box-shadow:0 1px 10px rgba(240,173,78,0.5);box-shadow:0 1px 10px rgba(240,173,78,0.5)}.o_forum .o_forum_message_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:3px;border-top-left-radius:3px}.o_forum .o_forum_message_title{margin-top:0}.o_forum .o_forum_message_body{padding:10px 15px}.o_forum .o_forum_message_attachments{border-top:1px solid #ddd;padding:10px 15px;font-size:12px;background-color:#f7f7f9}.o_forum .o_attachment{position:relative;max-width:250px;vertical-align:top;margin:6px 12px 10px 0}.o_forum .o_attachment img{margin-top:6px}.o_forum .o_filename{max-width:250px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_forum .o_icon_enlarge{position:absolute;left:1em;bottom:1em;text-shadow:1px 1px 2px #fff, -1px 1px 2px #fff, 1px -1px 2px #fff, -1px -1px 2px #fff}@media (min-width: 768px) and (max-width: 991px){.o_forum .o_attachments{font-size:10px}.o_forum .o_attachment{max-width:200px}.o_forum .o_attachment img{max-width:150px}.o_forum .o_filename{max-width:200px}}@media (max-width: 767px){.o_forum .o_attachments{font-size:9px}.o_forum .o_attachment{max-width:150px}.o_forum .o_attachment img{max-width:100px}.o_forum .o_filename{max-width:150px}}.o_quote_wrapper,.b_quote_wrapper{position:relative;margin:10px 0}.o_quote_author,.b_quote_author{color:#777;font-size:12px}.o_quote_author:before,.b_quote_author:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";font-size:21px;padding-right:0.5em}blockquote.o_quote,blockquote.b_quote{color:#555;font-size:12px;margin-top:6px;padding:0 12px}a.o_chelp{display:inline-block;padding:1px 3px;text-align:center;vertical-align:middle;white-space:nowrap;font-size:10px;font-weight:normal;line-height:15px;color:#fff;background-color:#3b678a;border:1px solid #335a78;border-radius:2px;cursor:help;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}a.o_chelp:active,a.o_chelp:hover,a.o_chelp:focus{text-decoration:none;color:#fff;background-color:#2f526d;border-color:#213a4d}a.o_chelp i{font-size:10px !important}.o_chelp_wrapper{position:relative;float:right;display:inline-block;line-height:normal;margin-bottom:10px;margin-left:10px}.o_form_chelp,.o_chelp_tooltip{color:#737373}.o_draw_circle{border:4px solid #3b678a;border-radius:50%;position:absolute !important}.o_draw_rectangle{border:4px solid #3b678a;position:absolute !important}.o_iframedisplay iframe{width:100%}.o_singlepage .o_edit{position:absolute;top:10px;right:37px}.o_content_popup{position:absolute;top:10px;right:12px}.o_module_cp_wrapper .o_tools{position:absolute;top:10px;right:12px;text-align:right;vertical-align:middle}.o_module_cp_wrapper .o_tools .o_search_wrapper{display:inline-block;position:relative;top:-2px}ul.o_dropdown{margin:-5px -14px}ul.o_dropdown .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}ul.o_dropdown>li>a{display:block;padding:5px 14px;clear:both;font-weight:normal;line-height:1.42857;color:#333;background:#fff;white-space:nowrap}ul.o_dropdown>li>a:hover,ul.o_dropdown>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.badge.o_scorm_completed{background-color:#3c763d}.badge.o_scorm_failed{background-color:#a94442}.badge.o_scorm_incomplete{background-color:#8a6d3b}.badge.o_scorm_not_attempted{background:none}.o_bc_meta h5,.o_bc_meta .o_author,.o_bc_meta .o_comment,.tooltip h5,.tooltip .o_author,.tooltip .o_comment{color:#fff;margin:5px 0}.o_bc_meta .o_thumbnail,.tooltip .o_thumbnail{width:200px;height:200px;display:inline-block;background-color:#fff;margin:0 -5px}.o_htmleditor .o_metadata{border:1px solid #999;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom:0;background:#eee;position:relative;top:1px;padding:5px}.o_htmleditor .o_metadata #o_filename{float:left}.o_htmleditor .o_metadata .o_lastmodified{float:right;color:#777;line-height:1.42857}.o_htmleditor #o_save{margin-top:10px;text-align:center}.o_htmleditor #o_save input{margin-right:1em}.o_htmleditor #o_save input:last-child{margin-right:0}.o_notifications_news_wrapper .o_notifications_news_subscription{margin:10px 0}.o_notifications_news_wrapper .o_notifications_news_subscription h4 i,.o_notifications_news_wrapper .o_notifications_news_subscription .o_cal .fc-header-title h2 i,.o_cal .fc-header-title .o_notifications_news_wrapper .o_notifications_news_subscription h2 i{display:none}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_context{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content{margin-left:1.5em;position:relative}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_icon{position:absolute;left:-1.5em;line-height:1.5em;top:0}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_content .o_date{color:#777}.o_notifications_news_wrapper .o_notifications_news_subscription .o_notifications_news_url{margin-left:1.5em}.o_noti{margin:6px 0 6px 12px;float:right;color:#777}.o_noti .o_label{color:#777;cursor:help}@media (max-width: 767px){.o_noti .o_label span{display:none}}.panel-body .o_noti{margin:0}.o_portrait{display:inline-block}.o_portrait img{border-radius:50%;border:none;background-color:#eee;background-position:50% 50%;background-repeat:no-repeat;background-size:cover}.o_portrait_name{margin-top:6px}.o_block_inline .o_portait,.o_block_inline .o_portrait_name,.o_block_inline .o_portrait_image,.o_block_inline_right .o_portait,.o_block_inline_right .o_portrait_name,.o_block_inline_right .o_portrait_image,.o_block_inline_left .o_portait,.o_block_inline_left .o_portrait_name,.o_block_inline_left .o_portrait_image,.o_block_inline_both .o_portait,.o_block_inline_both .o_portrait_name,.o_block_inline_both .o_portrait_image{display:inline-block}.o_portrait_avatar,.o_portrait_dummy,.o_portrait_dummy_female_big,.o_portrait_dummy_male_big,.o_portrait_anonymous{width:100px;height:100px}.o_portrait_dummy{background-image:url("../light/images/portrait/dummy.png")}.o_portrait_dummy_female_big{background-image:url("../light/images/portrait/dummy_female_big.png")}.o_portrait_dummy_male_big{background-image:url("../light/images/portrait/dummy_male_big.png")}.o_portrait_anonymous{background-image:url("../light/images/portrait/anonymous.png")}.o_portrait_avatar_small,.o_portrait_dummy_small,.o_portrait_dummy_female_small,.o_portrait_dummy_male_small,.o_portrait_anonymous_small{width:30px;height:30px}.o_portrait_dummy_small{background-image:url("../light/images/portrait/dummy_small.png")}.o_portrait_dummy_female_small{background-image:url("../light/images/portrait/dummy_female_small.png")}.o_portrait_dummy_male_small{background-image:url("../light/images/portrait/dummy_male_small.png")}.o_portrait_anonymous_small{background-image:url("../light/images/portrait/anonymous_small.png")}.o_datecomp{position:relative;width:40px;height:52px;border:1px solid #555;margin-right:12px;text-align:center;vertical-align:middle}.o_datecomp div.o_year{position:absolute;left:0;width:100%;top:-20px;height:20px;line-height:20px;font-size:10px}.o_datecomp div.o_month{height:20px;line-height:20px;font-size:12px;background-color:#3b678a;color:#fff}.o_datecomp div.o_day{height:30px;line-height:30px;font-size:18px;border-top:1px solid #555;background-color:#fff;color:#333}.o_block_with_datecomp .o_head{position:relative;padding-left:52px}.o_block_with_datecomp .o_datecomp{position:absolute;top:0.2em;left:0}.o_block_with_datecomp .o_title{margin-top:0}.o_block_with_datecomp .o_meta{color:#777}.o_block_with_datecomp .o_content{border-left:5px solid #eee;padding:0 20px}.o_block_with_datecomp .o_block_footer{padding-left:25px}ul.o_certificates li{padding:5px 0}ul.o_certificates li a.o_sel_certificate_delete{padding-left:2em}.o_cal_toptoolbar{margin-bottom:6px}.o_cal_toptoolbar .o_cal_toptoolbar_help{float:left;margin-right:12px}.o_cal_toptoolbar .o_noti{margin-top:0}.o_feed .o_date,.o_feed .o_author{color:#777}.o_feed .o_subscription a{margin-right:1.5em}.o_feed .o_subscription .form-group{margin-bottom:5px}.o_feed .o_subscription .form-control{border:0;background:none;padding:0;height:auto;-webkit-box-shadow:none;box-shadow:none}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper{float:left}.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_title,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_rating_explanation,.o_feed .o_blog_posts .o_ratings_and_comments .o_rating_wrapper .o_legend{display:none}.o_feed .o_blog_posts .o_ratings_and_comments a.o_comments span{display:none}.o_feed .o_content:before,.o_feed .o_content:after{content:" ";display:table}.o_feed .o_content:after{clear:both}.o_glossary .o_register{text-align:center}.o_glossary .o_meta{font-size:90%;color:#777;font-style:italic}.o_glossary dl dt:first-letter{font-size:21px}.o_glossary dl dt small{color:#777}.o_tm_glossary{border-bottom:1px dotted #666699 !important}.o_tm_yellow{background-color:#FFFF66}.o_tm_blue{background-color:#33FFFF}.o_tm_red{background-color:#FF3333}.o_tm_green{background-color:#99FF00}.o_coaching div#o_main_toolbar.o_toolbar{margin-top:0px}.o_eff_statement_details .o_user_infos{margin-top:20px}div.o_assessment_user_type_filter{display:inline-block;padding:0.5em;border:1px solid #eee;border-radius:4px}div.o_assessment_user_type_filter div.form-inline,div.o_assessment_user_type_filter div.o_navbar-form{margin-left:5px;display:inline-block}.vitero_iframe{width:100%;height:100%;border:none;min-height:60em}.o_reminder_rule{padding:5px 0}.o_segments.btn-group a span{overflow:hidden;display:block;text-overflow:ellipsis}.o_segments_content{margin-top:20px}.o_tabbed_pane .o_tabbed_pane_content{padding:20px 0 6px 0}.o_togglebox_wrapper .o_opener{position:relative;left:-0.5em}.o_togglebox_wrapper div.o_togglebox_content{position:relative;margin:0}.o_togglebox_wrapper div.o_togglebox_content .o_hide{position:absolute;bottom:0.5em;right:1em}.o_toolboxes ul{margin:0 0 1.5em 0;padding:0 0 0 1.5em}.o_qrcode{width:256px;height:256px}#o_ajax_busy{position:absolute;left:50%;top:20em;margin-left:-2.5em;height:5em;width:5em;color:#fff;z-index:1201;display:none}#o_body.o_ajax_busy{cursor:busy}.o_exception .o_visual{position:relative;background-image:url("../light/images/lion-500x333.jpg");filter:grayscale(50%);-webkit-filter:grayscale(50%);-moz-filter:grayscale(50%);-ms-filter:grayscale(50%);-o-filter:grayscale(50%);width:500px;height:333px;background-repeat:no-repeat;background-position:50% 50%;background-size:contain;margin:0 0 10px 16px}@media (min-width: 768px) and (max-width: 991px){.o_exception .o_visual{width:375px;height:249px}}@media (min-width: 500px) and (max-width: 767px){.o_exception .o_visual{width:250px;height:166px}}@media (max-width: 500px){.o_exception .o_visual{background-size:cover}}.o_exception .jumbotron h1,.o_exception .o_repo_details .o_lead h1,.o_repo_details .o_exception .o_lead h1{color:#d9534f}ul.o_assessment_docs{margin-bottom:0}ul.o_assessment_docs>li{margin-bottom:0.33em}ul.o_assessment_docs>li:last-child{margin-bottom:0em}.o_mail_message .o_mail_meta{background:#fafafa;border:1px solid #eee;padding:5px 10px}.o_mail_message .o_mail_meta h3{margin-top:0}.o_mail_message .o_mail_date,.o_mail_message .o_mail_from,.o_mail_message .o_mail_recipients{color:#777;font-size:90%}.o_mail_message .o_mail_date .o_label,.o_mail_message .o_mail_from .o_label,.o_mail_message .o_mail_recipients .o_label{font-weight:bold;margin-right:1em}.o_mail_message .o_mail_date .o_group span,.o_mail_message .o_mail_from .o_group span,.o_mail_message .o_mail_recipients .o_group span{font-weight:bold}.o_mail_message .o_mail_date .o_group span:after,.o_mail_message .o_mail_from .o_group span:after,.o_mail_message .o_mail_recipients .o_group span:after{content:':';margin-right:0.5em}.o_mail_message .o_mail_date i,.o_mail_message .o_mail_from i,.o_mail_message .o_mail_recipients i{margin-left:1em}.o_mail_message .o_mail_date ul.list-inline,.o_mail_message .o_mail_from ul.list-inline,.o_mail_message .o_mail_recipients ul.list-inline{display:inline}.o_mail_message .o_mail_date ul.list-inline li,.o_mail_message .o_mail_from ul.list-inline li,.o_mail_message .o_mail_recipients ul.list-inline li{padding-right:0;padding-left:0}.o_mail_message .o_more{margin-left:1em}.o_mail_message .o_showAllLink{float:right;font-size:80%}.progress .o_progress_marker{position:absolute;height:100%;top:0;width:3px;background:red}.o_web_content{padding-bottom:15px}.tt-input{width:400px}.tt-menu{width:400px;margin-top:6px;padding:0 0 0;color:#555;background-color:#fff;border:1px solid #66afe9;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;-webkit-box-shadow:0 0 8px rgba(102,175,233,0.6);box-shadow:0 0 8px rgba(102,175,233,0.6)}.tt-suggestion{padding:6px 12px;font-size:14px;line-height:1.42857}.tt-suggestion.tt-cursor,.tt-suggestion:hover{color:#fff;background-color:#3b678a}.tt-suggestion p{margin:0}.tt-menu div.o_icon_error:before{content:''}.o_search_link_extended,.o_search_link_simple{margin-top:12px;display:inline-block}.o_search_results_stats{color:#777;padding-left:1.5em}.o_search_highlight{margin-left:12px;font-size:12px}.o_search_result_title h4,.o_search_result_title .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_search_result_title h2{display:inline-block;margin-right:12px;margin-bottom:6px}.o_search_result_highlight{font-weight:bold;background-color:#fcf8e3}.o_search_result_context{color:#3c763d}.o_search_result_excerpt{color:#555}.o_search_result_details .o_togglebox_wrapper.o_block{margin-top:0;margin-bottom:0}.o_search_result_details .o_togglebox_wrapper .o_togglebox_content{color:#777;font-size:12px;background:#fff;padding:6px 12px}@media (max-width: 767px){.o_search_result_details{display:none}}.wizard{border:1px solid #d4d4d4;border-radius:2px;background-color:#f9f9f9;position:relative;overflow:hidden;margin-bottom:15px}.wizard ul{list-style:none outside none;padding:0;margin:0;width:4000px}.wizard ul li{float:left;margin:0;padding:0 20px 0 30px;height:46px;line-height:46px;position:relative;background:#ededed;color:#333;font-size:16px;cursor:default}.wizard ul li .chevron{border:24px solid transparent;border-left:14px solid #d4d4d4;border-right:0;display:block;position:absolute;right:-14px;top:0;z-index:1}.wizard ul li .chevron:before{border:24px solid transparent;border-left:14px solid #ededed;border-right:0;content:"";display:block;position:absolute;right:1px;top:-24px}.wizard ul li.active{background:#f1f6fc;color:#333}.wizard ul li.active .chevron:before{border-left:14px solid #f1f6fc}.wizard ul li .badge{margin-right:8px}.wizard ul li:first-child{border-radius:4px 0 0 4px;padding-left:20px}.o_process{position:relative;padding-left:25px}.o_process .o_step{position:relative;height:auto;padding-top:10px;padding-left:30px;padding-bottom:10px}.o_process .o_bar{position:absolute;top:10px;left:8px;height:100%;border-left:4px solid #777}.o_process .o_bar:after{position:absolute;top:0;left:-10px;height:16px;width:16px;border:4px solid #777;border-radius:16px;background:#fff;content:" "}.o_process .o_title{margin-top:-1px;color:#777 !important}.o_process .o_title:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;position:absolute;left:-24px}.o_process .o_title a:before{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";width:1em}.o_process .o_title a.collapsed:before{content:""}.o_process .o_step.o_active .o_bar,.o_process .o_step.o_active .o_bar:after{border-color:#3b678a}.o_process .o_step.o_active .o_title{color:#3b678a !important}.o_process .o_step.o_active .o_title:before{content:"";color:#3b678a}.o_process .o_step.o_done .o_bar,.o_process .o_step.o_done .o_bar:after{border-color:#4a82ae}.o_process .o_step.o_done .o_title{color:#4a82ae !important}.o_process .o_step.o_done .o_title:before{content:"";color:#5cb85c}.o_process .o_meta{color:#777;font-size:12px;margin-top:-0.5em}.o_cal_orange{background:#ffc266;border-color:#ff9900;color:#5D5D5D}.o_cal_orange .o_cal_wv_event_header{background:#ff9900}.o_cal_orange a{color:#5D5D5D !important}.o_cal_class.o_cal_orange{border-left:20px solid #ffc266}.o_cal_green{background:#66c266;border-color:#009900;color:#FFF}.o_cal_green .o_cal_wv_event_header{background:#009900}.o_cal_green a{color:#FFF !important}.o_cal_class.o_cal_green{border-left:20px solid #66c266}.o_cal_blue{background:#4d6e9f;border-color:#2e5894;color:#FFF}.o_cal_blue .o_cal_wv_event_header{background:#2e5894}.o_cal_blue a{color:#FFF !important}.o_cal_class.o_cal_blue{border-left:20px solid #4d6e9f}.o_cal_yellow{background:#ffe066;border-color:#ffcc00;color:#5D5D5D}.o_cal_yellow .o_cal_wv_event_header{background:#ffcc00}.o_cal_yellow a{color:#5D5D5D !important}.o_cal_class.o_cal_yellow{border-left:20px solid #ffe066}.o_cal_red{background:#c26666;border-color:#990000;color:#FFF}.o_cal_red .o_cal_wv_event_header{background:#990000}.o_cal_red a{color:#FFF !important}.o_cal_class.o_cal_red{border-left:20px solid #c26666}.o_cal_rebeccapurple{background:#663399;border-color:#663399;color:#FFF}.o_cal_rebeccapurple .o_cal_wv_event_header{background:#663399}.o_cal_rebeccapurple a{color:#FFF !important}.o_cal_class.o_cal_rebeccapurple{border-left:20px solid #639}.o_cal_fuchsia{background:#FF00FF;border-color:#dd00dd;color:#FFF}.o_cal_fuchsia .o_cal_wv_event_header{background:#FF00FF}.o_cal_fuchsia a{color:#FFF !important}.o_cal_class.o_cal_fuchsia{border-left:20px solid #f0f}.o_cal_olive{background:#808000;border-color:#636300;color:#FFF}.o_cal_olive .o_cal_wv_event_header{background:#808000}.o_cal_olive a{color:#FFF !important}.o_cal_class.o_cal_olive{border-left:20px solid olive}.o_cal_navy{background:#000080;border-color:#000057;color:#FFF}.o_cal_navy .o_cal_wv_event_header{background:#000080}.o_cal_navy a{color:#FFF !important}.o_cal_class.o_cal_navy{border-left:20px solid navy}.o_cal_maroon{background:#800000;border-color:#740000;color:#FFF}.o_cal_maroon .o_cal_wv_event_header{background:#800000}.o_cal_maroon a{color:#FFF !important}.o_cal_class.o_cal_maroon{border-left:20px solid maroon}.o_cal_lime{background:#00FF00;border-color:#00e200;color:#004d00}.o_cal_lime .o_cal_wv_event_header{background:#00FF00}.o_cal_lime a{color:#004d00 !important}.o_cal_class.o_cal_lime{border-left:20px solid lime}.o_cal_grey{background:#DDDAAA;border-color:#5D5D5D;color:#FFF}.o_cal_grey .o_cal_wv_event_header{background:#5D5D5D}.o_cal_grey a{color:#FFF !important}.o_cal_class.o_cal_grey{border-left:20px solid #DDDAAA}.o_sel_calendar_print_chooser{padding-right:4em}.o_cal_config_enabled,.o_cal_config_disabled{position:relative;float:left;display:inline}.o_cal_config_calendar{margin:0 5px;padding:1px 6px 1px 4px;position:relative;width:200px;overflow:hidden;float:left;display:inline}.o_cal_config_color{display:block;width:16px;height:16px;border-radius:8px}.o_cal_colorchooser_selected:before{content:""}#o_cal_colorchooser div{border:1px solid #3b678a;margin:5px;display:inline-block}#o_cal_colorchooser div:hover{border:1px solid #333}#o_cal_colorchooser a{width:20px;height:20px;display:inline-block}.o_cal_embedded_course_container .o_content_popup{top:0}.fc-button{color:#333;background-color:#fff;border-color:#ccc}.fc-button:hover,.fc-button:focus,.fc-button.focus,.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{color:#333;background-color:#e6e6e6;border-color:#adadad}.fc-button:active,.fc-button.active,.open>.fc-button.dropdown-toggle{background-image:none}.fc-button.disabled,.fc-button.disabled:hover,.fc-button.disabled:focus,.fc-button.disabled.focus,.fc-button.disabled:active,.fc-button.disabled.active,.fc-button[disabled],.fc-button[disabled]:hover,.fc-button[disabled]:focus,.fc-button[disabled].focus,.fc-button[disabled]:active,.fc-button[disabled].active,fieldset[disabled] .fc-button,fieldset[disabled] .fc-button:hover,fieldset[disabled] .fc-button:focus,fieldset[disabled] .fc-button.focus,fieldset[disabled] .fc-button:active,fieldset[disabled] .fc-button.active{background-color:#fff;border-color:#ccc}.fc-button .badge{color:#fff;background-color:#333}.fc-button.fc-state-default{text-shadow:none}.fc-button.fc-state-active{color:#fff;background-color:#3b678a;border-color:#335a78}.fc-button.fc-state-active:hover,.fc-button.fc-state-active:focus,.fc-button.fc-state-active.focus,.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.fc-button.fc-state-active:active,.fc-button.fc-state-active.active,.open>.fc-button.fc-state-active.dropdown-toggle{background-image:none}.fc-button.fc-state-active.disabled,.fc-button.fc-state-active.disabled:hover,.fc-button.fc-state-active.disabled:focus,.fc-button.fc-state-active.disabled.focus,.fc-button.fc-state-active.disabled:active,.fc-button.fc-state-active.disabled.active,.fc-button.fc-state-active[disabled],.fc-button.fc-state-active[disabled]:hover,.fc-button.fc-state-active[disabled]:focus,.fc-button.fc-state-active[disabled].focus,.fc-button.fc-state-active[disabled]:active,.fc-button.fc-state-active[disabled].active,fieldset[disabled] .fc-button.fc-state-active,fieldset[disabled] .fc-button.fc-state-active:hover,fieldset[disabled] .fc-button.fc-state-active:focus,fieldset[disabled] .fc-button.fc-state-active.focus,fieldset[disabled] .fc-button.fc-state-active:active,fieldset[disabled] .fc-button.fc-state-active.active{background-color:#3b678a;border-color:#335a78}.fc-button.fc-state-active .badge{color:#3b678a;background-color:#fff}body.o_cal_print fieldset{border:none;margin-bottom:2em}body.o_cal_print legend{font-size:2em;font-weight:bold}body.o_cal_print legend span{display:block;font-size:14px;font-weight:normal}body.o_cal_print ul.o_cal_wv_list{list-style-type:none;padding:0}body.o_cal_print ul.o_cal_wv_list>li{page-break-inside:avoid;margin-bottom:2em}body.o_cal_print ul.o_cal_wv_list .o_cal_date{font-size:1.25em;font-weight:bold;padding:0.5em 0 0.5em 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events{list-style-type:none;padding:0.5em 0 0 0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event{position:relative;left:30px;page-break-inside:avoid;clear:both;margin-bottom:1.5em;padding-right:30px}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_time{float:left;font-weight:bold;margin-right:1em}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject{font-weight:bold}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_subject p{margin:0}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_location,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_description,body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{clear:both}body.o_cal_print ul.o_cal_wv_list ul.o_cal_events li.o_cal_event .o_cal_freebusy{font-style:italic}body.o_cal_print .o_cal_class{position:absolute;left:-30px;width:20px}body.o_cal_print #o_cal_config legend{font-size:1.25em}body.o_cal_print #o_cal_config .o_cal_config_calendar{margin:0;padding:0}body.o_cal_print #o_cal_config .o_cal_config_calendar{position:relative;left:30px;float:none;padding-right:30px}.o_visual{position:absolute;top:0;left:0;overflow:hidden;height:120px;width:180px;vertical-align:middle}@media (min-width: 768px) and (max-width: 991px){.o_visual{height:80px;width:120px}}@media (max-width: 767px){.o_visual{height:50px;width:75px}}.o_visual img{width:100%;height:auto}.o_visual .o_visual_not_available{width:100%;height:100%;background-image:url("../light/images/no_preview.png");background-repeat:no-repeat;background-position:50% 50%;background-size:contain}.o_coursetable.o_rendertype_custom .o_table_row{position:relative;border:1px solid #3b678a;margin-bottom:10px}.o_coursetable.o_rendertype_custom .o_table_row .o_visual{box-sizing:content-box;border-right:1px solid #3b678a}.o_coursetable.o_rendertype_custom .o_table_row .o_access{position:absolute;top:0;right:0;height:120px;width:180px;overflow:hidden;border-left:1px solid #3b678a;padding-top:0.25em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_state,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{padding:0 1em;height:20px;line-height:20px;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score{position:relative;left:2px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score .o_label{color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social{position:absolute;width:100%;bottom:32px;height:20px;padding-left:1em}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_title,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating o_rating_legend,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_social .o_rating .o_rating_explanation{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings{padding:0 0 0 1em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_label{margin-bottom:1em;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_bookings .o_methods{color:#5bc0de}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{position:absolute;display:block;bottom:0;width:90px;height:30px;line-height:30px;text-align:center}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{right:0}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start{color:#fff;background-color:#3b678a;border-color:#335a78}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start.active{background-color:#3b678a;border-color:#335a78}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start .badge{color:#3b678a;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book{color:#fff;background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{color:#fff;background-color:#ec971f;border-color:#d58512}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book.active{background-color:#f0ad4e;border-color:#eea236}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book .badge{color:#f0ad4e;background-color:#fff}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:90px;color:#fff;background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{color:#fff;background-color:#449d44;border-color:#398439}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active,.open>.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.dropdown-toggle{background-image:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.disabled.active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled],.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:hover,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].focus,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled]:active,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details[disabled].active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:hover,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.focus,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details:active,fieldset[disabled] .o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details.active{background-color:#5cb85c;border-color:#4cae4c}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details .badge{color:#5cb85c;background-color:#fff}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{height:80px;width:120px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_score,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_comments,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_label{display:none}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_start,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_book,.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{width:60px}.o_coursetable.o_rendertype_custom .o_table_row .o_access .o_details{right:60px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_access{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:120px;margin:0 180px 0 180px;position:relative;padding:1em 0.5em 0.25em 1em;overflow:hidden}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{margin:0;position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{display:block;color:#3b678a}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a:hover{color:#2c4c66}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author{margin-top:0.5em;line-height:normal;font-size:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle{position:absolute;top:5px;right:40px;font-size:90%;line-height:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#777}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active{color:#3c763d}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle.o_active:hover{color:#2b542c}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{margin-top:0.5em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark{position:absolute;top:-1px;right:15px}@media (min-width: 768px) and (max-width: 991px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:80px;margin:0 120px}}@media (max-width: 767px){.o_coursetable.o_rendertype_custom .o_table_row .o_meta{height:50px;margin:0 0 0 75px;padding:0 0 0 1em}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title{line-height:50px}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_title a{border-right:37px solid transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_author,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_bookmark,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_lifecycle,.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_desc{display:none}}.o_coursetable.o_rendertype_custom .o_table_row .o_meta .o_go_xs{position:absolute;top:0;right:0;padding:0 1em;height:50px;width:37px;line-height:50px;color:#fff;background-color:#3b678a}.o_coursetable.o_rendertype_classic .o_rating_explanation{display:none}.o_coursetable.o_rendertype_classic .o_start,.o_coursetable.o_rendertype_classic .o_book{white-space:nowrap}.o_coursetable.o_rendertype_classic .o_repoentry_type{color:#555}.o_coursetable.o_rendertype_classic .o_repoentry_ac{color:#555}.o_catalog .o_level{position:relative;margin-bottom:10px;padding:0;border-top:1px solid #3b678a;border-bottom:1px solid #3b678a}.o_catalog .o_level .o_visual{height:180px}.o_catalog .o_level .o_meta{position:relative;min-height:180px;height:180px;overflow:hidden;margin:0 0 0 180px;padding:1em 0.5em 0.5em 2em}.o_catalog .o_level .o_meta .o_title{margin:0}.o_catalog .o_level .o_meta .o_title a{display:block;color:#3b678a}.o_catalog .o_level .o_meta .o_title a:hover{color:#2c4c66}.o_catalog .o_level .o_meta .o_desc{padding:1em 0 0.5em 0}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_level .o_visual{height:120px}.o_catalog .o_level .o_meta{min-height:120px;height:120px;margin:0 0 0 120px}}@media (max-width: 767px){.o_catalog .o_level .o_visual{height:75px}.o_catalog .o_level .o_meta{min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em}.o_catalog .o_level .o_meta .o_title{line-height:75px}.o_catalog .o_level .o_meta .o_desc{display:none}}.o_catalog .o_sublevels_list .o_sublevel{position:relative;border:1px solid #3b678a;margin-bottom:10px}.o_catalog .o_sublevels_list .o_sublevel .o_visual{height:75px;width:75px}.o_catalog .o_sublevels_list .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels_list .o_sublevel .o_title{margin:0}.o_catalog .o_sublevels_list .o_sublevel .o_meta{border-left:1px solid #3b678a;min-height:75px;height:75px;margin:0 0 0 75px;padding:0 0 0 1em;overflow:hidden}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_title{line-height:75px}.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_desc{display:none}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a{font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels_list .o_sublevel .o_meta h4.o_title>a>i,.o_catalog .o_sublevels_list .o_sublevel .o_meta .o_cal .fc-header-title h2.o_title>a>i,.o_cal .fc-header-title .o_catalog .o_sublevels_list .o_sublevel .o_meta h2.o_title>a>i{display:none}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels{border:1px solid transparent}.o_catalog .o_sublevels_list .o_sublevel.o_fill_sublevels .o_meta{border-left:1px solid transparent}.o_catalog .o_sublevels{position:relative;margin-bottom:20px}.o_catalog .o_sublevels:before,.o_catalog .o_sublevels:after{content:" ";display:table}.o_catalog .o_sublevels:after{clear:both}.o_catalog .o_sublevels .o_sublevel{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_catalog .o_sublevels .o_sublevel:last-child{margin-right:0}.o_catalog .o_sublevels .o_sublevel .o_visual{border:1px solid #3b678a;position:relative;height:180px}.o_catalog .o_sublevels .o_sublevel .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_catalog .o_sublevels .o_sublevel .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #3b678a;border-top:0;background-color:rgba(255,255,255,0.8)}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a{display:block;color:#3b678a;font-family:inherit;font-weight:inherit}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a:hover{color:#2c4c66}.o_catalog .o_sublevels .o_sublevel .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 10px 10px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (max-width: 767px){.o_catalog .o_sublevels .o_sublevel{width:120px;margin:0 1px 1px 0}.o_catalog .o_sublevels .o_sublevel .o_visual{height:120px;width:120px}.o_catalog .o_sublevels .o_sublevel .o_title{font-size:90%}}@media (min-width: 768px){.o_catalog .o_sublevels_list,.o_catalog .o_sublevels_compact{-webkit-column-count:2;-moz-column-count:2;-ms-column-count:2;-o-column-count:2;column-count:2;columns:2}}.o_repo_details{position:relative}.o_repo_details .o_lead{margin-bottom:10px}.o_repo_details .o_lead .o_author{margin-top:0.5em;margin-bottom:1em;font-size:120%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#3c763d}.o_repo_details .o_lead .o_media{float:right;margin-left:2em;margin-bottom:2em}.o_repo_details .o_lead .o_media.o_desc_empty{float:none;margin-left:0;margin-bottom:0}.o_repo_details .o_lead h1{font-size:37px}.o_repo_details .o_lead h1 i{display:none}.o_repo_details .o_overview i{margin-right:0.5em}.o_repo_details .o_overview div{margin-bottom:0.25em}.o_repo_details .o_start_wrapper{clear:both;margin:2em 0 -10px 0;text-align:right}.o_repo_details .o_start_wrapper .o_start_inner{display:inline-block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:400px;display:inline-block}.o_repo_details .o_social:before,.o_repo_details .o_social:after{content:" ";display:table}.o_repo_details .o_social:after{clear:both}.o_repo_details .o_social .o_rating_wrapper{float:left}.o_repo_details .o_social .o_comments{margin-left:1em}@media (max-width: 767px){.o_repo_details .o_lead p{font-size:16px}.o_repo_details .o_lead .o_media{margin-left:0;float:none;text-align:center}.o_repo_details .o_start_wrapper{text-align:center}.o_repo_details .o_start_wrapper .o_start_inner{display:block}.o_repo_details .o_start,.o_repo_details .o_book{max-width:100%;display:block}}@media (max-width: 613px){.o_repo_details .o_subcolumn{width:100%}}.o_meta .o_closed{padding:2px 5px;margin:5px 0}.o_overview .o_closed{padding:12px 15px;margin:15px 0}.o_ac_configuration span.o_ac_infos{font-weight:normal;color:grey}tr.o_entry_closed,tr.o_entry_closed td,tr.o_entry_closed td span,tr.o_entry_unpublished,tr.o_entry_unpublished td,tr.o_entry_unpublished td span{text-decoration:line-through}.badge.o_midpub{background-color:#3c763d}.badge.o_midwarn{background-color:#8a6d3b}.badge.o_midlock{background-color:#31708f}.badge.o_miderr{background-color:#a94442}.badge.o_middel{background-color:#777}.o_course_editor_legend .badge{font-size:80%}.o_course_editor_legend .badge:before{content:none}.o_passed{color:#3c763d;font-weight:bold}.o_passed a:hover{color:#2b542c}.o_passed th{color:#333}.o_failed{color:#a94442;font-weight:bold}.o_failed a:hover{color:#66512c}.o_failed th{color:#333}.o_unknown{color:#8a6d3b;font-weight:bold}.o_unknown a:hover{color:#66512c}.o_unknown th{color:#333}.o_noinfo{color:#777}.o_course_run .o_toc .o_entry .o_shorttitle{border-bottom:1px solid #777}.o_course_run .o_toc .o_entry .o_displaytitle{margin-top:5px;color:#777}.o_course_run .o_toc .o_entry .o_objectives{margin-top:10px;font-style:italic}.o_course_run .o_in_review{font-style:italic;position:relative}.o_course_run.o_titled_wrapper>h2 i{display:none}.o_course_run .o_cal_toptoolbar{margin-right:26px}.o_course_run .o_titled_wrapper .o_cal_toptoolbar{margin-right:0px}.o_tree.o_course_menu div.o_tree_l0>a:first-child{background-color:none}.o_st_peekview ul li{margin-bottom:0.5em}.o_cl_line{margin-bottom:10px;padding-bottom:5px}.o_cl_line.o_even{background-color:#f9f9f9}.o_ll_container h5{margin-bottom:5px}.o_ll_container h5 a.o_desc{color:#3b678a}.o_ll_container h5 a.o_desc small{display:none}.o_ll_container h5 a.o_desc:hover{color:#2c4c66;text-decoration:none}.o_ll_container h5 a.o_desc:hover small{color:#5e5e5e;display:inline}.o_ll_container div.o_comment{color:#777}.o_cmembers .o_cmember{margin:12px 0}.o_cmembers .o_cmember .o_portrait{margin-right:10px}.o_cmembers .o_cmember .o_portrait img{width:50px;height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper{line-height:50px}.o_cmembers .o_cmember .o_cmember_info_wrapper .o_mail{margin-left:6px}.o_cmembers .o_cmember a.o_mail{display:none}.o_cmembers .o_cmember:hover a.o_mail{display:inline}.o_cmembers_print{color:#000}.o_cmembers_print #o_print_brand{position:absolute;top:1cm;right:1cm;width:5cm;height:4cm}.o_cmembers_print #o_print_brand img{width:100%}.o_cmembers_print .o_portrait{width:100px;height:100px;position:relative}.o_cmembers_print .o_portrait img{border-radius:0px;margin:auto;display:block;max-width:100px;max-height:100px}.o_cmembers_print .o_cmember{padding-left:0px;padding-right:15px;margin-bottom:20px}.o_cmembers_print .o_cmember .o_cmember_info_wrapper{word-wrap:break-word}.o_cmembers_print .o_cmember .o_prop.o_zipCode{float:left;padding-right:0.5em}.o_cmembers_print h1{font-size:18pt;color:#000}.o_cmembers_print h3{font-size:14pt;margin-top:5px;font-weight:normal;color:#000}.o_cmembers_print h4,.o_cmembers_print .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_cmembers_print h2{font-size:11pt;font-weight:strong;color:#000;padding-bottom:10px;border-bottom:1px solid #eee}.o_cmembers_print .o_cmember_info_wrapper{font-size:7pt;color:#000}.o_cmembers_print .o_cmember_info_wrapper strong{font-size:8pt}.tag.label.label-info{margin-right:3px}.input-group.o_tag_inputgroup .form-control{height:auto}table.table.o_qti_item_kprim>thead>tr>th,table.table.o_qti_item_kprim>tbody>tr>td{border:none}td.o_qti_item_kprim_input,th.o_qti_item_kprim_input{text-align:center}td.o_qti_item_kprim_input .radio,th.o_qti_item_kprim_input .radio{display:inline}td.o_qti_item_kprim_text{width:80%}div.o_qti_menu_section,div.o_qti_menu_section_clickable,div.o_qti_menu_section_active{margin-top:10px}div.o_qti_menu_item a,div.o_qti_menu_section a{text-decoration:none}div.o_qti_menu_item{padding:.1em}div.o_qti_menu_item_active{padding:.1em;font-weight:bold}div.o_qti_item_itemfeedback{background-color:#ffffff;border-color:#000000}div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.d3chart .bar_green{fill:#5cb85c}.d3chart .bar_red{fill:#d9534f}.d3chart .bar_grey{fill:lightgrey}.d3chart circle.bubble_green{fill:#5cb85c}div.o_qti_statistics ul{list-style-type:none;padding:0;margin:0;font-size:90%}div.o_qti_statistics ul strong{font-weight:normal}div.o_qti_statistics ul li{padding-left:48px;margin-left:0;margin-bottom:10px}div.o_qti_statistics ul li.o_qti_statistics-ncorrect:before{font-size:125%;content:'\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-correct:before{font-size:125%;content:'\2713\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kplus:before{font-size:125%;content:'\2713\00A0\2A2F\00A0\00A0'}div.o_qti_statistics ul li.o_qti_statistics-kminus:before{font-size:125%;content:'\2A2F\00A0\2713\00A0\00A0'}div.o_qti_statistics ul li img{vertical-align:top}div.o_qti_statistics table.o_qti_statistics_figures tr{float:left}div.o_qti_statistics table.o_qti_statistics_figures tr:nth-child(2n+1){clear:left;padding-right:20px}div.o_qti_statistics table.o_qti_statistics_figures td{width:200px;padding-left:0;vertical-align:bottom}div.o_qti_statistics table.o_qti_statistics_figures td+td{width:100px}div.o_qti_statistics .o_qti_statistics_answer{background:#F5F5F5;padding:1px 2px;width:90%}div.o_qti_statistics div.o_qti_statistics_legend{padding-top:10px;width:470px;border:1px solid #ddd;border-radius:4px}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_green{background-color:#9dd53a}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_red{background-color:#f85032}div.o_qti_statistics div.o_qti_statistics_legend ul li .bar_grey{background-color:lightgrey}div.o_qti_metadatas .panel-body{border-top:none}.o_qti_menu_item_attempts:after,.o_qti_menu_item_attempts_marked:after{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.o_qti_menu_item_attempts:after{content:"ï„"}.o_qti_menu_item_attempts_marked:after{content:"";color:#3b678a}.onyx_iframe{width:100%;height:100%;border:none;min-height:60em}.o_qti_print div.o_qti_statistics{width:680px}@media print{div.o_qti_statistics{width:680px}}ul.sessionControl{list-style:none;margin:1em;text-align:center}ul.sessionControl li{display:inline;padding:0.2em}.association{margin:20px 20px 20px 40px;background:transparent url("../light/images/association_bg.png") repeat-x center center}.o_associate_item{padding:5px;margin:0 15px 10px 0;border:2px solid #999}.o_associate_item.oo-selected{border:2px solid #3b678a}.o_associate_item.oo-choosed{border:none !important}.o_associate_item.oo-drag{border:2px solid #3b678a !important}.association_box{border:3px dotted #999}.association_box.oo-filled{border:3px solid #999}.association_box{background-color:white}.prompt{font-weight:bold}.sketch{position:relative;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#tmp_canvas{position:absolute;left:0px;right:0;bottom:0;top:0;cursor:crosshair;user-drag:none;user-select:none;-moz-user-select:none;-webkit-user-drag:none;-webkit-user-select:none;-ms-user-select:none}#colors .black .o_icon:before{color:#000000}#colors .blue .o_icon:before{color:#0000FF}#colors .green .o_icon:before{color:#008000}#colors .yellow .o_icon:before{color:#FFFF00}#colors .red .o_icon:before{color:#FF0000}#colors .purple .o_icon:before{color:#800080}.o_gap_item{padding:5px;margin:5px;background-repeat:no-repeat;background-position:center center}.o_gap_item.oo-choosed{position:relative;left:auto;top:auto;padding:3px;margin:0}.o_gap_item.oo-selected{border:3px solid #3b678a}.o_gap_container_help,.o_items_container_help{font-size:90%;font-style:italic;color:#777;padding:5px}.items_container{padding:15px}.items_container .o_item{float:left}#o_qti_hotspots_edit{min-height:100px;min-width:400px;background-repeat:no-repeat}div.hotspotInteraction{overflow-x:auto}#itemBody .extendedTextInteraction{margin:15px 0}#itemBody .extendedTextInteraction textarea{resize:vertical !important}#itemBody .extendedTextInteraction .o_qti_essay_last_save{padding:2px 2px;font-style:italic;font-size:90%;text-align:right}#o_qti_run_title{margin:0 15px 0.5em 15px}#o_qti_run_title h3{margin:15px 0 0 0}#o_qti_run_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 15px 1em 15px}#o_qti_run_infos .progress{background-color:#eee}#o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-color:#3b678a}.progress-striped #o_qti_run_infos #o_qti_scoreinfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_questioninfo .progress-bar{background-color:#3b678a}.progress-striped #o_qti_run_infos #o_qti_questioninfo .progress-bar{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}#o_qti_run_infos #o_qti_run_scoreinfo,#o_qti_run_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_results_infos{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:10px 0;margin:0 0 1em 0}#o_qti_results_infos .progress{background-color:#eee}#o_qti_results_infos #o_qti_run_scoreinfo,#o_qti_results_infos #o_qti_run_scoreprogress{white-space:nowrap}#o_qti_assessment_test_timer{border:1px solid #e7e7e7;border-radius:4px;padding:10px;margin:0 15px 1em 15px}#o_qti_assessment_test_timer.o_10_minutes{background-color:#fcf8e3}#o_qti_assessment_test_timer.o_5_minutes{background-color:#f2dede}#o_qti_assessment_test_timer.o_panic{background-color:#ce8383}#o_qti_assessment_test_timer .o_qti_times_up{padding-left:2em;font-weight:bold}#o_qti_assessment_test_timer .o_qti_times_message{padding-left:2em;font-weight:bold}.o_draw_circle.o_qti_hotspot_correct,.o_draw_rectangle.o_qti_hotspot_correct{background-color:rgba(229,255,204,0.6)}.o_qti_hotspot_label{padding-left:48%}.o_info.o_assessmentsection_rubrics{margin:0 0 0.5em 0}.o_assessmentitem h1{margin-bottom:0}.o_assessmentitem div.badResponse,.o_assessmentitem span.badResponse{color:#d9534f;font-weight:bold}.o_assessmentitem input.badResponse{border:1px solid #d9534f}.o_assessmentitem .infoControl input{margin-right:0.5em}.o_assessmentitem .infoControl .infoControlContent{display:none}.o_assessmentitem .sliderInteraction{margin:1em}.o_assessmentitem .sliderInteraction .sliderVertical .sliderValue{margin:1em 0}.o_assessmentitem .sliderInteraction .sliderVertical .sliderWidget{height:200px}.o_assessmentitem .sliderInteraction .sliderHorizontal .sliderValue{text-align:center}.o_assessmentitem div.orderInteraction div.highlight{border:1px solid #d9534f}.o_assessmentitem div.orderInteraction div.box{background-color:#eee}.o_assessmentitem div.orderInteraction div.box span.info{margin-left:1em;color:#666;font-style:italic;font-size:smaller}.o_assessmentitem div.orderInteraction div.box.horizontal{margin:0.5em 0;width:100%}.o_assessmentitem div.orderInteraction ul.horizontal{float:left;margin:0 1em;padding:1em 0;width:100%}.o_assessmentitem div.orderInteraction div.box.vertical{margin:1em 0;width:49%}.o_assessmentitem div.orderInteraction div.box.vertical.source{float:left}.o_assessmentitem div.orderInteraction div.box.vertical.target{float:right}.o_assessmentitem div.orderInteraction ul.vertical{margin:0 1em;padding:1em 0;width:auto}.o_assessmentitem div.orderInteraction ul{list-style-type:none;margin:0;padding:0;width:60%}.o_assessmentitem div.orderInteraction ul li{margin:0 3px 3px 3px;padding:0.4em;padding-left:1.5em;font-size:1em}.o_assessmentitem div.orderInteraction ul li span.ui-icon{position:absolute;margin-left:-1.3em}.o_assessmentitem div.orderInteraction ul.horizontal li{float:left;width:auto}.o_assessmentitem div.orderInteraction br{clear:both}.o_assessmentitem .hottext{position:relative;margin:-2px 0.15em -2px 0.15em;white-space:nowrap}.o_assessmentitem .hottext input{margin:0 3px 0 2px;position:absolute;top:0.1em;left:0.05em}.o_assessmentitem .hottext input+label{display:inline;padding:0 0.1em 0 1.2em;background:#f8f8f8;border:1px solid #e7e7e7;border-radius:2px;color:#333;font-weight:normal;white-space:normal}.o_assessmentitem .hottext input:checked+label{color:#fff;background:#5bc0de;border:1px solid #31b0d5}.o_assessmentitem .gap{font-weight:bold;border:1px dashed #000}.o_assessmentitem .textEntryInteraction input{margin:-1px 2px;line-height:90%;vertical-align:middle;font-size:98%;border:0.5px solid #999;background:#fff;padding:0.5px 1px;color:#333}.o_assessmentitem .textEntryInteraction input:valid,.o_assessmentitem .textEntryInteraction input:disabled{color:#fff;-webkit-text-fill-color:#fff;background:#5bc0de;border:0.5px solid #31b0d5}.o_assessmentitem_wrapper .itemTitle{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:4px 4px 0 0;margin-top:0;margin-bottom:0;padding:5px 10px;line-height:1.5em}.o_assessmentitem_wrapper #itemBody{min-height:200px;margin:0;padding:5px 10px;border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;line-height:1.5em}.o_assessmentitem_wrapper .modalFeedback h4:first-of-type,.o_assessmentitem_wrapper .modalFeedback .o_cal .fc-header-title h2:first-of-type,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback h2:first-of-type{padding-left:10px;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_correct_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_incorrect_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_info.o_empty_modal_feedback{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper{margin-bottom:0;margin-top:0}.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h4,.o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessmentitem_wrapper .modalFeedback .o_togglebox_wrapper h2{border-left:1px solid #e7e7e7;border-right:1px solid #e7e7e7;padding-bottom:5px;margin-bottom:0}.o_assessmentitem_wrapper ul.o_testpartnavigation,.o_qti_menu_buttonstyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_assessmentitem_wrapper li.o_assessmentitem,.o_qti_menu_buttonstyle li.o_assessmentitem{margin-bottom:2px}.o_assessmentitem_wrapper .o_assessmentitem_status,.o_qti_menu_buttonstyle .o_assessmentitem_status{float:right;display:block;padding:0.3em;margin-left:1em;border-radius:0.3em;border-width:1px;font-size:0.8em;line-height:1.2em;color:#fff}.o_assessmentitem_wrapper .o_assessmentitem_status.ended,.o_qti_menu_buttonstyle .o_assessmentitem_status.ended{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.invalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.invalid{background-color:#d9534f}.o_assessmentitem_wrapper .o_assessmentitem_status.answered,.o_qti_menu_buttonstyle .o_assessmentitem_status.answered{background-color:#5cb85c}.o_assessmentitem_wrapper .o_assessmentitem_status.notAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.notAnswered{background-color:#f0ad4e}.o_assessmentitem_wrapper .o_assessmentitem_status.notPresented,.o_qti_menu_buttonstyle .o_assessmentitem_status.notPresented{background-color:#ddd}.o_assessmentitem_wrapper .o_assessmentitem_status.review,.o_qti_menu_buttonstyle .o_assessmentitem_status.review{background-color:#5bc0de}.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAllowed,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewInvalid,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotAnswered,.o_assessmentitem_wrapper .o_assessmentitem_status.reviewNotSeen,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAllowed,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewInvalid,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotAnswered,.o_qti_menu_buttonstyle .o_assessmentitem_status.reviewNotSeen{background-color:#5bc0de;opacity:0.7}.o_assessmentitem_wrapper .o_assessmentitem_status i:before,.o_qti_menu_buttonstyle .o_assessmentitem_status i:before{color:#fff}.o_assessmentitem_controls{background:#f8f8f8;border:1px solid #e7e7e7;border-radius:0 0 4px 4px;margin-top:0;margin-bottom:16px;padding:5px 10px}.o_assessmentitem_controls button{margin-bottom:0}.o_assessmentitem_controls .o_sel_assessment_item_submit span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_next_question span:after{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï”";padding-left:0.5em}.o_assessmentitem_controls .o_sel_question_menu span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_end_testpart span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"";padding-right:0.5em}.o_assessmentitem_controls .o_sel_back_test_feedback span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï“";padding-right:0.5em}.o_assessmentitem_controls .o_sel_show_solution span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.o_assessmentitem_controls .o_sel_solution_hide span:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"ï„©";padding-right:0.5em}.itemPrompt{margin:1.5em 0;font-style:italic;color:#666666}#itemBody{margin:1em 0}.o_sel_assessment_item_hint{margin-top:1em}.o_assessment_test_results .o_sel_assessment_item_hint{display:none}tr.choiceinteraction td.control{padding:0.5em}tr.choiceinteraction td.choiceInteraction{padding:0.5em}.choiceInteraction label{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow{display:inline-block;padding:.5em;border:1px solid transparent}.choiceInteraction div.o_qti_item_choice_option_flow label span{font-weight:normal}.choiceInteraction div.o_qti_item_choice_option_flow label span>p{display:inline-block}.choiceInteraction.choiceright table tr td.choiceInteraction{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction.choiceright table tr td.o_qti_item_kprim_text{background-color:#e7e7e7;border-bottom:3px solid white}.matchInteraction input[type='text']{display:inline;width:auto}.matchInteraction div.bar_green{background-color:#5cb85c}.matchInteraction div.bar_red{background-color:#d9534f}.source-left,.target-left,.source-right,.target-right{width:50%;float:left;position:relative;padding:0;margin-top:5px}.o_match_dnd_sources{padding:10px 10px 0 10px;min-height:60px;border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8}.o_match_dnd_sources.oo-accepted{border-color:#1f7e9a}.o_match_dnd_source{padding:10px;margin-bottom:10px;border:2px dashed #999;border-radius:4px;background-color:#ffffff;background:#fcf8e3;cursor:move;cursor:grab;cursor:-moz-grab;cursor:-webkit-grab}.o_match_dnd_source:before,.o_match_dnd_source:after{content:" ";display:table}.o_match_dnd_source:after{clear:both}.o_match_dnd_source.oo-selected{border:2px dashed #f0ad4e;background:#fae3c4}.o_match_dnd_source.oo-drag{border:2px dashed #f0ad4e !important}.source-bottom .o_match_dnd_source,.source-top .o_match_dnd_source{margin:0 0 10px 0}.o_match_dnd_targets .oo-accepted{border:2px solid #1f7e9a;border-radius:4px}.o_match_dnd_target{padding:10px 10px 0 10px;margin:0 0 10px 10px;border:2px solid #5bc0de;border-radius:4px;background:#d9edf7}.o_match_dnd_target:before,.o_match_dnd_target:after{content:" ";display:table}.o_match_dnd_target:after{clear:both}.o_match_dnd_target .o_match_dnd_target_drop_zone{margin:0;padding:5px 0 0 15px;min-height:30px}.o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{border:2px dashed #777}.target-bottom .o_match_dnd_target,.target-top .o_match_dnd_target{margin:0 0 10px 0}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone{padding-left:0px}.target-bottom .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source,.target-top .o_match_dnd_target .o_match_dnd_target_drop_zone .o_match_dnd_source{padding-left:15px}.o_assessmentitem .mathEntryInteraction{border:1px solid #ddedfc;background-color:#edf1f6;background:linear-gradient(to top, #edf1f6 0%, #f6f9fb 100%);border-radius:0.4em;padding:1em;margin:0.5em 0}.o_assessmentitem .mathEntryInteraction .inputPanel{line-height:1em;text-align:left}.o_assessmentitem .mathEntryInteraction .inputPanel input{margin:0;padding:0}.o_assessmentitem .mathEntryInteraction .previewPanel{text-align:center}.o_assessmentitem .mathEntryInteraction.horizontal{min-height:5em;width:40em}.o_assessmentitem .mathEntryInteraction.horizontal .inputPanel{width:45%;float:left;margin:2em 0}.o_assessmentitem .mathEntryInteraction.horizontal .previewPanel{width:50%;margin-left:40%}.o_assessmentitem .mathEntryInteraction.vertical{min-height:6em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel{padding:0 5em}.o_assessmentitem .mathEntryInteraction.vertical .inputPanel:before{content:'Input Maths: '}.o_assessmentitem .mathEntryInteraction.vertical .previewPanel{margin-top:2em;min-height:4em}.o_assessmentitem div.upConversionAjaxControlMessage{width:auto;text-align:center;display:inline;padding:0.5em 0 0.5em 20px}.o_assessmentitem div.success{background:#5cb85c}.o_assessmentitem div.failure{background-color:#f0ad4e}.o_assessmentitem div.error{background-color:#d9534f}.o_assessmentitem div.upConversionAjaxControlPreview{margin:0.5em 0;font-size:110%}.o_assessmentitem table.inputHelp{border-collapse:collapse;width:100%;font-size:90%}.o_assessmentitem table.inputHelp th{border:1px solid #999999;padding:0.2em 0.5em;background-color:#cad8e5}.o_assessmentitem table.inputHelp td{color:#999999;border:1px solid #999999;padding:0.2em 0.5em}.o_assessmentitem table.inputHelp kbd{color:black;font-size:100%;line-height:100%}.o_assessmentitem table.inputHelp .longComma{margin-right:0.5em}.o_togglebox_wrapper #modal-correct-solution div.o_togglebox_content{background-color:#fcf8e3;border-color:#8a6d3b}.o_candidatecomment{padding:0;margin:2em 0 1em 0;border:none}.o_candidatecomment legend{font-size:110%;font-weight:bold;color:#777;margin-bottom:10px;border-bottom:0}.o_candidatecomment textarea{display:block;color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em;margin:0 0 0.5em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header{margin:0 0 1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection header div.rubric{font-style:italic}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentsection ul.o_testpartnavigation_inner{list-style:none;padding:0;margin:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem{padding:0.1em 0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a{color:#777}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem a:focus{color:#333}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a{color:#3b678a;font-weight:bold}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:hover,.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem.active a:focus{color:#243f54;background-color:#eee}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem span{vertical-align:middle}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status{display:inline;position:relative;left:-0.3em;background:transparent;border:0}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_status span{display:none}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts{float:right;display:block;padding:0.3em;border-radius:2px;background-color:#fafafa;color:#777;font-size:0.7em}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_limited{color:#f0ad4e}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_attempts.o_assessmentitem_attempts_nomore{color:#5bc0de}.o_qti_menu_menustyle ul.o_testpartnavigation li.o_assessmentitem .o_assessmentitem_marks{float:right;display:inline-block;font-size:0.8em;position:relative;top:0.3em;right:-0.5em}.o_qti_menu_menustyle ul.o_testpartnavigation .o_assessmentitem .questionTitle{margin-right:1em}.testFeedback h1:first-of-type{margin-top:0}ul.testPartDrilldown{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.o_assessmentsection{border:1px solid #e7e7e7;border-radius:4px;background:#f8f8f8;padding:0 1em 0.5em 1em}ul.testPartDrilldown li.o_assessmentsection header{margin:0 0 1em 0}ul.testPartDrilldown li.o_assessmentsection header div.rubric{font-style:italic}ul.testPartDrilldown li.o_assessmentsection ul.testPartDrilldownInner{list-style:none;padding:0;margin:0}ul.testPartDrilldown li.currentItem{border:1px solid #e7e7e7;border-radius:0.5em;padding:0 1em;margin-top:1em}.testItemControl{margin-top:0.5em}.o_assessment_test_results .o_qti_assessment_title{border-bottom:1px solid #ddd}.o_assessment_test_results table th{width:40%}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section{text-align:center}.o_assessment_test_results .o_qti_sectionsummary .o_qti_section .o_qti_section_sublisting{padding:0 10%;min-height:3em}.o_assessment_test_results .o_qti_sections .o_qti_section{margin-top:40px}.o_assessment_test_results .o_qti_sections .o_qti_section h3{margin-bottom:20px}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_id{display:none}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment{margin:0;padding:5px 10px 10px 5px;border-top:1px solid #ddd;broder-bottom:1px solid #ddd}.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h4,.o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_assessment_test_results .o_qti_sections .o_qti_section .o_qti_items .o_qti_item .o_qti_item_comment h2{font-size:100%;font-weight:bold;color:inherit}.o_assessment_test_results .o_qti_to_overview{text-align:right}#o_dev_tool #o_dev_tool_mode{width:1em;height:1em;float:left;border:1px solid #000;margin-right:5px}a.o_dev{position:absolute;left:0;top:0;z-index:4000;background:#f0ad4e;border:1px solid #d59645;border-top:none;border-left:none;border-radius:0 0 4px 0;color:#fff}a.o_dev:hover{color:#d9534f}.o_dev_w{margin:1px}.o_dev_w .o_dev_h{color:#000;font-size:8px;line-height:10px;margin:0}.o_dev_w .o_dev_h span{background:#f4c37d;border:1px solid #f0ad4e;border-bottom:0}.o_dev_w .o_dev_c{position:relative;border:1px dotted #eee}.o_dev_w .o_dev_c .o_dev_i{position:absolute;top:0px;left:24px;height:auto;width:auto;padding:5px;border:1px solid black;display:none;margin:0px;z-index:999;font-size:11px;background-color:#BBF}.o_dev_w.o_dev_m>.o_dev_c{border:1px solid #f0ad4e;margin:0px;background-color:#f8e9d4}.o_wikimod_nav .o_noti{margin:0}.o_wikimod_editform_wrapper{margin-top:30px}.o_wiki-file-deleted{text-decoration:line-through}div.o_wiki_wrapper a.wikiimg{text-decoration:none;color:inherit;font-weight:inherit}div.o_wiki_wrapper div.imgcaption{padding:0.3em 0em 0.2em 0.3em}div.o_wiki_wrapper div.imgleft{clear:left;float:left;margin:0.3em 0.3em 0.3em 0em}div.o_wiki_wrapper div.imgright{clear:right;float:right;margin:0.3em 0em 0.3em 0.3em}div.o_wiki_wrapper div.imgcenter{clear:both;overflow:hidden;text-align:center;margin:0.3em 0em 0.3em 0em}div.o_wiki_wrapper div.imgthumb{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper table.gallery{border:1px solid #ccc;margin:2px;padding:2px;background-color:white}div.o_wiki_wrapper table.gallery tr{vertical-align:middle}div.o_wiki_wrapper table.gallery td{background-color:#f9f9f9;border:solid 2px white;text-align:center;vertical-align:middle;width:150px}div.o_wiki_wrapper img.gallery{border:1px solid #bbbbbb;padding:0.3em}div.o_wiki_wrapper a.edit{font-style:italic;color:red}div.o_wiki_wrapper a.externallink:before{padding-right:2px}div.o_wiki_wrapper a.externallink:before:before{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-right:0.5em;content:""}.o_ep_icon_map:before{content:""}.o_ep_icon_collection:before{content:""}.o_ep_icon_page:before{content:""}.o_ep_icon_struct:before{content:""}.o_ep_icon_liveblog:before{content:"ï‚¡"}.o_artefact_closed:before{content:""}.o_portfolio_toc .o_ep_link{float:right;margin-right:0px}.o_portfolio_toc .o_ep_commentlink{float:right;margin-right:10%}.o_portfolio_toc li.level1{font-size:1.2em;margin:1.2em 0 0.2em 0;border-bottom:1px solid #ddd}.o_portfolio_toc li.level2{padding-left:20px;font-size:1.1em;border-bottom:1px dotted #ddd}.o_portfolio_toc li.level3{padding-left:40px}.o_eportfolio_page .o_eportfolio_structure>h5{border-bottom:1px solid #ddd;margin-top:1.2em}.o_eportfolio_maps .panel{font-family:'Century Gothic', 'Apple Gothic', sans-serif;box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .panel-heading{padding:5px 10px}.o_eportfolio_maps h4,.o_eportfolio_maps .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps h2{padding:11px 15px;background:rgba(255,255,230,0.7) none;border-radius:6px}.o_eportfolio_maps .table>tbody>tr>td{border-top:none}.o_eportfolio_maps .panel-body{border-top:none}.o_eportfolio_maps .panel>.panel-body+.table{border-top:none}.panel-footer .o_ep_options{display:inline-block}.o_eportfolio_map{padding:0 20px 2px 3px;border-radius:6px 10px 6px 0;font-family:'Century Gothic', 'Apple Gothic', sans-serif}.o_map_header{padding-left:5px}.o_eportfolio_map ul.nav-tabs li:not(.active) a{background-color:rgba(240,240,240,0.7);border-radius:4px 4px 0 0}.o_eportfolio_edit{border-radius:4px 4px 0 0}.o_ep_actualpage,.o_eportfolio_edit{padding:15px;background-color:#fff}.o_ep_content{margin-top:15px}.o_ep_filter .o_date.form-inline .form-group,.o_ep_filter .o_date.o_navbar-form .form-group{margin-left:8px}.o_eportfolio_share_policy_wrapper{border:1px solid #ddd;border-radius:4px}.o_eportfolio_share_header{padding:10px 15px;border-bottom:1px solid #ddd;background-color:#f5f5f5}.o_eportfolio_share_policy{padding:10px 15px}.o_map-default{background:#fafafa;background:#fafafa -webkit-gradient(linear, 37% 20%, 53% 100%, from(#fafafa), to(#efefef));background:#fafafa -moz-linear-gradient(43% 71% 101deg, #efefef, #fafafa);background:#fafafa -o-linear-gradient(#fafafa, #efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#fafafa', EndColorStr='#efefef');border:1px solid #efefef;border-left:3px solid rgba(188,188,188,0.8)}.o_eportfolio_maps .o_map-default h4,.o_eportfolio_maps .o_map-default .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-default h2{color:#444;background:none}.o_eportfolio_maps .o_map-default .panel-body,.o_eportfolio_maps .o_map-default td,.o_eportfolio_maps .o_map-default a{color:#000}.o_map-comic{background:#a2c3e8 none;font-family:'Comic Sans MS', 'Comic Sans', fantasy;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_map-leather{background-color:#957352;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(248,248,248,0.7)), color-stop(100%, rgba(193,193,193,0.5))),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-webkit-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-moz-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-ms-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:-o-linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");background-image:linear-gradient(top, rgba(248,248,248,0.7), rgba(193,193,193,0.5)),url("../light/images/portfolio/white-leather-tile.jpg");font-family:Palatino, Georgia, serif;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-leather h4,.o_eportfolio_maps .o_map-leather .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-leather h2{background:rgba(243,230,225,0.3) none}.o_eportfolio_maps .o_map-leather .panel-body,.o_eportfolio_maps .o_map-leather td{color:#333}.o_eportfolio_maps .o_map-leather a{color:#fad9a4}.o_eportfolio_map.o_map-leather .o_map_header h4,.o_eportfolio_map.o_map-leather .o_map_header .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_map.o_map-leather .o_map_header h2,.o_eportfolio_map.o_map-leather .o_map_header p,.o_eportfolio_map.o_map-leather .o_map_header a,.o_eportfolio_map.o_map-leather .o_map_header span,.o_eportfolio_map.o_map-leather .o_map_header label{color:#333}.o_map-epmst-green{background-color:#ECF69A;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-green h4,.o_eportfolio_maps .o_map-epmst-green .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green h2{color:#444}.o_eportfolio_maps .o_map-epmst-green .panel-body,.o_eportfolio_maps .o_map-epmst-green td,.o_eportfolio_maps .o_map-epmst-green a{color:#000}.o_map-epmst-green2{background:#99E44D;background:#99E44D -webkit-gradient(linear, 37% 20%, 53% 100%, from(#99E44D), to(#CBF1A5));background:#99E44D -moz-linear-gradient(43% 71% 101deg, #CBF1A5, #99E44D);background:#99E44D -o-linear-gradient(#99E44D, #CBF1A5);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#99E44D', EndColorStr='#CBF1A5');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green2 h4,.o_eportfolio_maps .o_map-epmst-green2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green2 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green2 .panel-body,.o_eportfolio_maps .o_map-epmst-green2 td,.o_eportfolio_maps .o_map-epmst-green2 a{color:#000}.o_map-epmst-green3{background:#DFF0C1;background:#DFF0C1 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DFF0C1), to(#A0D346));background:#DFF0C1 -moz-linear-gradient(43% 71% 101deg, #A0D346, #DFF0C1);background:#DFF0C1 -o-linear-gradient(#DFF0C1, #A0D346);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DFF0C1', EndColorStr='#A0D346');border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green3 h4,.o_eportfolio_maps .o_map-epmst-green3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green3 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green3 .panel-body,.o_eportfolio_maps .o_map-epmst-green3 td,.o_eportfolio_maps .o_map-epmst-green3 a{color:#000}.o_map-epmst-green4{background-color:#D7DBB5;border:1px solid #bbb;border-left:3px solid rgba(136,136,136,0.8)}.o_eportfolio_maps .o_map-epmst-green4 h4,.o_eportfolio_maps .o_map-epmst-green4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-green4 h2{color:#555}.o_eportfolio_maps .o_map-epmst-green4 .panel-body,.o_eportfolio_maps .o_map-epmst-green4 td,.o_eportfolio_maps .o_map-epmst-green4 a{color:#000}.o_map-epmst-red{background:#FFBA71;background:#FFBA71 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFBA71), to(#FFBA99));background:#FFBA71 -moz-linear-gradient(43% 71% 101deg, #FFBA99, #FFBA71);background:#FFBA71 -o-linear-gradient(#FFBA71, #FFBA99);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFBA71', EndColorStr='#FFBA99');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red h4,.o_eportfolio_maps .o_map-epmst-red .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red h2{color:#444}.o_eportfolio_maps .o_map-epmst-red .panel-body,.o_eportfolio_maps .o_map-epmst-red td,.o_eportfolio_maps .o_map-epmst-red a{color:#000}.o_map-epmst-red2{background:#FF9772;background:#FF9772 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FF9772), to(#FF9780));background:#FF9772 -moz-linear-gradient(43% 71% 101deg, #FF9780, #FF9772);background:#FF9772 -o-linear-gradient(#FF9772, #FF9780);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FF9772', EndColorStr='#FF9780');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red2 h4,.o_eportfolio_maps .o_map-epmst-red2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red2 .panel-body,.o_eportfolio_maps .o_map-epmst-red2 td,.o_eportfolio_maps .o_map-epmst-red2 a{color:#000}.o_map-epmst-red3{background:#E8AFBB;background:#E8AFBB -webkit-gradient(linear, 37% 20%, 53% 100%, from(#E8AFBB), to(#E8AFA0));background:#E8AFBB -moz-linear-gradient(43% 71% 101deg, #E8AFA0, #E8AFBB);background:#E8AFBB -o-linear-gradient(#E8AFBB, #E8AFA0);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#E8AFBB', EndColorStr='#E8AFA0');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red3 h4,.o_eportfolio_maps .o_map-epmst-red3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red3 .panel-body,.o_eportfolio_maps .o_map-epmst-red3 td,.o_eportfolio_maps .o_map-epmst-red3 a{color:#000}.o_map-epmst-red4{background:#FFA800;background:#FFA800 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#FFA800), to(#FFAF00));background:#FFA800 -moz-linear-gradient(43% 71% 101deg, #FFAF00, #FFA800);background:#FFA800 -o-linear-gradient(#FFA800, #FFAF00);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#FFA800', EndColorStr='#FFAF00');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-red4 h4,.o_eportfolio_maps .o_map-epmst-red4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-red4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-red4 .panel-body,.o_eportfolio_maps .o_map-epmst-red4 td,.o_eportfolio_maps .o_map-epmst-red4 a{color:#000}.o_map-epmst-blue{background:#00D2F8;background:#00D2F8 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#00D2F8), to(#4A9EAD));background:#00D2F8 -moz-linear-gradient(43% 71% 101deg, #4A9EAD, #00D2F8);background:#00D2F8 -o-linear-gradient(#00D2F8, #4A9EAD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#00D2F8', EndColorStr='#4A9EAD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue h4,.o_eportfolio_maps .o_map-epmst-blue .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue .panel-body,.o_eportfolio_maps .o_map-epmst-blue td,.o_eportfolio_maps .o_map-epmst-blue a{color:#000}.o_map-epmst-blue2{background-color:#C4F6FF;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue2 h4,.o_eportfolio_maps .o_map-epmst-blue2 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue2 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue2 .panel-body,.o_eportfolio_maps .o_map-epmst-blue2 td,.o_eportfolio_maps .o_map-epmst-blue2 a{color:#000}.o_map-epmst-blue3{background-color:#B3E2F7;border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue3{box-shadow:3px 3px 4px rgba(20,20,20,0.4)}.o_eportfolio_maps .o_map-epmst-blue3 h4,.o_eportfolio_maps .o_map-epmst-blue3 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue3 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue3 .panel-body,.o_eportfolio_maps .o_map-epmst-blue3 td,.o_eportfolio_maps .o_map-epmst-blue3 a{color:#000}.o_map-epmst-blue4{background:#DEE7F7;background:#DEE7F7 -webkit-gradient(linear, 37% 20%, 53% 100%, from(#DEE7F7), to(#C1E9FD));background:#DEE7F7 -moz-linear-gradient(43% 71% 101deg, #C1E9FD, #DEE7F7);background:#DEE7F7 -o-linear-gradient(#DEE7F7, #C1E9FD);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#DEE7F7', EndColorStr='#C1E9FD');border:1px solid #888;border-left:3px solid rgba(85,85,85,0.8)}.o_eportfolio_maps .o_map-epmst-blue4 h4,.o_eportfolio_maps .o_map-epmst-blue4 .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_eportfolio_maps .o_map-epmst-blue4 h2{color:#444}.o_eportfolio_maps .o_map-epmst-blue4 .panel-body,.o_eportfolio_maps .o_map-epmst-blue4 td,.o_eportfolio_maps .o_map-epmst-blue4 a{color:#000}.o_portfolio div#o_main_toolbar.o_toolbar{margin-top:0px}.o_section_lead,.o_page_lead,.o_assignment_lead{padding:10px 10px;margin-bottom:10px;background-color:#f2f2f2;border-radius:3px;border:1px #d9d9d9 solid}.o_section_lead.o_assignment_2_instantiate{border-radius:3px 3px 0px 0px;border-bottom:none;padding-bottom:1px;margin-bottom:0px}.o_assignment_2_instantiate{padding:10px 10px 0px 10px;background-color:#f2f2f2;border-left:1px #d9d9d9 solid;border-right:1px #d9d9d9 solid}.o_assignment_2_instantiate.last{padding-bottom:10px;border-bottom:1px #d9d9d9 solid;border-radius:0px 0px 3px 3px}.o_page_lead{padding:20px}.o_page_lead h2{margin-bottom:5px}.o_page_lead .o_portfolio_page_meta{margin-bottom:5px}.o_page_lead .o_page_summary{font-size:18px}.o_page_lead .o_media.o_media_right,.o_page_lead .o_media.o_media_right_large{float:right;margin-left:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_left_large{float:left;margin-right:2em;margin-bottom:2em}.o_page_lead .o_media.o_media_left,.o_page_lead .o_media.o_media_right{max-height:200px;max-width:50%}.o_page_lead .o_media.o_media_left img,.o_page_lead .o_media.o_media_right img{max-height:200px}.o_page_lead .o_media.o_media_right_large,.o_page_lead .o_media.o_media_left_large{max-height:300px;max-width:75%}.o_page_lead .o_media.o_media_right_large img,.o_page_lead .o_media.o_media_left_large img{max-height:300px}.o_page_lead .o_media.o_desc_empty{max-height:300px;text-align:center}.o_page_lead .o_media.o_desc_empty img{max-height:300px}.o_page_lead .o_media img{border-radius:3px;border:1px #d9d9d9 solid;background:#fff}.o_page_lead .o_portfolio_status_block{border-top:1px solid #d9d9d9;padding-top:1em;margin-bottom:-1em}.o_page_lead .o_portfolio_status{display:inline-block;padding-right:2em}.o_page_lead.o_block_imagebg .o_portfolio_status{padding:2px;background-color:rgba(255,255,255,0.8)}.o_page_assignment{font-size:12px}.o_page_assignment.o_togglebox_wrapper div.o_togglebox_content{margin:10px 0 20px 0;padding:20px;border-left:3px solid #d9534f;background-color:#f2dede}.o_page_assignment .o_page_assignement_info{position:relative;left:-1em}.o_portfolio_listing.o_rendertype_custom .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry{position:relative;display:inline-block;height:230px;width:400px;vertical-align:top;margin-right:10px}.o_portfolio_listing.o_rendertype_custom .o_portfolio_entry ul{padding-left:2em}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul{margin:0;padding:0;list-style-type:none}.o_portfolio_listing.o_rendertype_custom .panel-imagebg .panel-body ul li{padding:2px}.o_binder.o_portfolio_assignments .panel-heading,.o_binder.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.panel-default.o_portfolio_assignments .panel-heading,.panel-default.o_portfolio_assignments .panel-body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body{border-left:3px solid #d9534f}.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_meta_wrapper,.o_portfolio_page .o_portfolio_assignments .o_portfolio_page_body .o_portfolio_page_summary{padding-left:10px}.o_portfolio_page_summary .o_media.o_media_right,.o_portfolio_page_summary .o_media.o_media_right_large{float:right;margin-left:0.5em;margin-bottom:0.5em}.o_portfolio_page_summary .o_media.o_media_left,.o_portfolio_page_summary .o_media.o_media_left_large{float:left;margin-right:0.5em;margin-bottom:0.5em}.o_portfolio_categories .tag{font-size:80%;font-weight:normal}.o_portfolio_last_modified+.o_portfolio_categories,.o_portfolio_page_meta+.o_portfolio_categories{margin-left:1em}.o_rendertype_classic .o_pf_page,.o_rendertype_classic .o_pf_assignment{padding-left:1em}.o_portfolio_timeline .o_timeline_up{text-align:center}.o_portfolio_timeline .o_timeline_down{text-align:center}.o_portfolio_timeline .axis path,.o_portfolio_timeline .axis line{fill:none;stroke:#000;shape-rendering:crispEdges}.o_portfolio_timeline .x.axis line,.o_portfolio_timeline .x.axis path{display:none}.o_portfolio_timeline path.o_timeline_curve{fill:none;stroke:#ccc;shape-rendering:crispEdges}.o_portfolio_timeline .y.axis .tick line,.o_portfolio_timeline .y.axis path.domain{stroke:#ddd}.o_portfolio_timeline text{fill:#888;stroke:none;font-size:10px}.o_portfolio_timeline .dot.o_pf_status_draft{fill:#f0ad4e}.o_portfolio_timeline .dot.o_pf_status_published{fill:#3b678a}.o_portfolio_timeline .dot.o_pf_status_inrevision{fill:#d9534f}.o_portfolio_timeline .dot.o_pf_status_closed{fill:#5cb85c}.o_portfolio_timeline .dot.o_pf_status_deleted{fill:#000}.o_portfolio_title_help_helper{display:inline-block;float:right;position:relative;top:1em;right:1em}.o_pf_comments{margin-top:2em}.o_pf_content .o_cit,.o_pf_content .o_file{background-color:#f8f8f8;padding:10px;border-radius:10px}.o_pf_content .o_forum{border:1px #f8f8f8 solid;padding:10px;border-radius:10px}.o_pf_content .o_image,.o_pf_content .o_video{padding:10px;text-align:center;width:100%}.o_pf_content .o_image img,.o_pf_content .o_video img{border:1px #f8f8f8 solid;border-radius:10px}.o_pf_content_editor .o_toolbar{border:none}.o_pf_content_editor .o_page_part{border:2px solid transparent}.o_pf_content_editor .o_page_part:hover{border:2px dotted #6b9ac0}.o_pf_content_editor .o_page_fragment_edit{position:relative}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above{height:25px;width:100%;background:#6b9ac0;position:absolute;z-index:3;left:0;top:-25px;box-shadow:3px -8px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_add_above{position:absolute;left:0;top:-25px;height:25px;border-left:2px dashed #6b9ac0;border-top:2px dashed #6b9ac0;border-right:2px dashed #6b9ac0;border-radius:10px 10px 0 0;box-shadow:0 -5px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_sel_add_element_above{display:inline-block;padding:5px 5px 0 5px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above{padding-right:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above .o_page_type{display:none}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a{float:right;color:#fff;padding-right:1em}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_above .o_page_others_above a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd{position:absolute;z-index:4;top:0;right:0;width:25px;height:100%;background:#6b9ac0}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a{position:absolute;display:inline-block;width:25px;height:25px;line-height:25px;text-align:center;vertical-align:middle;color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_up_element{z-index:4;top:-25px}.o_pf_content_editor .o_page_fragment_edit .o_page_tools_dd a.o_sel_move_down_element{bottom:0}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit{padding-right:25px;border:2px solid #6b9ac0;box-shadow:5px 5px 10px 0px rgba(0,0,0,0.2)}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit:hover{border:2px solid #6b9ac0}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar{position:absolute;z-index:5;left:5px;top:-25px;display:inline-block;height:25px;line-height:25px;vertical-align:middle}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a{color:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a:hover{color:#e6e6e6}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_toolbar a.o_disabled:hover{color:rgba(255,255,255,0.5) !important}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_page_edit_title .o_page_edit_toolbar li{font-weight:bold}.o_pf_content_editor .o_page_fragment_edit .o_page_part.o_page_edit .o_richtext_mce textarea{border:0}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below{position:absolute;z-index:3;left:0;bottom:-25px;height:25px;border-left:2px dashed #6b9ac0;border-bottom:2px dashed #6b9ac0;border-right:2px dashed #6b9ac0;border-radius:0 0 10px 10px;box-shadow:3px 8px 10px 0px rgba(0,0,0,0.2);background:#fff}.o_pf_content_editor .o_page_fragment_edit .o_page_add_below .o_sel_add_element_below{display:inline-block;padding:0 5px 5px 5px}.o_pf_content_editor .o_pf_add_contents{margin-top:30px}.o_portfolio_add_callout a span{display:none}.o_portfolio_add_callout ul.list-inline{margin-bottom:0}.o_portfolio_image_options{clear:both;width:300px;padding:5px}.o_binder_page_listing .o_portfolio_page_links{background-color:#f8f8f8;border-radius:4px}.o_binder_page_listing .o_portfolio_page_links .o_portfolio_comment{float:right}.o_portfolio_toc{padding-bottom:6em}.o_portfolio_toc .o_portfolio_section_meta{font-size:80%;color:#777;position:relative;top:-15px}.o_portfolio_toc .o_section{position:relative}.o_portfolio_toc .o_section .o_header_with_buttons h4,.o_portfolio_toc .o_section .o_header_with_buttons .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_portfolio_toc .o_section .o_header_with_buttons h2{padding-right:0.5em}.o_portfolio_toc .o_section_actions{position:absolute;top:0;right:0}.o_portfolio_toc .o_section_actions .o_section_move_up_and_down{display:inline-block}.o_portfolio_toc .o_section_actions .o_section_dropdown{display:inline-block;position:relative;top:-0.5em;padding-left:0.5em}.o_portfolio_toc ul>li>ul{padding-left:1.5em}.o_portfolio_content .o_portfolio_toc.o_portfolio_toc_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:70%;float:left}.o_portfolio_content .o_portfolio_timeline{width:29%;float:right}.o_portfolio_page_meta_wrapper{background-position:left top;background-repeat:no-repeat}.o_portfolio_rights table .o_portfolio_section td:first-child{padding-left:1.5em}.o_portfolio_rights table .o_portfolio_page td:first-child{padding-left:2.5em}.o_portfolio_publication table{padding-bottom:10px}.o_portfolio_publication table td{padding:5px 5px 5px 0}.o_portfolio_publication .o_portfolio_ac{font-size:90%}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(2){width:200px;white-space:nowrap}.o_portfolio_publication .o_portfolio_ac table td:nth-of-type(3){width:40px;white-space:nowrap}.o_portfolio_publication ul ul{margin-left:2em;margin-bottom:5px}.o_portfolio_publication ul li{background:#fbfbfb;padding:3px;margin-bottom:2px}.o_portfolio_publication ul li li{background:#f2f2f2}.o_portfolio_publication ul li li li{background:#eee}.o_portfolio_publication ul li li .table{margin-bottom:0px}@media (max-width: 767px){.o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline,.o_portfolio_content .o_portfolio_entries.o_portfolio_withtimeline{width:100%;float:none}.o_portfolio_content .o_sel_timeline_off,.o_portfolio_content .o_sel_timeline_on,.o_portfolio_content .o_portfolio_timeline{display:none}.o_portfolio_content .o_portfolio_content .o_portfolio_toc.o_portfolio_withtimeline{width:100%;float:none}}.o_portfolio_media_browser .o_portfolio_medias{position:relative;margin-bottom:20px;margin-top:20px}.o_portfolio_media_browser .o_portfolio_medias:before,.o_portfolio_media_browser .o_portfolio_medias:after{content:" ";display:table}.o_portfolio_media_browser .o_portfolio_medias:after{clear:both}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{position:relative;float:left;margin:0 20px 20px 0;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media:last-child{margin-right:0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{border:1px solid #3b678a;position:relative;height:180px;width:180px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual span.o_visual_not_available{width:100%;height:100%;display:block}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon span.o_visual_not_available{background-image:none}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:6em;text-align:center;color:#eee;line-height:140px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta{position:absolute;left:0;bottom:0;width:100%;border:1px solid #3b678a;border-top:0;background-color:rgba(255,255,255,0.8)}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title{margin:0;text-align:center;line-height:2em;height:2em;width:100%;overflow:hidden}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a{display:block;color:#3b678a;font-family:inherit;font-weight:inherit}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a:hover{color:#2c4c66}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_meta .o_title a>i{display:none}@media (min-width: 768px) and (max-width: 991px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 10px 10px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}@media (max-width: 767px){.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media{width:80px;margin:0 1px 1px 0}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual{height:80px;width:80px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_visual.o_icon{font-size:2.5em;line-height:55px}.o_portfolio_media_browser .o_portfolio_medias .o_portfolio_media .o_title{font-size:90%}}.o_evaluation_form .o_evaluation_step_labels{margin-bottom:8px}.o_evaluation_form .o_evaluation_step_labels div,.o_evaluation_form .o_evaluation_step_labels span{display:inline-block;text-align:center}.o_evaluation_form .o_slider{margin-bottom:8px}.o_evaluation_form .o_slider.hover{background-color:#f5f5f5}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels{position:relative}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:first-child{position:absolute;left:0px;text-align:left}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div{display:inline-block;text-align:center}.o_evaluation_form .o_evaluation_discrete_slider .o_evaluation_step_labels div:last-child{position:absolute;right:0px;text-align:right}.o_evaluation_form .o_evaluation_discrete_radio .o_slider input[type='radio']{padding:0;margin:0;position:relative}.o_evaluation_form .o_evaluation_discrete_radio .o_slider label{padding:0;margin:0;text-align:center}.o_evaluation_form .o_evaluation_discrete_radio .o_slider .o_evaluation_steps div.radio{display:inline-block;text-align:center}.o_evaluation_form .o_slider .ui-slider.ui-slider-horizontal.ui-widget-content{margin-top:0.3em}.o_evaluation_form .o_evaluation_left_label{text-align:right}.o_evaluation_form .o_evaluation_right_label{text-align:left}.o_evaluation_form .o_evaluation_textinput .o_evaluation_legend{padding-left:0.5em;margin-bottom:0.5em}@media (max-width: 768px){.o_evaluation_form .o_evaluation_left_label{text-align:left}.o_evaluation_form .o_evaluation_right_label{text-align:right}}.o_slider_overview{width:100%;height:20px;position:relative}.o_slider_overview .o_slider_overview_line{top:5px;left:0px;position:absolute;width:100%;height:11px;border:1px solid #999;border-radius:4px}.o_slider_overview .o_slider_overview_point{position:absolute;width:10px;height:10px;background-color:#3b678a}.o_evaluation_editor_form{margin:10px 10px 0 10px}.o_evaluation_editor_form .o_slider_editor{margin-top:10px;position:relative}.o_evaluation_editor_form .o_evaluation_step_labels{display:inline-block}.o_evaluation_editor_form .o_evaluation_step_labels input{width:100%}.o_evaluation_editor_form .o_slider_editor_delete{padding-right:48px}.o_evaluation_editor_form .o_slider_editor_delete .o_slider_editor_delete_button{position:absolute;right:15px}.o_cit{position:relative;margin:10px 0}.o_cit blockquote.o_quote{color:#555;font-size:18px;margin-top:6px;padding:0 12px}.o_cit blockquote.o_quote p:last-child:after{content:'1)';top:-0.5em;font-size:75%;line-height:0;position:relative;vertical-align:baseline}.o_cit .o_cit_bibinfo{font-size:90%;margin-left:1em;position:relative}.o_cit .o_cit_bibinfo>div:first-child:before{content:'1)';position:absolute;top:0.5em;left:-1em;font-size:75%;line-height:0;vertical-align:baseline}.o_cit .title,.o_cit .url,.o_cit .authors,.o_cit .pages,.o_cit .date,.o_cit .dateAdded,.o_cit .place,.o_cit .institution,.o_cit .issue,.o_cit .publisher,.o_cit .publicationTitle,.o_cit .edition,.o_cit .series,.o_cit .volume{margin-right:0.5em}.o_cit .title{font-style:italic}.o_cit .publicationTitle{color:black}.o_cit .links{padding-left:2em}.o_cit .notes{padding-left:2em;color:grey}.o_cit .note{font-style:italic}.o_cit .note p:first-child{margin-top:0}.o_cit .note p:first-child{margin-bottom:0}.o_cit .listing.web .item{padding-left:0;text-indent:0}.o_cit .listing.web .title{display:block;font-weight:bold;font-style:normal}.o_cit .listing.web .publicationTitle{display:block;font-style:italic}.o_cit .listing.web .url{display:block}.o_cit .listing.web .links{padding-left:0}.o_cit .listing.web .notes{padding-left:0}.o_cit .general-info{border-top:1px solid #eee;padding-top:30px;margin-top:30px}.o_cit .copyright{display:none}@media print{.cit{background-image:none;padding-top:0;max-width:100%}.cit #styles,.cit #refreshContainer{display:none}.cit #general-info a:after{content:" (" attr(href) ") ";font-size:0.8em;font-weight:normal}.cit #copyright{display:block;margin-top:30px}}.o_video_poster{position:relative;display:inline-block;width:400px;max-width:100%;height:225px;background-size:cover;background-repeat:no-repeat;border:1px solid #eee}.o_video_poster_select{text-align:center}.o_video_poster_select .o_video_poster{margin:5px}.o_video_poster_select .o_video_poster a{position:absolute;left:0;top:0;width:100%;height:100%}.o_video_poster_select .o_video_poster a span{position:absolute;bottom:0;width:100%;display:block;line-height:3em;background:#f8f8f8;opacity:0.8}.o_video_poster_select .o_video_poster a:hover{border:1px solid #bbb}.o_video_poster_select .o_video_poster a:hover span{opacity:0.9}.o_video_peekview{text-align:center}.o_video_listing .o_table_body.container-fluid{padding-right:0px;padding-left:0px}.o_video_listing .o_video_entry{position:relative;display:inline-block;height:230px;width:250px;vertical-align:top;margin-right:10px}.o_video_listing .o_video_poster{width:250px;max-width:100%;height:140px;border:1px solid #eee}.o_video_listing .o_timecode{position:absolute;bottom:2px;right:3px;padding:3px 4px;background:#333;color:#fff;font-size:12px;line-height:12px}.o_video_listing .o_meta{padding:2px;font-size:11px}.o_video_listing .o_meta h5{font-size:14px;margin-top:0;margin-bottom:5px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.o_video_listing .o_date{margin-left:10px;display:inline-block}.o_video_listing .o_date:before{content:'\002022';margin-right:10px;display:inline-block}.o_video_run .o_author{margin-top:0.5em;margin-bottom:1em;line-height:normal;font-size:90%;color:#3c763d}.o_video_run .o_ratings_and_comments{margin-top:2em;border-top:1px solid #eee;padding-top:1em}.mejs__controls .mejs__sourcechooser-button>button{background:transparent;display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}.mejs__controls .mejs__sourcechooser-button>button:before{content:"";color:white;font-size:18px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector{visibility:visible !important;width:170px;padding-left:10px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label{font-weight:normal;font-size:10px;width:140px}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label:hover{color:#eee}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li label .type{display:none}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__sourcechooser-button .mejs__sourcechooser-selector ul li input:checked+label{color:#d9534f}.mejs__controls .mejs__captions-button .mejs__captions-selector{right:-26px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label{font-weight:normal;font-size:10px}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label:hover{color:#eee}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li label .type{display:none}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input{visibility:hidden;margin:0;width:0}.mejs__controls .mejs__captions-button .mejs__captions-selector ul li input:checked+label{color:#d9534f}.mejs__button.mejs__speed-button{width:36px}.mejs__controls .mejs__speed-button>button{background:transparent;width:36px;margin:11px 0 0 0;font-size:11px;line-height:normal;color:#ffffff}.mejs__controls .mejs__speed-button .mejs__speed-selector{height:150px;top:auto;bottom:40px}.mejs__controls .mejs__speed-button .mejs__speed-selector ul li label{font-weight:normal;font-size:10px}.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-title,.mejs__chapters .mejs__chapter .mejs__chapter-block .ch-time{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}.o_userbulk_changedcell{font-style:italic;font-weight:bold}body.o_dmz{background:transparent}body.o_dmz #o_bg{position:absolute;top:0;left:0;width:100%;height:100%;border-top:50px solid transparent;border-bottom:70px solid transparent;background:url("images/learn-bg.jpg");background-size:cover;background-position:center center;background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff',GradientType=1 )}body.o_dmz #o_bg:after{content:" ";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(to right, rgba(255,255,255,0.1) 0.2%, rgba(255,255,255,0.6) 60%, rgba(255,255,255,0.8) 100%);background-size:cover;background-position:center center;background-repeat:no-repeat}body.o_dmz #o_toplink{display:none}body.o_dmz #o_main_wrapper,body.o_dmz #o_main_wrapper #o_main_container{background:transparent}.o_login{padding-bottom:20px;padding-left:10%;padding-right:10%;text-align:right}.o_login .o_login_intro{padding-left:10%}.o_login .o_login_intro h1{margin-bottom:40px;color:#3b678a}.o_login .o_login_intro .lead{color:#333}.o_login .o_login_intro .lead h1,.o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h3,.o_login .o_login_intro .lead h4,.o_login .o_login_intro .lead .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_login .o_login_intro .lead h2,.o_login .o_login_intro .lead h5{margin-bottom:20px;color:#3b678a}.o_login .o_login_messages,.o_login .o_login_box{display:inline-block;width:400px;text-align:left}.o_login .o_login_messages .o_infomessage_wrapper{background:rgba(255,255,255,0.5);border:1px solid transparent;border-radius:4px;padding:6px 12px}.o_login .o_login_messages .o_infomessage_wrapper .o_info,.o_login .o_login_messages .o_infomessage_wrapper .o_warning,.o_login .o_login_messages .o_infomessage_wrapper .o_note{margin:0}.o_login .o_login_box{padding-top:10px}.o_login .o_login_providers{margin-bottom:6px;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_providers a span{display:block;font-size:9px;padding-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.o_login .o_login_providers .o_icon_provider_olat{font-size:1em}.o_login .o_login_provider{background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3);box-shadow:0px 1px 10px -1px rgba(0,0,0,0.3)}.o_login .o_login_form{position:relative;padding:10px 12px}.o_login .o_login_form .o_login_pwd{position:absolute;bottom:2em;right:12px}.o_login .o_login_form .o_form .o_desc{margin:0 0 30px 0;padding:0;border-left:0;background-color:transparent}.o_login .o_login_register{display:block;line-height:2em;font-size:18px;text-align:center;color:#fff;background-color:#5bc0de;border-color:#46b8da;border-radius:4px;margin-top:16px;padding:10px 12px}.o_login .o_login_register:hover,.o_login .o_login_register:focus,.o_login .o_login_register.focus,.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{color:#fff;background-color:#31b0d5;border-color:#269abc}.o_login .o_login_register:active,.o_login .o_login_register.active,.open>.o_login .o_login_register.dropdown-toggle{background-image:none}.o_login .o_login_register.disabled,.o_login .o_login_register.disabled:hover,.o_login .o_login_register.disabled:focus,.o_login .o_login_register.disabled.focus,.o_login .o_login_register.disabled:active,.o_login .o_login_register.disabled.active,.o_login .o_login_register[disabled],.o_login .o_login_register[disabled]:hover,.o_login .o_login_register[disabled]:focus,.o_login .o_login_register[disabled].focus,.o_login .o_login_register[disabled]:active,.o_login .o_login_register[disabled].active,fieldset[disabled] .o_login .o_login_register,fieldset[disabled] .o_login .o_login_register:hover,fieldset[disabled] .o_login .o_login_register:focus,fieldset[disabled] .o_login .o_login_register.focus,fieldset[disabled] .o_login .o_login_register:active,fieldset[disabled] .o_login .o_login_register.active{background-color:#5bc0de;border-color:#46b8da}.o_login .o_login_register .badge{color:#5bc0de;background-color:#fff}.o_login .o_login_register small{font-size:14px}.o_login .o_login_social{position:relative;padding:10px 12px}.o_login .o_login_social li{padding:10px 12px}.o_login .o_login_social li>a{display:block;line-height:2em;text-align:center;font-size:18px;border-radius:4px;padding:10px 12px}.o_login .o_login_social .btn-default.o_sel_auth_facebook{color:#fff;background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{color:#fff;background-color:#37538d;border-color:#2d4374}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_facebook.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled],.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#4568b2;border-color:#3e5da0}.o_login .o_login_social .btn-default.o_sel_auth_facebook .badge{color:#4568b2;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_twitter{color:#fff;background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{color:#fff;background-color:#00b4f8;border-color:#009ad4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_twitter.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled],.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#2cc5ff;border-color:#13beff}.o_login .o_login_social .btn-default.o_sel_auth_twitter .badge{color:#2cc5ff;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_google{color:#fff;background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.focus,.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{color:#fff;background-color:#d83825;border-color:#ba3120}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_google.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google.disabled,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_google.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled],.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#e15f4f;border-color:#dd4b39}.o_login .o_login_social .btn-default.o_sel_auth_google .badge{color:#e15f4f;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{color:#fff;background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{color:#fff;background-color:#015e8a;border-color:#014667}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_linkedin.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled],.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#0181bd;border-color:#0170a4}.o_login .o_login_social .btn-default.o_sel_auth_linkedin .badge{color:#0181bd;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_adfs{color:#fff;background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_adfs.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled],.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_adfs .badge{color:#3b678a;background-color:#fff}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect{color:#fff;background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{color:#fff;background-color:#2c4c66;border-color:#213a4d}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active,.open>.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.dropdown-toggle{background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.disabled.active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled],.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:hover,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].focus,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled]:active,.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect[disabled].active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:hover,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.focus,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect:active,fieldset[disabled] .o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect.active{background-color:#3b678a;border-color:#335a78}.o_login .o_login_social .btn-default.o_sel_auth_OpenIDConnect .badge{color:#3b678a;background-color:#fff}@media (max-width: 767px){body.o_dmz #o_bg{background:none;display:none}.o_login{padding:0}.o_login .o_login_intro{padding:0;text-align:left}.o_login .o_login_box_wrapper{text-align:center;padding:0}.o_login .o_login_box{padding-left:0;padding-right:0}.o_login .o_login_box .o_login_providers,.o_login .o_login_box .o_login_provider{-webkit-box-shadow:none;box-shadow:none}.o_login .o_login_messages,.o_login .o_login_box{width:100%;display:block}}.o_home_main h1{text-align:center}.o_home_main .o_icon_rss{line-height:20px;vertical-align:middle}.o_showall{font-size:12px;text-align:right;margin-bottom:5px;margin-top:10px}.o_portlet{position:relative;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.1);box-shadow:0 1px 1px rgba(0,0,0,0.1)}.o_portlet .o_header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:6px 12px;border-bottom:1px solid #ddd;background-color:#f5f5f5;border-top-right-radius:4px;border-top-left-radius:4px}.o_portlet .o_content{padding:6px 12px}.o_portlet .o_portlet_table{margin:-12px;margin-bottom:-6px;margin-top:0}.o_portlet .o_table_empty.o_info{padding:6px}.o_portlet .o_toolbox{position:absolute;top:-1px;right:-1px;z-index:2;background-color:#fff;border:1px solid #faebcc;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:4px;border-bottom-left-radius:4px;padding:6px 12px}.o_portlet .o_toolbox div{display:inline}.o_portlet .o_edit_shim{position:absolute;height:100%;width:100%;z-index:1;background:#fcf8e3;opacity:0.8}.o_inactive .o_header a{float:right;margin-left:12px;margin-top:10px}.o_portlet_dyk_q{margin-top:5px;font-style:italic}.o_portlet_dyk_a{margin:5px 0}.o_portlet_dyk_next{margin:5px 0;text-align:right}.o_library_icon:before{content:""}.o_library ul{list-style:none;margin:0 0 15px 0;padding:0}.o_library ul ul{margin:0}.o_library_overview .o_library_newest_files ul li{float:left;margin-right:15px}.o_library_item{margin-bottom:10px;position:relative}.o_library_item .o_library_visual,.o_library_item .o_library_extra,.o_library_item .o_library_meta{margin-top:15px}.o_library_item .o_library_visual{float:left;background-color:#fff;border-radius:4px;border:1px solid #ddd}.o_library_item .o_library_visual .o_thumbnail_available,.o_library_item .o_library_visual .o_thumbnail_unavailable{background-size:146px auto;width:150px !important;height:150px !important;background-repeat:no-repeat;background-position:50% 50%}.o_library_item .o_library_visual .o_thumbnail_available:before,.o_library_item .o_library_visual .o_thumbnail_unavailable:before{content:none}.o_library_item .o_library_visual .o_thumbnail_available{background-size:146px auto}.o_library_item .o_library_visual .o_thumbnail_unavailable{display:none}.o_library_item .o_library_extra{float:right;width:200px}.o_library_item .o_library_meta{clear:both}.o_library_item .o_library_meta .o_library_desc{padding-bottom:10px}.o_library_item .o_library_meta small{display:block;word-wrap:break-word}.o_library_item h4,.o_library_item .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item h2{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:normal}.o_library_item .btn{display:block;margin-bottom:0.5em}.o_library_item .o_comments{display:inline-block}.o_library_item .table{table-layout:fixed;word-wrap:break-word;margin-bottom:0}.o_library_item p.o_library_show_more{text-align:right;margin:0;padding-top:20px}.o_library_item .o_library_more{padding-top:20px;display:none}.o_library_folder{margin-top:-20px}.o_library .o_ratings_and_comments .o_rating_title,.o_library .o_ratings_and_comments .o_rating_explanation{display:none}@media (min-width: 768px){.o_library_item .o_library_meta{clear:none;margin-left:150px;margin-right:200px;padding:0 10px}.o_library_item .o_library_more{display:none}.o_library_item .o_library_more table tbody{vertical-align:top}.o_library_item .o_library_more table tr,.o_library_item .o_library_more table th,.o_library_item .o_library_more table td{display:inline-block}.o_library_item .o_library_more table tr{width:49%}.o_library_item .o_library_more table th{width:30%}.o_library_item .o_library_more table td{width:70%}}.o_library_item_compact .o_library_extra{width:auto}.o_library_item_compact .o_library_meta{padding:0 10px 0 0;margin:0;overflow:hidden}.o_library_item_compact .btn{display:inline-block}.o_library_item_compact h4,.o_library_item_compact .o_cal .fc-header-title h2,.o_cal .fc-header-title .o_library_item_compact h2{overflow:hidden;margin-right:70px}.o_library_item_compact h4 a,.o_library_item_compact .o_cal .fc-header-title h2 a,.o_cal .fc-header-title .o_library_item_compact h2 a{text-overflow:ellipsis;white-space:nowrap}.o_library_item_compact p.o_library_show_more{padding:20px;position:absolute;top:0;right:0}span.o_translation_i18nitem{position:relative !important}span.o_translation_i18nitem a.o_translation_i18nitem_launcher{position:absolute !important;z-index:100 !important;width:18px !important;height:20px !important;top:0 !important;left:5px !important;background:#fff;border:1px solid #3b678a !important;border-radius:3px;text-align:center;padding:0 !important}.o_user_infos{position:relative}.o_user_infos .o_user_portrait{position:absolute;top:0;left:15px;width:100px;height:100px}.o_user_infos .o_user_infos_inner{margin:0 30px 0 100px}.o_user_infos .o_user_infos_inner table{margin:0 30px 15px 30px}div.o_skype_button{display:inline-block}div.o_skype_button p{margin:0 0 0 0}div.o_skype_button p a img{margin:0 !important;vertical-align:middle !important}.o_members_pagination{text-align:center}.o_bcard_logo{margin-left:10px;height:66px}.o_bcard_title_with_logo{clear:both;padding:20px 0 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:66px}.o_visitingcard .o_icon_visitingcard{display:none}.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:66px;height:66px;margin-right:10px}@media (max-width: 767px){.o_visitingcard .o_portrait_avatar,.o_visitingcard .o_portrait_dummy,.o_visitingcard .o_portrait_dummy_female_big,.o_visitingcard .o_portrait_dummy_male_big,.o_visitingcard .o_portrait_anonymous{width:50px;height:50px;margin:5px 5px 0 0}.o_visitingcard_image,.o_visitingcard_logo{height:50px}.o_visitingcard_logo,.o_bcard_logo{height:50px;margin:5px 0 0 5px}.o_visitingcard_logo img,.o_bcard_logo img{position:relative;transform:scale(0.75758);top:-8px}}@media (max-width: 414px){.o_visitingcard_logo img{max-width:260px}}@media (max-width: 375px){.o_visitingcard_logo img{max-width:220px}}@media (max-width: 320px){.o_visitingcard_logo img{max-width:180px}.o_bcard_logo img{max-width:150px}}.o_c2b_peekview{height:182px;width:302px;border-style:solid;border-width:0.1px}.o_c2b_cover{height:180px;width:300px;position:absolute;z-index:2;background:transparent;cursor:pointer}.o_c2b_iframe{height:180px;width:300px;position:absolute;z-index:1}.ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:100%}.ui-widget-header{border-top:none;border-left:none;border-right:none;border-bottom:1px solid #eee;background:#fff;font-weight:bold}.ui-icon,.ui-widget-content .ui-icon,.ui-widget-header .ui-icon,.ui-state-default .ui-icon,.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-state-active .ui-icon,.ui-state-highlight .ui-icon,.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background:none;background-image:none}.ui-dialog{-webkit-box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);box-shadow:0px 1px 8px -1px rgba(0,0,0,0.35);background-color:#fefefe}.ui-dialog .ui-widget-header .ui-dialog-title{color:#3b678a;font-weight:500;font-family:inherit;line-height:1.1}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close:before{content:"ï€" !important}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close{display:inline-block;font-family:FontAwesome;font-style:normal;font-weight:normal;font-size:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ui-dialog .ui-widget-header .ui-dialog-titlebar-close span{display:none}.ui-dialog .ui-widget-header .ui-button.ui-corner-all{border:none !important;background:#fff !important;float:right}.ui-dialog .ui-widget-content{border-color:#fff;padding:5px;overflow:auto;background:white !important}.ui-dialog .ui-dialog-titlebar{padding:4px 7px 4px 7px;background-color:#eee !important}.ui-dialog.ui-corner-all{border-radius:4px}.ui-dialog.ui-widget-content{border:1px solid transparent}.ui-dialog.o_modal-ui div.ui-dialog-buttonpane{display:none}.ui-slider.ui-slider-horizontal.ui-widget-content{border-color:#999}.ui-slider.ui-slider-horizontal.ui-widget-content.ui-state-disabled{opacity:0.65}.ui-slider.ui-slider-horizontal.ui-widget-content .ui-slider-handle{border:1px solid #3b678a;background-image:none;background-color:#3b678a}.ui-datepicker{z-index:2000 !important;-webkit-box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15);box-shadow:0px 1px 5px -1px rgba(0,0,0,0.15)}.ui-datepicker .ui-widget-header .ui-corner-all,.ui-datepicker .ui-widget-header .ui-datepicker-next.ui-corner-all{border:none !important;background:#fff !important}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e:before{content:"ï¡";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w:before{content:"ï ";font-weight:normal;color:black}.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-e,.ui-datepicker .ui-widget-header .ui-icon.ui-icon-circle-triangle-w{font-family:'FontAwesome';display:inline-block;background-image:none;background-position:0 0;font-weight:normal;text-indent:0;color:white}.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-widget-header .ui-datepicker .ui-datepicker-next-hover{top:2px}.ui-datepicker .ui-state-default{background:#eee}.ui-datepicker .ui-state-highlight,.ui-datepicker .ui-widget-content .ui-state-highlight{border:1px solid #335a78;background:#3b678a;color:#fff}.ui-datepicker.ui-corner-all{border-radius:4px}.ui-datepicker.ui-widget-content{border:1px solid transparent}label.mce-label{display:inline;max-width:150px;margin-bottom:0;font-weight:normal}.o_richtext_mce_without_path .mce-statusbar{border:none}.o_richtext_mce_without_path .mce-path{display:none !important}.o_richtext_mce_without_path .mce-menubtn.mce-fixed-width span{width:auto}i.mce-ico.mce-i-media,i.mce-ico.mce-i-movie,i.mce-ico.mce-i-help,i.mce-ico.mce-i-gaptext,i.mce-ico.mce-i-gapnumerical,i.mce-ico.mce-i-hottext,i.mce-ico.mce-i-edit{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}i.mce-ico.mce-i-media:before{content:""}i.mce-ico.mce-i-movie:before{content:""}i.mce-ico.mce-i-gaptext:before{content:"ï…"}i.mce-ico.mce-i-gapnumerical:before{content:""}i.mce-ico.mce-i-hottext:before{content:"ï"}i.mce-ico.mce-i-math:before{content:'\03A3'}i.mce-ico.mce-i-edit:before{content:"ï„"}i.mce-ico.mce-i-help{width:9px;height:9px;padding-top:1px}i.mce-ico.mce-i-help:before{content:"ï™";color:white}.mce-tabs span.o_chelp_wrapper{float:right;margin:5px}div.o_table_search span.twitter-typeahead{display:table-cell;padding-top:3px}.tag.label.label-info{margin-right:3px}@media print{a[href]:after{content:""}#o_header_wrapper,#o_offcanvas_right,#o_navbar_wrapper,#o_footer_wrapper,#o_toplink,#o_main_left,#o_main_right,#o_main_toolbar,#jsMath_PrintWarning,.o_noti,.o_opener,.o_hide,.o_noprint{display:none !important}.o_print_break_avoid{page-break-inside:avoid}.o_print_break_before{page-break-before:always}.btn{display:none}.o_form textarea,.o_form .form-control.textarea_disabled{-webkit-print-color-adjust:exact;color-adjust:exact;background:#fff !important;height:auto !important;color:#000 !important;resize:none}#o_comment_form_link,.o_comments form{display:none !important}.o_avatar{display:none}body.o_dmz{background:white !important;-webkit-print-color-adjust:exact;color-adjust:exact}.modal-dialog{margin:0 !important;width:100% !important;height:100% !important;background:#fff !important;-webkit-print-color-adjust:exact;color-adjust:exact}.progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:rgba(0,0,0,0.1) !important;border:1px solid rgba(0,0,0,0.5)}.progress-bar{-webkit-print-color-adjust:exact;background-color:#000 !important;border:10px solid #000}.radial-progress{page-break-inside:avoid;-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#eee !important}.radial-progress .circle .mask .fill{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#000 !important}.radial-progress .inset{-webkit-print-color-adjust:exact;color-adjust:exact;background-color:#fff !important}body{margin:0}}.o_highscore .o_position{text-align:center;font-size:1.2em;font-weight:bold}.o_highscore .o_position h2{font-size:3em;font-weight:700;line-height:1.2em}@media screen and (-webkit-min-device-pixel-ratio: 0){.o_highscore .o_position h2{background:linear-gradient(330deg, #e05252 0%, #99e052 25%, #52e0e0 50%, #9952e0 75%, #e05252 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:inline}.o_highscore .o_position h2:after{content:"\A";white-space:pre}}.o_highscore .o_position_relative{font-size:1em;font-weight:normal}.o_highscore .o_podium{position:relative;vertical-align:bottom;height:300px;margin-bottom:50px}.o_highscore .o_rank{width:30%;position:absolute;bottom:0;text-shadow:rgba(102,102,102,0.5) 0 -1px 0,rgba(255,255,255,0.6) 0 2px 1px}.o_highscore .o_rank:before{position:absolute;bottom:0;left:0;width:100%;text-align:center}.o_highscore .o_rank .o_name{position:absolute;top:100%;width:100%;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-top:1em;text-shadow:none}.o_highscore .o_rank .o_score{color:#777;font-size:90%;width:100%;text-align:center;position:absolute;top:-20px;text-shadow:none}.o_highscore .o_rank .o_singleportrait{position:absolute;width:100%;text-align:center;top:-125px}.o_highscore .o_rank .o_rank_portraits{position:relative;left:0;top:-210px;height:180px;width:200px;text-align:center;vertical-align:bottom;display:table-cell}.o_highscore .o_rank .o_rank_portraits ul{display:inline-block}.o_highscore .o_rank .o_rank_portraits .o_portrait{margin:5px}.o_highscore .o_first{height:150px;left:30%;border:1px solid #d9d9d9;border-top-left-radius:4px;border-top-right-radius:4px;background:gold;background:-moz-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:-webkit-linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);background:linear-gradient(top, #fff7cc 0%, #ffdf33 50%, gold 51%, #ffe766 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 )}.o_highscore .o_first:before{content:"1";font-size:700%;line-height:150px;color:#666}.o_highscore .o_second{height:100px;left:0;background:silver;background:-moz-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:-webkit-linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);background:linear-gradient(top, #fff 0%, #dadada 50%, silver 51%, #f3f3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-left:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-left-radius:4px}.o_highscore .o_second:before{content:"2";font-size:500%;line-height:100px;color:#666}.o_highscore .o_third{height:80px;left:60%;background:#cd7f32;background:-moz-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:-webkit-linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);background:linear-gradient(top, #f5e5d6 0%, #d7995b 50%, #cd7f32 51%, #e1b284 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='$basecolor', endColorstr='lighten($basecolor,20%)',GradientType=0 );border-right:1px solid #d9d9d9;border-top:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9;border-top-right-radius:4px}.o_highscore .o_third:before{content:"3";font-size:300%;line-height:80px;color:#666}.o_highscore .o_histogram{position:relative;bottom:-40px;margin-bottom:40px}.o_highscore .o_histogram .d3chart{width:100%;padding-top:50px;height:300px}.o_highscore .o_histogram .d3chart text{fill:#888}.o_highscore .o_histogram .d3chart .axis path,.o_highscore .o_histogram .d3chart .axis line{stroke:#888}.o_highscore .o_histogram .d3chart .o_myself{fill:#3b678a}.o_highscore .o_histogram .d3chart .o_myself:hover{fill:#4a82ae}.o_highscore .o_histogram .d3chart .o_other{fill:#777}.o_highscore .o_histogram .d3chart .o_other:hover{fill:#919191}.o_highscore .o_histogram .d3chart .o_empty{fill:#000}.o_listing .o_table_wrapper.o_table_flexi .table{margin-top:0}.o_listing table th:nth-of-type(1),.o_listing table th :nth-of-type(2){width:5em}body.o_browser_ie7 #o_offcanvas_right,body.o_browser_ie8 #o_offcanvas_right{right:0px}.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075)}.btn-default:active,.btn-default.active,.btn-primary:active,.btn-primary.active,.btn-success:active,.btn-success.active,.btn-info:active,.btn-info.active,.btn-warning:active,.btn-warning.active,.btn-danger:active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{background-image:-webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);background-image:-o-linear-gradient(top, #fff 0%, #e0e0e0 100%);background-image:linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFE0E0E0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#dbdbdb;text-shadow:0 1px 0 #fff;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top, #3b678a 0%, #29475f 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #29475f 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #29475f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF29475F', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#264258}.btn-primary:hover,.btn-primary:focus{background-color:#29475f;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#29475f;border-color:#264258}.btn-primary:disabled,.btn-primary[disabled]{background-color:#29475f;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);background-image:-o-linear-gradient(top, #5cb85c 0%, #419641 100%);background-image:linear-gradient(to bottom, #5cb85c 0%, #419641 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5CB85C', endColorstr='#FF419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);background-image:-o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);background-image:linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5BC0DE', endColorstr='#FF2AABD2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:-o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF0AD4E', endColorstr='#FFEB9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);background-image:-o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);background-image:linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9534F', endColorstr='#FFC12E2A', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail,.o_form .o_filepreview img,.o_feed .o_media{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-image:-webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF5F5F5', endColorstr='#FFE8E8E8', GradientType=0);background-color:#e8e8e8}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-image:-webkit-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #335a78 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF335A78', GradientType=0);background-color:#335a78}.navbar-default{background-image:-webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF8F8F8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);background-image:-o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);background-image:linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDBDBDB', endColorstr='#FFE2E2E2', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);background-image:-o-linear-gradient(top, #3c3c3c 0%, #222 100%);background-image:linear-gradient(to bottom, #3c3c3c 0%, #222 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3C3C3C', endColorstr='#FF222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #090909 0%, #0f0f0f 100%);background-image:-o-linear-gradient(top, #090909 0%, #0f0f0f 100%);background-image:linear-gradient(to bottom, #090909 0%, #0f0f0f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF090909', endColorstr='#FF0F0F0F', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.25);box-shadow:inset 0 3px 9px rgba(0,0,0,0.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width: 767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #335a78 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF335A78', GradientType=0)}}.alert{text-shadow:0 1px 0 rgba(255,255,255,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.25),0 1px 2px rgba(0,0,0,0.05)}.alert-success{background-image:-webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);background-image:-o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);background-image:linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDFF0D8', endColorstr='#FFC8E5BC', GradientType=0);border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);background-image:-o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);background-image:linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9EDF7', endColorstr='#FFB9DEF0', GradientType=0);border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);background-image:-o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);background-image:linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFCF8E3', endColorstr='#FFF8EFC0', GradientType=0);border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);background-image:-o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);background-image:linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF2DEDE', endColorstr='#FFE7C3C3', GradientType=0);border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);background-image:linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEBEBEB', endColorstr='#FFF5F5F5', GradientType=0)}.progress-bar{background-image:-webkit-linear-gradient(top, #3b678a 0%, #2c4c66 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #2c4c66 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #2c4c66 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF2C4C66', GradientType=0)}.progress-bar-success{background-image:-webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);background-image:-o-linear-gradient(top, #5cb85c 0%, #449d44 100%);background-image:linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5CB85C', endColorstr='#FF449D44', GradientType=0)}.progress-bar-info{background-image:-webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);background-image:-o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);background-image:linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF5BC0DE', endColorstr='#FF31B0D5', GradientType=0)}.progress-bar-warning{background-image:-webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);background-image:-o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);background-image:linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF0AD4E', endColorstr='#FFEC971F', GradientType=0)}.progress-bar-danger{background-image:-webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);background-image:-o-linear-gradient(top, #d9534f 0%, #c9302c 100%);background-image:linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9534F', endColorstr='#FFC9302C', GradientType=0)}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.075);box-shadow:0 1px 2px rgba(0,0,0,0.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #2c4c66;background-image:-webkit-linear-gradient(top, #3b678a 0%, #30536f 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #30536f 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #30536f 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF30536F', GradientType=0);border-color:#30536f}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:-o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);background-image:linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF5F5F5', endColorstr='#FFE8E8E8', GradientType=0)}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:-o-linear-gradient(top, #3b678a 0%, #335a78 100%);background-image:linear-gradient(to bottom, #3b678a 0%, #335a78 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF3B678A', endColorstr='#FF335A78', GradientType=0)}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);background-image:-o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);background-image:linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFDFF0D8', endColorstr='#FFD0E9C6', GradientType=0)}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);background-image:-o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);background-image:linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFD9EDF7', endColorstr='#FFC4E3F3', GradientType=0)}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);background-image:-o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);background-image:linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFCF8E3', endColorstr='#FFFAF2CC', GradientType=0)}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);background-image:-o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);background-image:linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF2DEDE', endColorstr='#FFEBCCCC', GradientType=0)}.well{background-image:-webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);background-image:linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFE8E8E8', endColorstr='#FFF5F5F5', GradientType=0);border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 3px rgba(0,0,0,0.05),0 1px 0 rgba(255,255,255,0.1)}.o_button_dirty{text-shadow:0 -1px 0 rgba(0,0,0,0.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 1px rgba(0,0,0,0.075);background-image:-webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:-o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);background-image:linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFF0AD4E', endColorstr='#FFEB9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#e38d13}.o_button_dirty:active,.o_button_dirty.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.o_button_dirty:hover,.o_button_dirty:focus{background-color:#eb9316;background-position:0 -15px}.o_button_dirty:active,.o_button_dirty.active{background-color:#eb9316;border-color:#e38d13}.o_button_dirty:disabled,.o_button_dirty[disabled]{background-color:#eb9316;background-image:none}.o_login .o_login_social .btn-default{text-shadow:none}.o_login .o_login_social .btn-default.o_sel_auth_facebook{background-image:-webkit-linear-gradient(top, #4568b2 0%, #344e86 100%);background-image:-o-linear-gradient(top, #4568b2 0%, #344e86 100%);background-image:linear-gradient(to bottom, #4568b2 0%, #344e86 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF4568B2', endColorstr='#FF344E86', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#314a7f}.o_login .o_login_social .btn-default.o_sel_auth_facebook:hover,.o_login .o_login_social .btn-default.o_sel_auth_facebook:focus{background-color:#344e86;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_facebook:active,.o_login .o_login_social .btn-default.o_sel_auth_facebook.active{background-color:#344e86;border-color:#314a7f}.o_login .o_login_social .btn-default.o_sel_auth_facebook:disabled,.o_login .o_login_social .btn-default.o_sel_auth_facebook[disabled]{background-color:#344e86;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_twitter{background-image:-webkit-linear-gradient(top, #2cc5ff 0%, #00acee 100%);background-image:-o-linear-gradient(top, #2cc5ff 0%, #00acee 100%);background-image:linear-gradient(to bottom, #2cc5ff 0%, #00acee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF2CC5FF', endColorstr='#FF00ACEE', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#00a5e4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:hover,.o_login .o_login_social .btn-default.o_sel_auth_twitter:focus{background-color:#00acee;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_twitter:active,.o_login .o_login_social .btn-default.o_sel_auth_twitter.active{background-color:#00acee;border-color:#00a5e4}.o_login .o_login_social .btn-default.o_sel_auth_twitter:disabled,.o_login .o_login_social .btn-default.o_sel_auth_twitter[disabled]{background-color:#00acee;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_google{background-image:-webkit-linear-gradient(top, #e15f4f 0%, #cf3623 100%);background-image:-o-linear-gradient(top, #e15f4f 0%, #cf3623 100%);background-image:linear-gradient(to bottom, #e15f4f 0%, #cf3623 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFE15F4F', endColorstr='#FFCF3623', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#c73422}.o_login .o_login_social .btn-default.o_sel_auth_google:hover,.o_login .o_login_social .btn-default.o_sel_auth_google:focus{background-color:#cf3623;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_google:active,.o_login .o_login_social .btn-default.o_sel_auth_google.active{background-color:#cf3623;border-color:#c73422}.o_login .o_login_social .btn-default.o_sel_auth_google:disabled,.o_login .o_login_social .btn-default.o_sel_auth_google[disabled]{background-color:#cf3623;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_linkedin{background-image:-webkit-linear-gradient(top, #0181bd 0%, #015780 100%);background-image:-o-linear-gradient(top, #0181bd 0%, #015780 100%);background-image:linear-gradient(to bottom, #0181bd 0%, #015780 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF0181BD', endColorstr='#FF015780', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#015176}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:hover,.o_login .o_login_social .btn-default.o_sel_auth_linkedin:focus{background-color:#015780;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:active,.o_login .o_login_social .btn-default.o_sel_auth_linkedin.active{background-color:#015780;border-color:#015176}.o_login .o_login_social .btn-default.o_sel_auth_linkedin:disabled,.o_login .o_login_social .btn-default.o_sel_auth_linkedin[disabled]{background-color:#015780;background-image:none}.o_login .o_login_social .btn-default.o_sel_auth_adfs{background-image:-webkit-linear-gradient(top, #1a1a1a 0%, #000 100%);background-image:-o-linear-gradient(top, #1a1a1a 0%, #000 100%);background-image:linear-gradient(to bottom, #1a1a1a 0%, #000 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FF1A1A1A', endColorstr='#FF000000', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);background-repeat:repeat-x;border-color:#000}.o_login .o_login_social .btn-default.o_sel_auth_adfs:hover,.o_login .o_login_social .btn-default.o_sel_auth_adfs:focus{background-color:#000;background-position:0 -15px}.o_login .o_login_social .btn-default.o_sel_auth_adfs:active,.o_login .o_login_social .btn-default.o_sel_auth_adfs.active{background-color:#000;border-color:#000}.o_login .o_login_social .btn-default.o_sel_auth_adfs:disabled,.o_login .o_login_social .btn-default.o_sel_auth_adfs[disabled]{background-color:#000;background-image:none}.btn-default.btn-success,.btn-default.btn-info,.btn-default.btn-warning,.btn-default.btn-danger,.btn-default.btn-primary,.btn-default.o_button_dirty{text-shadow:none}.o_navbar.o_navbar-default{background-image:-webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF8F8F8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.075)}.o_navbar.o_navbar-default .o_navbar-nav>.active>a{background-image:-webkit-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);background-image:-o-linear-gradient(top, #ebebeb 0%, #f3f3f3 100%);background-image:linear-gradient(to bottom, #ebebeb 0%, #f3f3f3 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEBEBEB', endColorstr='#FFF3F3F3', GradientType=0);-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,0.075);box-shadow:inset 0 3px 9px rgba(0,0,0,0.075)}.o_navbar.o_navbar-default .o_navbar-nav>.active>a.o_navbar_tab_close{background:none;-webkit-box-shadow:none;box-shadow:none}.o_navbar-brand,.o_navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,0.25)}.o_navbar-offcanvas .dropdown-menu>li>a:hover,.o_navbar-offcanvas .dropdown-menu>li>a:focus{background-image:none}.o_toolbar{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05)}.o_toolbar .o_breadcrumb .breadcrumb{background-image:-webkit-linear-gradient(top, #fff 0%, #f5f5f5 100%);background-image:-o-linear-gradient(top, #fff 0%, #f5f5f5 100%);background-image:linear-gradient(to bottom, #fff 0%, #f5f5f5 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF5F5F5', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.o_toolbar .o_tools_container{background-image:-webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:-o-linear-gradient(top, #fff 0%, #f8f8f8 100%);background-image:linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFF8F8F8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.o_toolbar .o_tool_next,.o_toolbar .o_tool_previous{background-image:-webkit-linear-gradient(top, #fff 0%, #e2e2e2 100%);background-image:-o-linear-gradient(top, #fff 0%, #e2e2e2 100%);background-image:linear-gradient(to bottom, #fff 0%, #e2e2e2 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFE2E2E2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false)}.o_toolbar .o_tool_next :hover,.o_toolbar .o_tool_previous :hover{background-color:#e2e2e2}.o_tree{-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.15),0 1px 5px rgba(0,0,0,0.05)}.o_navbar-brand{padding:15px 15px;font-size:28px;color:#3b678a !important}.o_navbar-brand:after{content:"\E600";font-family:openolat} \ No newline at end of file diff --git a/src/test/java/org/olat/course/statistic/AbstractStatisticUpdateManagerTest.java b/src/test/java/org/olat/course/statistic/AbstractStatisticUpdateManagerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..e208eb19424d39f9bbb8d5b53c8762fbba2359ec --- /dev/null +++ b/src/test/java/org/olat/course/statistic/AbstractStatisticUpdateManagerTest.java @@ -0,0 +1,185 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.statistic; + +import java.util.Calendar; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicInteger; + +import org.hibernate.FlushMode; +import org.junit.Assert; +import org.olat.core.commons.persistence.DB; +import org.olat.core.logging.activity.LoggingObject; +import org.olat.core.util.CodeHelper; +import org.olat.course.nodes.CourseNode; +import org.olat.course.statistic.daily.DailyStat; +import org.olat.course.statistic.dayofweek.DayOfWeekStat; +import org.olat.course.statistic.hourofday.HourOfDayStat; +import org.olat.course.statistic.weekly.WeeklyStat; +import org.olat.properties.Property; +import org.olat.properties.PropertyManager; +import org.olat.repository.RepositoryEntry; +import org.olat.test.OlatTestCase; +import org.springframework.beans.factory.annotation.Autowired; + + +/** + * + * Initial date: 5 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +abstract class AbstractStatisticUpdateManagerTest extends OlatTestCase { + + private Map<String,Map<String,AtomicInteger>> inMemoryStatistics = new HashMap<>(); + + @Autowired + protected DB dbInstance; + @Autowired + protected StatisticUpdateManager statisticUpdateManager; + + protected void cleanUpLog() { + String deleteLogQuery = "delete from " + LoggingObject.class.getName() + " log"; + dbInstance.createQuery(deleteLogQuery) + .executeUpdate(FlushMode.AUTO); + + String deleteDailyQuery = "delete from " + DailyStat.class.getName() + " log"; + dbInstance.createQuery(deleteDailyQuery) + .executeUpdate(FlushMode.AUTO); + + String deleteWeeklyQuery = "delete from " + WeeklyStat.class.getName() + " log"; + dbInstance.createQuery(deleteWeeklyQuery) + .executeUpdate(FlushMode.AUTO); + + String deleteDayOfWeekQuery = "delete from " + DayOfWeekStat.class.getName() + " log"; + dbInstance.createQuery(deleteDayOfWeekQuery) + .executeUpdate(FlushMode.AUTO); + + String deleteHourOfDayQuery = "delete from " + HourOfDayStat.class.getName() + " log"; + dbInstance.createQuery(deleteHourOfDayQuery) + .executeUpdate(FlushMode.AUTO); + + dbInstance.commitAndCloseSession(); + } + + protected void incrementInMemoryStatistics(Long repositoryEntryKey, String nodeIdent, String date) { + String key = repositoryEntryKey + "- "+ nodeIdent; + + Map<String,AtomicInteger> node = inMemoryStatistics.get(key); + if(node == null) { + node = new HashMap<>(); + inMemoryStatistics.put(key, node); + } + + AtomicInteger counter = node.get(date); + if(counter == null) { + counter = new AtomicInteger(0); + node.put(date, counter); + } + counter.incrementAndGet(); + } + + protected Integer getInMemoryStatistics(RepositoryEntry repositoryEntry, CourseNode courseNode, String date) { + String key = repositoryEntry.getKey() + "- "+ courseNode.getIdent(); + Map<String,AtomicInteger> node = inMemoryStatistics.get(key); + if(node == null) { + return null; + } + AtomicInteger counter = node.get(date); + return counter == null ? null : new Integer(counter.get()); + } + + protected void updateStatistics() { + StatisticsWait countDown = new StatisticsWait(); + statisticUpdateManager.updateStatistics(false, countDown); + countDown.waitStatistics(); + } + + protected void updateAllStatistics() { + StatisticsWait countDown = new StatisticsWait(); + statisticUpdateManager.updateStatistics(true, countDown); + countDown.waitStatistics(); + } + + protected Calendar addLog(Long repositoryEntryKey, String courseNodeIdent, Calendar start, int dayInPast, int hour, int minute, int second) { + String sessionId = "session-" + CodeHelper.getGlobalForeverUniqueID(); + LoggingObject logObj = new LoggingObject(sessionId, 123l, "logger", "u", "launch", "node"); + + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.YEAR, start.get(Calendar.YEAR)); + cal.set(Calendar.MONTH, start.get(Calendar.MONTH)); + cal.set(Calendar.HOUR_OF_DAY, hour); + cal.set(Calendar.MINUTE, minute); + cal.set(Calendar.SECOND, second); + if(dayInPast > 0) { + cal.add(Calendar.DATE, -dayInPast); + } + + logObj.setCreationDate(cal.getTime()); + logObj.setResourceAdminAction(Boolean.FALSE); + logObj.setUserProperty2("OpenOLAT"); + logObj.setUserProperty3("openolat@openolat.org"); + logObj.setBusinessPath("[RepositoryEntry:" + repositoryEntryKey + "][CourseNode:" + courseNodeIdent + "]"); + dbInstance.saveObject(logObj); + return cal; + } + + protected void setLastUpdate(Calendar ref, int dayInThePast) { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.YEAR, ref.get(Calendar.YEAR)); + cal.set(Calendar.MONTH, ref.get(Calendar.MONTH)); + cal.set(Calendar.DATE, 1); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.add(Calendar.DATE, -dayInThePast); + long lastUpdated = cal.getTimeInMillis(); + + PropertyManager pm = PropertyManager.getInstance(); + Property p = pm.findProperty(null, null, null, "STATISTICS_PROPERTIES", "LAST_UPDATED"); + if(p == null) { + p = pm.createPropertyInstance(null, null, null, "STATISTICS_PROPERTIES", "LAST_UPDATED", null, lastUpdated, null, null); + } else { + p.setLongValue(lastUpdated); + } + pm.saveProperty(p); + } + + public static class StatisticsWait implements Runnable { + + private CountDownLatch countDown = new CountDownLatch(1); + + @Override + public void run() { + countDown.countDown(); + } + + public void waitStatistics() { + try { + countDown.await(10, TimeUnit.SECONDS); + } catch (InterruptedException e) { + Assert.fail("Test takes too long (more than 10s)"); + } + } + } +} diff --git a/src/test/java/org/olat/course/statistic/DailyStatisticUpdateManagerTest.java b/src/test/java/org/olat/course/statistic/DailyStatisticUpdateManagerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..1d41e9003216603580bcc5c9f7b8254e2134c5bc --- /dev/null +++ b/src/test/java/org/olat/course/statistic/DailyStatisticUpdateManagerTest.java @@ -0,0 +1,149 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.statistic; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Locale; +import java.util.Map; + +import org.junit.Assert; +import org.junit.Test; +import org.olat.core.gui.util.SyntheticUserRequest; +import org.olat.core.id.Identity; +import org.olat.course.CourseFactory; +import org.olat.course.ICourse; +import org.olat.course.nodes.CourseNode; +import org.olat.course.statistic.daily.DailyStatisticManager; +import org.olat.repository.RepositoryEntry; +import org.olat.test.JunitTestHelper; + + +/** + * + * Initial date: 5 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class DailyStatisticUpdateManagerTest extends AbstractStatisticUpdateManagerTest { + + private final SimpleDateFormat dailyFormat = new SimpleDateFormat("yyyy-MM-dd"); + private final DailyStatisticManager dailyStatisticManager = new DailyStatisticManager(); + + @Test + public void statistics_daily() { + statisticUpdateManager.setEnabled(true); + cleanUpLog(); + + // create 2 courses + Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("log-1"); + + RepositoryEntry re1 = JunitTestHelper.deployBasicCourse(id); + ICourse course1 = CourseFactory.loadCourse(re1); + CourseNode rootNode1 = course1.getRunStructure().getRootNode(); + CourseNode firstNode1 = (CourseNode)course1.getRunStructure().getRootNode().getChildAt(0); + + RepositoryEntry re2 = JunitTestHelper.deployBasicCourse(id); + ICourse course2 = CourseFactory.loadCourse(re2); + CourseNode rootNode2 = course2.getRunStructure().getRootNode(); + CourseNode firstNode2 = (CourseNode)course2.getRunStructure().getRootNode().getChildAt(0); + + // generate some data + Calendar ref = Calendar.getInstance(); + String date1 = null; + String date2 = null; + + for(int i=0; i<5; i++) { + addLogEntry(re1, rootNode1, ref, 0, 0, 0, i + 1); + } + for(int i=0; i<4;i++) { + date1 = addLogEntry(re1, firstNode1, ref, 0, 0, 0, i + 1); + } + for(int i=0; i<10; i++) { + addLogEntry(re1, rootNode1, ref, 2, i, 1, 1); + addLogEntry(re1, firstNode2, ref, 2, i, 1, 1); + } + for(int i=0; i<8; i++) { + addLogEntry(re1, rootNode1, ref, 3, 5 + i, 1, 1); + date2 = addLogEntry(re2, rootNode2, ref, 2, i, 1, 1); + } + + setLastUpdate(ref, 2); + dbInstance.commitAndCloseSession(); + + updateStatistics(); + + // first log analyze + String date = getDayString(ref, ref.get(Calendar.DATE)); + checkStatistics(course1, rootNode1, date); + checkStatistics(course2, rootNode2, date2); + + // add log the same day + Calendar now = Calendar.getInstance(); + addLogEntry(re1, rootNode1, ref, 0, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND) + 1); + addLogEntry(re1, rootNode1, ref, 0, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND) + 2); + addLogEntry(re2, firstNode2, ref, 0, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND) + 2); + dbInstance.commitAndCloseSession(); + sleep(5000); + + //update stats incremental + updateStatistics(); + checkStatistics(course1, rootNode1, date); + checkStatistics(course1, firstNode1, date); + checkStatistics(course1, firstNode1, date1); + checkStatistics(course2, rootNode2, date2); + + //update all statistics + updateAllStatistics(); + checkStatistics(course1, rootNode1, date); + checkStatistics(course1, firstNode1, date); + checkStatistics(course1, firstNode1, date1); + checkStatistics(course2, rootNode2, date2); + } + + private void checkStatistics(ICourse course, CourseNode node, String date) { + RepositoryEntry re = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry(); + StatisticResult updatedResult = dailyStatisticManager.generateStatisticResult(new SyntheticUserRequest(null, Locale.ENGLISH), course, re.getKey()); + Map<String,Integer> updatedRootStats = updatedResult.getStatistics(node); + Integer updated_stats_inMemory = getInMemoryStatistics(re, node, date); + Integer updated_stats_today = updatedRootStats.get(date); + Assert.assertEquals(updated_stats_inMemory, updated_stats_today); + } + + private String getDayString(Calendar start, int day) { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.YEAR, start.get(Calendar.YEAR)); + cal.set(Calendar.MONTH, start.get(Calendar.MONTH)); + cal.set(Calendar.DATE, day); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + return dailyFormat.format(cal.getTime()) + " 00:00:00.0"; + } + + protected String addLogEntry(RepositoryEntry repositoryEntry, CourseNode courseNode, Calendar start, + int dayInPast, int hour, int minute, int second) { + Calendar cal = addLog(repositoryEntry.getKey(), courseNode.getIdent(), start, dayInPast, hour, minute, second); + String day = getDayString(cal, cal.get(Calendar.DATE)); + incrementInMemoryStatistics(repositoryEntry.getKey(), courseNode.getIdent(), day); + return day; + } +} diff --git a/src/test/java/org/olat/course/statistic/DayOfWeekStatisticUpdateManagerTest.java b/src/test/java/org/olat/course/statistic/DayOfWeekStatisticUpdateManagerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..79ea1d4cd5e66953e47be487f8d1162cd501576c --- /dev/null +++ b/src/test/java/org/olat/course/statistic/DayOfWeekStatisticUpdateManagerTest.java @@ -0,0 +1,143 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.statistic; + +import java.util.Calendar; +import java.util.Locale; +import java.util.Map; + +import org.junit.Assert; +import org.junit.Test; +import org.olat.core.gui.util.SyntheticUserRequest; +import org.olat.core.id.Identity; +import org.olat.course.CourseFactory; +import org.olat.course.ICourse; +import org.olat.course.nodes.CourseNode; +import org.olat.course.statistic.dayofweek.DayOfWeekStatisticManager; +import org.olat.repository.RepositoryEntry; +import org.olat.test.JunitTestHelper; + + +/** + * Test the daily statistics with 2 courses. + * + * + * Initial date: 5 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class DayOfWeekStatisticUpdateManagerTest extends AbstractStatisticUpdateManagerTest { + + private final DayOfWeekStatisticManager dayOfWeekStatisticManager = new DayOfWeekStatisticManager(); + + @Test + public void statistics_dayOfWeek() { + Assert.assertNotNull(statisticUpdateManager); + statisticUpdateManager.setEnabled(true); + Assert.assertTrue(statisticUpdateManager.isEnabled()); + + Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("log-3"); + RepositoryEntry re1 = JunitTestHelper.deployBasicCourse(id); + ICourse course1 = CourseFactory.loadCourse(re1); + CourseNode rootNode1 = course1.getRunStructure().getRootNode(); + CourseNode firstNode1 = (CourseNode)course1.getRunStructure().getRootNode().getChildAt(0); + + RepositoryEntry re2 = JunitTestHelper.deployBasicCourse(id); + ICourse course2 = CourseFactory.loadCourse(re2); + CourseNode rootNode2 = course2.getRunStructure().getRootNode(); + CourseNode firstNode2 = (CourseNode)course2.getRunStructure().getRootNode().getChildAt(0); + + Calendar ref = Calendar.getInstance(); + String date1 = null; + String date2 = null; + + cleanUpLog(); + for(int i=0; i<7; i++) { + addLogEntry(re1, rootNode1, ref, 0, 0, 0, i + 1); + addLogEntry(re2, firstNode2, ref, 0, 0, 0, i + 1); + } + for(int i=0; i<15; i++) { + addLogEntry(re1, rootNode1, ref, 3, 2, 1, 1); + addLogEntry(re2, rootNode2, ref, 4, 2, 1, 1); + } + for(int i=0; i<3; i++) { + date1 = addLogEntry(re1, firstNode1, ref, 1, 3, 1, 1); + addLogEntry(re1, rootNode1, ref, 7, 3, 1, 1); + } + for(int i=0; i<6; i++) { + addLogEntry(re1, rootNode1, ref, 3 + i, 5 + i, 1, 1); + addLogEntry(re1, rootNode1, ref, 3, 5 + i, 1, 1); + date2 = addLogEntry(re2, rootNode2, ref, 4 + (i * 2), 5, 3, 1); + } + + setLastUpdate(ref, 20); + dbInstance.commitAndCloseSession(); + + updateStatistics(); + + // first log analyze + String date = getDayOfWeekString(ref); + checkStatistics(course1, rootNode1, date); + checkStatistics(course1, firstNode1, date1); + checkStatistics(course2, rootNode2, date2); + + // add log the same day + Calendar now = Calendar.getInstance(); + addLogEntry(re1, rootNode1, ref, 0, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND) + 1); + addLogEntry(re1, rootNode1, ref, 0, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND) + 2); + addLogEntry(re2, rootNode2, ref, 0, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND) + 2); + dbInstance.commitAndCloseSession(); + sleep(5000); + + //update stats incremental + updateStatistics(); + checkStatistics(course1, rootNode1, date); + checkStatistics(course1, firstNode1, date1); + checkStatistics(course2, rootNode2, date2); + + //update all stats + updateAllStatistics(); + checkStatistics(course1, rootNode1, date); + checkStatistics(course1, firstNode1, date1); + checkStatistics(course2, rootNode2, date2); + } + + private String getDayOfWeekString(Calendar start) { + int day = start.get(Calendar.DAY_OF_WEEK); + return Integer.toString(day); + } + + private void checkStatistics(ICourse course, CourseNode node, String date) { + RepositoryEntry re = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry(); + StatisticResult updatedResult = dayOfWeekStatisticManager.generateStatisticResult(new SyntheticUserRequest(null, Locale.ENGLISH), course, re.getKey()); + Map<String,Integer> updatedRootStats = updatedResult.getStatistics(node); + Integer updated_stats_inMemory = getInMemoryStatistics(re, node, date); + Integer updated_stats_today = updatedRootStats.get(date); + Assert.assertEquals(updated_stats_inMemory, updated_stats_today); + } + + protected String addLogEntry(RepositoryEntry repositoryEntry, CourseNode courseNode, Calendar start, + int dayInPast, int hour, int minute, int second) { + Calendar cal = addLog(repositoryEntry.getKey(), courseNode.getIdent(), start, dayInPast, hour, minute, second); + String week = getDayOfWeekString(cal); + incrementInMemoryStatistics(repositoryEntry.getKey(), courseNode.getIdent(), week); + return week; + } +} \ No newline at end of file diff --git a/src/test/java/org/olat/course/statistic/HourOfDayStatisticUpdateManagerTest.java b/src/test/java/org/olat/course/statistic/HourOfDayStatisticUpdateManagerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..010df41580301767f9655540ae721870f04e7942 --- /dev/null +++ b/src/test/java/org/olat/course/statistic/HourOfDayStatisticUpdateManagerTest.java @@ -0,0 +1,139 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.statistic; + +import java.util.Calendar; +import java.util.Locale; +import java.util.Map; + +import org.junit.Assert; +import org.junit.Test; +import org.olat.core.gui.util.SyntheticUserRequest; +import org.olat.core.id.Identity; +import org.olat.course.CourseFactory; +import org.olat.course.ICourse; +import org.olat.course.nodes.CourseNode; +import org.olat.course.statistic.hourofday.HourOfDayStatisticManager; +import org.olat.repository.RepositoryEntry; +import org.olat.test.JunitTestHelper; + + +/** + * + * Test the statistics "Hour of day" with 2 courses. + * + * Initial date: 5 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class HourOfDayStatisticUpdateManagerTest extends AbstractStatisticUpdateManagerTest { + + private final HourOfDayStatisticManager hourOfDayStatisticManager = new HourOfDayStatisticManager(); + + @Test + public void statistics_hourOfDay() { + Assert.assertNotNull(statisticUpdateManager); + statisticUpdateManager.setEnabled(true); + Assert.assertTrue(statisticUpdateManager.isEnabled()); + + Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("log-3"); + RepositoryEntry re1 = JunitTestHelper.deployBasicCourse(id); + ICourse course1 = CourseFactory.loadCourse(re1); + CourseNode rootNode1 = course1.getRunStructure().getRootNode(); + CourseNode firstNode1 = (CourseNode)course1.getRunStructure().getRootNode().getChildAt(0); + + RepositoryEntry re2 = JunitTestHelper.deployBasicCourse(id); + ICourse course2 = CourseFactory.loadCourse(re2); + CourseNode rootNode2 = course2.getRunStructure().getRootNode(); + CourseNode firstNode2 = (CourseNode)course2.getRunStructure().getRootNode().getChildAt(0); + + Calendar ref = Calendar.getInstance(); + String date1 = null; + String date2 = null; + + cleanUpLog(); + for(int i=0; i<12; i++) { + addLogEntry(re1, rootNode1, ref, 0, ref.get(Calendar.HOUR_OF_DAY), 1, i + 1); + addLogEntry(re2, firstNode2, ref, 0, ref.get(Calendar.HOUR_OF_DAY), 1, i + 1); + } + for(int i=0; i<7; i++) { + addLogEntry(re1, rootNode1, ref, 1, 3 + i, 1, 1); + date2 = addLogEntry(re2, rootNode2, ref, 1, 3 + i, 1, 1); + } + for(int i=0; i<9; i++) { + date1 = addLogEntry(re1, firstNode1, ref, 2, 3+i, 13, 1); + } + + setLastUpdate(ref, 12); + dbInstance.commitAndCloseSession(); + + updateStatistics(); + + // first log analyze + String date = getHourOfDay(ref); + checkStatistics(course1, rootNode1, date); + checkStatistics(course1, firstNode1, date1); + checkStatistics(course2, rootNode2, date2); + + // add log the same day + Calendar now = Calendar.getInstance(); + addLogEntry(re1, rootNode1, ref, 0, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND) + 1); + addLogEntry(re1, rootNode1, ref, 0, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND) + 2); + addLogEntry(re2, firstNode2, ref, 0, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND) + 2); + dbInstance.commitAndCloseSession(); + sleep(5000); + + //update stats incremental + updateStatistics(); + checkStatistics(course1, rootNode1, date); + checkStatistics(course1, firstNode1, date1); + checkStatistics(course2, rootNode2, date2); + checkStatistics(course2, firstNode2, date); + + //update all stats, must be the same results + updateAllStatistics(); + checkStatistics(course1, rootNode1, date); + checkStatistics(course1, firstNode1, date1); + checkStatistics(course2, rootNode2, date2); + checkStatistics(course2, firstNode2, date); + } + + private void checkStatistics(ICourse course, CourseNode node, String date) { + RepositoryEntry re = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry(); + StatisticResult updatedResult = hourOfDayStatisticManager.generateStatisticResult(new SyntheticUserRequest(null, Locale.ENGLISH), course, re.getKey()); + Map<String,Integer> updatedRootStats = updatedResult.getStatistics(node); + Integer updated_stats_inMemory = getInMemoryStatistics(re, node, date); + Integer updated_stats_today = updatedRootStats.get(date); + Assert.assertEquals(updated_stats_inMemory, updated_stats_today); + } + + protected String getHourOfDay(Calendar start) { + int day = start.get(Calendar.HOUR_OF_DAY); + return Integer.toString(day); + } + + protected String addLogEntry(RepositoryEntry repositoryEntry, CourseNode courseNode, Calendar start, + int dayInPast, int hour, int minute, int second) { + Calendar cal = addLog(repositoryEntry.getKey(), courseNode.getIdent(), start, dayInPast, hour, minute, second); + String week = getHourOfDay(cal); + incrementInMemoryStatistics(repositoryEntry.getKey(), courseNode.getIdent(), week); + return week; + } +} diff --git a/src/test/java/org/olat/course/statistic/SimpleStatisticInfoHelperTest.java b/src/test/java/org/olat/course/statistic/SimpleStatisticInfoHelperTest.java new file mode 100644 index 0000000000000000000000000000000000000000..1eae3605977f5786588f23176fbc2dc0b71dde5d --- /dev/null +++ b/src/test/java/org/olat/course/statistic/SimpleStatisticInfoHelperTest.java @@ -0,0 +1,47 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.statistic; + +import java.util.Date; + +import org.junit.Assert; +import org.junit.Test; +import org.olat.test.OlatTestCase; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * + * + * Initial date: 5 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class SimpleStatisticInfoHelperTest extends OlatTestCase { + + @Autowired + private SimpleStatisticInfoHelper infoHelper; + + @Test + public void getFirstLoggingTableCreationDate() { + Date firstLoggingDate = infoHelper.getFirstLoggingTableCreationDate(); + Assert.assertNotNull(firstLoggingDate); + } +} diff --git a/src/test/java/org/olat/course/statistic/WeeklyStatisticUpdateManagerTest.java b/src/test/java/org/olat/course/statistic/WeeklyStatisticUpdateManagerTest.java new file mode 100644 index 0000000000000000000000000000000000000000..f559cc224109ce045d8468aaa0d0369f4fc58957 --- /dev/null +++ b/src/test/java/org/olat/course/statistic/WeeklyStatisticUpdateManagerTest.java @@ -0,0 +1,146 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.course.statistic; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Locale; +import java.util.Map; + +import org.junit.Assert; +import org.junit.Test; +import org.olat.core.gui.util.SyntheticUserRequest; +import org.olat.core.id.Identity; +import org.olat.course.CourseFactory; +import org.olat.course.ICourse; +import org.olat.course.nodes.CourseNode; +import org.olat.course.statistic.weekly.WeeklyStatisticManager; +import org.olat.repository.RepositoryEntry; +import org.olat.test.JunitTestHelper; + + +/** + * + * Initial date: 5 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class WeeklyStatisticUpdateManagerTest extends AbstractStatisticUpdateManagerTest { + + private final SimpleDateFormat weeklyFormat = new SimpleDateFormat("yyyy-ww"); + private final WeeklyStatisticManager weeklyStatisticManager = new WeeklyStatisticManager(); + + @Test + public void statistics_weekly() { + statisticUpdateManager.setEnabled(true); + + Identity id = JunitTestHelper.createAndPersistIdentityAsRndUser("log-2"); + + // make 2 courses + RepositoryEntry re1 = JunitTestHelper.deployBasicCourse(id); + ICourse course1 = CourseFactory.loadCourse(re1); + CourseNode rootNode1 = course1.getRunStructure().getRootNode(); + CourseNode firstNode1 = (CourseNode)course1.getRunStructure().getRootNode().getChildAt(0); + + RepositoryEntry re2 = JunitTestHelper.deployBasicCourse(id); + ICourse course2 = CourseFactory.loadCourse(re2); + CourseNode rootNode2 = course2.getRunStructure().getRootNode(); + CourseNode firstNode2 = (CourseNode)course2.getRunStructure().getRootNode().getChildAt(0); + + Calendar ref = Calendar.getInstance(); + String date2 = null; + + cleanUpLog(); + for(int i=0; i<7; i++) { + addLogEntry(re1, rootNode1, ref, 0, 0, 0, i+1); + } + for(int i=0; i<4; i++) { + addLogEntry(re1, firstNode1, ref, 0, 0, 0, i+1); + addLogEntry(re2, rootNode2, ref, 0, 0, 0, i+1); + } + + for(int i=0; i<12; i++) { + addLogEntry(re1, rootNode1, ref, 11, 3, 1, 1); + addLogEntry(re2, firstNode2, ref, 11, 3, 1, 1); + } + for(int i=0; i<11; i++) { + addLogEntry(re1, firstNode1, ref, 20, 5, 1, 1+i); + date2 = addLogEntry(re2, rootNode2, ref, 20, 5, 1, 1+i); + } + + setLastUpdate(ref, 22); + dbInstance.commitAndCloseSession(); + + updateStatistics(); + + // first log analyze + String date = getWeekString(ref); + checkStatistics(course1, rootNode1, date); + checkStatistics(course2, rootNode2, date2); + + // add log the same day + Calendar now = Calendar.getInstance(); + addLogEntry(re1, rootNode1, ref, 0, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND) + 1); + addLogEntry(re1, rootNode1, ref, 0, now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND) + 2); + dbInstance.commitAndCloseSession(); + sleep(5000); + + //update stats incremental + updateStatistics(); + checkStatistics(course1, rootNode1, date); + checkStatistics(course1, firstNode1, date); + checkStatistics(course2, rootNode2, date2); + + //update all stats + updateAllStatistics(); + checkStatistics(course1, rootNode1, date); + checkStatistics(course1, firstNode1, date); + checkStatistics(course2, rootNode2, date2); + } + + private String getWeekString(Calendar start) { + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.YEAR, start.get(Calendar.YEAR)); + cal.set(Calendar.MONTH, start.get(Calendar.MONTH)); + cal.set(Calendar.DATE, start.get(Calendar.DATE)); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.set(Calendar.MILLISECOND, 0); + return weeklyFormat.format(cal.getTime()); + } + + private void checkStatistics(ICourse course, CourseNode node, String date) { + RepositoryEntry re = course.getCourseEnvironment().getCourseGroupManager().getCourseEntry(); + StatisticResult updatedResult = weeklyStatisticManager.generateStatisticResult(new SyntheticUserRequest(null, Locale.ENGLISH), course, re.getKey()); + Map<String,Integer> updatedRootStats = updatedResult.getStatistics(node); + Integer updated_stats_inMemory = getInMemoryStatistics(re, node, date); + Integer updated_stats_today = updatedRootStats.get(date); + Assert.assertEquals(updated_stats_inMemory, updated_stats_today); + } + + protected String addLogEntry(RepositoryEntry repositoryEntry, CourseNode courseNode, Calendar start, + int dayInPast, int hour, int minute, int second) { + Calendar cal = addLog(repositoryEntry.getKey(), courseNode.getIdent(), start, dayInPast, hour, minute, second); + String week = getWeekString(cal); + incrementInMemoryStatistics(repositoryEntry.getKey(), courseNode.getIdent(), week); + return week; + } +} diff --git a/src/test/java/org/olat/group/test/BusinessGroupDAOTest.java b/src/test/java/org/olat/group/test/BusinessGroupDAOTest.java index c6329f56a256992e93e42f69d488d4a9b2df72a4..b37228e772f2fc2ff3fc3cc6a3c0eb9cb512cc74 100644 --- a/src/test/java/org/olat/group/test/BusinessGroupDAOTest.java +++ b/src/test/java/org/olat/group/test/BusinessGroupDAOTest.java @@ -329,7 +329,7 @@ public class BusinessGroupDAOTest extends OlatTestCase { group.setDescription("gdio-2-desc"); //update business group (semantic of Hibernate before JPA) - BusinessGroup updatedGroup = businessGroupDao.update(group); + BusinessGroup updatedGroup = businessGroupDao.merge(group); Assert.assertNotNull(updatedGroup); Assert.assertEquals(group, updatedGroup); Assert.assertEquals("gdio-2-desc", updatedGroup.getDescription()); diff --git a/src/test/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAOTest.java b/src/test/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAOTest.java index 92c7ea0a9ea4cac7cbc83cc9876518653a6d78a7..934aa18938189498a7443c8b108083f2689f2f09 100644 --- a/src/test/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAOTest.java +++ b/src/test/java/org/olat/ims/qti21/manager/AssessmentTestSessionDAOTest.java @@ -19,6 +19,7 @@ */ package org.olat.ims.qti21.manager; +import java.math.BigDecimal; import java.util.List; import java.util.UUID; @@ -26,7 +27,10 @@ import org.junit.Assert; import org.junit.Test; import org.olat.core.commons.persistence.DB; import org.olat.core.id.Identity; +import org.olat.ims.qti21.AssessmentItemSession; import org.olat.ims.qti21.AssessmentTestSession; +import org.olat.ims.qti21.model.ParentPartItemRefs; +import org.olat.ims.qti21.model.jpa.AssessmentTestSessionStatistics; import org.olat.modules.assessment.AssessmentEntry; import org.olat.modules.assessment.AssessmentService; import org.olat.repository.RepositoryEntry; @@ -45,6 +49,8 @@ public class AssessmentTestSessionDAOTest extends OlatTestCase { @Autowired private DB dbInstance; @Autowired + private AssessmentItemSessionDAO itemSessionDao; + @Autowired private AssessmentTestSessionDAO testSessionDao; @Autowired private AssessmentService assessmentService; @@ -97,6 +103,47 @@ public class AssessmentTestSessionDAOTest extends OlatTestCase { Assert.assertEquals(testSession, sessions.get(0)); } + @Test + public void getUserTestSessionsStatistics() { + // prepare a test and a user + RepositoryEntry testEntry = JunitTestHelper.createAndPersistRepositoryEntry(); + RepositoryEntry courseEntry = JunitTestHelper.createAndPersistRepositoryEntry(); + String subIdent = UUID.randomUUID().toString(); + Identity assessedIdentity = JunitTestHelper.createAndPersistIdentityAsRndUser("session-3"); + AssessmentEntry assessmentEntry = assessmentService.getOrCreateAssessmentEntry(assessedIdentity, null, courseEntry, subIdent, testEntry); + dbInstance.commit(); + AssessmentTestSession testSession = testSessionDao.createAndPersistTestSession(testEntry, courseEntry, subIdent, assessmentEntry, assessedIdentity, null, false); + Assert.assertNotNull(testSession); + dbInstance.commit(); + + for(int i=0; i<4; i++) { + ParentPartItemRefs parentParts = new ParentPartItemRefs(); + String sectionIdentifier = UUID.randomUUID().toString(); + parentParts.setSectionIdentifier(sectionIdentifier); + String testPartIdentifier = UUID.randomUUID().toString(); + parentParts.setTestPartIdentifier(testPartIdentifier); + AssessmentItemSession itemSession = itemSessionDao.createAndPersistAssessmentItemSession(testSession, parentParts, UUID.randomUUID().toString()); + Assert.assertNotNull(itemSession); + dbInstance.commit(); + + if(i%2 == 0) { + itemSession.setManualScore(new BigDecimal(3)); + itemSessionDao.merge(itemSession); + } + } + + dbInstance.commitAndCloseSession(); + + List<AssessmentTestSessionStatistics> sessionsStatistics = testSessionDao.getUserTestSessionsStatistics(courseEntry, subIdent, assessedIdentity); + Assert.assertNotNull(sessionsStatistics); + Assert.assertEquals(1, sessionsStatistics.size()); + + AssessmentTestSessionStatistics sessionStatistics = sessionsStatistics.get(0); + Assert.assertNotNull(sessionStatistics.getTestSession()); + Assert.assertEquals(testSession, sessionStatistics.getTestSession()); + Assert.assertEquals(2, sessionStatistics.getNumOfCorrectedItems()); + } + @Test public void getLastTestSession() { // prepare a test and a user diff --git a/src/test/java/org/olat/modules/card2brain/manager/Card2BrainManagerImplTest.java b/src/test/java/org/olat/modules/card2brain/manager/Card2BrainManagerImplTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6c75f14834b519f1765c860a28b74c7fda042e0c --- /dev/null +++ b/src/test/java/org/olat/modules/card2brain/manager/Card2BrainManagerImplTest.java @@ -0,0 +1,131 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.card2brain.manager; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyMap; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isNull; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.io.IOException; +import java.io.UnsupportedEncodingException; + +import org.apache.http.HttpResponse; +import org.apache.http.entity.StringEntity; +import org.codehaus.jackson.JsonParseException; +import org.codehaus.jackson.map.JsonMappingException; +import org.codehaus.jackson.map.ObjectMapper; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Answers; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import org.olat.ims.lti.LTIManager; + +/** + * + * Initial date: 09.05.2017<br> + * @author uhensler, urs.hensler@frentix.com, http://www.frentix.com + * + */ +@RunWith(MockitoJUnitRunner.Silent.class) +public class Card2BrainManagerImplTest { + + @InjectMocks + private Card2BrainManagerImpl sut; + + @Mock + LTIManager ltiManagerMock; + + @Mock(answer = Answers.RETURNS_DEEP_STUBS) + HttpResponse httpResponseMock; + + @Mock + ObjectMapper objectMapperMock; + + @Test + public void isSetOfFlashcardExisting() throws UnsupportedEncodingException { + // prepare + when(httpResponseMock.getStatusLine().getStatusCode()).thenReturn(200); + when(httpResponseMock.getEntity()).thenReturn(new StringEntity("content")); + + // test + assertThat(sut.isSetOfFlashcardExisting(httpResponseMock)).isTrue(); + } + + @Test + public void isSetOfFlashcardExisting_Status400() throws UnsupportedEncodingException { + // prepare + when(httpResponseMock.getStatusLine().getStatusCode()).thenReturn(400); + when(httpResponseMock.getEntity()).thenReturn(new StringEntity("content")); + + // test + assertThat(sut.isSetOfFlashcardExisting(httpResponseMock)).isFalse(); + } + + @Test + public void isSetOfFlashcardExisting_content0() throws UnsupportedEncodingException { + // prepare + when(httpResponseMock.getStatusLine().getStatusCode()).thenReturn(200); + when(httpResponseMock.getEntity()).thenReturn(new StringEntity("")); + + // test + assertThat(sut.isSetOfFlashcardExisting(httpResponseMock)).isFalse(); + } + + @Test + public void isSetOfFlashcardExisting_Exception() throws IllegalStateException, IOException { + // prepare + when(httpResponseMock.getStatusLine().getStatusCode()).thenReturn(200); + when(httpResponseMock.getEntity().getContent()).thenThrow(new IllegalStateException()); + + // test + assertThat(sut.isSetOfFlashcardExisting(httpResponseMock)).isFalse(); + } + + @Test + public void checkEnterpriseLogin() throws JsonParseException, JsonMappingException, IOException { + // run + sut.checkEnterpriseLogin("", "", ""); + + // test + verify(ltiManagerMock).sign(isNull(), anyString(), anyString(), anyString()); + verify(ltiManagerMock).post(anyMap(), anyString()); + verify(objectMapperMock).readValue((String) isNull(), eq(Card2BrainVerificationResult.class)); + } + + @SuppressWarnings("unchecked") + @Test + public void checkEnterpriseLogin_Exception() throws JsonParseException, JsonMappingException, IOException { + // prepare + when(objectMapperMock.readValue(anyString(), any(Class.class))) + .thenThrow(mock(JsonParseException.class)); + + // test + assertThat(sut.checkEnterpriseLogin("", "", "")).isNull(); + } + +} diff --git a/src/test/java/org/olat/modules/ims/cp/CPManagerTest.java b/src/test/java/org/olat/modules/ims/cp/CPManagerTest.java index 359ca0dbef04d78a1e81c6047ecea4875dee56f3..992ff62b6b4153a87cf3f96accac51ecedf24fcc 100644 --- a/src/test/java/org/olat/modules/ims/cp/CPManagerTest.java +++ b/src/test/java/org/olat/modules/ims/cp/CPManagerTest.java @@ -30,6 +30,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import org.junit.After; +import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.olat.core.id.OLATResourceable; @@ -91,28 +92,12 @@ public class CPManagerTest extends OlatTestCase { CPItem item = orga.getFirstItem(); assertEquals(PAGE_TITLE, item.getTitle()); } - @Test - public void testCreateNewCP() { - // Tested through setup. Foundation for the other tests. - } - @Test - public void testIsSingleUsedResource() { - // mgr.isSingleUsedResource(res, cp); - } + @Test public void testAddBlankPage() { final String pageTitle = "the blank page"; String ident = mgr.addBlankPage(cp, pageTitle); - assertNotNull(ident); - - } - @Test - public void testUpdatePage() { - // TODO:GW impl - } - @Test - public void testAddElement() { - // TODO:GW impl + assertNotNull(ident); } public void testAddElementAfter() { @@ -120,61 +105,30 @@ public class CPManagerTest extends OlatTestCase { mgr.addElementAfter(cp, newItem, ITEM_ID); assertTrue("The new item wasn't inserted at the second position.", newItem.getPosition() == 1); } - @Test - public void testRemoveElement() { - // TODO:GW impl - } - @Test - public void testMoveElement() { - // TODO:GW impl - } - public void testCopyElement() { - // TODO:GW impl - } - @Test - public void testGetDocument() { - // TODO:GW impl - } @Test public void testGetItemTitle() { String title = mgr.getItemTitle(cp, ITEM_ID); assertNotNull(title); assertEquals(PAGE_TITLE, title); } - @Test - public void testGetTreeDataModel() { - // TODO:GW impl - } - @Test - public void testGetFirstOrganizationInManifest() { - // TODO:GW impl - } - public void testGetFirstPageToDisplay() { - // this method basically just returns the first element in the cp - } @Test public void testGetPageByItemId() { String href = mgr.getPageByItemId(cp, ITEM_ID); VFSItem file = cp.getRootDir().resolve(href); assertNotNull("The file path doesn't lead to a file.", file); } + @Test public void testWriteToFile() { mgr.writeToFile(cp); // Throws exception on failure } + @Test public void testWriteToZip() { - // Substract 1s = 1000ms from now to make sure the time is before execution - long before = System.currentTimeMillis() - 1000; VFSLeaf zip = mgr.writeToZip(cp); - assertNotNull("The zip file wasn't created properly", zip); - assertTrue("The last modified date of the zip file wasn't updated", zip.getLastModified() > before); + Assert.assertNotNull("The zip file wasn't created properly", zip); + Assert.assertTrue("The zip file cannot be empty", zip.getSize() > 0); } - @Test - public void testGetElementByIdentifier() { - // TODO:GW impl - } - } diff --git a/src/test/java/org/olat/repository/manager/RepositoryEntryRelationDAOTest.java b/src/test/java/org/olat/repository/manager/RepositoryEntryRelationDAOTest.java index 191d234faf1ca19864256d9ab5c28b42b06c21bb..5dd98faed4270265a8e6f10f070aff79389b4b83 100644 --- a/src/test/java/org/olat/repository/manager/RepositoryEntryRelationDAOTest.java +++ b/src/test/java/org/olat/repository/manager/RepositoryEntryRelationDAOTest.java @@ -157,7 +157,42 @@ public class RepositoryEntryRelationDAOTest extends OlatTestCase { Assert.assertNotNull(participants); Assert.assertEquals(1, participants.size()); Assert.assertEquals(1, numOfParticipants); - Assert.assertTrue(members.contains(id2)); + Assert.assertTrue(participants.contains(id2)); + } + + @Test + public void getMembers_follow() { + Identity id1 = JunitTestHelper.createAndPersistIdentityAsRndUser("member-1-"); + Identity id2 = JunitTestHelper.createAndPersistIdentityAsRndUser("member-2-"); + Identity id3 = JunitTestHelper.createAndPersistIdentityAsRndUser("member-3-"); + Identity id4 = JunitTestHelper.createAndPersistIdentityAsRndUser("member-4-"); + RepositoryEntry re1 = repositoryService.create("Rei Ayanami", "rel", "rel", null, null); + RepositoryEntry re2 = repositoryService.create("Rei Ayanami (alt)", "rel", "rel", null, null); + dbInstance.commit(); + repositoryEntryRelationDao.addRole(id1, re1, GroupRoles.owner.name()); + repositoryEntryRelationDao.addRole(id2, re1, GroupRoles.participant.name()); + repositoryEntryRelationDao.addRole(id3, re2, GroupRoles.participant.name()); + dbInstance.commit(); + BusinessGroup group = businessGroupService.createBusinessGroup(null, "group", "tg", null, null, true, false, re2); + businessGroupRelationDao.addRole(id4, group, GroupRoles.coach.name()); + dbInstance.commit(); + + List<RepositoryEntry> res = new ArrayList<>(); + res.add(re1); + res.add(re2); + + //all members + List<Identity> coaches = repositoryEntryRelationDao.getMembers(res, RepositoryEntryRelationType.both, GroupRoles.coach.name()); + Assert.assertNotNull(coaches); + Assert.assertEquals(1, coaches.size()); + Assert.assertTrue(coaches.contains(id4)); + + //participant + List<Identity> participants = repositoryEntryRelationDao.getMembers(res, RepositoryEntryRelationType.defaultGroup, GroupRoles.participant.name()); + Assert.assertNotNull(participants); + Assert.assertEquals(2, participants.size()); + Assert.assertTrue(participants.contains(id2)); + Assert.assertTrue(participants.contains(id3)); } @Test diff --git a/src/test/java/org/olat/restapi/CoursesFoldersTest.java b/src/test/java/org/olat/restapi/CoursesFoldersTest.java index a4a701172d3e5ac572cb82456212a3387d7b3375..16abfca5e3eb3206b64f968877365cfb364c6480 100644 --- a/src/test/java/org/olat/restapi/CoursesFoldersTest.java +++ b/src/test/java/org/olat/restapi/CoursesFoldersTest.java @@ -106,8 +106,8 @@ public class CoursesFoldersTest extends OlatJerseyTestCase { conn.shutdown(); } } catch (Exception e) { - e.printStackTrace(); - throw e; + e.printStackTrace(); + throw e; } } diff --git a/src/test/java/org/olat/restapi/CoursesResourcesFoldersTest.java b/src/test/java/org/olat/restapi/CoursesResourcesFoldersTest.java index c898ce74f439738d863df08e7079c2453454d0c9..90e3f1f34b2a81a4c2b33126208e14315e70a093 100644 --- a/src/test/java/org/olat/restapi/CoursesResourcesFoldersTest.java +++ b/src/test/java/org/olat/restapi/CoursesResourcesFoldersTest.java @@ -87,15 +87,15 @@ public class CoursesResourcesFoldersTest extends OlatJerseyTestCase { DBFactory.getInstance().intermediateCommit(); } - @After + @After public void tearDown() throws Exception { try { if(conn != null) { conn.shutdown(); } } catch (Exception e) { - e.printStackTrace(); - throw e; + e.printStackTrace(); + throw e; } } @@ -158,7 +158,6 @@ public class CoursesResourcesFoldersTest extends OlatJerseyTestCase { } } assertNotNull(contentType); - //assertEquals("text/html", contentType); } private URI getCourseFolderURI() { diff --git a/src/test/java/org/olat/restapi/GroupFoldersTest.java b/src/test/java/org/olat/restapi/GroupFoldersTest.java index 041a7ca45e15cb3df9a89386ed51249b08a08ad1..c8f0d972f68489d3d253b69f31e4d168447c9897 100644 --- a/src/test/java/org/olat/restapi/GroupFoldersTest.java +++ b/src/test/java/org/olat/restapi/GroupFoldersTest.java @@ -166,8 +166,8 @@ public class GroupFoldersTest extends OlatJerseyTestCase { conn.shutdown(); } } catch (Exception e) { - e.printStackTrace(); - throw e; + e.printStackTrace(); + throw e; } } diff --git a/src/test/java/org/olat/restapi/SharedFolderTest.java b/src/test/java/org/olat/restapi/SharedFolderTest.java new file mode 100644 index 0000000000000000000000000000000000000000..2b23a33fafd7fffea9017cf8e1bae8c9bf0009e0 --- /dev/null +++ b/src/test/java/org/olat/restapi/SharedFolderTest.java @@ -0,0 +1,294 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.restapi; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.List; +import java.util.Locale; + +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.UriBuilder; + +import org.apache.commons.io.IOUtils; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPut; +import org.apache.http.util.EntityUtils; +import org.junit.Assert; +import org.junit.Test; +import org.olat.basesecurity.GroupRoles; +import org.olat.core.commons.persistence.DB; +import org.olat.core.id.Identity; +import org.olat.core.util.FileUtils; +import org.olat.core.util.vfs.VFSContainer; +import org.olat.core.util.vfs.VFSItem; +import org.olat.core.util.vfs.VFSLeaf; +import org.olat.modules.sharedfolder.SharedFolderManager; +import org.olat.repository.RepositoryEntry; +import org.olat.repository.handlers.SharedFolderHandler; +import org.olat.repository.manager.RepositoryEntryRelationDAO; +import org.olat.restapi.support.vo.FileVO; +import org.olat.restapi.support.vo.LinkVO; +import org.olat.test.JunitTestHelper; +import org.olat.test.OlatJerseyTestCase; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * + * Initial date: 4 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class SharedFolderTest extends OlatJerseyTestCase { + + @Autowired + private DB dbInstance; + @Autowired + private RepositoryEntryRelationDAO repositoryEntryRelationDao; + + /** + * Check simple GET for the directory. + * + * @throws IOException + * @throws URISyntaxException + */ + @Test + public void getDirectories() throws IOException, URISyntaxException { + RestConnection conn = new RestConnection(); + Assert.assertTrue(conn.login("administrator", "openolat")); + + Identity owner = JunitTestHelper.createAndPersistIdentityAsRndUser("shared-owner-"); + RepositoryEntry sharedFolder = new SharedFolderHandler().createResource(owner, "Shared 1", "A shared folder", null, Locale.ENGLISH); + VFSContainer container = SharedFolderManager.getInstance().getNamedSharedFolder(sharedFolder, true); + copyFileInResourceFolder(container, "portrait.jpg", "1_"); + + URI uri = UriBuilder.fromUri(getFolderURI(sharedFolder)).build(); + HttpGet method = conn.createGet(uri, MediaType.APPLICATION_JSON, true); + HttpResponse response = conn.execute(method); + Assert.assertEquals(200, response.getStatusLine().getStatusCode()); + + InputStream body = response.getEntity().getContent(); + List<LinkVO> links = parseLinkArray(body); + Assert.assertNotNull(links); + Assert.assertEquals(1, links.size()); + Assert.assertTrue(links.get(0).getHref().contains("1_portrait.jpg")); + + conn.shutdown(); + } + + /** + * The root /** is read only + * + * @throws IOException + * @throws URISyntaxException + */ + @Test + public void putDirectories_owner() throws IOException, URISyntaxException { + Identity owner = JunitTestHelper.createAndPersistIdentityAsRndUser("shared-owner-"); + RepositoryEntry sharedFolder = new SharedFolderHandler().createResource(owner, "Shared 2", "A shared folder", null, Locale.ENGLISH); + VFSContainer container = SharedFolderManager.getInstance().getNamedSharedFolder(sharedFolder, true); + copyFileInResourceFolder(container, "portrait.jpg", "2_"); + + // owner want to upload a file + RestConnection conn = new RestConnection(); + Assert.assertTrue(conn.login(owner.getName(), "A6B7C8")); + + //create single page + URL fileUrl = CoursesFoldersTest.class.getResource("certificate.pdf"); + File file = new File(fileUrl.toURI()); + + URI uri = UriBuilder.fromUri(getFolderURI(sharedFolder)).build(); + HttpPut method = conn.createPut(uri, MediaType.APPLICATION_JSON, true); + conn.addMultipart(method, file.getName(), file); + HttpResponse response = conn.execute(method); + Assert.assertEquals(405, response.getStatusLine().getStatusCode()); + EntityUtils.consume(response.getEntity()); + + conn.shutdown(); + } + + /** + * Check simple GET for the directory. + * + * @throws IOException + * @throws URISyntaxException + */ + @Test + public void getFiles() throws IOException, URISyntaxException { + RestConnection conn = new RestConnection(); + Assert.assertTrue(conn.login("administrator", "openolat")); + + Identity owner = JunitTestHelper.createAndPersistIdentityAsRndUser("shared-owner-"); + RepositoryEntry sharedFolder = new SharedFolderHandler().createResource(owner, "Shared 2", "Shared files", null, Locale.ENGLISH); + VFSContainer container = SharedFolderManager.getInstance().getNamedSharedFolder(sharedFolder, true); + copyFileInResourceFolder(container, "portrait.jpg", "2_"); + + URI uri = UriBuilder.fromUri(getFolderURI(sharedFolder)).path("files").build(); + HttpGet method = conn.createGet(uri, MediaType.APPLICATION_JSON, true); + HttpResponse response = conn.execute(method); + Assert.assertEquals(200, response.getStatusLine().getStatusCode()); + + InputStream body = response.getEntity().getContent(); + List<FileVO> links = parseFileArray(body); + + Assert.assertNotNull(links); + Assert.assertEquals(1, links.size()); + Assert.assertTrue(links.get(0).getHref().contains("2_portrait.jpg")); + + conn.shutdown(); + } + + /** + * Owner of the shared folder want to put a file. + * + * @throws IOException + * @throws URISyntaxException + */ + @Test + public void putFiles_owner() throws IOException, URISyntaxException { + //create a shared folder + Identity owner = JunitTestHelper.createAndPersistIdentityAsRndUser("shared-owner-"); + RepositoryEntry sharedFolder = new SharedFolderHandler().createResource(owner, "Shared 2", "Shared files", null, Locale.ENGLISH); + VFSContainer container = SharedFolderManager.getInstance().getNamedSharedFolder(sharedFolder, true); + copyFileInResourceFolder(container, "certificate.pdf", "2_"); + + // owner want to upload a file + RestConnection conn = new RestConnection(); + Assert.assertTrue(conn.login(owner.getName(), "A6B7C8")); + + //create single page + URL fileUrl = CoursesFoldersTest.class.getResource("certificate.pdf"); + File file = new File(fileUrl.toURI()); + + URI uri = UriBuilder.fromUri(getFolderURI(sharedFolder)).path("files").build(); + HttpPut method = conn.createPut(uri, MediaType.APPLICATION_JSON, true); + conn.addMultipart(method, file.getName(), file); + HttpResponse response = conn.execute(method); + Assert.assertEquals(200, response.getStatusLine().getStatusCode()); + + //check the reality of the file + VFSItem item = container.resolve("certificate.pdf"); + Assert.assertNotNull(item); + Assert.assertTrue(item instanceof VFSLeaf); + VFSLeaf leaf = (VFSLeaf)item; + Assert.assertTrue(leaf.getSize() > 10); + } + + /** + * Participant can read the files and download them. + * + * @throws IOException + * @throws URISyntaxException + */ + @Test + public void getFiles_participant() throws IOException, URISyntaxException { + //a shared folder with a participant + Identity owner = JunitTestHelper.createAndPersistIdentityAsRndUser("shared-owner-"); + Identity participant = JunitTestHelper.createAndPersistIdentityAsRndUser("shared-part-"); + RepositoryEntry sharedFolder = new SharedFolderHandler().createResource(owner, "Shared 2", "Shared files", null, Locale.ENGLISH); + VFSContainer container = SharedFolderManager.getInstance().getNamedSharedFolder(sharedFolder, true); + copyFileInResourceFolder(container, "portrait.jpg", "3_"); + repositoryEntryRelationDao.addRole(participant, sharedFolder, GroupRoles.participant.name()); + dbInstance.commitAndCloseSession(); + + // participant want to see the file + RestConnection conn = new RestConnection(); + Assert.assertTrue(conn.login(participant.getName(), "A6B7C8")); + + // check directories + URI uri = UriBuilder.fromUri(getFolderURI(sharedFolder)).path("files").build(); + HttpGet method = conn.createGet(uri, MediaType.APPLICATION_JSON, true); + HttpResponse response = conn.execute(method); + Assert.assertEquals(200, response.getStatusLine().getStatusCode()); + + InputStream body = response.getEntity().getContent(); + List<FileVO> links = parseFileArray(body); + + Assert.assertNotNull(links); + Assert.assertEquals(1, links.size()); + Assert.assertTrue(links.get(0).getHref().contains("3_portrait.jpg")); + + // download the file + URI fileUri = UriBuilder.fromUri(getFolderURI(sharedFolder)).path("files").path("3_portrait.jpg").build(); + HttpGet fileMethod = conn.createGet(fileUri, "*/*", true); + HttpResponse fileResponse = conn.execute(fileMethod); + Assert.assertEquals(200, fileResponse.getStatusLine().getStatusCode()); + byte[] fileBytes = EntityUtils.toByteArray(fileResponse.getEntity()); + Assert.assertNotNull(fileBytes); + Assert.assertTrue(fileBytes.length > 10); + + conn.shutdown(); + } + + /** + * Participants have only read-only access to the shared folder. + * + * @throws IOException + * @throws URISyntaxException + */ + @Test + public void putFiles_participant() throws IOException, URISyntaxException { + //a shared folder with a participant + Identity owner = JunitTestHelper.createAndPersistIdentityAsRndUser("shared-owner-"); + Identity participant = JunitTestHelper.createAndPersistIdentityAsRndUser("shared-part-"); + RepositoryEntry sharedFolder = new SharedFolderHandler().createResource(owner, "Shared 5", "Shared files", null, Locale.ENGLISH); + VFSContainer container = SharedFolderManager.getInstance().getNamedSharedFolder(sharedFolder, true); + copyFileInResourceFolder(container, "portrait.jpg", "5_"); + repositoryEntryRelationDao.addRole(participant, sharedFolder, GroupRoles.participant.name()); + dbInstance.commitAndCloseSession(); + + // participant want to upload a file + RestConnection conn = new RestConnection(); + Assert.assertTrue(conn.login(participant.getName(), "A6B7C8")); + + URL fileUrl = CoursesFoldersTest.class.getResource("certificate.pdf"); + File file = new File(fileUrl.toURI()); + + URI uri = UriBuilder.fromUri(getFolderURI(sharedFolder)).path("files").build(); + HttpPut method = conn.createPut(uri, MediaType.APPLICATION_JSON, true); + conn.addMultipart(method, file.getName(), file); + HttpResponse response = conn.execute(method); + Assert.assertEquals(401, response.getStatusLine().getStatusCode()); + + //check the absence of the file + VFSItem item = container.resolve("certificate.pdf"); + Assert.assertNull(item); + } + + private URI getFolderURI(RepositoryEntry entry) { + return UriBuilder.fromUri(getContextURI()).path("repo").path("sharedfolder").path(entry.getKey().toString()) + .build(); + } + + private void copyFileInResourceFolder(VFSContainer container, String filename, String prefix) throws IOException { + InputStream pageStream = SharedFolderTest.class.getResourceAsStream(filename); + VFSLeaf item = container.createChildLeaf(prefix + filename); + OutputStream outStream = item.getOutputStream(false); + IOUtils.copy(pageStream, outStream); + FileUtils.closeSafely(pageStream); + FileUtils.closeSafely(outStream); + } +} diff --git a/src/test/java/org/olat/selenium/AssessmentTest.java b/src/test/java/org/olat/selenium/AssessmentTest.java index c081ddb80926ecccdc6667815963a2a0f1dfaf01..b8235fc47fb5673c2e9d24a0710c0af06560419d 100644 --- a/src/test/java/org/olat/selenium/AssessmentTest.java +++ b/src/test/java/org/olat/selenium/AssessmentTest.java @@ -53,7 +53,6 @@ import org.olat.selenium.page.course.GroupTaskConfigurationPage; import org.olat.selenium.page.course.GroupTaskPage; import org.olat.selenium.page.course.GroupTaskToCoachPage; import org.olat.selenium.page.course.MembersPage; -import org.olat.selenium.page.course.PublisherPageFragment.Access; import org.olat.selenium.page.graphene.OOGraphene; import org.olat.selenium.page.group.GroupPage; import org.olat.selenium.page.qti.QTI12Page; @@ -228,7 +227,7 @@ public class AssessmentTest { //publish the course courseEditor .publish() - .quickPublish(Access.membersOnly); + .quickPublish(UserAccess.membersOnly); //open the course and see the test start page CoursePageFragment courseRuntime = courseEditor @@ -917,7 +916,7 @@ public class AssessmentTest { courseEditor .publish() - .quickPublish(Access.guests); + .quickPublish(UserAccess.guest); MembersPage membersPage = courseEditor .clickToolbarBack() @@ -1101,7 +1100,7 @@ public class AssessmentTest { courseEditor .publish() - .quickPublish(Access.membersOnly); + .quickPublish(UserAccess.membersOnly); MembersPage membersPage = courseEditor .clickToolbarBack() diff --git a/src/test/java/org/olat/selenium/BusinessGroupTest.java b/src/test/java/org/olat/selenium/BusinessGroupTest.java index f0d66de6300ea3d3302a3e7601328aa14039ce45..e32f2771982968fb79646ac7064d0f71b2674c63 100644 --- a/src/test/java/org/olat/selenium/BusinessGroupTest.java +++ b/src/test/java/org/olat/selenium/BusinessGroupTest.java @@ -51,10 +51,10 @@ import org.olat.selenium.page.course.CoursePageFragment; import org.olat.selenium.page.course.EnrollmentConfigurationPage; import org.olat.selenium.page.course.EnrollmentPage; import org.olat.selenium.page.course.MembersPage; -import org.olat.selenium.page.course.PublisherPageFragment.Access; import org.olat.selenium.page.graphene.OOGraphene; import org.olat.selenium.page.group.GroupPage; import org.olat.selenium.page.group.MembersWizardPage; +import org.olat.selenium.page.repository.RepositoryAccessPage.UserAccess; import org.olat.test.ArquillianDeployments; import org.olat.test.rest.UserRestClient; import org.olat.user.restapi.UserVO; @@ -738,7 +738,7 @@ public class BusinessGroupTest { //publish the course courseEditor .publish() - .quickPublish(Access.users); + .quickPublish(UserAccess.registred); courseEditor.clickToolbarBack(); GroupPage authorGroup = navBar @@ -856,7 +856,7 @@ public class BusinessGroupTest { //publish the course courseEditor .publish() - .quickPublish(Access.users); + .quickPublish(UserAccess.registred); courseEditor.clickToolbarBack(); @@ -967,7 +967,7 @@ public class BusinessGroupTest { //publish the course courseEditor .publish() - .quickPublish(Access.users); + .quickPublish(UserAccess.registred); GroupPage authorGroup = navBar .openGroups(browser) @@ -1099,7 +1099,7 @@ public class BusinessGroupTest { //publish the course courseEditor .publish() - .quickPublish(Access.users); + .quickPublish(UserAccess.registred); GroupPage authorGroup = navBar .openGroups(browser) diff --git a/src/test/java/org/olat/selenium/CourseTest.java b/src/test/java/org/olat/selenium/CourseTest.java index 1978023844c30f00ac0ecad0fd49c540e6abb631..570f5da56ee84b1a1d7cc6548bf76c2bfe60a9ca 100644 --- a/src/test/java/org/olat/selenium/CourseTest.java +++ b/src/test/java/org/olat/selenium/CourseTest.java @@ -61,7 +61,6 @@ import org.olat.selenium.page.course.ForumCEPage; import org.olat.selenium.page.course.InfoMessageCEPage; import org.olat.selenium.page.course.MembersPage; import org.olat.selenium.page.course.PublisherPageFragment; -import org.olat.selenium.page.course.PublisherPageFragment.Access; import org.olat.selenium.page.course.RemindersPage; import org.olat.selenium.page.forum.ForumPage; import org.olat.selenium.page.graphene.OOGraphene; @@ -71,9 +70,9 @@ import org.olat.selenium.page.repository.CPPage; import org.olat.selenium.page.repository.FeedPage; import org.olat.selenium.page.repository.RepositoryAccessPage; import org.olat.selenium.page.repository.RepositoryAccessPage.UserAccess; -import org.olat.selenium.page.user.UserToolsPage; import org.olat.selenium.page.repository.RepositoryEditDescriptionPage; import org.olat.selenium.page.repository.ScormPage; +import org.olat.selenium.page.user.UserToolsPage; import org.olat.test.ArquillianDeployments; import org.olat.test.JunitTestHelper; import org.olat.test.rest.UserRestClient; @@ -155,7 +154,7 @@ public class CourseTest { publisher .assertOnPublisher() .next() - .selectAccess(Access.guests) + .selectAccess(UserAccess.guest) .next() .selectCatalog(false) .next() // -> no problem found @@ -259,7 +258,9 @@ public class CourseTest { RepositoryEditDescriptionPage editDescription = new RepositoryEditDescriptionPage(browser); //from description editor, back to details and launch the course editDescription - .assertOnGeneralTab() + .assertOnGeneralTab(); + OOGraphene.closeErrorBox(browser);//close mail error + editDescription .clickToolbarBack(); //open course editor @@ -297,7 +298,7 @@ public class CourseTest { throws IOException, URISyntaxException { UserVO author = new UserRestClient(deploymentUrl).createAuthor(); - UserVO coAuthor = new UserRestClient(deploymentUrl).createAuthor(); + UserVO coAuthor = new UserRestClient(deploymentUrl).createAuthor("Rei"); loginPage .loginAs(author.getLogin(), author.getPassword()) .resume(); @@ -428,7 +429,7 @@ public class CourseTest { .createNode("st") .nodeTitle(secondNodeTitle) .publish() - .quickPublish(Access.users); + .quickPublish(UserAccess.registred); // The user opens the course LoginPage ryomouLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); @@ -1078,7 +1079,7 @@ public class CourseTest { courseEditor .publish() .next() - .selectAccess(Access.guests) + .selectAccess(UserAccess.guest) .next() .selectCatalog(true) .selectCategory(node1, node2_2) @@ -1158,7 +1159,7 @@ public class CourseTest { //publish editor .publish() - .quickPublish(Access.guests); + .quickPublish(UserAccess.registred); editor.clickToolbarBack(); course @@ -1732,7 +1733,7 @@ public class CourseTest { .nodeTitle(foTitle) //publish the course .publish() - .quickPublish(Access.users); + .quickPublish(UserAccess.registred); //go to the forum courseEditor @@ -1875,7 +1876,7 @@ public class CourseTest { courseEditor .publish() .next() - .selectAccess(Access.guests) + .selectAccess(UserAccess.guest) .next() .selectCatalog(true) .selectCategory(null, node1) @@ -1905,9 +1906,7 @@ public class CourseTest { ForumPage guestForum = ForumPage .getCourseForumPage(guestBrowser) .createThread("Your favorite author", "Name your favorite author", guestAlias); - - System.out.println(); - + // admin go to the forum new CoursePageFragment(browser) .clickTree() @@ -2016,7 +2015,7 @@ public class CourseTest { courseEditor .publish() - .quickPublish(Access.membersOnly); + .quickPublish(UserAccess.membersOnly); courseEditor .clickToolbarBack(); diff --git a/src/test/java/org/olat/selenium/ImsQTI21Test.java b/src/test/java/org/olat/selenium/ImsQTI21Test.java index 6028018d580090f584ed4bd9e01f7d7b8b114c4e..ce929373d6b5e6ee7ebc5b84ea5a01a9eb3c5121 100644 --- a/src/test/java/org/olat/selenium/ImsQTI21Test.java +++ b/src/test/java/org/olat/selenium/ImsQTI21Test.java @@ -37,6 +37,7 @@ import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.olat.ims.qti21.QTI21AssessmentResultsOptions; +import org.olat.ims.qti21.model.xml.interactions.SimpleChoiceAssessmentItemBuilder.ScoreEvaluation; import org.olat.selenium.page.LoginPage; import org.olat.selenium.page.NavigationPage; import org.olat.selenium.page.User; @@ -44,7 +45,12 @@ import org.olat.selenium.page.course.CourseEditorPageFragment; import org.olat.selenium.page.course.CoursePageFragment; import org.olat.selenium.page.qti.QTI21ConfigurationCEPage; import org.olat.selenium.page.qti.QTI21EditorPage; +import org.olat.selenium.page.qti.QTI21KprimEditorPage; +import org.olat.selenium.page.qti.QTI21LobEditorPage; +import org.olat.selenium.page.qti.QTI21MatchEditorPage; +import org.olat.selenium.page.qti.QTI21MultipleChoiceEditorPage; import org.olat.selenium.page.qti.QTI21Page; +import org.olat.selenium.page.qti.QTI21SingleChoiceEditorPage; import org.olat.selenium.page.repository.RepositoryAccessPage.UserAccess; import org.olat.selenium.page.user.UserToolsPage; import org.olat.test.ArquillianDeployments; @@ -681,7 +687,6 @@ public class ImsQTI21Test { .closeAssessmentResults() .assertOnCourseAttempts(1) .assertOnCourseAssessmentTestScore(1) - .showAssessmentResults() .assertOnAssessmentResults(); } @@ -785,7 +790,8 @@ public class ImsQTI21Test { .clickToolbarBack() .assertOnAssessmentItem() .answerGapText("verbannen", "_RESPONSE_1") - .saveAnswer().nextAnswer() + .saveAnswer() + .nextAnswer() .answerGapText(",", "_RESPONSE_1") .answerGapText("", "_RESPONSE_2") .answerGapText("", "_RESPONSE_3") @@ -927,4 +933,1168 @@ public class ImsQTI21Test { .assertOnCourseAssessmentTestScore(4) .assertOnCourseAttempts(1); } + + /** + * Test different settings in the single choice editor. An author + * make a test with 2 single choices, one with score all answer correct, + * the second with score per answer and feedbacks.<br> + * A second user make the test and check the score at the end of + * the test. + * + * @param authorLoginPage + * @throws IOException + * @throws URISyntaxException + */ + @Test + @RunAsClient + public void qti21EditorSingleChoices(@InitialPage LoginPage authorLoginPage, + @Drone @User WebDriver ryomouBrowser) + throws IOException, URISyntaxException { + UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + + String qtiTestTitle = "Choices QTI 2.1 " + UUID.randomUUID(); + navBar + .openAuthoringEnvironment() + .createQTI21Test(qtiTestTitle) + .clickToolbarBack(); + + QTI21Page qtiPage = QTI21Page + .getQTI12Page(browser); + QTI21EditorPage qtiEditor = qtiPage + .edit(); + //start a blank test + qtiEditor + .selectNode("Single choice") + .deleteNode(); + + //add a single choice: all answers score + QTI21SingleChoiceEditorPage scEditor = qtiEditor + .addSingleChoice(); + scEditor + .setAnswer(0, "Wrong") + .addChoice(1) + .setCorrect(1) + .setAnswer(1, "Correct") + .addChoice(2) + .setAnswer(2, "Faux") + .addChoice(3) + .setAnswer(3, "Falsch") + .save(); + // change max score + scEditor + .selectScores() + .setMaxScore("3") + .save(); + // set some feedbacks + scEditor + .selectFeedbacks() + .setHint("Hint", "This is only an hint") + .setCorrectSolution("Correct solution", "This is the correct solution") + .setCorrectFeedback("Correct feedback", "This is correct") + .setIncorrectFeedback("Incorrect", "Your answer is not correct") + .save(); + + //score per answers + scEditor = qtiEditor + .addSingleChoice() + .setAnswer(0, "AlmostRight") + .addChoice(1) + .setAnswer(1, "NotRight") + .addChoice(2) + .setCorrect(2) + .setAnswer(2, "RightAnswer") + .addChoice(3) + .setAnswer(3, "TheWrongOne") + .save(); + scEditor + .selectScores() + .setMaxScore("2") + .selectAssessmentMode(ScoreEvaluation.perAnswer) + .setScore("Almost", "1") + .setScore("NotRight", "0") + .setScore("RightAnswer", "2") + .setScore("TheWrongOne", "0") + .save(); + scEditor + .selectFeedbacks() + .setHint("Hint", "The hint") + .setCorrectSolution("Correct solution", "This is the correct solution") + .setCorrectFeedback("Correct feedback", "This is correct") + .setIncorrectFeedback("Incorrect", "Your answer is not correct") + .save(); + + qtiPage + .clickToolbarBack(); + // access to all + qtiPage + .accessConfiguration() + .setUserAccess(UserAccess.guest) + .clickToolbarBack(); + // show results + qtiPage + .options() + .showResults(Boolean.TRUE, QTI21AssessmentResultsOptions.allOptions()) + .save(); + + //a user search the content package + LoginPage userLoginPage = LoginPage.getLoginPage(ryomouBrowser, deploymentUrl); + userLoginPage + .loginAs(ryomou.getLogin(), ryomou.getPassword()) + .resume(); + NavigationPage userNavBar = new NavigationPage(ryomouBrowser); + userNavBar + .openMyCourses() + .openSearch() + .extendedSearch(qtiTestTitle) + .select(qtiTestTitle) + .start(); + + // make the test + QTI21Page ryomouQtiPage = QTI21Page + .getQTI12Page(ryomouBrowser); + ryomouQtiPage + .assertOnAssessmentItem() + .answerSingleChoice("Falsch") + .saveAnswer() + .assertFeedback("Incorrect") + .assertCorrectSolution("Correct solution") + .hint() + .assertFeedback("Hint") + .answerSingleChoice("Correct") + .saveAnswer() + .assertFeedback("Correct feedback") + .nextAnswer() + .answerSingleChoice("Almost") + .saveAnswer() + .assertCorrectSolution("Correct solution") + .assertFeedback("Incorrect") + .endTest() + .assertOnAssessmentResults() + .assertOnAssessmentTestScore(4);// 3 points from the first question, 1 from the second + } + + /** + * An author make a test with 2 multiple choices, the first + * with the score set if all answers are correct, the second + * with scoring per answers.<br> + * A first user make the test, but doesn't answer all questions + * correctly, log out and a second user make the perfect test. + * + * @param authorLoginPage + * @param participantBrowser + * @throws IOException + * @throws URISyntaxException + */ + @Test + @RunAsClient + public void qti21EditorMultipleChoices(@InitialPage LoginPage authorLoginPage, + @Drone @User WebDriver participantBrowser) + throws IOException, URISyntaxException { + UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou"); + UserVO eric = new UserRestClient(deploymentUrl).createRandomUser("Eric"); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + + String qtiTestTitle = "Choices QTI 2.1 " + UUID.randomUUID(); + navBar + .openAuthoringEnvironment() + .createQTI21Test(qtiTestTitle) + .clickToolbarBack(); + + QTI21Page qtiPage = QTI21Page + .getQTI12Page(browser); + QTI21EditorPage qtiEditor = qtiPage + .edit(); + //start a blank test + qtiEditor + .selectNode("Single choice") + .deleteNode(); + + //add a single choice: all answers score + QTI21MultipleChoiceEditorPage mcEditor = qtiEditor + .addMultipleChoice(); + mcEditor + .setAnswer(0, "Correct") + .setCorrect(0) + .addChoice(1) + .setCorrect(1) + .setAnswer(1, "OkToo") + .addChoice(2) + .setAnswer(2, "Faux") + .addChoice(3) + .setAnswer(3, "Falsch") + .save(); + // change max score + mcEditor + .selectScores() + .setMaxScore("3") + .save(); + // set some feedbacks + mcEditor + .selectFeedbacks() + .setHint("Hint", "This is only an hint") + .setCorrectSolution("Correct solution", "This is the correct solution") + .setCorrectFeedback("Correct feedback", "This is correct") + .setIncorrectFeedback("Incorrect", "Your answer is not correct") + .save(); + + //score per answers + mcEditor = qtiEditor + .addMultipleChoice() + .setCorrect(0) + .setAnswer(0, "AlmostRight") + .addChoice(1) + .setAnswer(1, "NotRight") + .addChoice(2) + .setCorrect(2) + .setAnswer(2, "RightAnswer") + .addChoice(3) + .setAnswer(3, "TheWrongOne") + .save(); + mcEditor + .selectScores() + .setMaxScore("3") + .selectAssessmentMode(ScoreEvaluation.perAnswer) + .setScore("AlmostRight", "1") + .setScore("NotRight", "0") + .setScore("RightAnswer", "2") + .setScore("TheWrongOne", "0") + .save(); + mcEditor + .selectFeedbacks() + .setHint("Hint", "The hint") + .setCorrectSolution("Correct solution", "This is the correct solution") + .setCorrectFeedback("Correct feedback", "This is correct") + .setIncorrectFeedback("Incorrect", "Your answer is not correct") + .save(); + + qtiPage + .clickToolbarBack(); + // access to all + qtiPage + .accessConfiguration() + .setUserAccess(UserAccess.guest) + .clickToolbarBack(); + // show results + qtiPage + .options() + .showResults(Boolean.TRUE, QTI21AssessmentResultsOptions.allOptions()) + .save(); + + //a user search the content package + LoginPage userLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + userLoginPage + .loginAs(ryomou.getLogin(), ryomou.getPassword()) + .resume(); + NavigationPage userNavBar = new NavigationPage(participantBrowser); + userNavBar + .openMyCourses() + .openSearch() + .extendedSearch(qtiTestTitle) + .select(qtiTestTitle) + .start(); + + // make the test + QTI21Page ryomouQtiPage = QTI21Page + .getQTI12Page(participantBrowser); + ryomouQtiPage + .assertOnAssessmentItem() + .answerMultipleChoice("Falsch") + .answerMultipleChoice("OkToo") + .saveAnswer() + .assertFeedback("Incorrect") + .assertCorrectSolution("Correct solution") + .hint() + .assertFeedback("Hint") + .answerMultipleChoice("Falsch") + .answerMultipleChoice("Correct") + .saveAnswer() + .assertFeedback("Correct feedback") + .nextAnswer() + .answerMultipleChoice("AlmostRight") + .saveAnswer() + .assertCorrectSolution("Correct solution") + .assertFeedback("Incorrect") + .endTest() + .assertOnAssessmentResults() + .assertOnAssessmentTestScore(4);// 3 points from the first question, 1 from the second + + + //a second user search the content package + LoginPage ericLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + ericLoginPage + .loginAs(eric.getLogin(), eric.getPassword()) + .resume(); + NavigationPage ericNavBar = new NavigationPage(participantBrowser); + ericNavBar + .openMyCourses() + .openSearch() + .extendedSearch(qtiTestTitle) + .select(qtiTestTitle) + .start(); + + // make the test + QTI21Page + .getQTI12Page(participantBrowser) + .assertOnAssessmentItem() + .answerMultipleChoice("Correct", "OkToo") + .saveAnswer() + .assertFeedback("Correct feedback") + .nextAnswer() + .answerMultipleChoice("AlmostRight", "RightAnswer") + .saveAnswer() + .endTest() + .assertOnAssessmentResults() + .assertOnAssessmentTestScore(6);// 3 points from the first question, 3 from the second + } + + /** + * An author make a test with 2 kprims.<br> + * A first user make the test, but doesn't answer all questions + * correctly, log out and a second user make the perfect test. + * + * @param authorLoginPage + * @param participantBrowser + * @throws IOException + * @throws URISyntaxException + */ + @Test + @RunAsClient + public void qti21EditorKprim(@InitialPage LoginPage authorLoginPage, + @Drone @User WebDriver participantBrowser) + throws IOException, URISyntaxException { + UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + UserVO melissa = new UserRestClient(deploymentUrl).createRandomUser("Melissa"); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + + String qtiTestTitle = "Kprim QTI 2.1 " + UUID.randomUUID(); + navBar + .openAuthoringEnvironment() + .createQTI21Test(qtiTestTitle) + .clickToolbarBack(); + + QTI21Page qtiPage = QTI21Page + .getQTI12Page(browser); + QTI21EditorPage qtiEditor = qtiPage + .edit(); + //start a blank test + qtiEditor + .selectNode("Single choice") + .deleteNode(); + + //add a kprim + QTI21KprimEditorPage kprimEditor = qtiEditor + .addKprim(); + kprimEditor + .setAnswer(0, "Correct") + .setCorrect(0, true) + .setAnswer(1, "OkToo") + .setCorrect(1, true) + .setAnswer(2, "Faux") + .setCorrect(2, false) + .setAnswer(3, "Falsch") + .setCorrect(3, false) + .save(); + // change max score + kprimEditor + .selectScores() + .setMaxScore("4") + .save(); + // set some feedbacks + kprimEditor + .selectFeedbacks() + .setHint("Hint", "This is only an hint") + .setCorrectSolution("Correct solution", "This is the correct solution") + .setCorrectFeedback("Correct feedback", "This is correct") + .setIncorrectFeedback("Incorrect", "Your answer is not correct") + .save(); + + // second kprim + kprimEditor = qtiEditor + .addKprim() + .setAnswer(0, "OnlyRight") + .setCorrect(0, true) + .setAnswer(1, "NotRight") + .setCorrect(1, false) + .setAnswer(2, "NotAnswer") + .setCorrect(2, false) + .setAnswer(3, "TheWrongOne") + .setCorrect(3, false) + .save(); + kprimEditor + .selectScores() + .setMaxScore("2") + .save(); + kprimEditor + .selectFeedbacks() + .setHint("Hint", "The hint") + .setCorrectSolution("Correct solution", "This is the correct solution") + .setCorrectFeedback("Correct feedback", "This is correct") + .setIncorrectFeedback("Incorrect", "Your answer is not correct") + .save(); + + qtiPage + .clickToolbarBack(); + // access to all + qtiPage + .accessConfiguration() + .setUserAccess(UserAccess.guest) + .clickToolbarBack(); + // show results + qtiPage + .options() + .showResults(Boolean.TRUE, QTI21AssessmentResultsOptions.allOptions()) + .save(); + + + //a user search the content package + LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + reiLoginPage + .loginAs(rei.getLogin(), rei.getPassword()) + .resume(); + NavigationPage reiNavBar = new NavigationPage(participantBrowser); + reiNavBar + .openMyCourses() + .openSearch() + .extendedSearch(qtiTestTitle) + .select(qtiTestTitle) + .start(); + + // make the test + QTI21Page reiQtiPage = QTI21Page + .getQTI12Page(participantBrowser); + reiQtiPage + .assertOnAssessmentItem() + .answerCorrectKPrim("Correct", "OkToo", "Faux") + .answerIncorrectKPrim("Falsch") + .saveAnswer() + .assertFeedback("Incorrect") + .assertCorrectSolution("Correct solution") + .hint() + .assertFeedback("Hint") + .answerCorrectKPrim("Correct", "OkToo") + .answerIncorrectKPrim("Falsch", "Faux") + .saveAnswer() + .assertFeedback("Correct feedback") + .nextAnswer() + .answerIncorrectKPrim("OnlyRight", "NotRight", "NotAnswer", "TheWrongOne") + .saveAnswer() + .assertCorrectSolution("Correct solution") + .assertFeedback("Incorrect") + .endTest() + .assertOnAssessmentResults() + .assertOnAssessmentTestScore(5);// 4 points from the first question, 1 from the second + + + //a second user search the content package + LoginPage melLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + melLoginPage + .loginAs(melissa.getLogin(), melissa.getPassword()) + .resume(); + NavigationPage melNavBar = new NavigationPage(participantBrowser); + melNavBar + .openMyCourses() + .openSearch() + .extendedSearch(qtiTestTitle) + .select(qtiTestTitle) + .start(); + + // make the test + QTI21Page + .getQTI12Page(participantBrowser) + .assertOnAssessmentItem() + .answerCorrectKPrim("Correct", "OkToo") + .answerIncorrectKPrim("Faux", "Falsch") + .saveAnswer() + .assertFeedback("Correct feedback") + .nextAnswer() + .answerCorrectKPrim("OnlyRight") + .answerIncorrectKPrim("NotRight", "NotAnswer", "TheWrongOne") + .saveAnswer() + .endTest() + .assertOnAssessmentResults() + .assertOnAssessmentTestScore(6);// 3 points from the first question, 3 from the second + } + + /** + * An author make a test with 2 matches. A match with "multiple selection" + * and score "all answers", a second with "single selection" and score + * "per answers".<br> + * A first user make the test, but doesn't answer all questions + * correctly, log out and a second user make the perfect test. + * + * @param authorLoginPage + * @param participantBrowser + * @throws IOException + * @throws URISyntaxException + */ + @Test + @RunAsClient + public void qti21EditorMatch(@InitialPage LoginPage authorLoginPage, + @Drone @User WebDriver participantBrowser) + throws IOException, URISyntaxException { + UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + UserVO melissa = new UserRestClient(deploymentUrl).createRandomUser("Melissa"); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + + String qtiTestTitle = "Match QTI 2.1 " + UUID.randomUUID(); + navBar + .openAuthoringEnvironment() + .createQTI21Test(qtiTestTitle) + .clickToolbarBack(); + + QTI21Page qtiPage = QTI21Page + .getQTI12Page(browser); + QTI21EditorPage qtiEditor = qtiPage + .edit(); + //start a blank test + qtiEditor + .selectNode("Single choice") + .deleteNode(); + + //add a match, multiple selection + QTI21MatchEditorPage matchEditor = qtiEditor + .addMatch(); + matchEditor + .setSource(0, "Eclipse") + .setSource(1, "vim") + .setTarget(0, "IDE") + .setTarget(1, "TextProcessor") + .addColumn() + .setTarget(2, "TextEditor") + .setMatch(0, 0, true) + .setMatch(1, 2, true) + .save(); + // change max score + matchEditor + .selectScores() + .setMaxScore("4") + .save(); + // set some feedbacks + matchEditor + .selectFeedbacks() + .setHint("Hint", "This is only an hint") + .setCorrectSolution("Correct solution", "This is the correct solution") + .setCorrectFeedback("Correct feedback", "This is correct") + .setIncorrectFeedback("Incorrect", "Your answer is not correct") + .save(); + + // second match + matchEditor = qtiEditor + .addMatch() + .setSingleChoices() + .setSource(0, "Java") + .setSource(1, "C") + .addRow() + .setSource(2, "PHP") + .setTarget(0, "CodeIgniter") + .setTarget(1, "VisualStudio") + .addColumn() + .setTarget(2, "Eclipse") + .setMatch(0, 2, true) + .setMatch(1, 1, true) + .setMatch(2, 0, true) + .save(); + // select score "per answer" and set the scores + matchEditor + .selectScores() + .selectAssessmentMode(ScoreEvaluation.perAnswer) + .setMaxScore("6") + .setScore(0, 0, "0.0") + .setScore(0, 1, "0.0") + .setScore(0, 2, "2.0") + .setScore(1, 0, "0.0") + .setScore(1, 1, "3.0") + .setScore(1, 2, "0.0") + .setScore(2, 0, "1.0") + .setScore(2, 1, "0.0") + .setScore(2, 2, "0.0") + .save(); + matchEditor + .selectFeedbacks() + .setHint("Hint", "The hint") + .setCorrectSolution("Correct solution", "This is the correct solution") + .setCorrectFeedback("Correct feedback", "This is correct") + .setIncorrectFeedback("Incorrect", "Your answer is not correct") + .save(); + + qtiPage + .clickToolbarBack(); + // access to all + qtiPage + .accessConfiguration() + .setUserAccess(UserAccess.guest) + .clickToolbarBack(); + // show results + qtiPage + .options() + .showResults(Boolean.TRUE, QTI21AssessmentResultsOptions.allOptions()) + .save(); + + //a user search the content package + LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + reiLoginPage + .loginAs(rei.getLogin(), rei.getPassword()) + .resume(); + NavigationPage reiNavBar = new NavigationPage(participantBrowser); + reiNavBar + .openMyCourses() + .openSearch() + .extendedSearch(qtiTestTitle) + .select(qtiTestTitle) + .start(); + + // make the test + QTI21Page reiQtiPage = QTI21Page + .getQTI12Page(participantBrowser); + reiQtiPage + .assertOnAssessmentItem() + .answerMatch("Eclipse", "IDE", true) + .answerMatch("vim", "IDE", true) + .saveAnswer() + .assertFeedback("Incorrect") + .assertCorrectSolution("Correct solution") + .hint() + .assertFeedback("Hint") + .answerMatch("vim", "IDE", false) + .answerMatch("vim", "TextEditor", true) + .saveAnswer() + .assertFeedback("Correct feedback") + .nextAnswer() + .answerMatch("Java", "Eclipse", true) + .answerMatch("C", "CodeIgniter", true) + .answerMatch("PHP", "VisualStudio", true) + .saveAnswer() + .assertCorrectSolution("Correct solution") + .assertFeedback("Incorrect") + .endTest() + .assertOnAssessmentResults() + .assertOnAssessmentTestScore(6);// 4 points from the first question, 2 from the second + + //a second user search the content package + LoginPage melLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + melLoginPage + .loginAs(melissa.getLogin(), melissa.getPassword()) + .resume(); + NavigationPage melNavBar = new NavigationPage(participantBrowser); + melNavBar + .openMyCourses() + .openSearch() + .extendedSearch(qtiTestTitle) + .select(qtiTestTitle) + .start(); + + // make the test + QTI21Page + .getQTI12Page(participantBrowser) + .assertOnAssessmentItem() + .answerMatch("Eclipse", "IDE", true) + .answerMatch("vim", "TextEditor", true) + .saveAnswer() + .assertFeedback("Correct feedback") + .nextAnswer() + .answerMatch("Java", "Eclipse", true) + .answerMatch("C", "CodeIgniter", true) + .answerMatch("PHP", "VisualStudio", true) + .saveAnswer() + .answerMatch("C", "CodeIgniter", false) + .answerMatch("PHP", "VisualStudio", false) + .answerMatch("C", "VisualStudio", true) + .answerMatch("PHP", "CodeIgniter", true) + .saveAnswer() + .endTest() + .assertOnAssessmentResults() + .assertOnAssessmentTestScore(10);// 4 points from the first question, 6 from the second + } + + + /** + * An author make a test with 2 match of the drag and drop variety + * with feedbacks.<br> + * A first user make the test, check the feedbacks but make an error + * and score the maximum. A second user answers all the questions + * correctly. + * + * @param authorLoginPage + * @param participantBrowser + * @throws IOException + * @throws URISyntaxException + */ + @Test + @RunAsClient + public void qti21EditorMatchDragAndDrop(@InitialPage LoginPage authorLoginPage, + @Drone @User WebDriver participantBrowser) + throws IOException, URISyntaxException { + UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + UserVO asuka = new UserRestClient(deploymentUrl).createRandomUser("Asuka"); + UserVO chara = new UserRestClient(deploymentUrl).createRandomUser("Chara"); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + + String qtiTestTitle = "Match DnD QTI 2.1 " + UUID.randomUUID(); + navBar + .openAuthoringEnvironment() + .createQTI21Test(qtiTestTitle) + .clickToolbarBack(); + + QTI21Page qtiPage = QTI21Page + .getQTI12Page(browser); + QTI21EditorPage qtiEditor = qtiPage + .edit(); + //start a blank test + qtiEditor + .selectNode("Single choice") + .deleteNode(); + + //add a match, multiple selection + QTI21MatchEditorPage matchEditor = qtiEditor + .addMatchDragAndDrop(); + matchEditor + .setSource(0, "Einstein") + .setSource(1, "Planck") + .addRow() + .setSource(2, "Euler") + .setTarget(0, "Physicist") + .setTarget(1, "Mathematician") + .setMatch(0, 0, true) + .setMatch(1, 0, true) + .setMatch(2, 1, true) + .save(); + // change max score + matchEditor + .selectScores() + .setMaxScore("4") + .save(); + // set some feedbacks + matchEditor + .selectFeedbacks() + .setHint("Hint", "Euler come from Switzerland") + .setCorrectSolution("Correct solution", "The correct solution is simple") + .setCorrectFeedback("Correct feedback", "You are right") + .setIncorrectFeedback("Incorrect", "Your answer is not exactly correct") + .save(); + + // second match + matchEditor = qtiEditor + .addMatchDragAndDrop() + .setSingleChoices() + .setSource(0, "Euler") + .setSource(1, "Broglie") + .addRow() + .setSource(2, "Konrad") + .setTarget(0, "Mathematics") + .setTarget(1, "Medicine") + .addColumn() + .setTarget(2, "Physics") + .setMatch(0, 0, true) + .setMatch(1, 2, true) + .setMatch(2, 1, true) + .save(); + // select score "per answer" and set the scores + matchEditor + .selectScores() + .selectAssessmentMode(ScoreEvaluation.perAnswer) + .setMaxScore("8") + .setScore(0, 0, "2.0") + .setScore(0, 1, "0.0") + .setScore(0, 2, "0.0") + .setScore(1, 0, "0.0") + .setScore(1, 1, "0.0") + .setScore(1, 2, "3.0") + .setScore(2, 0, "0.0") + .setScore(2, 1, "2.0") + .setScore(2, 2, "0.0") + .save(); + matchEditor + .selectFeedbacks() + .setHint("Hint", "The hint") + .setCorrectSolution("Correct solution", "This is the correct solution") + .setCorrectFeedback("Correct feedback", "This is correct") + .setIncorrectFeedback("Incorrect", "Your answer is not correct") + .save(); + + //close editor + qtiPage + .clickToolbarBack(); + // access to all + qtiPage + .accessConfiguration() + .setUserAccess(UserAccess.guest) + .clickToolbarBack(); + // show results + qtiPage + .options() + .showResults(Boolean.TRUE, QTI21AssessmentResultsOptions.allOptions()) + .save(); + + //a user search the content package + LoginPage asukaLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + asukaLoginPage + .loginAs(asuka.getLogin(), asuka.getPassword()) + .resume(); + NavigationPage asukaNavBar = new NavigationPage(participantBrowser); + asukaNavBar + .openMyCourses() + .openSearch() + .extendedSearch(qtiTestTitle) + .select(qtiTestTitle) + .start(); + + // make the test + QTI21Page asukaQtiPage = QTI21Page + .getQTI12Page(participantBrowser); + asukaQtiPage + .assertOnAssessmentItem() + .answerMatchDropSourceToTarget("Einstein", "Physicist") + .answerMatchDropSourceToTarget("Planck", "Mathematician") + .answerMatchDropSourceToTarget("Euler", "Mathematician") + .saveAnswer() + .assertFeedback("Incorrect") + .assertCorrectSolution("Correct solution") + .hint() + .assertFeedback("Hint") + .answerMatchDropTargetToTarget("Planck", "Physicist") + .saveAnswer() + .assertFeedback("Correct feedback") + .nextAnswer() + .answerMatchDropSourceToTarget("Broglie", "Physics") // 2 points + .answerMatchDropSourceToTarget("Euler", "Medicine") // 2 points + .answerMatchDropSourceToTarget("Konrad", "Medicine") // 3 points + .saveAnswer() + .assertCorrectSolution("Correct solution") + .assertFeedback("Incorrect") + .endTest() + .assertOnAssessmentResults() + .assertOnAssessmentTestScore(9); + + //a second user search the content package + LoginPage charaLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + charaLoginPage + .loginAs(chara.getLogin(), chara.getPassword()) + .resume(); + NavigationPage charaNavBar = new NavigationPage(participantBrowser); + charaNavBar + .openMyCourses() + .openSearch() + .extendedSearch(qtiTestTitle) + .select(qtiTestTitle) + .start(); + + // make the test + QTI21Page + .getQTI12Page(participantBrowser) + .answerMatchDropSourceToTarget("Einstein", "Physicist") + .answerMatchDropSourceToTarget("Planck", "Physicist") + .answerMatchDropSourceToTarget("Euler", "Mathematician") + .saveAnswer() + .assertFeedback("Correct feedback") + .nextAnswer() + .answerMatchDropSourceToTarget("Broglie", "Physics") // 2 points + .answerMatchDropSourceToTarget("Euler", "Mathematics") // 2 points + .answerMatchDropSourceToTarget("Konrad", "Medicine") // 3 points + .saveAnswer() + .endTest() + .assertOnAssessmentResults() + .assertOnAssessmentTestScore(11);// 4 points from the first question, 7 from the second + } + + /** + * An author make a test with 1 upload and feedbacks.<br> + * A user make the test, test hint and upload the file. + * + * @param authorLoginPage + * @param participantBrowser + * @throws IOException + * @throws URISyntaxException + */ + @Test + @RunAsClient + public void qti21EditorUpload(@InitialPage LoginPage authorLoginPage, + @Drone @User WebDriver participantBrowser) + throws IOException, URISyntaxException { + UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + + //make a test + String qtiTestTitle = "Upload QTI 2.1 " + UUID.randomUUID(); + navBar + .openAuthoringEnvironment() + .createQTI21Test(qtiTestTitle) + .clickToolbarBack(); + + QTI21Page qtiPage = QTI21Page + .getQTI12Page(browser); + QTI21EditorPage qtiEditor = qtiPage + .edit(); + //start a blank test + qtiEditor + .selectNode("Single choice") + .deleteNode(); + + //add an upload interaction + QTI21LobEditorPage uploadEditor = qtiEditor + .addUpload(); + uploadEditor + .setQuestion("Upload a file") + .save() + .selectScores() + .setMaxScore("2.0") + .save(); + uploadEditor + .selectFeedbacks() + .setHint("Hint", "Need a little help.") + .setCorrectSolution("Correct solution", "Only for Word") + .setAnsweredFeedback("Full", "You upload something") + .setEmpytFeedback("Empty", "You do not upload anything") + .save(); + + qtiPage + .clickToolbarBack(); + // access to all + qtiPage + .accessConfiguration() + .setUserAccess(UserAccess.guest) + .clickToolbarBack(); + // show results + qtiPage + .options() + .showResults(Boolean.TRUE, QTI21AssessmentResultsOptions.allOptions()) + .save(); + + //a user search the content package + LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + reiLoginPage + .loginAs(rei.getLogin(), rei.getPassword()) + .resume(); + NavigationPage reiNavBar = new NavigationPage(participantBrowser); + reiNavBar + .openMyCourses() + .openSearch() + .extendedSearch(qtiTestTitle) + .select(qtiTestTitle) + .start(); + + // make the test + QTI21Page reiQtiPage = QTI21Page + .getQTI12Page(participantBrowser); + reiQtiPage + .assertOnAssessmentItem() + .saveAnswer() + .assertFeedback("Empty") + .hint() + .assertFeedback("Hint"); + + URL imageUrl = JunitTestHelper.class.getResource("file_resources/IMG_1482.JPG"); + File imageFile = new File(imageUrl.toURI()); + reiQtiPage + .answerUpload(imageFile) + .saveAnswer() + .assertFeedback("Full") + .endTest() + .assertOnAssessmentResults() + .assertOnAssessmentResultUpload("IMG_1482"); + } + + /** + * An author make a test with an essai and its special feedback.<br> + * A user make the test and check the feedback. + * + * @param authorLoginPage + * @param participantBrowser + * @throws IOException + * @throws URISyntaxException + */ + @Test + @RunAsClient + public void qti21EditorEssay(@InitialPage LoginPage authorLoginPage, + @Drone @User WebDriver participantBrowser) + throws IOException, URISyntaxException { + UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + + + //make a test + String qtiTestTitle = "Essai QTI 2.1 " + UUID.randomUUID(); + navBar + .openAuthoringEnvironment() + .createQTI21Test(qtiTestTitle) + .clickToolbarBack(); + + QTI21Page qtiPage = QTI21Page + .getQTI12Page(browser); + QTI21EditorPage qtiEditor = qtiPage + .edit(); + //start a blank test + qtiEditor + .selectNode("Single choice") + .deleteNode(); + + //add an essay interaction + QTI21LobEditorPage essayEditor = qtiEditor + .addEssay(); + essayEditor + .setQuestion("Write a small story") + .save() + .selectScores() + .setMaxScore("3.0") + .save(); + essayEditor + .selectFeedbacks() + .setHint("Hint", "Did you search inspiration?") + .setCorrectSolution("Correct solution", "It is very personal.") + .setAnsweredFeedback("Full", "Well done") + .setEmpytFeedback("Empty", "Please, a little effort.") + .save(); + + qtiPage + .clickToolbarBack(); + // access to all + qtiPage + .accessConfiguration() + .setUserAccess(UserAccess.guest) + .clickToolbarBack(); + // show results + qtiPage + .options() + .showResults(Boolean.TRUE, QTI21AssessmentResultsOptions.allOptions()) + .save(); + + //a user search the content package + LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + reiLoginPage + .loginAs(rei.getLogin(), rei.getPassword()) + .resume(); + NavigationPage reiNavBar = new NavigationPage(participantBrowser); + reiNavBar + .openMyCourses() + .openSearch() + .extendedSearch(qtiTestTitle) + .select(qtiTestTitle) + .start(); + + // make the test + QTI21Page reiQtiPage = QTI21Page + .getQTI12Page(participantBrowser); + reiQtiPage + .assertOnAssessmentItem() + .saveAnswer() + .assertFeedback("Empty") + .hint() + .assertFeedback("Hint"); + + reiQtiPage + .answerEssay("What can I write?") + .saveAnswer() + .assertFeedback("Full") + .endTest() + .assertOnAssessmentResults() + .assertOnAssessmentResultEssay("What"); + } + + + /** + * An author make a test with a drawing and its special feedback.<br> + * A user make the test and check the feedback. + * + * @param authorLoginPage + * @param participantBrowser + * @throws IOException + * @throws URISyntaxException + */ + @Test + @RunAsClient + public void qti21EditorDrawing(@InitialPage LoginPage authorLoginPage, + @Drone @User WebDriver participantBrowser) + throws IOException, URISyntaxException { + UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei"); + authorLoginPage.loginAs(author.getLogin(), author.getPassword()); + + + //make a test + String qtiTestTitle = "Drawing QTI 2.1 " + UUID.randomUUID(); + navBar + .openAuthoringEnvironment() + .createQTI21Test(qtiTestTitle) + .clickToolbarBack(); + + QTI21Page qtiPage = QTI21Page + .getQTI12Page(browser); + QTI21EditorPage qtiEditor = qtiPage + .edit(); + //start a blank test + qtiEditor + .selectNode("Single choice") + .deleteNode(); + + //add an essay interaction + QTI21LobEditorPage essayEditor = qtiEditor + .addDrawing(); + + URL backgroundImageUrl = JunitTestHelper.class.getResource("file_resources/house.jpg"); + File backgroundImageFile = new File(backgroundImageUrl.toURI()); + essayEditor + .setQuestion("Draw an house") + .updloadDrawingBackground(backgroundImageFile) + .save() + .selectScores() + .setMaxScore("3.0") + .save(); + essayEditor + .selectFeedbacks() + .setHint("Hint", "Did you search inspiration?") + .setCorrectSolution("Correct solution", "It is very personal.") + .setAnsweredFeedback("Full", "Well done") + .setEmpytFeedback("Empty", "Please, a little effort.") + .save(); + + qtiPage + .clickToolbarBack(); + // access to all + qtiPage + .accessConfiguration() + .setUserAccess(UserAccess.guest) + .clickToolbarBack(); + // show results + qtiPage + .options() + .showResults(Boolean.TRUE, QTI21AssessmentResultsOptions.allOptions()) + .save(); + + //a user search the content package + LoginPage reiLoginPage = LoginPage.getLoginPage(participantBrowser, deploymentUrl); + reiLoginPage + .loginAs(rei.getLogin(), rei.getPassword()) + .resume(); + NavigationPage reiNavBar = new NavigationPage(participantBrowser); + reiNavBar + .openMyCourses() + .openSearch() + .extendedSearch(qtiTestTitle) + .select(qtiTestTitle) + .start(); + + // make the test + QTI21Page reiQtiPage = QTI21Page + .getQTI12Page(participantBrowser); + reiQtiPage + .assertOnAssessmentItem() + .saveAnswer() + .assertFeedback("Empty") + .hint() + .assertFeedback("Hint"); + + reiQtiPage + .answerDrawing() + .saveAnswer() + .assertFeedback("Full") + .endTest() + .assertOnAssessmentResults() + .assertOnDrawing(); + } } diff --git a/src/test/java/org/olat/selenium/PortfolioV2Test.java b/src/test/java/org/olat/selenium/PortfolioV2Test.java index f32a5f59ffd3b6306746088de0e1f6fdb9187961..ec19e8f52367a314bbed53ddaa17426f9ac1f016 100644 --- a/src/test/java/org/olat/selenium/PortfolioV2Test.java +++ b/src/test/java/org/olat/selenium/PortfolioV2Test.java @@ -44,7 +44,6 @@ import org.olat.selenium.page.course.CourseEditorPageFragment; import org.olat.selenium.page.course.CoursePageFragment; import org.olat.selenium.page.course.MembersPage; import org.olat.selenium.page.course.PortfolioElementPage; -import org.olat.selenium.page.course.PublisherPageFragment.Access; import org.olat.selenium.page.forum.ForumPage; import org.olat.selenium.page.graphene.OOGraphene; import org.olat.selenium.page.portfolio.BinderPage; @@ -55,8 +54,8 @@ import org.olat.selenium.page.portfolio.EntryPage; import org.olat.selenium.page.portfolio.MediaCenterPage; import org.olat.selenium.page.portfolio.PortfolioV2HomePage; import org.olat.selenium.page.repository.AuthoringEnvPage; -import org.olat.selenium.page.repository.FeedPage; import org.olat.selenium.page.repository.AuthoringEnvPage.ResourceType; +import org.olat.selenium.page.repository.FeedPage; import org.olat.selenium.page.repository.RepositoryAccessPage.UserAccess; import org.olat.selenium.page.user.UserToolsPage; import org.olat.selenium.page.wiki.WikiPage; @@ -184,7 +183,7 @@ public class PortfolioV2Test { .selectTabLearnContent() .choosePortfolio(binderTitle) .publish() - .quickPublish(Access.membersOnly); + .quickPublish(UserAccess.membersOnly); MembersPage membersPage = courseEditor .clickToolbarBack() @@ -681,7 +680,7 @@ public class PortfolioV2Test { .setScoreAuto(0.1f, 10.0f, 5.0f); courseEditor .publish() - .quickPublish(Access.membersOnly); + .quickPublish(UserAccess.membersOnly); MembersPage membersPage = courseEditor .clickToolbarBack() diff --git a/src/test/java/org/olat/selenium/UserTest.java b/src/test/java/org/olat/selenium/UserTest.java index ed244bacfbef0741f42349a22f00f9c9255cd3d6..9275bf4cdb0ab93dc267fc398c95eb81897fc009 100644 --- a/src/test/java/org/olat/selenium/UserTest.java +++ b/src/test/java/org/olat/selenium/UserTest.java @@ -216,13 +216,13 @@ public class UserTest { //login again loginPage .assertOnLoginPage() - .loginAs(user.getLogin(), user.getPassword()); + .loginAs(user.getLogin(), user.getPassword()) + //check that we are really logged in + .assertLoggedIn(user); - //check that we don't see the resume button + //and check that we don't see the resume button List<WebElement> resumeButtons = browser.findElements(LoginPage.resumeButton); Assert.assertTrue(resumeButtons.isEmpty()); - //double check that we are really logged in - loginPage.assertLoggedIn(user); } diff --git a/src/test/java/org/olat/selenium/page/LoginPage.java b/src/test/java/org/olat/selenium/page/LoginPage.java index 77ab6483cf2dac28470c69a27cea80b555b8c6a3..b341ea98c3d074d919d6e05b7b726e25e94053a7 100644 --- a/src/test/java/org/olat/selenium/page/LoginPage.java +++ b/src/test/java/org/olat/selenium/page/LoginPage.java @@ -234,6 +234,9 @@ public class LoginPage { By okBy = By.cssSelector("button.btn.btn-primary"); browser.findElement(okBy).click(); OOGraphene.waitBusy(browser); + + By reservationBy = By.xpath("//div[contains(@class,'o_reservation')]"); + OOGraphene.waitElementDisappears(reservationBy, 5, browser); return this; } } diff --git a/src/test/java/org/olat/selenium/page/NavigationPage.java b/src/test/java/org/olat/selenium/page/NavigationPage.java index e01cef5b4ca67a001fe4fee3c53a7eff2a46e875..64594768a1825360b435b22419df0a2fce18b6da 100644 --- a/src/test/java/org/olat/selenium/page/NavigationPage.java +++ b/src/test/java/org/olat/selenium/page/NavigationPage.java @@ -130,12 +130,9 @@ public class NavigationPage { openMoreMenu(); links = browser.findElements(linkBy); } - Assert.assertFalse(links.isEmpty()); - links = browser.findElements(linkBy); - Assert.assertFalse(links.isEmpty()); - OOGraphene.waitElement(links.get(0), browser); - links.get(0).click(); + OOGraphene.waitElement(linkBy, browser); + browser.findElement(linkBy).click(); OOGraphene.waitBusy(browser); OOGraphene.waitingTransition(browser); } diff --git a/src/test/java/org/olat/selenium/page/core/CalendarPage.java b/src/test/java/org/olat/selenium/page/core/CalendarPage.java index ff3e1062697a10274c4b333c0a1150ca75c1c366..0fbf4b5aaf95db8ef30e5b4c484a3a7fd6c94a84 100644 --- a/src/test/java/org/olat/selenium/page/core/CalendarPage.java +++ b/src/test/java/org/olat/selenium/page/core/CalendarPage.java @@ -166,7 +166,8 @@ public class CalendarPage { OOGraphene.waitElement(dayBy, 5, browser); browser.findElement(dayBy).click(); - OOGraphene.waitingALittleBit(); + OOGraphene.waitElementUntilNotVisible(datePickerBy, 5, browser); + //OOGraphene.waitingALittleBit(); return this; } diff --git a/src/test/java/org/olat/selenium/page/course/PublisherPageFragment.java b/src/test/java/org/olat/selenium/page/course/PublisherPageFragment.java index 45750dd021b062f73931e1dffe4c3d5e26060fa2..d3f3827a4cbc72a99b533abb2c53fdef318dd5df 100644 --- a/src/test/java/org/olat/selenium/page/course/PublisherPageFragment.java +++ b/src/test/java/org/olat/selenium/page/course/PublisherPageFragment.java @@ -24,6 +24,7 @@ import java.util.List; import org.jboss.arquillian.drone.api.annotation.Drone; import org.junit.Assert; import org.olat.selenium.page.graphene.OOGraphene; +import org.olat.selenium.page.repository.RepositoryAccessPage.UserAccess; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -59,10 +60,10 @@ public class PublisherPageFragment { public void quickPublish() { - quickPublish(Access.guests); + quickPublish(UserAccess.guest); } - public void quickPublish(Access access) { + public void quickPublish(UserAccess access) { assertOnPublisher() .next() .selectAccess(access) @@ -92,9 +93,27 @@ public class PublisherPageFragment { return this; } - public PublisherPageFragment selectAccess(Access access) { - WebElement select = browser.findElement(selectAccessBy); - new Select(select).selectByValue(access.getValue()); + public PublisherPageFragment selectAccess(UserAccess access) { + if(access == UserAccess.none) { + By userSwitch = By.cssSelector("#o_cousersSwitch input[type='radio'][value='n']"); + browser.findElement(userSwitch).click(); + OOGraphene.waitBusy(browser); + } else { + By userSwitch = By.cssSelector("#o_cousersSwitch input[type='radio'][value='y']"); + browser.findElement(userSwitch).click(); + OOGraphene.waitBusy(browser); + + By publishForUserBy = By.cssSelector("#o_fiopublishedForUsers_SELBOX"); + WebElement publishForUserEl = browser.findElement(publishForUserBy); + Select publishForUserSelect = new Select(publishForUserEl); + switch(access) { + case registred: publishForUserSelect.selectByValue("u"); break; + case guest: publishForUserSelect.selectByValue("g"); break; + case membersOnly: publishForUserSelect.selectByValue("m"); break; + default: {} + } + OOGraphene.waitBusy(browser); + } return this; } diff --git a/src/test/java/org/olat/selenium/page/forum/ForumPage.java b/src/test/java/org/olat/selenium/page/forum/ForumPage.java index bc11930dc1bd10101ade19f28c4ed7db7de3e3f5..1cd22698d4edd4268a37586d877ec6b108e317a5 100644 --- a/src/test/java/org/olat/selenium/page/forum/ForumPage.java +++ b/src/test/java/org/olat/selenium/page/forum/ForumPage.java @@ -205,6 +205,7 @@ public class ForumPage { By replyBy = By.xpath("//div[contains(@class,'o_forum_message')][//h4[contains(text(),'" + reference + "')]]//a[contains(@class,'o_sel_forum_reply')]"); browser.findElement(replyBy).click(); OOGraphene.waitBusy(browser); + OOGraphene.waitModalDialog(browser); if(title != null) { By titleBy = By.cssSelector(".o_sel_forum_message_title input[type='text']"); diff --git a/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java b/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java index 0148fb5491a0bdb71f8cdfada3553a5f3cc20a13..06e0e2e6b2ae283b5bb2789f012eae8e16bbd288 100644 --- a/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java +++ b/src/test/java/org/olat/selenium/page/graphene/OOGraphene.java @@ -45,7 +45,7 @@ import org.openqa.selenium.interactions.Actions; */ public class OOGraphene { - private static final long poolingDuration = 25;//ms + private static final long poolingDuration = 50;//ms private static final long waitTinyDuration = 15;//seconds private static final By closeBlueBoxButtonBy = By.cssSelector("div.o_alert_info div.o_sel_info_message a.o_alert_close.o_sel_info_close i.o_icon_close"); @@ -99,6 +99,18 @@ public class OOGraphene { .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until().element(element).is().not().present(); } + /** + * Wait until the element is not visible. + * + * @param element + * @param timeoutInSeconds + * @param browser + */ + public static void waitElementUntilNotVisible(By element, int timeoutInSeconds, WebDriver browser) { + Graphene.waitModel(browser).withTimeout(timeoutInSeconds, TimeUnit.SECONDS) + .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until().element(element).is().not().visible(); + } + /** * Wait until the element is visible. * @@ -145,6 +157,18 @@ public class OOGraphene { .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until().element(element).is().present(); } + /** + * The method is very, very experimental and not reliable. Only for research purpose. + * + * @param by + * @param browser + */ + public static void waitElementInViewport(By by, WebDriver browser) { + Graphene.waitModel(browser).withTimeout(5, TimeUnit.SECONDS) + .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS) + .until(new InViewportPredicate(by)); + } + public static void waitGui(WebDriver browser) { Graphene.waitGui(browser); } @@ -159,7 +183,8 @@ public class OOGraphene { // <div id="o_fi1000000416_diw" class="o_richtext_mce"> <iframe id="o_fi1000000416_ifr"> public static final void tinymce(String content, WebDriver browser) { Graphene.waitModel(browser).withTimeout(waitTinyDuration, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until(new TinyMCELoadedPredicate()); + .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS) + .until(new TinyMCELoadedPredicate()); ((JavascriptExecutor)browser).executeScript("top.tinymce.activeEditor.setContent('" + content + "')"); } @@ -170,7 +195,8 @@ public class OOGraphene { String tinyId = tinyIdEl.getAttribute("id").replace("_diw", ""); Graphene.waitModel(browser).withTimeout(waitTinyDuration, TimeUnit.SECONDS) - .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS).until(new TinyMCELoadedByIdPredicate(tinyId)); + .pollingEvery(poolingDuration, TimeUnit.MILLISECONDS) + .until(new TinyMCELoadedByIdPredicate(tinyId)); ((JavascriptExecutor)browser).executeScript("top.tinymce.editors['" + tinyId + "'].setContent('" + content + "')"); } @@ -282,6 +308,16 @@ public class OOGraphene { } } + public static final void closeErrorBox(WebDriver browser) { + By errorBoxBy = By.cssSelector(".modal-body.alert.alert-danger"); + waitElement(errorBoxBy, 5, browser); + By closeButtonBy = By.cssSelector("div.modal-dialog button.close"); + waitElement(closeButtonBy, 5, browser); + browser.findElement(closeButtonBy).click(); + By dialogBy = By.cssSelector("div.modal-dialog"); + OOGraphene.waitElementDisappears(dialogBy, 2, browser); + } + public static final void waitAndCloseBlueMessageWindow(WebDriver browser) { try { Graphene.waitModel(browser).withTimeout(5, TimeUnit.SECONDS) diff --git a/src/test/java/org/olat/selenium/page/group/MembersWizardPage.java b/src/test/java/org/olat/selenium/page/group/MembersWizardPage.java index edec56b294aa615ce60d74f511d80af35ec884fc..6161c0b017d8987d720fdad054734a40d5bdf524 100644 --- a/src/test/java/org/olat/selenium/page/group/MembersWizardPage.java +++ b/src/test/java/org/olat/selenium/page/group/MembersWizardPage.java @@ -93,6 +93,7 @@ public class MembersWizardPage { Assert.assertFalse(checkAll.isEmpty()); for(WebElement check:checkAll) { check.click(); + OOGraphene.waitBusy(browser); } return this; } diff --git a/src/test/java/org/olat/selenium/page/portfolio/EntryPage.java b/src/test/java/org/olat/selenium/page/portfolio/EntryPage.java index 78b42b8ba9471c9fe71c86525a80c0ca723080f0..be0470c9e4faf9c2a7437311c7b16fcf63838362 100644 --- a/src/test/java/org/olat/selenium/page/portfolio/EntryPage.java +++ b/src/test/java/org/olat/selenium/page/portfolio/EntryPage.java @@ -88,7 +88,8 @@ public class EntryPage { By inputBy = By.cssSelector("fieldset.o_sel_pf_collect_image_form .o_fileinput input[type='file']"); OOGraphene.uploadFile(inputBy, image, browser); - OOGraphene.waitingALittleLonger();//wait event + By previewBy = By.cssSelector("div.o_filepreview>div.o_image>img"); + OOGraphene.waitElement(previewBy, 5, browser); By titleBy = By.cssSelector("fieldset.o_sel_pf_collect_image_form .o_sel_pf_collect_title input[type='text']"); browser.findElement(titleBy).sendKeys(title); diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21AssessmentItemEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21AssessmentItemEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..cdaa50c59c958dbaf136a982670fc79c020ebc4b --- /dev/null +++ b/src/test/java/org/olat/selenium/page/qti/QTI21AssessmentItemEditorPage.java @@ -0,0 +1,64 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.qti; + +import java.util.List; + +import org.junit.Assert; +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +/** + * + * Initial date: 03 may 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public abstract class QTI21AssessmentItemEditorPage { + + public static final By tabBarBy = By.cssSelector("ul.o_sel_assessment_item_config>li>a"); + + protected final WebDriver browser; + + protected QTI21AssessmentItemEditorPage(WebDriver browser) { + this.browser = browser; + } + + protected QTI21AssessmentItemEditorPage selectTab(By tabBy) { + List<WebElement> tabLinks = browser.findElements(tabBarBy); + + boolean found = false; + a_a: + for(WebElement tabLink:tabLinks) { + tabLink.click(); + OOGraphene.waitBusy(browser); + List<WebElement> tabEls = browser.findElements(tabBy); + if(tabEls.size() > 0) { + found = true; + break a_a; + } + } + + Assert.assertTrue("Found the tab", found); + return this; + } +} diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21ChoicesScoreEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21ChoicesScoreEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..f7624a06157287d7c40ca9f6027fc3efabd6e965 --- /dev/null +++ b/src/test/java/org/olat/selenium/page/qti/QTI21ChoicesScoreEditorPage.java @@ -0,0 +1,79 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.qti; + +import org.olat.ims.qti21.model.xml.interactions.SimpleChoiceAssessmentItemBuilder.ScoreEvaluation; +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +/** + * + * Initial date: 3 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTI21ChoicesScoreEditorPage { + + private static final By choiceScoreTable = By.className("o_sel_choices_scores"); + + private final WebDriver browser; + + public QTI21ChoicesScoreEditorPage(WebDriver browser) { + this.browser = browser; + } + + public QTI21ChoicesScoreEditorPage selectAssessmentMode(ScoreEvaluation mode) { + By modeBy = By.cssSelector("#o_coassessment_mode input[value='" + mode.name() + "']"); + browser.findElement(modeBy).click(); + OOGraphene.waitBusy(browser); + if(mode == ScoreEvaluation.allCorrectAnswers) { + OOGraphene.waitElementDisappears(choiceScoreTable, 5, browser); + } else if (mode == ScoreEvaluation.perAnswer) { + OOGraphene.waitElement(choiceScoreTable, 5, browser); + } + return this; + } + + public QTI21ChoicesScoreEditorPage setScore(String answer, String score) { + By scoreBy = By.xpath("//table[contains(@class,'o_sel_choices_scores')]//tr[td[contains(text(),'" + answer + "')]]/td/div/input[@type='text']"); + WebElement scoreEl = browser.findElement(scoreBy); + scoreEl.clear(); + scoreEl.sendKeys(score); + return this; + } + + public QTI21ChoicesScoreEditorPage setMaxScore(String maxScore) { + By maxScoreBy = By.cssSelector("div.o_sel_assessment_item_max_score input[type='text']"); + WebElement maxScoreEl = browser.findElement(maxScoreBy); + maxScoreEl.clear(); + maxScoreEl.sendKeys(maxScore); + return this; + } + + public QTI21ChoicesScoreEditorPage save() { + By saveBy = By.cssSelector("fieldset.o_sel_assessment_item_options button.btn.btn-primary"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + +} diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21EditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21EditorPage.java index dce4a95ee56b102150d165ea7139e2c1c49c4a69..5508ecb30fc2c978a8c0134a9458aaa06d0ab4a0 100644 --- a/src/test/java/org/olat/selenium/page/qti/QTI21EditorPage.java +++ b/src/test/java/org/olat/selenium/page/qti/QTI21EditorPage.java @@ -19,6 +19,7 @@ */ package org.olat.selenium.page.qti; +import org.olat.ims.qti21.model.QTI21QuestionType; import org.olat.selenium.page.core.MenuTreePageFragment; import org.olat.selenium.page.graphene.OOGraphene; import org.openqa.selenium.By; @@ -82,6 +83,56 @@ public class QTI21EditorPage { return this; } + public QTI21SingleChoiceEditorPage addSingleChoice() { + addQuestion(QTI21QuestionType.sc); + return new QTI21SingleChoiceEditorPage(browser); + } + + public QTI21MultipleChoiceEditorPage addMultipleChoice() { + addQuestion(QTI21QuestionType.mc); + return new QTI21MultipleChoiceEditorPage(browser); + } + + public QTI21KprimEditorPage addKprim() { + addQuestion(QTI21QuestionType.kprim); + return new QTI21KprimEditorPage(browser); + } + + public QTI21MatchEditorPage addMatch() { + addQuestion(QTI21QuestionType.match); + return new QTI21MatchEditorPage(browser); + } + + public QTI21MatchEditorPage addMatchDragAndDrop() { + addQuestion(QTI21QuestionType.matchdraganddrop); + return new QTI21MatchEditorPage(browser); + } + + public QTI21LobEditorPage addUpload() { + addQuestion(QTI21QuestionType.upload); + return new QTI21LobEditorPage(browser); + } + + public QTI21LobEditorPage addEssay() { + addQuestion(QTI21QuestionType.essay); + return new QTI21LobEditorPage(browser); + } + + public QTI21LobEditorPage addDrawing() { + addQuestion(QTI21QuestionType.drawing); + return new QTI21LobEditorPage(browser); + } + + private QTI21EditorPage addQuestion(QTI21QuestionType type) { + openElementsMenu(); + + By addBy = By.xpath("//ul[contains(@class,'o_sel_qti_elements')]//a[contains(@onclick,'new.')][i[contains(@class,'" + type.getCssClass() + "')]]"); + browser.findElement(addBy).click(); + OOGraphene.waitBusy(browser); + OOGraphene.waitElement(By.className("o_sel_assessment_item_title"), browser); + return this; + } + public QTI21EditorPage openChangeMenu() { By changeMenuCaret = By.cssSelector("a.o_sel_qti_change_node"); browser.findElement(changeMenuCaret).click(); diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21FeedbacksEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21FeedbacksEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..c4554d328d560c949adbcbd69432995eb69203f2 --- /dev/null +++ b/src/test/java/org/olat/selenium/page/qti/QTI21FeedbacksEditorPage.java @@ -0,0 +1,74 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.qti; + +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +/** + * + * Initial date: 4 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTI21FeedbacksEditorPage { + + private final WebDriver browser; + + public QTI21FeedbacksEditorPage(WebDriver browser) { + this.browser = browser; + } + + public QTI21FeedbacksEditorPage setHint(String title, String hint) { + By titleBy = By.cssSelector("div.o_sel_assessment_item_hint_title input[type='text']"); + browser.findElement(titleBy).sendKeys(title); + OOGraphene.tinymce(hint, "div.o_sel_assessment_item_hint", browser); + return this; + } + + public QTI21FeedbacksEditorPage setCorrectSolution(String title, String correctSolution) { + By titleBy = By.cssSelector("div.o_sel_assessment_item_correct_solution_title input[type='text']"); + browser.findElement(titleBy).sendKeys(title); + OOGraphene.tinymce(correctSolution, "div.o_sel_assessment_item_correct_solution", browser); + return this; + } + + public QTI21FeedbacksEditorPage setCorrectFeedback(String title, String feedback) { + By titleBy = By.cssSelector("div.o_sel_assessment_item_correct_feedback_title input[type='text']"); + browser.findElement(titleBy).sendKeys(title); + OOGraphene.tinymce(feedback, "div.o_sel_assessment_item_correct_feedback", browser); + return this; + } + + public QTI21FeedbacksEditorPage setIncorrectFeedback(String title, String feedback) { + By titleBy = By.cssSelector("div.o_sel_assessment_item_incorrect_feedback_title input[type='text']"); + browser.findElement(titleBy).sendKeys(title); + OOGraphene.tinymce(feedback, "div.o_sel_assessment_item_incorrect_feedback", browser); + return this; + } + + public QTI21FeedbacksEditorPage save() { + By saveBy = By.cssSelector("fieldset.o_sel_assessment_item_feedbacks button.btn.btn-primary"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + return this; + } +} diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21KprimEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21KprimEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..9f3514b83d16780c727b6429dc980119ec9f96c2 --- /dev/null +++ b/src/test/java/org/olat/selenium/page/qti/QTI21KprimEditorPage.java @@ -0,0 +1,79 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.qti; + +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +/** + * + * Initial date: 9 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTI21KprimEditorPage extends QTI21AssessmentItemEditorPage { + + public QTI21KprimEditorPage(WebDriver browser) { + super(browser); + } + + /** + * Set if the answer is correct or wrong. + * + * @param position + * @param correct + * @return Itself + */ + public QTI21KprimEditorPage setCorrect(int position, boolean correct) { + By answerBy; + if(correct) { + answerBy = By.xpath("//div[contains(@class,'o_sel_choice_" + position + "')]//input[contains(@id,'oo_correct-')]"); + } else { + answerBy = By.xpath("//div[contains(@class,'o_sel_choice_" + position + "')]//input[contains(@id,'oo_wrong-')]"); + } + browser.findElement(answerBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + + public QTI21KprimEditorPage setAnswer(int position, String answer) { + String containerCssSelector = "div.o_sel_choice_" + position; + OOGraphene.tinymce(answer, containerCssSelector, browser); + return this; + } + + public QTI21KprimEditorPage save() { + By saveBy = By.cssSelector("fieldset.o_sel_choices_save button.btn.btn-primary"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + + public QTI21ChoicesScoreEditorPage selectScores() { + selectTab(By.className("o_sel_assessment_item_options")); + return new QTI21ChoicesScoreEditorPage(browser); + } + + public QTI21FeedbacksEditorPage selectFeedbacks() { + selectTab(By.className("o_sel_assessment_item_feedbacks")); + return new QTI21FeedbacksEditorPage(browser); + } +} diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21LobEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21LobEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..200162a800aed8d6490ab800a1eaf218e3ca0543 --- /dev/null +++ b/src/test/java/org/olat/selenium/page/qti/QTI21LobEditorPage.java @@ -0,0 +1,69 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.qti; + +import java.io.File; + +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +/** + * Drive the upload, drawing editor. + * + * Initial date: 12 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTI21LobEditorPage extends QTI21AssessmentItemEditorPage { + + public QTI21LobEditorPage(WebDriver browser) { + super(browser); + } + + public QTI21LobEditorPage setQuestion(String question) { + OOGraphene.tinymce(question, "div.o_sel_assessment_item_question", browser); + return this; + } + + public QTI21LobEditorPage updloadDrawingBackground(File file) { + By inputBy = By.cssSelector(".o_fileinput input[type='file']"); + OOGraphene.uploadFile(inputBy, file, browser); + OOGraphene.waitBusy(browser); + return this; + } + + public QTI21LobEditorPage save() { + By saveBy = By.cssSelector("div.o_sel_lob_save button.btn.btn-primary"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + + public QTI21MinimalScoreEditorPage selectScores() { + selectTab(By.className("o_sel_assessment_item_options")); + return new QTI21MinimalScoreEditorPage(browser); + } + + public QTI21LobFeedbacksEditorPage selectFeedbacks() { + selectTab(By.className("o_sel_assessment_item_feedbacks")); + return new QTI21LobFeedbacksEditorPage(browser); + } +} diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21LobFeedbacksEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21LobFeedbacksEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..85cdb06111fb39210de31d6296267238224377b8 --- /dev/null +++ b/src/test/java/org/olat/selenium/page/qti/QTI21LobFeedbacksEditorPage.java @@ -0,0 +1,77 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.qti; + +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +/** + * + * Drive the feedbackabck editor with the special empty / answered + * feedbacks. + * + * Initial date: 12 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTI21LobFeedbacksEditorPage { + + private final WebDriver browser; + + public QTI21LobFeedbacksEditorPage(WebDriver browser) { + this.browser = browser; + } + + public QTI21LobFeedbacksEditorPage setHint(String title, String hint) { + By titleBy = By.cssSelector("div.o_sel_assessment_item_hint_title input[type='text']"); + browser.findElement(titleBy).sendKeys(title); + OOGraphene.tinymce(hint, "div.o_sel_assessment_item_hint", browser); + return this; + } + + public QTI21LobFeedbacksEditorPage setCorrectSolution(String title, String correctSolution) { + By titleBy = By.cssSelector("div.o_sel_assessment_item_correct_solution_title input[type='text']"); + browser.findElement(titleBy).sendKeys(title); + OOGraphene.tinymce(correctSolution, "div.o_sel_assessment_item_correct_solution", browser); + return this; + } + + public QTI21LobFeedbacksEditorPage setAnsweredFeedback(String title, String feedback) { + By titleBy = By.cssSelector("div.o_sel_assessment_item_answered_feedback_title input[type='text']"); + browser.findElement(titleBy).sendKeys(title); + OOGraphene.tinymce(feedback, "div.o_sel_assessment_item_answered_feedback", browser); + return this; + } + + public QTI21LobFeedbacksEditorPage setEmpytFeedback(String title, String feedback) { + By titleBy = By.cssSelector("div.o_sel_assessment_item_empty_feedback_title input[type='text']"); + browser.findElement(titleBy).sendKeys(title); + OOGraphene.tinymce(feedback, "div.o_sel_assessment_item_empty_feedback", browser); + return this; + } + + public QTI21LobFeedbacksEditorPage save() { + By saveBy = By.cssSelector("fieldset.o_sel_assessment_item_feedbacks button.btn.btn-primary"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + return this; + } +} diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21MatchEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21MatchEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..759580c71d520f60f56df4f038b49d5dce5f0dbc --- /dev/null +++ b/src/test/java/org/olat/selenium/page/qti/QTI21MatchEditorPage.java @@ -0,0 +1,103 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.qti; + +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +/** + * + * Initial date: 9 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTI21MatchEditorPage extends QTI21AssessmentItemEditorPage { + + public QTI21MatchEditorPage(WebDriver browser) { + super(browser); + } + + public QTI21MatchEditorPage setSource(int position, String text) { + String containerCssSelector = "th.o_sel_match_source_" + position; + OOGraphene.tinymce(text, containerCssSelector, browser); + return this; + } + + public QTI21MatchEditorPage setTarget(int position, String text) { + String containerCssSelector = "th.o_sel_match_target_" + position; + OOGraphene.tinymce(text, containerCssSelector, browser); + return this; + } + + /** + * Set if the answer is correct or wrong. + * + * @param position + * @param correct + * @return Itself + */ + public QTI21MatchEditorPage setMatch(int source, int target, boolean correct) { + By answerBy = By.xpath("//td[contains(@class,'o_sel_match_" + source + "_" + target + "')]/input[contains(@id,'oo_')]"); + WebElement matchEl = browser.findElement(answerBy); + OOGraphene.check(matchEl, correct); + OOGraphene.waitBusy(browser); + return this; + } + + public QTI21MatchEditorPage addColumn() { + By saveBy = By.cssSelector("div.o_sel_match_save a.o_sel_match_add_column"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + + public QTI21MatchEditorPage addRow() { + By saveBy = By.cssSelector("div.o_sel_match_save a.o_sel_match_add_row"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + + public QTI21MatchEditorPage setSingleChoices() { + By singleBy = By.cssSelector("div.o_sel_match_single input[type='radio'][value='single']"); + browser.findElement(singleBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + + public QTI21MatchEditorPage save() { + By saveBy = By.cssSelector("div.o_sel_match_save button.btn.btn-primary"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + + public QTI21MatchScoreEditorPage selectScores() { + selectTab(By.className("o_sel_assessment_item_options")); + return new QTI21MatchScoreEditorPage(browser); + } + + public QTI21FeedbacksEditorPage selectFeedbacks() { + selectTab(By.className("o_sel_assessment_item_feedbacks")); + return new QTI21FeedbacksEditorPage(browser); + } +} diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21MatchScoreEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21MatchScoreEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..20ff7120855db6691ef4528f71b006e697afc4a5 --- /dev/null +++ b/src/test/java/org/olat/selenium/page/qti/QTI21MatchScoreEditorPage.java @@ -0,0 +1,79 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.qti; + +import org.olat.ims.qti21.model.xml.interactions.SimpleChoiceAssessmentItemBuilder.ScoreEvaluation; +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +/** + * + * Initial date: 10 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTI21MatchScoreEditorPage { + + private static final By choiceScoreTable = By.cssSelector("table.matchInteraction.score"); + + private final WebDriver browser; + + public QTI21MatchScoreEditorPage(WebDriver browser) { + this.browser = browser; + } + + public QTI21MatchScoreEditorPage selectAssessmentMode(ScoreEvaluation mode) { + By modeBy = By.cssSelector("#o_coassessment_mode input[value='" + mode.name() + "']"); + browser.findElement(modeBy).click(); + OOGraphene.waitBusy(browser); + if(mode == ScoreEvaluation.allCorrectAnswers) { + OOGraphene.waitElementDisappears(choiceScoreTable, 5, browser); + } else if (mode == ScoreEvaluation.perAnswer) { + OOGraphene.waitElement(choiceScoreTable, 5, browser); + } + return this; + } + + public QTI21MatchScoreEditorPage setScore(int source, int target, String score) { + By scoreBy = By.cssSelector("td.o_sel_match_" + source + "_" + target + " input[type='text']"); + WebElement scoreEl = browser.findElement(scoreBy); + scoreEl.clear(); + scoreEl.sendKeys(score); + return this; + } + + public QTI21MatchScoreEditorPage setMaxScore(String maxScore) { + By maxScoreBy = By.cssSelector("div.o_sel_assessment_item_max_score input[type='text']"); + WebElement maxScoreEl = browser.findElement(maxScoreBy); + maxScoreEl.clear(); + maxScoreEl.sendKeys(maxScore); + return this; + } + + public QTI21MatchScoreEditorPage save() { + By saveBy = By.cssSelector("fieldset.o_sel_assessment_item_options button.btn.btn-primary"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + +} diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21MinimalScoreEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21MinimalScoreEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..ae6c960715a8497b1ffcfa77aa2091d4f549d34f --- /dev/null +++ b/src/test/java/org/olat/selenium/page/qti/QTI21MinimalScoreEditorPage.java @@ -0,0 +1,57 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.qti; + +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; + +/** + * Drive the minimal score editor with only the max score. + * + * Initial date: 12 mai 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTI21MinimalScoreEditorPage { + + private final WebDriver browser; + + public QTI21MinimalScoreEditorPage(WebDriver browser) { + this.browser = browser; + } + + public QTI21MinimalScoreEditorPage setMaxScore(String maxScore) { + By maxScoreBy = By.cssSelector("div.o_sel_assessment_item_max_score input[type='text']"); + WebElement maxScoreEl = browser.findElement(maxScoreBy); + maxScoreEl.clear(); + maxScoreEl.sendKeys(maxScore); + return this; + } + + public QTI21MinimalScoreEditorPage save() { + By saveBy = By.cssSelector("fieldset.o_sel_assessment_item_options button.btn.btn-primary"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + +} diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21MultipleChoiceEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21MultipleChoiceEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..d5297490822807de114b2ae0a26711053c9fcea9 --- /dev/null +++ b/src/test/java/org/olat/selenium/page/qti/QTI21MultipleChoiceEditorPage.java @@ -0,0 +1,82 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.qti; + +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +/** + * + * Initial date: 03 may 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTI21MultipleChoiceEditorPage extends QTI21AssessmentItemEditorPage { + + public QTI21MultipleChoiceEditorPage(WebDriver browser) { + super(browser); + } + + /** + * Add a new choice. + * + * @return Itself + */ + public QTI21MultipleChoiceEditorPage addChoice(int position) { + By addBy = By.xpath("//div[contains(@class,'o_sel_add_choice_" + position + "')]/a"); + browser.findElement(addBy).click(); + OOGraphene.waitBusy(browser); + //wait the next element + By addedBy = By.xpath("//div[contains(@class,'o_sel_add_choice_" + (position + 1) + "')]/a"); + OOGraphene.waitElement(addedBy, 5, browser); + return this; + } + + public QTI21MultipleChoiceEditorPage setCorrect(int position) { + By correctBy = By.xpath("//div[contains(@class,'o_sel_choice_" + position + "')]//input[contains(@id,'oo_correct-')]"); + browser.findElement(correctBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + + public QTI21MultipleChoiceEditorPage setAnswer(int position, String answer) { + String containerCssSelector = "div.o_sel_choice_" + position; + OOGraphene.tinymce(answer, containerCssSelector, browser); + return this; + } + + public QTI21MultipleChoiceEditorPage save() { + By saveBy = By.cssSelector("fieldset.o_sel_choices_save button.btn.btn-primary"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + + public QTI21ChoicesScoreEditorPage selectScores() { + selectTab(By.className("o_sel_assessment_item_options")); + return new QTI21ChoicesScoreEditorPage(browser); + } + + public QTI21FeedbacksEditorPage selectFeedbacks() { + selectTab(By.className("o_sel_assessment_item_feedbacks")); + return new QTI21FeedbacksEditorPage(browser); + } +} diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21Page.java b/src/test/java/org/olat/selenium/page/qti/QTI21Page.java index 4c1bc1f5a856750fc76f1428fddaed7ae5690f28..f5125df057f32137520498c490af04f427c8d511 100644 --- a/src/test/java/org/olat/selenium/page/qti/QTI21Page.java +++ b/src/test/java/org/olat/selenium/page/qti/QTI21Page.java @@ -19,6 +19,7 @@ */ package org.olat.selenium.page.qti; +import java.io.File; import java.util.List; import org.junit.Assert; @@ -28,6 +29,7 @@ import org.olat.selenium.page.repository.RepositoryAccessPage; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; +import org.openqa.selenium.interactions.Actions; /** * @@ -47,7 +49,9 @@ public class QTI21Page { } public static QTI21Page getQTI12Page(WebDriver browser) { - WebElement main = browser.findElement(By.id("o_main_wrapper")); + By mainBy = By.id("o_main_wrapper"); + OOGraphene.waitElement(mainBy, 5, browser); + WebElement main = browser.findElement(mainBy); Assert.assertTrue(main.isDisplayed()); return new QTI21Page(browser); } @@ -100,19 +104,27 @@ public class QTI21Page { } public QTI21Page answerSingleChoice(String answer) { - By choiceBy = By.xpath("//tr[contains(@class,'choiceinteraction')][td[contains(@class,'choiceInteraction')][p[contains(normalize-space(text()),'" + answer + "')]]]/td[contains(@class,'control')]/input[@type='radio']"); + By choiceBy = By.xpath("//tr[contains(@class,'choiceinteraction')][td[contains(@class,'choiceInteraction')][label/p[contains(normalize-space(text()),'" + answer + "')]]]/td[contains(@class,'control')]/input[@type='radio']"); browser.findElement(choiceBy).click(); return this; } public QTI21Page answerMultipleChoice(String... answers) { for(String answer:answers) { - By choiceBy = By.xpath("//tr[contains(@class,'choiceinteraction')][td[contains(@class,'choiceInteraction')][p[contains(text(),'" + answer + "')]]]/td[contains(@class,'control')]/input[@type='checkbox']"); + By choiceBy = By.xpath("//tr[contains(@class,'choiceinteraction')][td[contains(@class,'choiceInteraction')][label/p[contains(text(),'" + answer + "')]]]/td[contains(@class,'control')]/input[@type='checkbox']"); browser.findElement(choiceBy).click(); } return this; } + public QTI21Page deselectAnswerMultipleChoice(String... answers) { + for(String answer:answers) { + By choiceBy = By.xpath("//tr[contains(@class,'choiceinteraction')][td[contains(@class,'choiceInteraction')][label/p[contains(text(),'" + answer + "')]]]/td[contains(@class,'control')]/input[@type='checkbox']"); + OOGraphene.check(browser.findElement(choiceBy), Boolean.FALSE); + } + return this; + } + public QTI21Page answerHotspot(String shape) { OOGraphene.waitElement(By.className("hotspotInteraction"), browser); By areaBy = By.xpath("//div[contains(@class,'hotspotInteraction')]//map/area[@shape='" + shape + "']"); @@ -122,20 +134,28 @@ public class QTI21Page { return this; } - public QTI21Page answerCorrectKPrim(String... correctChoices) { - for(String correctChoice:correctChoices) { - By correctBy = By.xpath("//tr[td/p[contains(text(),'" + correctChoice + "')]]/td[contains(@class,'o_qti_item_kprim_input o_qti_item_kprim_input_correct')]/input[@type='checkbox']"); - WebElement option = browser.findElement(correctBy); - OOGraphene.check(option, Boolean.TRUE); + public QTI21Page answerCorrectKPrim(String... choices) { + for(String choice:choices) { + By incorrectBy = By.xpath("//tr[td/p[contains(text(),'" + choice + "')]]/td[contains(@class,'o_qti_item_kprim_input o_qti_item_kprim_input_wrong')]/input[@type='checkbox']"); + WebElement incorrectEl = browser.findElement(incorrectBy); + OOGraphene.check(incorrectEl, Boolean.FALSE); + + By correctBy = By.xpath("//tr[td/p[contains(text(),'" + choice + "')]]/td[contains(@class,'o_qti_item_kprim_input o_qti_item_kprim_input_correct')]/input[@type='checkbox']"); + WebElement correctEl = browser.findElement(correctBy); + OOGraphene.check(correctEl, Boolean.TRUE); } return this; } - public QTI21Page answerIncorrectKPrim(String... incorrectChoices) { - for(String incorrectChoice:incorrectChoices) { - By correctBy = By.xpath("//tr[td/p[contains(text(),'" + incorrectChoice + "')]]/td[contains(@class,'o_qti_item_kprim_input o_qti_item_kprim_input_wrong')]/input[@type='checkbox']"); - WebElement option = browser.findElement(correctBy); - OOGraphene.check(option, Boolean.TRUE); + public QTI21Page answerIncorrectKPrim(String... choices) { + for(String choice:choices) { + By correctBy = By.xpath("//tr[td/p[contains(text(),'" + choice + "')]]/td[contains(@class,'o_qti_item_kprim_input o_qti_item_kprim_input_correct')]/input[@type='checkbox']"); + WebElement correctEl = browser.findElement(correctBy); + OOGraphene.check(correctEl, Boolean.FALSE); + + By incorrectBy = By.xpath("//tr[td/p[contains(text(),'" + choice + "')]]/td[contains(@class,'o_qti_item_kprim_input o_qti_item_kprim_input_wrong')]/input[@type='checkbox']"); + WebElement incorrectEl = browser.findElement(incorrectBy); + OOGraphene.check(incorrectEl, Boolean.TRUE); } return this; } @@ -148,6 +168,84 @@ public class QTI21Page { return this; } + public QTI21Page answerMatch(String source, String target, boolean match) { + By matchBy = By.xpath("//div[contains(@class,'matchInteraction')]/table//tr[th/p[contains(text(),'" + source + "')]]/td[count(//div[contains(@class,'matchInteraction')]/table//tr/th[p[contains(text(),'" + target + "')]]/preceding-sibling::th)]/input"); + WebElement matchEl = browser.findElement(matchBy); + OOGraphene.check(matchEl, match); + return this; + } + + public QTI21Page answerMatchDropSourceToTarget(String source, String target) { + By sourceBy = By.xpath("//li[contains(@class,'o_match_dnd_source')]/p[contains(text(),'" + source + "')]"); + OOGraphene.waitElement(sourceBy, 5, browser); + WebElement sourceEl = browser.findElement(sourceBy); + By targetBy = By.xpath("//li[contains(@class,'o_match_dnd_target')]/p[contains(text(),'" + target + "')]"); + WebElement targetEl = browser.findElement(targetBy); + new Actions(browser) + .moveToElement(sourceEl, 30, 30) + .clickAndHold() + .moveToElement(targetEl, 30, 30) + .release() + .build() + .perform(); + + By sourceDroppedBy = By.xpath("//ul[contains(@class,'o_match_dnd_target_drop_zone')]/li[contains(@class,'o_match_dnd_source')]/p[contains(text(),'" + source + "')]"); + OOGraphene.waitElement(sourceDroppedBy, 5, browser); + return this; + } + + public QTI21Page answerMatchDropTargetToTarget(String source, String target) { + By sourceDroppedBy = By.xpath("//ul[contains(@class,'o_match_dnd_target_drop_zone')]/li[contains(@class,'o_match_dnd_source')]/p[contains(text(),'" + source + "')]"); + WebElement sourceEl = browser.findElement(sourceDroppedBy); + By targetBy = By.xpath("//li[contains(@class,'o_match_dnd_target')]/p[contains(text(),'" + target + "')]"); + WebElement targetEl = browser.findElement(targetBy); + new Actions(browser) + .moveToElement(sourceEl, 30, 30) + .clickAndHold() + .moveToElement(targetEl, 30, 30) + .release() + .build() + .perform(); + + OOGraphene.waitElement(sourceDroppedBy, 5, browser); + return this; + } + + public QTI21Page answerMatchDetarget(String source) { + By sourceDroppedBy = By.xpath("//ul[contains(@class,'o_match_dnd_target_drop_zone')]/li[contains(@class,'o_match_dnd_source')]/p[contains(text(),'" + source + "')]"); + browser.findElement(sourceDroppedBy).click(); + return this; + } + + public QTI21Page answerUpload(File file) { + By inputBy = By.cssSelector(".uploadInteraction input[type='file']"); + OOGraphene.uploadFile(inputBy, file, browser); + return this; + } + + public QTI21Page answerEssay(String text) { + By inputBy = By.cssSelector(".extendedTextInteraction textarea"); + WebElement essayEl = browser.findElement(inputBy); + essayEl.clear(); + essayEl.sendKeys(text); + return this; + } + + public QTI21Page answerDrawing() { + By drawingBy = By.className("drawingInteraction"); + WebElement drawingEl = browser.findElement(drawingBy); + + new Actions(browser) + .moveToElement(drawingEl, 30, 30) + .clickAndHold() + .moveByOffset(100, 200) + .release() + .build() + .perform(); + OOGraphene.waitingALittleBit(); + return this; + } + public QTI21Page saveAnswer() { By saveAnswerBy = By.cssSelector("button.o_sel_assessment_item_submit"); browser.findElement(saveAnswerBy).click(); @@ -162,11 +260,22 @@ public class QTI21Page { return this; } - public QTI21Page assertFeedback(String feedback) { - By feedbackBy = By.xpath("//div[contains(@class,'modalFeedback')]/h4[contains(text(),'" + feedback + "')]"); + public QTI21Page assertFeedback(String title) { + By feedbackBy = By.xpath("//div[contains(@class,'modalFeedback')]/h4[contains(text(),'" + title + "')]"); OOGraphene.waitElement(feedbackBy, 5, browser); - List<WebElement> feedbackEls = browser.findElements(feedbackBy); - Assert.assertEquals(1, feedbackEls.size()); + return this; + } + + public QTI21Page assertCorrectSolution(String title) { + By feedbackBy = By.xpath("//div[contains(@class,'modalFeedback')]/h4/a[contains(text(),'" + title + "')]"); + OOGraphene.waitElement(feedbackBy, 5, browser); + return this; + } + + public QTI21Page hint() { + By hintBy = By.cssSelector("a.o_sel_assessment_item_hint"); + browser.findElement(hintBy).click(); + OOGraphene.waitBusy(browser); return this; } @@ -179,6 +288,7 @@ public class QTI21Page { browser.findElement(suspendBy).click(); OOGraphene.waitBusy(browser); confirm(); + OOGraphene.waitAndCloseBlueMessageWindow(browser); return this; } @@ -253,29 +363,52 @@ public class QTI21Page { } public QTI21Page assertOnAssessmentTestScore(int score) { - By resultsBy = By.xpath("//div[contains(@class,'o_sel_results_details')]//tr[contains(@class,'o_sel_assessmenttest_score')]/td[contains(text(),'" + score + "')]"); + By resultsBy = By.xpath("//div[contains(@class,'o_sel_results_details')]//tr[contains(@class,'o_sel_assessmenttest_scores')]/td/div/span[contains(@class,'o_sel_assessmenttest_score')][contains(text(),'" + score + "')]"); OOGraphene.waitElement(resultsBy, 5, browser); return this; } public QTI21Page assertOnAssessmentTestPassed() { - By notPassedBy = By.cssSelector("div.o_sel_results_details tr.o_state.o_passed "); + By notPassedBy = By.cssSelector("div.o_sel_results_details tr.o_qti_stateinfo.o_passed"); OOGraphene.waitElement(notPassedBy, 5, browser); return this; } public QTI21Page assertOnAssessmentTestNotPassed() { - By notPassedBy = By.cssSelector("div.o_sel_results_details tr.o_state.o_failed "); + By notPassedBy = By.cssSelector("div.o_sel_results_details tr.o_qti_stateinfo.o_failed"); OOGraphene.waitElement(notPassedBy, 5, browser); return this; } public QTI21Page assertOnAssessmentTestMaxScore(int score) { - By resultsBy = By.xpath("//div[contains(@class,'o_sel_results_details')]//tr[contains(@class,'o_sel_assessmenttest_maxscore')]/td[contains(text(),'" + score + "')]"); + By resultsBy = By.xpath("//div[contains(@class,'o_sel_results_details')]//tr[contains(@class,'o_sel_assessmenttest_scores')]/td/div/span[contains(@class,'o_sel_assessmenttest_maxscore')][contains(text(),'" + score + "')]"); OOGraphene.waitElement(resultsBy, 5, browser); return this; } + /** + * + * @param name The name of the file without extension + * @return Itself + */ + public QTI21Page assertOnAssessmentResultUpload(String name) { + By uploadBy = By.xpath("//div[contains(@class,'o_assessment_test_results')]//div[contains(@class,'uploadInteraction')]/a[contains(@href,'" + name + "')]"); + OOGraphene.waitElement(uploadBy, 5, browser); + return this; + } + + public QTI21Page assertOnAssessmentResultEssay(String text) { + By uploadBy = By.xpath("//div[contains(@class,'o_assessment_test_results')]//div[contains(@class,'extendedTextInteraction')]/textarea[contains(text(),'" + text + "')]"); + OOGraphene.waitElement(uploadBy, 5, browser); + return this; + } + + public QTI21Page assertOnDrawing() { + By drawingBy = By.className("drawingInteraction"); + OOGraphene.waitElement(drawingBy, 5, browser); + return this; + } + public QTI21Page assertOnAssessmentTestFeedback(String feedback) { By feedbackBy = By.xpath("//div[contains(@class,'o_info')]/h3[contains(text(),'" + feedback + "')]"); OOGraphene.waitElement(feedbackBy, 5, browser); @@ -337,6 +470,7 @@ public class QTI21Page { } By optionsBy = By.cssSelector("ul.o_sel_course_settings a.o_sel_qti_resource_options"); + OOGraphene.waitElement(optionsBy, browser); browser.findElement(optionsBy).click(); OOGraphene.waitBusy(browser); return new QTI21OptionsPage(browser); @@ -373,6 +507,7 @@ public class QTI21Page { public QTI21Page openSettingsMenu() { By settingsMenuCaret = By.cssSelector("a.o_sel_course_settings"); + OOGraphene.waitElement(settingsMenuCaret, browser); browser.findElement(settingsMenuCaret).click(); OOGraphene.waitElement(settingsMenu, browser); return this; diff --git a/src/test/java/org/olat/selenium/page/qti/QTI21SingleChoiceEditorPage.java b/src/test/java/org/olat/selenium/page/qti/QTI21SingleChoiceEditorPage.java new file mode 100644 index 0000000000000000000000000000000000000000..f518c83876dcbc543854887651d609bf17716da0 --- /dev/null +++ b/src/test/java/org/olat/selenium/page/qti/QTI21SingleChoiceEditorPage.java @@ -0,0 +1,82 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.selenium.page.qti; + +import org.olat.selenium.page.graphene.OOGraphene; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; + +/** + * + * Initial date: 03 may 2017<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QTI21SingleChoiceEditorPage extends QTI21AssessmentItemEditorPage { + + public QTI21SingleChoiceEditorPage(WebDriver browser) { + super(browser); + } + + /** + * Add a new choice. + * + * @return Itself + */ + public QTI21SingleChoiceEditorPage addChoice(int position) { + By addBy = By.xpath("//div[contains(@class,'o_sel_add_choice_" + position + "')]/a"); + browser.findElement(addBy).click(); + OOGraphene.waitBusy(browser); + //wait the next element + By addedBy = By.xpath("//div[contains(@class,'o_sel_add_choice_" + (position + 1) + "')]/a"); + OOGraphene.waitElement(addedBy, 5, browser); + return this; + } + + public QTI21SingleChoiceEditorPage setCorrect(int position) { + By correctBy = By.xpath("//div[contains(@class,'o_sel_choice_" + position + "')]//input[contains(@id,'oo_correct-')]"); + browser.findElement(correctBy).click(); + return this; + } + + public QTI21SingleChoiceEditorPage setAnswer(int position, String answer) { + String containerCssSelector = "div.o_sel_choice_" + position; + OOGraphene.tinymce(answer, containerCssSelector, browser); + return this; + } + + public QTI21SingleChoiceEditorPage save() { + By saveBy = By.cssSelector("fieldset.o_sel_choices_save button.btn.btn-primary"); + browser.findElement(saveBy).click(); + OOGraphene.waitBusy(browser); + return this; + } + + public QTI21ChoicesScoreEditorPage selectScores() { + selectTab(By.className("o_sel_assessment_item_options")); + return new QTI21ChoicesScoreEditorPage(browser); + } + + public QTI21FeedbacksEditorPage selectFeedbacks() { + selectTab(By.className("o_sel_assessment_item_feedbacks")); + return new QTI21FeedbacksEditorPage(browser); + } + +} diff --git a/src/test/java/org/olat/selenium/page/repository/AuthoringEnvPage.java b/src/test/java/org/olat/selenium/page/repository/AuthoringEnvPage.java index f3b3e0de39459776c206be1ad4e982d445b8a1ed..d8f124d1a2f9bdf4a341d0c157053c43658d6abb 100644 --- a/src/test/java/org/olat/selenium/page/repository/AuthoringEnvPage.java +++ b/src/test/java/org/olat/selenium/page/repository/AuthoringEnvPage.java @@ -170,6 +170,13 @@ public class AuthoringEnvPage { .clickToolbarBack(); } + /** + * Try to upload a resource if the type is recognized. + * + * @param title The title of the learning resource + * @param resource The zip file to import + * @return Itself + */ public AuthoringEnvPage uploadResource(String title, File resource) { WebElement importLink = browser.findElement(By.className("o_sel_author_import")); Assert.assertTrue(importLink.isDisplayed()); @@ -187,8 +194,11 @@ public class AuthoringEnvPage { //save By saveBy = By.cssSelector("div.o_sel_repo_save_details button.btn-primary"); WebElement saveButton = browser.findElement(saveBy); - saveButton.click(); - OOGraphene.waitBusy(browser); + if(saveButton.isEnabled()) { + saveButton.click(); + OOGraphene.waitBusy(browser); + OOGraphene.waitElement(RepositoryEditDescriptionPage.generaltabBy, browser); + } return this; } diff --git a/src/test/java/org/olat/test/AllTestsJunit4.java b/src/test/java/org/olat/test/AllTestsJunit4.java index 44602333ff85d70cc7a16f8d24b129e9274ad336..a320bd3e96fcb9024a6e8c9e88e5d9da2d4234aa 100644 --- a/src/test/java/org/olat/test/AllTestsJunit4.java +++ b/src/test/java/org/olat/test/AllTestsJunit4.java @@ -142,6 +142,11 @@ import org.junit.runners.Suite; org.olat.course.assessment.AssessmentManagerTest.class, org.olat.course.assessment.manager.UserCourseInformationsManagerTest.class, org.olat.course.assessment.manager.AssessmentModeManagerTest.class, + org.olat.course.statistic.DailyStatisticUpdateManagerTest.class, + org.olat.course.statistic.DayOfWeekStatisticUpdateManagerTest.class, + org.olat.course.statistic.HourOfDayStatisticUpdateManagerTest.class, + org.olat.course.statistic.SimpleStatisticInfoHelperTest.class, + org.olat.course.statistic.WeeklyStatisticUpdateManagerTest.class, org.olat.modules.assessment.manager.AssessmentEntryDAOTest.class, org.olat.course.certificate.manager.CertificatesManagerTest.class, org.olat.course.config.CourseConfigManagerImplTest.class, @@ -284,6 +289,7 @@ import org.junit.runners.Suite; org.olat.restapi.UserCoursesTest.class, org.olat.restapi.UserMgmtTest.class, org.olat.restapi.ContactsTest.class, + org.olat.restapi.SharedFolderTest.class, org.olat.restapi.SystemTest.class, org.olat.restapi.ChangePasswordTest.class, org.olat.restapi.RegistrationTest.class, diff --git a/src/test/java/org/olat/test/ArquillianDeployments.java b/src/test/java/org/olat/test/ArquillianDeployments.java index fe9c3309d6ad1e5fb1b9e2c9bf5df2ceabd0d990..0cd08c84154672856108400554b68b8bb7365a09 100644 --- a/src/test/java/org/olat/test/ArquillianDeployments.java +++ b/src/test/java/org/olat/test/ArquillianDeployments.java @@ -47,7 +47,7 @@ public class ArquillianDeployments { public static final String WEBINF = "src/main/webapp/WEB-INF"; public static final String WEBINF_TOMCAT = "src/main/webapp-tomcat/WEB-INF"; public static final String TEST_RSRC = "src/test/resources"; - public static final String LIB_DIR = "target/openolat-lms-11.4-SNAPSHOT/WEB-INF/lib"; + public static final String LIB_DIR = "target/openolat-lms-11.5-SNAPSHOT/WEB-INF/lib"; public static WebArchive createDeployment() { return createDeployment("openolat.war", new HashMap<String,String>()); diff --git a/src/test/java/org/olat/test/file_resources/house.jpg b/src/test/java/org/olat/test/file_resources/house.jpg new file mode 100644 index 0000000000000000000000000000000000000000..70dc31d0f01495864eeabbcd7b454e4f788b64f3 Binary files /dev/null and b/src/test/java/org/olat/test/file_resources/house.jpg differ diff --git a/src/test/java/org/olat/test/rest/UserRestClient.java b/src/test/java/org/olat/test/rest/UserRestClient.java index 01f14fa46afc1b55c5e4bd3e12e42dcde7eea1fc..24d1f9d9b8b512c5b51dac3b294b2b869ba8df2b 100644 --- a/src/test/java/org/olat/test/rest/UserRestClient.java +++ b/src/test/java/org/olat/test/rest/UserRestClient.java @@ -84,11 +84,16 @@ public class UserRestClient { } public UserVO createAuthor() + throws IOException, URISyntaxException { + return createAuthor("Selena"); + } + + public UserVO createAuthor(String name) throws IOException, URISyntaxException { RestConnection restConnection = new RestConnection(deploymentUrl); assertTrue(restConnection.login(username, password)); - UserVO user = createUser(restConnection, "Selena", "Auth"); + UserVO user = createUser(restConnection, name, "Auth"); RolesVO roles = new RolesVO(); roles.setAuthor(true);